From f624c52cef438f7e839c7de6ab5bdf474eb3a6e2 Mon Sep 17 00:00:00 2001 From: fulivi Date: Mon, 30 Mar 2015 17:58:51 +0200 Subject: imds2: improved keyboard mapping --- src/mess/drivers/imds2.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/imds2.c b/src/mess/drivers/imds2.c index 89de9892f3b..d225849497e 100644 --- a/src/mess/drivers/imds2.c +++ b/src/mess/drivers/imds2.c @@ -543,13 +543,13 @@ static INPUT_PORTS_START(imds2) // See [1], pg 57 for keyboard layout PORT_START("KEY0") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') // OK - PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('`') + PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR('@') PORT_CHAR('`') // OK PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') // OK PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // OK - PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') - PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*') // ' - PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') // . - PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') + PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // OK + PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(':') PORT_CHAR('*') // OK + PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') // OK + PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // OK PORT_START("KEY1") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // OK @@ -563,13 +563,13 @@ static INPUT_PORTS_START(imds2) PORT_START("KEY2") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('~') // OK - PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') + PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') // OK PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // OK PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // OK PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') // OK PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=') // OK PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // OK - PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') + PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR('+') // OK PORT_START("KEY3") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // OK @@ -604,17 +604,17 @@ static INPUT_PORTS_START(imds2) PORT_START("KEY6") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // BS PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME)) // OK - PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') // OK + PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|') // OK PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // OK PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) // OK PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // OK - PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') + PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') // OK PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // OK PORT_START("KEY7") PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) // OK PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // OK - PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('_') PORT_CHAR('^') + PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('_') PORT_CHAR('^') // OK PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // OK PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) // OK PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) -- cgit v1.2.3-70-g09d2 From d0ad3fd6374e9b6c5986b27e2cb42d0f7a0f0510 Mon Sep 17 00:00:00 2001 From: fulivi Date: Mon, 30 Mar 2015 18:01:15 +0200 Subject: pic8259: fixed a polling mode bug --- src/emu/machine/pic8259.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/emu/machine/pic8259.c b/src/emu/machine/pic8259.c index 6d404d654c5..d86b25dd30c 100644 --- a/src/emu/machine/pic8259.c +++ b/src/emu/machine/pic8259.c @@ -152,11 +152,6 @@ READ8_MEMBER( pic8259_device::read ) if ( m_ocw3 & 0x04 ) { /* Polling mode */ - if ( m_isr & ~m_imr ) - { - acknowledge(); - } - if ( m_irr & ~m_imr ) { /* check the various IRQs */ @@ -168,6 +163,7 @@ READ8_MEMBER( pic8259_device::read ) break; } } + acknowledge(); } } else -- cgit v1.2.3-70-g09d2 From fede14aa974c70537c81824a50ce6d10ebef75fc Mon Sep 17 00:00:00 2001 From: fulivi Date: Wed, 1 Apr 2015 16:09:45 +0200 Subject: i8275: improved visual attribute decoding and cursor appearance --- src/emu/video/i8275.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/emu/video/i8275.c b/src/emu/video/i8275.c index 53218f2cc4b..cf7b5d022ea 100644 --- a/src/emu/video/i8275.c +++ b/src/emu/video/i8275.c @@ -309,13 +309,14 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, m_vsp = (m_stored_attr & FAC_B) ? 1 : 0; m_gpa = (m_stored_attr & FAC_GG) >> 2; m_rvv = (m_stored_attr & FAC_R) ? 1 : 0; - m_lten = (m_stored_attr & FAC_U) ? 1 : 0; + m_lten = ((m_stored_attr & FAC_U) != 0) && (lc == UNDERLINE) ? 1 : 0; for (int sx = 0; sx < CHARACTERS_PER_ROW; sx++) { int m_lineattr = 0; int lten = 0; int vsp = 0; + int rvv = 0; UINT8 data = m_buffer[!m_buffer_dma][sx]; @@ -328,7 +329,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, m_vsp = (data & FAC_B) ? 1 : 0; m_gpa = (data & FAC_GG) >> 2; m_rvv = (data & FAC_R) ? 1 : 0; - m_lten = (data & FAC_U) ? 1 : 0; + m_lten = ((data & FAC_U) != 0) && (lc == UNDERLINE) ? 1 : 0; if ((SCANLINES_PER_ROW - lc)==1) m_stored_attr = data; @@ -412,7 +413,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, } else { - lten = vis; + rvv = vis; } } @@ -429,7 +430,7 @@ void i8275_device::device_timer(emu_timer &timer, device_timer_id id, int param, (data & 0x7f), // char code to be displayed m_lineattr, // line attribute code lten | m_lten, // light enable signal - m_rvv, // reverse video signal + rvv ^ m_rvv, // reverse video signal vsp, // video suppression m_gpa, // general purpose attribute code m_hlgt // highlight -- cgit v1.2.3-70-g09d2 From 4945071946213c6d62aeaaa6fe0e7d7391141778 Mon Sep 17 00:00:00 2001 From: fulivi Date: Wed, 1 Apr 2015 16:10:30 +0200 Subject: Implemented disk writing for IMD format --- src/lib/formats/imd_dsk.c | 94 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/lib/formats/imd_dsk.c b/src/lib/formats/imd_dsk.c index 78f073fef1d..c6ad412eaa3 100644 --- a/src/lib/formats/imd_dsk.c +++ b/src/lib/formats/imd_dsk.c @@ -135,6 +135,91 @@ static floperr_t imd_read_indexed_sector(floppy_image_legacy *floppy, int head, return internal_imd_read_sector(floppy, head, track, sector, TRUE, buffer, buflen); } +static floperr_t imd_expand_file(floppy_image_legacy *floppy , UINT64 offset , size_t amount) +{ + if (amount == 0) { + return FLOPPY_ERROR_SUCCESS; + } + + UINT64 file_size = floppy_image_size(floppy); + + if (offset > file_size) { + return FLOPPY_ERROR_INTERNAL; + } + + UINT64 size_after_off = file_size - offset; + + if (size_after_off == 0) { + return FLOPPY_ERROR_SUCCESS; + } + + UINT8 *buffer = global_alloc_array(UINT8 , size_after_off); + + // Read the part of file after offset + floppy_image_read(floppy , buffer , offset , size_after_off); + + // Add zeroes + floppy_image_write_filler(floppy , 0 , offset , amount); + + // Write back the part of file after offset + floppy_image_write(floppy, buffer, offset + amount, size_after_off); + + global_free_array(buffer); + + // Update track offsets + struct imddsk_tag *tag = get_tag(floppy); + for (int track = 0; track < tag->tracks; track++) { + for (int head = 0; head < tag->heads; head++) { + UINT64 *track_off = &(tag->track_offsets[ (track << 1) + head ]); + if (*track_off >= offset) { + *track_off += amount; + } + } + } + + return FLOPPY_ERROR_SUCCESS; +} + +static floperr_t imd_write_indexed_sector(floppy_image_legacy *floppy, int head, int track, int sector_index, const void *buffer, size_t buflen, int ddam) +{ + UINT64 offset; + floperr_t err; + UINT8 header[1]; + + // take sector offset + err = get_offset(floppy, head, track, sector_index, TRUE, &offset); + if (err) + return err; + + floppy_image_read(floppy, header, offset, 1); + + switch (header[ 0 ]) { + case 0: + return FLOPPY_ERROR_SEEKERROR; + + default: + // Expand image file (from 1 byte to a whole sector) + err = imd_expand_file(floppy , offset , buflen - 1); + if (err) { + return err; + } + // Fall through! + + case 1: + case 3: + case 5: + case 7: + // Turn every kind of sector into type 1 (normal data) + header[ 0 ] = 1; + floppy_image_write(floppy, header, offset, 1); + // Write sector + floppy_image_write(floppy, buffer, offset + 1, buflen); + break; + } + + return FLOPPY_ERROR_SUCCESS; +} + static floperr_t imd_get_sector_length(floppy_image_legacy *floppy, int head, int track, int sector, UINT32 *sector_length) { floperr_t err; @@ -266,6 +351,7 @@ FLOPPY_CONSTRUCT( imd_dsk_construct ) callbacks = floppy_callbacks(floppy); callbacks->read_sector = imd_read_sector; callbacks->read_indexed_sector = imd_read_indexed_sector; + callbacks->write_indexed_sector = imd_write_indexed_sector; callbacks->get_sector_length = imd_get_sector_length; callbacks->get_heads_per_disk = imd_get_heads_per_disk; callbacks->get_tracks_per_disk = imd_get_tracks_per_disk; @@ -380,10 +466,10 @@ bool imd_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) for(int i=0; i 8) { -- cgit v1.2.3-70-g09d2 From 5f5b432cc6ac16ce066f8cd4960162ff1db1b560 Mon Sep 17 00:00:00 2001 From: fulivi Date: Thu, 9 Apr 2015 12:22:11 +0200 Subject: imds2: PIO added, seems OK --- src/mess/drivers/imds2.c | 54 ++++++++++++++++++++++++++++++++++++++++++++--- src/mess/includes/imds2.h | 12 +++++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/imds2.c b/src/mess/drivers/imds2.c index d225849497e..a711a519a72 100644 --- a/src/mess/drivers/imds2.c +++ b/src/mess/drivers/imds2.c @@ -63,7 +63,6 @@ // ICs that are not emulated yet are marked with "*" // // TODO: -// - Improve keyboard mapping // - Emulate PIO. No known dumps of its ROM are available, though. // - Emulate line printer output on PIO // - Emulate serial channels on IPC @@ -101,6 +100,9 @@ // FDC oscillator of IOC board: 8 MHz #define IOC_XTAL_Y1 XTAL_8MHz +// PIO oscillator: 6 MHz +#define IOC_XTAL_Y3 XTAL_6MHz + // Frequency of beeper #define IOC_BEEP_FREQ 3300 @@ -112,12 +114,13 @@ static ADDRESS_MAP_START(ipc_io_map , AS_IO , 8 , imds2_state) ADDRESS_MAP_UNMAP_LOW AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w) AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w) + AM_RANGE(0xf8 , 0xf9) AM_DEVREADWRITE("iocpio" , i8041_device , upi41_master_r , upi41_master_w) AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w) AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w) AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w) ADDRESS_MAP_END - static ADDRESS_MAP_START(ioc_mem_map , AS_PROGRAM , 8 , imds2_state) +static ADDRESS_MAP_START(ioc_mem_map , AS_PROGRAM , 8 , imds2_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000 , 0x1fff) AM_ROM AM_RANGE(0x4000 , 0x5fff) AM_RAM @@ -143,6 +146,11 @@ static ADDRESS_MAP_START(ioc_io_map , AS_IO , 8 , imds2_state) AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write) ADDRESS_MAP_END +static ADDRESS_MAP_START(pio_io_map , AS_IO , 8 , imds2_state) + AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_READWRITE(imds2_pio_port_p1_r , imds2_pio_port_p1_w) + AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READWRITE(imds2_pio_port_p2_r , imds2_pio_port_p2_w) +ADDRESS_MAP_END + static ADDRESS_MAP_START(kb_io_map , AS_IO , 8 , imds2_state) AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_WRITE(imds2_kb_port_p1_w) AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READ(imds2_kb_port_p2_r) @@ -161,6 +169,7 @@ imds2_state::imds2_state(const machine_config &mconfig, device_type type, const m_iocbeep(*this , "iocbeep"), m_ioctimer(*this , "ioctimer"), m_iocfdc(*this , "iocfdc"), + m_iocpio(*this , "iocpio"), m_kbcpu(*this , "kbcpu"), m_palette(*this , "palette"), m_gfxdecode(*this, "gfxdecode"), @@ -370,7 +379,7 @@ WRITE8_MEMBER(imds2_state::imds2_ioc_reset_f1_w) READ8_MEMBER(imds2_state::imds2_ioc_status_r) { - return (~m_ipc_ioc_status & 0x0f) | 0xf0; + return ~m_ipc_ioc_status; } READ8_MEMBER(imds2_state::imds2_ioc_dbbin_r) @@ -428,6 +437,31 @@ WRITE8_MEMBER(imds2_state::imds2_ioc_mem_w) return prog_space.write_byte(offset , data); } +READ8_MEMBER(imds2_state::imds2_pio_port_p1_r) +{ + // TODO + return 0; +} + +WRITE8_MEMBER(imds2_state::imds2_pio_port_p1_w) +{ + m_pio_port1 = data; + imds2_update_printer(); +} + +READ8_MEMBER(imds2_state::imds2_pio_port_p2_r) +{ + return m_pio_port2; +} + +WRITE8_MEMBER(imds2_state::imds2_pio_port_p2_w) +{ + m_pio_port2 = data; + imds2_update_printer(); + // Send INTR to IPC + m_ipclocpic->ir5_w(BIT(data , 7)); +} + I8275_DRAW_CHARACTER_MEMBER(imds2_state::crtc_display_pixels) { unsigned i; @@ -538,6 +572,11 @@ void imds2_state::imds2_update_beeper(void) m_iocbeep->set_state(m_beeper_timer == 0 && BIT(m_miscout , 0) == 0); } +void imds2_state::imds2_update_printer(void) +{ + // TODO +} + static INPUT_PORTS_START(imds2) // See [1], pg 56 for key matrix layout // See [1], pg 57 for keyboard layout @@ -727,6 +766,10 @@ static MACHINE_CONFIG_START(imds2 , imds2_state) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, imds2_floppy_interface) + MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3) + MCFG_CPU_IO_MAP(pio_io_map) + MCFG_QUANTUM_TIME(attotime::from_hz(100)) + MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz) /* 3.579545 MHz */ MCFG_CPU_IO_MAP(kb_io_map) MCFG_QUANTUM_TIME(attotime::from_hz(100)) @@ -743,6 +786,11 @@ ROM_START(imds2) ROM_LOAD("ioc_a51.bin" , 0x0800 , 0x0800 , CRC(6aa2f86c) SHA1(d3a5314d86e3366545b4c97b29e323dfab383d5f)) ROM_LOAD("ioc_a52.bin" , 0x1000 , 0x0800 , CRC(b88a38d5) SHA1(934716a1daec852f4d1f846510f42408df0c9584)) ROM_LOAD("ioc_a53.bin" , 0x1800 , 0x0800 , CRC(c8df4bb9) SHA1(2dfb921e94ae7033a7182457b2f00657674d1b77)) + + // ROM definition of PIO controller (8041A) + ROM_REGION(0x400 , "iocpio" , 0) + ROM_LOAD("pio_a72.bin" , 0 , 0x400 , CRC(c1eabf25)) + // ROM definition of keyboard controller (8741) ROM_REGION(0x400 , "kbcpu" , 0) ROM_LOAD("kbd511.bin" , 0 , 0x400 , CRC(ba7c4303) SHA1(19899af732d0ae1247bfc79979b1ee5f339ee5cf)) diff --git a/src/mess/includes/imds2.h b/src/mess/includes/imds2.h index 5fb1b513ecf..144445c2e6b 100644 --- a/src/mess/includes/imds2.h +++ b/src/mess/includes/imds2.h @@ -53,6 +53,10 @@ class imds2_state : public driver_device DECLARE_READ8_MEMBER(imds2_ioc_mem_r); DECLARE_WRITE8_MEMBER(imds2_ioc_mem_w); + DECLARE_READ8_MEMBER(imds2_pio_port_p1_r); + DECLARE_WRITE8_MEMBER(imds2_pio_port_p1_w); + DECLARE_READ8_MEMBER(imds2_pio_port_p2_r); + DECLARE_WRITE8_MEMBER(imds2_pio_port_p2_w); I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels); @@ -71,6 +75,7 @@ class imds2_state : public driver_device required_device m_iocbeep; required_device m_ioctimer; required_device m_iocfdc; + required_device m_iocpio; required_device m_kbcpu; required_device m_palette; required_device m_gfxdecode; @@ -90,6 +95,7 @@ class imds2_state : public driver_device bool imds2_in_ipc_rom(offs_t offset) const; void imds2_update_beeper(void); + void imds2_update_printer(void); // IPC control port UINT8 m_ipc_control; @@ -117,6 +123,12 @@ class imds2_state : public driver_device // IPC/IOC status UINT8 m_ipc_ioc_status; + + // PIO port 1 + UINT8 m_pio_port1; + + // PIO port 2 + UINT8 m_pio_port2; }; #endif /* _IMDS2_H_ */ -- cgit v1.2.3-70-g09d2 From a7402d0c963c47a142dea4691139b68d0253bedf Mon Sep 17 00:00:00 2001 From: fulivi Date: Fri, 10 Apr 2015 18:27:44 +0200 Subject: imds2: printer output completed, seems OK --- src/mess/drivers/imds2.c | 101 +++++++++++++++++++++++++++++++++++----------- src/mess/includes/imds2.h | 20 ++++++--- 2 files changed, 91 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/imds2.c b/src/mess/drivers/imds2.c index a711a519a72..746d900dfc1 100644 --- a/src/mess/drivers/imds2.c +++ b/src/mess/drivers/imds2.c @@ -35,7 +35,7 @@ // // This board acts as a controller for all I/O of the system. // It is structured as if it were 2 boards in one: -// One part (around 8080) controls Keyboard, CRT & floppy, the other part (around PIO 8741) controls all parallel I/Os +// One part (around 8080) controls Keyboard, CRT & floppy, the other part (around PIO 8041A) controls all parallel I/Os // (Line printer, Paper tape puncher, Paper tape reader, I/O to PROM programmer). // Both parts are interfaced to IPC through a bidirectional 8-bit bus. // IOC is composed of these parts: @@ -51,7 +51,7 @@ // A20 8275 CRT controller // A19 2708 Character generator ROM // LS1 3.3 kHz beeper -//*A72 8741-4 CPU @ 6 MHz (PIO: parallel I/O) +// A72 8041A CPU @ 6 MHz (PIO: parallel I/O) // // ********** // Keyboard controller @@ -63,8 +63,6 @@ // ICs that are not emulated yet are marked with "*" // // TODO: -// - Emulate PIO. No known dumps of its ROM are available, though. -// - Emulate line printer output on PIO // - Emulate serial channels on IPC // - Emulate PIT on IPC // - Adjust speed of processors. Wait states are not accounted for yet. @@ -86,8 +84,6 @@ // should be mounted and the system reset. After a few seconds the ISIS-II // prompt should appear. A command that could be tried is "DIR" that lists // the content of floppy disk. -// Please note that the message "FAILURE -- PIO NOT RESPONDING" is normal -// as the support for PIO isn't implemented yet #include "includes/imds2.h" @@ -114,7 +110,7 @@ static ADDRESS_MAP_START(ipc_io_map , AS_IO , 8 , imds2_state) ADDRESS_MAP_UNMAP_LOW AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w) AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w) - AM_RANGE(0xf8 , 0xf9) AM_DEVREADWRITE("iocpio" , i8041_device , upi41_master_r , upi41_master_w) + AM_RANGE(0xf8 , 0xf9) AM_DEVREADWRITE("iocpio" , i8041_device , upi41_master_r , upi41_master_w) AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w) AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w) AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w) @@ -169,11 +165,12 @@ imds2_state::imds2_state(const machine_config &mconfig, device_type type, const m_iocbeep(*this , "iocbeep"), m_ioctimer(*this , "ioctimer"), m_iocfdc(*this , "iocfdc"), - m_iocpio(*this , "iocpio"), + m_iocpio(*this , "iocpio"), m_kbcpu(*this , "kbcpu"), m_palette(*this , "palette"), m_gfxdecode(*this, "gfxdecode"), m_floppy0(*this , FLOPPY_0), + m_centronics(*this , "centronics"), m_io_key0(*this , "KEY0"), m_io_key1(*this , "KEY1"), m_io_key2(*this , "KEY2"), @@ -182,7 +179,8 @@ imds2_state::imds2_state(const machine_config &mconfig, device_type type, const m_io_key5(*this , "KEY5"), m_io_key6(*this , "KEY6"), m_io_key7(*this , "KEY7"), - m_ioc_options(*this , "IOC_OPTS") + m_ioc_options(*this , "IOC_OPTS"), + m_device_status_byte(0xff) { } @@ -439,29 +437,62 @@ WRITE8_MEMBER(imds2_state::imds2_ioc_mem_w) READ8_MEMBER(imds2_state::imds2_pio_port_p1_r) { - // TODO - return 0; + // If STATUS ENABLE/ == 0 return inverted device status byte, else return 0xff + // STATUS ENABLE/ == 0 when P23-P20 == 12 & P24 == 0 & P25 = 1 & P26 = 1 + if ((m_pio_port2 & 0x7f) == 0x6c) { + return ~m_device_status_byte; + } else { + return 0xff; +} } WRITE8_MEMBER(imds2_state::imds2_pio_port_p1_w) { - m_pio_port1 = data; - imds2_update_printer(); + m_pio_port1 = data; + imds2_update_printer(); } READ8_MEMBER(imds2_state::imds2_pio_port_p2_r) { - return m_pio_port2; + return m_pio_port2; } WRITE8_MEMBER(imds2_state::imds2_pio_port_p2_w) { - m_pio_port2 = data; - imds2_update_printer(); + m_pio_port2 = data; + imds2_update_printer(); // Send INTR to IPC m_ipclocpic->ir5_w(BIT(data , 7)); } +WRITE_LINE_MEMBER(imds2_state::imds2_pio_lpt_ack_w) +{ + if (state) { + m_device_status_byte |= 0x20; + } else { + m_device_status_byte &= ~0x20; + } +} + +WRITE_LINE_MEMBER(imds2_state::imds2_pio_lpt_busy_w) +{ + // Busy is active high in centronics_device whereas it's active low in MDS + if (!state) { + m_device_status_byte |= 0x10; + } else { + m_device_status_byte &= ~0x10; + } +} + +WRITE_LINE_MEMBER(imds2_state::imds2_pio_lpt_select_w) +{ + if (state) { + m_device_status_byte |= 0x40; + } else { + m_device_status_byte &= ~0x40; + } +} + I8275_DRAW_CHARACTER_MEMBER(imds2_state::crtc_display_pixels) { unsigned i; @@ -574,7 +605,24 @@ void imds2_state::imds2_update_beeper(void) void imds2_state::imds2_update_printer(void) { - // TODO + // Data to printer is ~P1 when STATUS ENABLE/==1, else 0xff (assuming pull-ups on printer) + UINT8 printer_data; + if ((m_pio_port2 & 0x7f) == 0x6c) { + printer_data = 0xff; + } else { + printer_data = ~m_pio_port1; + } + m_centronics->write_data0(BIT(printer_data , 0)); + m_centronics->write_data1(BIT(printer_data , 1)); + m_centronics->write_data2(BIT(printer_data , 2)); + m_centronics->write_data3(BIT(printer_data , 3)); + m_centronics->write_data4(BIT(printer_data , 4)); + m_centronics->write_data5(BIT(printer_data , 5)); + m_centronics->write_data6(BIT(printer_data , 6)); + m_centronics->write_data7(BIT(printer_data , 7)); + + // LPT DATA STROBE/ == 0 when P23-P20 == 9 & P24 == 0 + m_centronics->write_strobe((m_pio_port2 & 0x1f) != 0x09); } static INPUT_PORTS_START(imds2) @@ -766,13 +814,18 @@ static MACHINE_CONFIG_START(imds2 , imds2_state) MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, imds2_floppy_interface) - MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3) - MCFG_CPU_IO_MAP(pio_io_map) + MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3) + MCFG_CPU_IO_MAP(pio_io_map) MCFG_QUANTUM_TIME(attotime::from_hz(100)) - + MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz) /* 3.579545 MHz */ MCFG_CPU_IO_MAP(kb_io_map) MCFG_QUANTUM_TIME(attotime::from_hz(100)) + + MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") + MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(imds2_state , imds2_pio_lpt_ack_w)) + MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(imds2_state , imds2_pio_lpt_busy_w)) + MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(imds2_state , imds2_pio_lpt_select_w)) MACHINE_CONFIG_END ROM_START(imds2) @@ -787,10 +840,10 @@ ROM_START(imds2) ROM_LOAD("ioc_a52.bin" , 0x1000 , 0x0800 , CRC(b88a38d5) SHA1(934716a1daec852f4d1f846510f42408df0c9584)) ROM_LOAD("ioc_a53.bin" , 0x1800 , 0x0800 , CRC(c8df4bb9) SHA1(2dfb921e94ae7033a7182457b2f00657674d1b77)) - // ROM definition of PIO controller (8041A) - ROM_REGION(0x400 , "iocpio" , 0) - ROM_LOAD("pio_a72.bin" , 0 , 0x400 , CRC(c1eabf25)) - + // ROM definition of PIO controller (8041A) + ROM_REGION(0x400 , "iocpio" , 0) + ROM_LOAD("pio_a72.bin" , 0 , 0x400 , BAD_DUMP CRC(9a446534)) + // ROM definition of keyboard controller (8741) ROM_REGION(0x400 , "kbcpu" , 0) ROM_LOAD("kbd511.bin" , 0 , 0x400 , CRC(ba7c4303) SHA1(19899af732d0ae1247bfc79979b1ee5f339ee5cf)) diff --git a/src/mess/includes/imds2.h b/src/mess/includes/imds2.h index 144445c2e6b..a7c05a46a8a 100644 --- a/src/mess/includes/imds2.h +++ b/src/mess/includes/imds2.h @@ -15,6 +15,7 @@ #include "machine/pic8259.h" #include "machine/i8271.h" #include "imagedev/flopdrv.h" +#include "bus/centronics/ctronics.h" class imds2_state : public driver_device { @@ -57,6 +58,9 @@ class imds2_state : public driver_device DECLARE_WRITE8_MEMBER(imds2_pio_port_p1_w); DECLARE_READ8_MEMBER(imds2_pio_port_p2_r); DECLARE_WRITE8_MEMBER(imds2_pio_port_p2_w); + DECLARE_WRITE_LINE_MEMBER(imds2_pio_lpt_ack_w); + DECLARE_WRITE_LINE_MEMBER(imds2_pio_lpt_busy_w); + DECLARE_WRITE_LINE_MEMBER(imds2_pio_lpt_select_w); I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels); @@ -75,11 +79,12 @@ class imds2_state : public driver_device required_device m_iocbeep; required_device m_ioctimer; required_device m_iocfdc; - required_device m_iocpio; + required_device m_iocpio; required_device m_kbcpu; required_device m_palette; required_device m_gfxdecode; required_device m_floppy0; + required_device m_centronics; required_ioport m_io_key0; required_ioport m_io_key1; required_ioport m_io_key2; @@ -95,7 +100,7 @@ class imds2_state : public driver_device bool imds2_in_ipc_rom(offs_t offset) const; void imds2_update_beeper(void); - void imds2_update_printer(void); + void imds2_update_printer(void); // IPC control port UINT8 m_ipc_control; @@ -124,11 +129,14 @@ class imds2_state : public driver_device // IPC/IOC status UINT8 m_ipc_ioc_status; - // PIO port 1 - UINT8 m_pio_port1; + // PIO port 1 + UINT8 m_pio_port1; - // PIO port 2 - UINT8 m_pio_port2; + // PIO port 2 + UINT8 m_pio_port2; + + // PIO device status byte + UINT8 m_device_status_byte; }; #endif /* _IMDS2_H_ */ -- cgit v1.2.3-70-g09d2 From 52a51f6912a1089311365dc1148fe0498a44fe2f Mon Sep 17 00:00:00 2001 From: fulivi Date: Mon, 13 Apr 2015 12:06:25 +0200 Subject: imds2: changed checksum for PIO fw v1.1 --- src/mess/drivers/imds2.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mess/drivers/imds2.c b/src/mess/drivers/imds2.c index 746d900dfc1..0eb65373a96 100644 --- a/src/mess/drivers/imds2.c +++ b/src/mess/drivers/imds2.c @@ -62,7 +62,13 @@ // // ICs that are not emulated yet are marked with "*" // +// NOTE: +// Firmware running on PIO is NOT original because a dump is not available at the moment. +// Emulator runs a version of PIO firmware that was specifically developped by me to implement +// line printer output. +// // TODO: +// - Find a dump of the original PIO firmware // - Emulate serial channels on IPC // - Emulate PIT on IPC // - Adjust speed of processors. Wait states are not accounted for yet. @@ -841,8 +847,10 @@ ROM_START(imds2) ROM_LOAD("ioc_a53.bin" , 0x1800 , 0x0800 , CRC(c8df4bb9) SHA1(2dfb921e94ae7033a7182457b2f00657674d1b77)) // ROM definition of PIO controller (8041A) + // For the time being a specially developped PIO firmware is used until a dump of the original PIO is + // available. ROM_REGION(0x400 , "iocpio" , 0) - ROM_LOAD("pio_a72.bin" , 0 , 0x400 , BAD_DUMP CRC(9a446534)) + ROM_LOAD("pio_a72.bin" , 0 , 0x400 , BAD_DUMP CRC(8c8e740b)) // ROM definition of keyboard controller (8741) ROM_REGION(0x400 , "kbcpu" , 0) -- cgit v1.2.3-70-g09d2 From 7a2ca1631c4674131635ef1b7c755997ecd22d91 Mon Sep 17 00:00:00 2001 From: couriersud Date: Tue, 14 Apr 2015 01:21:28 +0200 Subject: Completely hooked up 6845 in cardline driver. Documented asic addresses. [Couriersud] --- src/mame/drivers/cardline.c | 163 +++++++++++++++++++++++++++++++------------- 1 file changed, 117 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c index fe70e1b88d4..92c953f6f6f 100644 --- a/src/mame/drivers/cardline.c +++ b/src/mame/drivers/cardline.c @@ -14,7 +14,7 @@ XTAL 4 MHz TODO: - Hook up MC6845P + Really understand ASIC chip ***********************************/ @@ -37,56 +37,109 @@ public: m_colorram(*this, "colorram"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_screen(*this, "screen") + { } - int m_video; required_shared_ptr m_videoram; required_shared_ptr m_colorram; - int m_var; + + UINT8 m_video; + UINT8 m_hsync_q; + DECLARE_WRITE8_MEMBER(vram_w); DECLARE_WRITE8_MEMBER(attr_w); DECLARE_WRITE8_MEMBER(video_w); - DECLARE_READ8_MEMBER(unk_r); + DECLARE_READ8_MEMBER(hsync_r); DECLARE_WRITE8_MEMBER(lamps_w); + + DECLARE_READ8_MEMBER(asic_r); + DECLARE_WRITE8_MEMBER(asic_w); + DECLARE_WRITE8_MEMBER(a3003_w); + DECLARE_PALETTE_INIT(cardline); - UINT32 screen_update_cardline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + virtual void machine_start(); + + DECLARE_WRITE_LINE_MEMBER(hsync_changed); + DECLARE_WRITE_LINE_MEMBER(vsync_changed); + MC6845_BEGIN_UPDATE(crtc_begin_update); + MC6845_UPDATE_ROW(crtc_update_row); + required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; + required_device m_screen; }; +void cardline_state::machine_start() +{ + m_video = 0; + m_hsync_q = 1; + for (int i=0; i < 0x2000; i++) + m_maincpu.target()->space(AS_IO).write_byte(i, 0x73); + save_item(NAME(m_video)); + save_item(NAME(m_hsync_q)); +} -#define DRAW_TILE(machine, offset, transparency) m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,\ - (m_videoram[index+offset] | (m_colorram[index+offset]<<8))&0x3fff,\ - (m_colorram[index+offset]&0x80)>>7,\ - 0,0,\ - x<<3, y<<3,\ - transparency?transparency:(UINT32)-1); +MC6845_BEGIN_UPDATE( cardline_state::crtc_begin_update ) +{ +} -UINT32 cardline_state::screen_update_cardline(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) + +MC6845_UPDATE_ROW( cardline_state::crtc_update_row ) { - int x,y; - bitmap.fill(0, cliprect); - for(y=0;y<32;y++) + UINT8 *gfx; + UINT16 x = 0; + int gfx_ofs; + const rgb_t *palette = m_palette->palette()->entry_list_raw(); + + if(m_video&1) + gfx_ofs = 0; + if(m_video&2) + gfx_ofs = 0x1000; + + gfx = memregion("gfx1")->base(); + + for (UINT8 cx = 0; cx < x_count; cx++) { - for(x=0;x<64;x++) + int bg_tile = (m_videoram[ma + gfx_ofs] | (m_colorram[ma + gfx_ofs]<<8)) & 0x3fff; + int bg_pal_ofs = ((m_colorram[ma + gfx_ofs] & 0x80) ? 256 : 0); + int fg_tile = (m_videoram[ma + gfx_ofs + 0x800] | (m_colorram[ma + gfx_ofs + 0x800]<<8)) & 0x3fff; + int fg_pal_ofs = ((m_colorram[ma + gfx_ofs + 0x800] & 0x80) ? 256 : 0); + for (int i = 0; i < 8; i++) { - int index=y*64+x; - if(m_video&1) - { - DRAW_TILE(machine(),0,0); - DRAW_TILE(machine(),0x800,1); - } - - if(m_video&2) - { - DRAW_TILE(machine(),0x1000,0); - DRAW_TILE(machine(),0x1800,1); - } + int bg_col = gfx[bg_tile * 64 + ra * 8 + i]; + int fg_col = gfx[fg_tile * 64 + ra * 8 + i]; + + if (fg_col == 1) + bitmap.pix32(y, x) = palette[bg_pal_ofs + bg_col]; + else + bitmap.pix32(y, x) = palette[fg_pal_ofs + fg_col]; + + x++; } + ma++; } - return 0; +} + + +WRITE_LINE_MEMBER(cardline_state::hsync_changed) +{ + /* update any video up to the current scanline */ + m_hsync_q = (state ? 0x00 : 0x10); + m_screen->update_now(); +} + +WRITE_LINE_MEMBER(cardline_state::vsync_changed) +{ + //m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE8_MEMBER(cardline_state::a3003_w) +{ + /* seems a generate a signal when address is written to */ } WRITE8_MEMBER(cardline_state::vram_w) @@ -95,6 +148,23 @@ WRITE8_MEMBER(cardline_state::vram_w) m_videoram[offset]=data; } +READ8_MEMBER(cardline_state::asic_r) +{ + static int t=0; + //printf("asic read %02x\n", offset); + // change "if (0)" to "if (1)" to get "ASIC is ERROR!" message + if (0) + return t++; + else + return 0xaa; +} + +WRITE8_MEMBER(cardline_state::asic_w) +{ + //printf("asic write %02x %02x\n", offset, data); +} + + WRITE8_MEMBER(cardline_state::attr_w) { offset+=0x1000*((m_video&2)>>1); @@ -107,14 +177,9 @@ WRITE8_MEMBER(cardline_state::video_w) //printf("m_video %x\n", m_video); } -READ8_MEMBER(cardline_state::unk_r) +READ8_MEMBER(cardline_state::hsync_r) { - /* TODO: Certainly a hack. Most likely video related. - * Using VBLANK makes screen updates to slow. May be hblank. - */ - m_var^=0x10; - //printf("var %x\n",m_var); - return m_var; + return m_hsync_q; } WRITE8_MEMBER(cardline_state::lamps_w) @@ -140,18 +205,19 @@ static ADDRESS_MAP_START( mem_io, AS_IO, 8, cardline_state ) AM_RANGE(0x2005, 0x2005) AM_READ_PORT("IN1") AM_RANGE(0x2006, 0x2006) AM_READ_PORT("DSW") AM_RANGE(0x2007, 0x2007) AM_WRITE(lamps_w) - AM_RANGE(0x2008, 0x2008) AM_NOP - AM_RANGE(0x2080, 0x213f) AM_NOP + AM_RANGE(0x2008, 0x2008) AM_NOP // set to 1 during coin input + //AM_RANGE(0x2080, 0x213f) AM_NOP // ???? + AM_RANGE(0x2100, 0x213f) AM_READWRITE(asic_r, asic_w) AM_RANGE(0x2400, 0x2400) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2801, 0x2801) AM_DEVWRITE("crtc", mc6845_device, register_w) - AM_RANGE(0x2840, 0x2840) AM_NOP - AM_RANGE(0x2880, 0x2880) AM_NOP - AM_RANGE(0x3003, 0x3003) AM_NOP + //AM_RANGE(0x2840, 0x2840) AM_NOP // ??? + //AM_RANGE(0x2880, 0x2880) AM_NOP // ??? + AM_RANGE(0x3003, 0x3003) AM_WRITE(a3003_w) AM_RANGE(0xc000, 0xdfff) AM_WRITE(vram_w) AM_SHARE("videoram") AM_RANGE(0xe000, 0xffff) AM_WRITE(attr_w) AM_SHARE("colorram") /* Ports */ - AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(unk_r, video_w) + AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE(hsync_r, video_w) ADDRESS_MAP_END @@ -248,8 +314,9 @@ static MACHINE_CONFIG_START( cardline, cardline_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(64*8, 35*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(cardline_state, screen_update_cardline) - MCFG_SCREEN_PALETTE("palette") + //MCFG_SCREEN_UPDATE_DRIVER(cardline_state, screen_update_cardline) + //MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cardline) MCFG_PALETTE_ADD("palette", 512) @@ -258,6 +325,10 @@ static MACHINE_CONFIG_START( cardline, cardline_state ) MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/8) /* divisor guessed - result is 56 Hz */ MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_BEGIN_UPDATE_CB(cardline_state, crtc_begin_update) + MCFG_MC6845_UPDATE_ROW_CB(cardline_state, crtc_update_row) + MCFG_MC6845_OUT_HSYNC_CB(WRITELINE(cardline_state, hsync_changed)) + MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(cardline_state, vsync_changed)) MCFG_DEFAULT_LAYOUT(layout_cardline) @@ -292,4 +363,4 @@ ROM_START( cardline ) ROM_END -GAME( 199?, cardline, 0, cardline, cardline, driver_device, 0, ROT0, "Veltmeijer", "Card Line" , 0) +GAME( 199?, cardline, 0, cardline, cardline, driver_device, 0, ROT0, "Veltmeijer", "Card Line" , GAME_SUPPORTS_SAVE) -- cgit v1.2.3-70-g09d2 From d4c67891c446d6dbd3a77a478b819c6790e27246 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 15 Apr 2015 17:52:46 +0200 Subject: headonb.c, shangha3.c, shanghai.c, truco.c: added / enabled save state support (nw) --- src/mame/drivers/headonb.c | 35 ++++++++++++++------------- src/mame/drivers/shangha3.c | 56 ++++++++++++++++++++------------------------ src/mame/drivers/shanghai.c | 40 +++++++++++++++++-------------- src/mame/drivers/truco.c | 14 +++++++---- src/mame/includes/shangha3.h | 46 ++++++++++++++++++++++-------------- src/mame/includes/truco.h | 21 +++++++++++------ src/mame/video/shangha3.c | 15 +++++++----- src/mame/video/truco.c | 2 +- 8 files changed, 127 insertions(+), 102 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/headonb.c b/src/mame/drivers/headonb.c index 7eb96c23a12..87e516c3b99 100644 --- a/src/mame/drivers/headonb.c +++ b/src/mame/drivers/headonb.c @@ -37,21 +37,24 @@ class headonb_state : public driver_device public: headonb_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_video_ram(*this, "video_ram"), m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") { } + m_gfxdecode(*this, "gfxdecode"), + m_video_ram(*this, "video_ram") { } + + required_device m_maincpu; + required_device m_gfxdecode; required_shared_ptr m_video_ram; tilemap_t *m_tilemap; - DECLARE_WRITE8_MEMBER(headonb_video_ram_w); + DECLARE_WRITE8_MEMBER(video_ram_w); virtual void video_start(); - UINT32 screen_update_headonb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TILE_GET_INFO_MEMBER(get_headonb_tile_info); - required_device m_maincpu; - required_device m_gfxdecode; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + TILE_GET_INFO_MEMBER(get_tile_info); }; @@ -61,7 +64,7 @@ public: ***************************************************************************/ -TILE_GET_INFO_MEMBER(headonb_state::get_headonb_tile_info) +TILE_GET_INFO_MEMBER(headonb_state::get_tile_info) { UINT8 code = m_video_ram[tile_index]; SET_TILE_INFO_MEMBER(0, code, 0, 0); @@ -69,10 +72,10 @@ TILE_GET_INFO_MEMBER(headonb_state::get_headonb_tile_info) void headonb_state::video_start() { - m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(headonb_state::get_headonb_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(headonb_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } -UINT32 headonb_state::screen_update_headonb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 headonb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; @@ -85,7 +88,7 @@ UINT32 headonb_state::screen_update_headonb(screen_device &screen, bitmap_ind16 ***************************************************************************/ -WRITE8_MEMBER(headonb_state::headonb_video_ram_w) +WRITE8_MEMBER(headonb_state::video_ram_w) { m_video_ram[offset] = data; m_tilemap->mark_tile_dirty(offset); @@ -93,7 +96,7 @@ WRITE8_MEMBER(headonb_state::headonb_video_ram_w) static ADDRESS_MAP_START( headonb_map, AS_PROGRAM, 8, headonb_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_MIRROR(0x4000) - AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(headonb_video_ram_w) AM_SHARE("video_ram") + AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(video_ram_w) AM_SHARE("video_ram") AM_RANGE(0xff00, 0xffff) AM_RAM ADDRESS_MAP_END @@ -138,7 +141,7 @@ INPUT_PORTS_END ***************************************************************************/ -static const gfx_layout headonb_charlayout = +static const gfx_layout charlayout = { 8,8, RGN_FRAC(1,1), @@ -150,7 +153,7 @@ static const gfx_layout headonb_charlayout = }; static GFXDECODE_START( headonb ) - GFXDECODE_ENTRY( "gfx1", 0, headonb_charlayout, 0, 1 ) + GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 1 ) GFXDECODE_END static MACHINE_CONFIG_START( headonb, headonb_state ) @@ -167,7 +170,7 @@ static MACHINE_CONFIG_START( headonb, headonb_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update_headonb) + MCFG_SCREEN_UPDATE_DRIVER(headonb_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", headonb) @@ -201,4 +204,4 @@ ROM_START( headonb ) ROM_END -GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", GAME_NO_SOUND ) +GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shangha3.c b/src/mame/drivers/shangha3.c index 6611911bb49..08ecb26007d 100644 --- a/src/mame/drivers/shangha3.c +++ b/src/mame/drivers/shangha3.c @@ -67,8 +67,6 @@ WRITE16_MEMBER(shangha3_state::shangha3_prot_w) logerror("PC %04x: write %02x to 20004e\n",space.device().safe_pc(),data); } - - WRITE16_MEMBER(shangha3_state::shangha3_coinctrl_w) { if (ACCESSING_BITS_8_15) @@ -118,7 +116,7 @@ WRITE16_MEMBER(shangha3_state::heberpop_sound_command_w) } } -WRITE16_MEMBER(shangha3_state::shangha3_irq_ack_w) +WRITE16_MEMBER(shangha3_state::irq_ack_w) { m_maincpu->set_input_line(4, CLEAR_LINE); } @@ -128,8 +126,8 @@ static ADDRESS_MAP_START( shangha3_map, AS_PROGRAM, 16, shangha3_state ) AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS") AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w) - AM_RANGE(0x20000a, 0x20000b) AM_WRITE(shangha3_irq_ack_w) + AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w) + AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w) AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w) AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0x00ff) AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ay8910_device, data_w, 0x00ff) @@ -137,8 +135,8 @@ static ADDRESS_MAP_START( shangha3_map, AS_PROGRAM, 16, shangha3_state ) AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w) AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w) + AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) + AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) ADDRESS_MAP_END static ADDRESS_MAP_START( heberpop_map, AS_PROGRAM, 16, shangha3_state ) @@ -147,13 +145,13 @@ static ADDRESS_MAP_START( heberpop_map, AS_PROGRAM, 16, shangha3_state ) AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS") AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM") AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW") - AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w) - AM_RANGE(0x20000a, 0x20000b) AM_WRITE(shangha3_irq_ack_w) + AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w) + AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w) AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w) AM_RANGE(0x20000e, 0x20000f) AM_WRITE(heberpop_sound_command_w) AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w) + AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) + AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END @@ -162,14 +160,14 @@ static ADDRESS_MAP_START( blocken_map, AS_PROGRAM, 16, shangha3_state ) AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS") AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") AM_WRITENOP // w -> unknown purpose AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW") - AM_RANGE(0x100008, 0x100009) AM_WRITE(shangha3_blitter_go_w) - AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(shangha3_irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?) + AM_RANGE(0x100008, 0x100009) AM_WRITE(blitter_go_w) + AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?) AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w) AM_RANGE(0x10000e, 0x10000f) AM_WRITE(heberpop_sound_command_w) AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */ - AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w) - AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w) + AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w) + AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w) AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0) ADDRESS_MAP_END @@ -451,12 +449,6 @@ static GFXDECODE_START( shangha3 ) GFXDECODE_END -WRITE_LINE_MEMBER(shangha3_state::irqhandler) -{ - m_audiocpu->set_input_line(INPUT_LINE_NMI, state); -} - - static MACHINE_CONFIG_START( shangha3, shangha3_state ) /* basic machine hardware */ @@ -472,7 +464,7 @@ static MACHINE_CONFIG_START( shangha3, shangha3_state ) // MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1) MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */ - MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3) + MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3) @@ -513,7 +505,7 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state ) // MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1) MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */ - MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3) + MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3) @@ -526,7 +518,7 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */ - MCFG_YM2612_IRQ_HANDLER(WRITELINE(shangha3_state,irqhandler)) + MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "mono", 0.40) MCFG_SOUND_ROUTE(1, "mono", 0.40) @@ -554,7 +546,7 @@ static MACHINE_CONFIG_START( blocken, shangha3_state ) // MCFG_SCREEN_VISIBLE_AREA(0*16, 24*16-1, 1*16, 15*16-1) MCFG_SCREEN_RAW_PARAMS(XTAL_48MHz/6,512,0,24*16,263,1*16,15*16) /* refresh rate is unknown */ - MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update_shangha3) + MCFG_SCREEN_UPDATE_DRIVER(shangha3_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", shangha3) @@ -567,7 +559,7 @@ static MACHINE_CONFIG_START( blocken, shangha3_state ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */ - MCFG_YM2612_IRQ_HANDLER(WRITELINE(shangha3_state,irqhandler)) + MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "mono", 0.40) MCFG_SOUND_ROUTE(1, "mono", 0.40) @@ -723,6 +715,8 @@ ROM_END DRIVER_INIT_MEMBER(shangha3_state,shangha3) { m_do_shadows = 1; + + save_item(NAME(m_prot_count)); } DRIVER_INIT_MEMBER(shangha3_state,heberpop) @@ -730,8 +724,8 @@ DRIVER_INIT_MEMBER(shangha3_state,heberpop) m_do_shadows = 0; } -GAME( 1993, shangha3, 0, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", 0 ) -GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", 0 ) -GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", 0 ) -GAME( 1994, heberpop, 0, heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", 0 ) -GAME( 1994, blocken, 0, blocken, blocken, shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", GAME_IMPERFECT_GRAPHICS ) +GAME( 1993, shangha3, 0, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (World)", GAME_SUPPORTS_SAVE ) +GAME( 1993, shangha3u, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (US)", GAME_SUPPORTS_SAVE ) +GAME( 1993, shangha3j, shangha3, shangha3, shangha3, shangha3_state, shangha3, ROT0, "Sunsoft", "Shanghai III (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1994, heberpop, 0, heberpop, heberpop, shangha3_state, heberpop, ROT0, "Sunsoft / Atlus", "Hebereke no Popoon (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1994, blocken, 0, blocken, blocken, shangha3_state, heberpop, ROT0, "Visco / KID", "Blocken (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/shanghai.c b/src/mame/drivers/shanghai.c index 0286f886821..1ee06de0fb4 100644 --- a/src/mame/drivers/shanghai.c +++ b/src/mame/drivers/shanghai.c @@ -14,7 +14,7 @@ settings, but music runs too fast. * kothello Notes: If you use the key labeled as 'Service Coin' you can start the game -with a single 'coin' no matter the Coingae Setting, but the credit is not +with a single 'coin' no matter the Coinage Setting, but the credit is not displayed. ***************************************************************************/ @@ -33,14 +33,18 @@ public: m_maincpu(*this, "maincpu"), m_hd63484(*this, "hd63484") { } + required_device m_maincpu; + required_device m_hd63484; + DECLARE_WRITE16_MEMBER(shanghai_coin_w); DECLARE_READ16_MEMBER(kothello_hd63484_status_r); + virtual void video_start(); DECLARE_PALETTE_INIT(shanghai); - UINT32 screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(shanghai_interrupt); - required_device m_maincpu; - required_device m_hd63484; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(interrupt); }; @@ -78,7 +82,7 @@ void shanghai_state::video_start() { } -UINT32 shanghai_state::screen_update_shanghai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 shanghai_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int x, y, b, src; @@ -125,7 +129,7 @@ UINT32 shanghai_state::screen_update_shanghai(screen_device &screen, bitmap_ind1 return 0; } -INTERRUPT_GEN_MEMBER(shanghai_state::shanghai_interrupt) +INTERRUPT_GEN_MEMBER(shanghai_state::interrupt) { device.execute().set_input_line_and_vector(0,HOLD_LINE,0x80); } @@ -419,14 +423,14 @@ static MACHINE_CONFIG_START( shanghai, shanghai_state ) MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* NEC D70116C-8 */ MCFG_CPU_PROGRAM_MAP(shanghai_map) MCFG_CPU_IO_MAP(shanghai_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, shanghai_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, interrupt) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(30) MCFG_SCREEN_SIZE(384, 280) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel - MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai) + MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -455,14 +459,14 @@ static MACHINE_CONFIG_START( shangha2, shanghai_state ) MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz/2) /* ? */ MCFG_CPU_PROGRAM_MAP(shangha2_map) MCFG_CPU_IO_MAP(shangha2_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, shanghai_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, interrupt) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(30) MCFG_SCREEN_SIZE(384, 280) MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 280-1) // Base Screen is 384 pixel - MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai) + MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -489,7 +493,7 @@ static MACHINE_CONFIG_START( kothello, shanghai_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V30, XTAL_16MHz) MCFG_CPU_PROGRAM_MAP(kothello_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, shanghai_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", shanghai_state, interrupt) SEIBU3A_SOUND_SYSTEM_CPU(XTAL_16MHz/4) @@ -500,7 +504,7 @@ static MACHINE_CONFIG_START( kothello, shanghai_state ) MCFG_SCREEN_REFRESH_RATE(30) /* Should be 57Hz, but plays too fast */ MCFG_SCREEN_SIZE(384, 280) MCFG_SCREEN_VISIBLE_AREA(8, 384-1, 0, 250-1) // Base Screen is 376 pixel - MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update_shanghai) + MCFG_SCREEN_UPDATE_DRIVER(shanghai_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -684,8 +688,8 @@ ROM_END -GAME( 1988, shanghai, 0, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (World)", GAME_IMPERFECT_GRAPHICS ) -GAME( 1988, shanghaij, shanghai, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (Japan)", GAME_IMPERFECT_GRAPHICS ) -GAME( 1989, shangha2, 0, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", 0 ) -GAME( 1989, shangha2a, shangha2, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", 0 ) -GAME( 1990, kothello, 0, kothello, kothello, driver_device, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_IMPERFECT_GRAPHICS ) +GAME( 1988, shanghai, 0, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (World)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1988, shanghaij, shanghai, shanghai, shanghai, driver_device, 0, ROT0, "Sunsoft", "Shanghai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1989, shangha2, 0, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1989, shangha2a, shangha2, shangha2, shangha2, driver_device, 0, ROT0, "Sunsoft", "Shanghai II (Japan, set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1990, kothello, 0, kothello, kothello, driver_device, 0, ROT0, "Success", "Kyuukyoku no Othello", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c index f4db5d43691..3b6d743d9de 100644 --- a/src/mame/drivers/truco.c +++ b/src/mame/drivers/truco.c @@ -208,7 +208,6 @@ #include "cpu/m6809/m6809.h" #include "video/mc6845.h" #include "machine/6821pia.h" -#include "sound/dac.h" #include "includes/truco.h" @@ -355,6 +354,11 @@ static INPUT_PORTS_START( truco ) INPUT_PORTS_END +void truco_state::machine_start() +{ + save_item(NAME(m_trigger)); +} + /******************************************* * Machine Reset & Interrupts * *******************************************/ @@ -389,7 +393,7 @@ void truco_state::machine_reset() m_battery_ram[0x020] = m_battery_ram[0x011]; } -INTERRUPT_GEN_MEMBER(truco_state::truco_interrupt) +INTERRUPT_GEN_MEMBER(truco_state::interrupt) { /* coinup */ @@ -414,7 +418,7 @@ static MACHINE_CONFIG_START( truco, truco_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", truco_state, truco_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", truco_state, interrupt) MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(1.6)) /* 1.6 seconds */ MCFG_DEVICE_ADD("pia0", PIA6821, 0) @@ -432,7 +436,7 @@ static MACHINE_CONFIG_START( truco, truco_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(256, 192) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 192-1) - MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update_truco) + MCFG_SCREEN_UPDATE_DRIVER(truco_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 16) @@ -463,4 +467,4 @@ ROM_START( truco ) ROM_END /* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */ -GAME( 198?, truco, 0, truco, truco, driver_device, 0, ROT0, "Playtronic SRL", "Truco-Tron", 0 ) +GAME( 198?, truco, 0, truco, truco, driver_device, 0, ROT0, "Playtronic SRL", "Truco-Tron", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/shangha3.h b/src/mame/includes/shangha3.h index 699e84b021a..20ce889c66a 100644 --- a/src/mame/includes/shangha3.h +++ b/src/mame/includes/shangha3.h @@ -5,42 +5,52 @@ class shangha3_state : public driver_device public: shangha3_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_ram(*this, "ram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_oki(*this, "oki"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_ram(*this, "ram") { } + + required_device m_maincpu; + optional_device m_audiocpu; + required_device m_oki; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; - int m_prot_count; required_shared_ptr m_ram; + // driver init configuration int m_do_shadows; - + UINT8 m_drawmode_table[16]; + + int m_prot_count; UINT16 m_gfxlist_addr; bitmap_ind16 m_rawbitmap; - UINT8 m_drawmode_table[16]; + // common + DECLARE_WRITE16_MEMBER(flipscreen_w); + DECLARE_WRITE16_MEMBER(gfxlist_addr_w); + DECLARE_WRITE16_MEMBER(blitter_go_w); + DECLARE_WRITE16_MEMBER(irq_ack_w); + + // shangha3 specific DECLARE_READ16_MEMBER(shangha3_prot_r); DECLARE_WRITE16_MEMBER(shangha3_prot_w); DECLARE_WRITE16_MEMBER(shangha3_coinctrl_w); + + // heberpop specific DECLARE_WRITE16_MEMBER(heberpop_coinctrl_w); + DECLARE_WRITE16_MEMBER(heberpop_sound_command_w); // used by blocken too + + // blocken specific DECLARE_WRITE16_MEMBER(blocken_coinctrl_w); - DECLARE_WRITE16_MEMBER(heberpop_sound_command_w); - DECLARE_WRITE16_MEMBER(shangha3_flipscreen_w); - DECLARE_WRITE16_MEMBER(shangha3_gfxlist_addr_w); - DECLARE_WRITE16_MEMBER(shangha3_blitter_go_w); - DECLARE_WRITE16_MEMBER(shangha3_irq_ack_w); + DECLARE_DRIVER_INIT(shangha3); DECLARE_DRIVER_INIT(heberpop); virtual void video_start(); - UINT32 screen_update_shangha3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE_LINE_MEMBER(irqhandler); - required_device m_maincpu; - optional_device m_audiocpu; - required_device m_oki; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; diff --git a/src/mame/includes/truco.h b/src/mame/includes/truco.h index 765a642391e..e7855a5b934 100644 --- a/src/mame/includes/truco.h +++ b/src/mame/includes/truco.h @@ -5,23 +5,30 @@ class truco_state : public driver_device public: truco_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_battery_ram(*this, "battery_ram"), m_maincpu(*this, "maincpu"), - m_dac(*this, "dac") { } + m_dac(*this, "dac"), + m_videoram(*this, "videoram"), + m_battery_ram(*this, "battery_ram") { } + + required_device m_maincpu; + required_device m_dac; required_shared_ptr m_videoram; required_shared_ptr m_battery_ram; + int m_trigger; + DECLARE_WRITE8_MEMBER(porta_w); DECLARE_WRITE_LINE_MEMBER(pia_ca2_w); DECLARE_WRITE8_MEMBER(portb_w); DECLARE_WRITE_LINE_MEMBER(pia_irqa_w); DECLARE_WRITE_LINE_MEMBER(pia_irqb_w); + + virtual void machine_start(); virtual void machine_reset(); DECLARE_PALETTE_INIT(truco); - UINT32 screen_update_truco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(truco_interrupt); - required_device m_maincpu; - required_device m_dac; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(interrupt); }; diff --git a/src/mame/video/shangha3.c b/src/mame/video/shangha3.c index 8f02aaac761..c872fb5f6db 100644 --- a/src/mame/video/shangha3.c +++ b/src/mame/video/shangha3.c @@ -21,12 +21,12 @@ The chip addresses 0x100000 bytes of memory, containing both the command list, tilemap, and spare RAM to be used by the CPU. The command list starts at a variable point in memory, set by -shangha3_gfxlist_addr_w(), and always ends at 0x0fffff. +gfxlist_addr_w(), and always ends at 0x0fffff. Large sprites refer to a single tilemap starting at 0x000000, the command list contains the coordinates of the place in the tilemap to pick data from. -The commands list is processed when shangha3_blitter_go_w() is written to, so +The commands list is processed when blitter_go_w() is written to, so it is not processed automatically every frame. The commands have a fixed length of 16 words. The format is as follows: @@ -80,11 +80,14 @@ void shangha3_state::video_start() for (i = 0;i < 128;i++) m_palette->shadow_table()[i] = i+128; } + + save_item(NAME(m_gfxlist_addr)); + save_item(NAME(m_rawbitmap)); } -WRITE16_MEMBER(shangha3_state::shangha3_flipscreen_w) +WRITE16_MEMBER(shangha3_state::flipscreen_w) { if (ACCESSING_BITS_0_7) { @@ -95,13 +98,13 @@ WRITE16_MEMBER(shangha3_state::shangha3_flipscreen_w) } } -WRITE16_MEMBER(shangha3_state::shangha3_gfxlist_addr_w) +WRITE16_MEMBER(shangha3_state::gfxlist_addr_w) { COMBINE_DATA(&m_gfxlist_addr); } -WRITE16_MEMBER(shangha3_state::shangha3_blitter_go_w) +WRITE16_MEMBER(shangha3_state::blitter_go_w) { UINT16 *shangha3_ram = m_ram; bitmap_ind16 &rawbitmap = m_rawbitmap; @@ -254,7 +257,7 @@ else } -UINT32 shangha3_state::screen_update_shangha3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 shangha3_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { copybitmap(bitmap, m_rawbitmap, 0, 0, 0, 0, cliprect); return 0; diff --git a/src/mame/video/truco.c b/src/mame/video/truco.c index 4f6ae6a108d..45cddea3453 100644 --- a/src/mame/video/truco.c +++ b/src/mame/video/truco.c @@ -31,7 +31,7 @@ PALETTE_INIT_MEMBER(truco_state, truco) } } -UINT32 truco_state::screen_update_truco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 truco_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { UINT8 *videoram = m_videoram; UINT8 *vid = videoram; -- cgit v1.2.3-70-g09d2 From 19bbe2ac4dbe3fe5801bb262d685220121f3c408 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Thu, 16 Apr 2015 00:16:05 +0300 Subject: (MESS) pet: Implemented write mode on the Commodore 8050/8250/SFD-1001 floppy drives. [Curt Coder] (MESS) victor9k: Separated read/write modes in the floppy controller. (nw) fdc_pll: Removed write_next_bit_prev_cell hack. (nw) --- src/emu/bus/ieee488/c8050fdc.c | 104 ++++++++++++++++++++++------------------ src/emu/bus/ieee488/c8050fdc.h | 2 +- src/emu/machine/fdc_pll.c | 19 -------- src/emu/machine/fdc_pll.h | 2 - src/mess/machine/victor9k_fdc.c | 40 +++++++++++----- src/mess/machine/victor9k_fdc.h | 2 +- 6 files changed, 88 insertions(+), 81 deletions(-) (limited to 'src') diff --git a/src/emu/bus/ieee488/c8050fdc.c b/src/emu/bus/ieee488/c8050fdc.c index 986d6de9126..cb0a077548f 100644 --- a/src/emu/bus/ieee488/c8050fdc.c +++ b/src/emu/bus/ieee488/c8050fdc.c @@ -13,9 +13,7 @@ TODO: - - write mode - write protect - - separate read/write methods */ @@ -28,6 +26,8 @@ //************************************************************************** #define LOG 0 +#define LOG_MORE 0 +#define LOG_BITS 0 #define GCR_DECODE(_e, _i) \ ((BIT(_e, 6) << 7) | (BIT(_i, 7) << 6) | (_e & 0x33) | (BIT(_e, 2) << 3) | (_i & 0x04)) @@ -74,7 +74,7 @@ const rom_entry *c8050_fdc_t::device_rom_region() const //------------------------------------------------- c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, C8050_FDC, "C8050 FDC", tag, owner, clock, "c8050fdc", __FILE__), + device_t(mconfig, C8050_FDC, "Commodore 8050 FDC", tag, owner, clock, "c8050fdc", __FILE__), m_write_sync(*this), m_write_ready(*this), m_write_brdy(*this), @@ -89,7 +89,7 @@ c8050_fdc_t::c8050_fdc_t(const machine_config &mconfig, const char *tag, device_ m_ds(0), m_drv_sel(0), m_mode_sel(0), - m_rw_sel(0) + m_rw_sel(1) { cur_live.tm = attotime::never; cur_live.state = IDLE; @@ -210,7 +210,8 @@ void c8050_fdc_t::ds_w(int ds) { live_sync(); m_ds = cur_live.ds = ds; - pll_reset(cur_live.tm, attotime::from_hz(clock() / (16 - m_ds))); + pll_reset(cur_live.tm); + if (LOG) logerror("%s %s DS %u\n", machine().time().as_string(), machine().describe_context(), ds); checkpoint(); live_run(); } @@ -240,22 +241,23 @@ void c8050_fdc_t::live_start() cur_live.rw_sel = m_rw_sel; cur_live.pi = m_pi; - pll_reset(cur_live.tm, attotime::from_hz(clock() / (16 - m_ds))); + pll_reset(cur_live.tm); checkpoint_live = cur_live; pll_save_checkpoint(); live_run(); } -void c8050_fdc_t::pll_reset(const attotime &when, const attotime &clock) +void c8050_fdc_t::pll_reset(const attotime &when) { cur_pll.reset(when); - cur_pll.set_clock(clock); + cur_pll.set_clock(attotime::from_hz(clock() / (16 - m_ds))); } void c8050_fdc_t::pll_start_writing(const attotime &tm) { cur_pll.start_writing(tm); + pll_reset(cur_live.tm); } void c8050_fdc_t::pll_commit(floppy_image_device *floppy, const attotime &tm) @@ -266,6 +268,7 @@ void c8050_fdc_t::pll_commit(floppy_image_device *floppy, const attotime &tm) void c8050_fdc_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm) { cur_pll.stop_writing(floppy, tm); + pll_reset(cur_live.tm); } void c8050_fdc_t::pll_save_checkpoint() @@ -285,7 +288,7 @@ int c8050_fdc_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, con bool c8050_fdc_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit) { - return cur_pll.write_next_bit_prev_cell(bit, tm, floppy, limit); + return cur_pll.write_next_bit(bit, tm, floppy, limit); } void c8050_fdc_t::checkpoint() @@ -366,10 +369,33 @@ void c8050_fdc_t::live_run(const attotime &limit) return; // read bit - int bit = pll_get_next_bit(cur_live.tm, get_floppy(), limit); - if(bit < 0) - return; + int bit = 0; + if (cur_live.rw_sel) { + bit = pll_get_next_bit(cur_live.tm, get_floppy(), limit); + if(bit < 0) + return; + } + + // write bit + int write_bit = BIT(cur_live.shift_reg_write, 9); + if (!cur_live.rw_sel) { // TODO WPS + /* + write precompensation + + UA5.A = UM6.Qc + UA5.B = !(!(!BRDY && UM6.Qa) && !(BRDY && E7)) + UA5.C0 = UA4.Qb = bit clock delayed 333ns + UA5.C1 = UA4.Qa = bit clock delayed 166ns + UA5.C2 = UA4.Qc = bit clock delayed 499ns + UA5.C3 = UA5.Qb = bit clock delayed 333ns + + DATA OUT = !(!BITCLK || !(UA5.Y && !(WRITE_ENABLE && !UM6.Qb))) + */ + if (pll_write_next_bit(write_bit, cur_live.tm, get_floppy(), limit)) + return; + } + // clock read shift register cur_live.shift_reg <<= 1; cur_live.shift_reg |= bit; cur_live.shift_reg &= 0x3ff; @@ -378,16 +404,9 @@ void c8050_fdc_t::live_run(const attotime &limit) int sync = !((cur_live.shift_reg == 0x3ff) && cur_live.rw_sel); // bit counter - if (cur_live.rw_sel) { - if (!sync) { - cur_live.bit_counter = 0; - } else if (cur_live.sync) { - cur_live.bit_counter++; - if (cur_live.bit_counter == 10) { - cur_live.bit_counter = 0; - } - } - } else { + if (!sync) { + cur_live.bit_counter = 0; + } else if (cur_live.sync) { cur_live.bit_counter++; if (cur_live.bit_counter == 10) { cur_live.bit_counter = 0; @@ -403,8 +422,6 @@ void c8050_fdc_t::live_run(const attotime &limit) cur_live.e = m_gcr_rom->base()[cur_live.i]; - if (LOG) logerror("%s cyl %u bit %u sync %u bc %u sr %03x i %03x e %02x\n",cur_live.tm.as_string(),get_floppy()->get_cyl(),bit,sync,cur_live.bit_counter,cur_live.shift_reg,cur_live.i,cur_live.e); - // byte ready int ready = !(cur_live.bit_counter == 9); // 74190 _RC, should be triggered on the falling edge of the clock int brdy = ready; // 74190 TC @@ -412,18 +429,19 @@ void c8050_fdc_t::live_run(const attotime &limit) // GCR error int error = !(ready || BIT(cur_live.e, 3)); - // write bit - if (!cur_live.rw_sel) { // TODO WPS - int write_bit = BIT(cur_live.shift_reg_write, 9); - if (LOG) logerror("%s writing bit %u sr %03x\n",cur_live.tm.as_string(),write_bit,cur_live.shift_reg_write); - pll_write_next_bit(write_bit, cur_live.tm, get_floppy(), limit); + if (LOG_BITS) { + if (cur_live.rw_sel) { + logerror("%s cyl %u bit %u sync %u bc %u sr %03x i %03x e %02x\n",cur_live.tm.as_string(),get_floppy()->get_cyl(),bit,sync,cur_live.bit_counter,cur_live.shift_reg,cur_live.i,cur_live.e); + } else { + logerror("%s cyl %u writing bit %u bc %u sr %03x i %03x e %02x\n",cur_live.tm.as_string(),get_floppy()->get_cyl(),write_bit,cur_live.bit_counter,cur_live.shift_reg_write,cur_live.i,cur_live.e); + } } if (!ready) { // load write shift register cur_live.shift_reg_write = GCR_ENCODE(cur_live.e, cur_live.i); - if (LOG) logerror("%s load write shift register %03x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); + if (LOG_BITS) logerror("%s load write shift register %03x\n",cur_live.tm.as_string(),cur_live.shift_reg_write); } else { // clock write shift register cur_live.shift_reg_write <<= 1; @@ -431,13 +449,14 @@ void c8050_fdc_t::live_run(const attotime &limit) } if (ready != cur_live.ready) { - if (LOG) logerror("%s READY %u : %02x\n", cur_live.tm.as_string(),ready,GCR_DECODE(cur_live.e, cur_live.i)); + if (cur_live.rw_sel && !ready) + if (LOG) logerror("%s READY %u : %02x\n", cur_live.tm.as_string(),ready,GCR_DECODE(cur_live.e, cur_live.i)); cur_live.ready = ready; syncpoint = true; } if (brdy != cur_live.brdy) { - if (LOG) logerror("%s BRDY %u\n", cur_live.tm.as_string(), brdy); + if (LOG_MORE) logerror("%s BRDY %u\n", cur_live.tm.as_string(), brdy); cur_live.brdy = brdy; syncpoint = true; } @@ -449,7 +468,7 @@ void c8050_fdc_t::live_run(const attotime &limit) } if (error != cur_live.error) { - if (LOG) logerror("%s ERROR %u\n", cur_live.tm.as_string(), error); + if (LOG_MORE) logerror("%s ERROR %u\n", cur_live.tm.as_string(), error); cur_live.error = error; syncpoint = true; } @@ -462,10 +481,6 @@ void c8050_fdc_t::live_run(const attotime &limit) } case RUNNING_SYNCPOINT: { - if (LOG) { - if (!cur_live.sync) logerror("%s SYNC\n",cur_live.tm.as_string()); - if (!cur_live.ready && cur_live.bit_counter == 9) logerror("%s DATA %02x\n",cur_live.tm.as_string(),GCR_DECODE(cur_live.e,cur_live.i)); - } m_write_ready(cur_live.ready); m_write_brdy(cur_live.brdy); m_write_sync(cur_live.sync); @@ -484,21 +499,18 @@ READ8_MEMBER( c8050_fdc_t::read ) UINT8 e = checkpoint_live.e; offs_t i = checkpoint_live.i; - UINT8 data = GCR_DECODE(e, i); - - if (LOG)logerror("%s %s VIA reads data %02x (%03x)\n", machine().time().as_string(), machine().describe_context(), data, checkpoint_live.shift_reg); - - return data; + return GCR_DECODE(e, i); } WRITE8_MEMBER( c8050_fdc_t::write ) { + if (LOG) logerror("%s %s PI %02x\n", machine().time().as_string(), machine().describe_context(), data); + if (m_pi != data) { live_sync(); m_pi = cur_live.pi = data; checkpoint(); - if (LOG) logerror("%s %s PI %02x\n", machine().time().as_string(), machine().describe_context(), data); live_run(); } } @@ -548,9 +560,9 @@ WRITE_LINE_MEMBER( c8050_fdc_t::rw_sel_w ) checkpoint(); if (LOG) logerror("%s %s RW SEL %u\n", machine().time().as_string(), machine().describe_context(), state); if (m_rw_sel) { - pll_stop_writing(get_floppy(), machine().time()); + pll_stop_writing(get_floppy(), cur_live.tm); } else { - pll_start_writing(machine().time()); + pll_start_writing(cur_live.tm); } live_run(); } @@ -616,5 +628,5 @@ WRITE_LINE_MEMBER( c8050_fdc_t::odd_hd_w ) WRITE_LINE_MEMBER( c8050_fdc_t::pull_sync_w ) { - if (LOG) logerror("%s %s PULL SYNC %u\n", machine().time().as_string(), machine().describe_context(), state); + if (LOG_MORE) logerror("%s %s PULL SYNC %u\n", machine().time().as_string(), machine().describe_context(), state); } diff --git a/src/emu/bus/ieee488/c8050fdc.h b/src/emu/bus/ieee488/c8050fdc.h index fe41e7c73bc..9c4f9d665f1 100644 --- a/src/emu/bus/ieee488/c8050fdc.h +++ b/src/emu/bus/ieee488/c8050fdc.h @@ -150,7 +150,7 @@ protected: void live_start(); void checkpoint(); void rollback(); - void pll_reset(const attotime &when, const attotime &clock); + void pll_reset(const attotime &when); void pll_start_writing(const attotime &tm); void pll_commit(floppy_image_device *floppy, const attotime &tm); void pll_stop_writing(floppy_image_device *floppy, const attotime &tm); diff --git a/src/emu/machine/fdc_pll.c b/src/emu/machine/fdc_pll.c index a035a9c868b..0efb48b813e 100644 --- a/src/emu/machine/fdc_pll.c +++ b/src/emu/machine/fdc_pll.c @@ -22,7 +22,6 @@ void fdc_pll_t::set_clock(const attotime &_period) void fdc_pll_t::reset(const attotime &when) { ctime = when; - write_ctime = when; phase_adjust = attotime::zero; freq_hist = 0; write_position = 0; @@ -66,7 +65,6 @@ int fdc_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const att if(next > limit) return -1; - write_ctime = ctime; ctime = next; tm = next; @@ -132,20 +130,3 @@ bool fdc_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *flop ctime = etime; return false; } - -bool fdc_pll_t::write_next_bit_prev_cell(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit) -{ - if(write_start_time.is_never()) { - write_start_time = write_ctime; - write_position = 0; - } - - attotime etime = write_ctime + period; - if(etime > limit) - return true; - - if(bit && write_position < ARRAY_LENGTH(write_buffer)) - write_buffer[write_position++] = write_ctime + period/2; - - return false; -} diff --git a/src/emu/machine/fdc_pll.h b/src/emu/machine/fdc_pll.h index 0cb08bba8cf..4a356616126 100644 --- a/src/emu/machine/fdc_pll.h +++ b/src/emu/machine/fdc_pll.h @@ -12,7 +12,6 @@ class fdc_pll_t { public: attotime ctime, period, min_period, max_period, period_adjust_base, phase_adjust; - attotime write_ctime; attotime write_start_time; attotime write_buffer[32]; int write_position; @@ -22,7 +21,6 @@ public: void reset(const attotime &when); int get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit); bool write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit); - bool write_next_bit_prev_cell(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit); void start_writing(const attotime &tm); void commit(floppy_image_device *floppy, const attotime &tm); void stop_writing(floppy_image_device *floppy, const attotime &tm); diff --git a/src/mess/machine/victor9k_fdc.c b/src/mess/machine/victor9k_fdc.c index 5d4b39b7c4f..1ae238401ed 100644 --- a/src/mess/machine/victor9k_fdc.c +++ b/src/mess/machine/victor9k_fdc.c @@ -54,6 +54,7 @@ #define LOG 0 #define LOG_VIA 0 #define LOG_SCP 0 +#define LOG_BITS 0 #define I8048_TAG "5d" #define M6522_4_TAG "1f" @@ -1069,22 +1070,23 @@ void victor_9000_fdc_t::live_start() cur_live.wrsync = m_wrsync; cur_live.erase = m_erase; - pll_reset(cur_live.tm, attotime::from_nsec(2130)); + pll_reset(cur_live.tm); checkpoint_live = cur_live; pll_save_checkpoint(); live_run(); } -void victor_9000_fdc_t::pll_reset(const attotime &when, const attotime &clock) +void victor_9000_fdc_t::pll_reset(const attotime &when) { cur_pll.reset(when); - cur_pll.set_clock(clock); + cur_pll.set_clock(attotime::from_nsec(2130)); } void victor_9000_fdc_t::pll_start_writing(const attotime &tm) { cur_pll.start_writing(tm); + pll_reset(cur_live.tm); } void victor_9000_fdc_t::pll_commit(floppy_image_device *floppy, const attotime &tm) @@ -1095,6 +1097,7 @@ void victor_9000_fdc_t::pll_commit(floppy_image_device *floppy, const attotime & void victor_9000_fdc_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm) { cur_pll.stop_writing(floppy, tm); + pll_reset(cur_live.tm); } void victor_9000_fdc_t::pll_save_checkpoint() @@ -1114,7 +1117,7 @@ int victor_9000_fdc_t::pll_get_next_bit(attotime &tm, floppy_image_device *flopp bool victor_9000_fdc_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit) { - return cur_pll.write_next_bit_prev_cell(bit, tm, floppy, limit); + return cur_pll.write_next_bit(bit, tm, floppy, limit); } void victor_9000_fdc_t::checkpoint() @@ -1197,10 +1200,22 @@ void victor_9000_fdc_t::live_run(const attotime &limit) return; // read bit - int bit = pll_get_next_bit(cur_live.tm, get_floppy(), limit); - if(bit < 0) - return; + int bit = 0; + if (cur_live.drw) { + bit = pll_get_next_bit(cur_live.tm, get_floppy(), limit); + if(bit < 0) + return; + } + + // write bit + int write_bit = 0; + if (!cur_live.drw) { // TODO WPS + write_bit = BIT(cur_live.shift_reg_write, 9); + if (pll_write_next_bit(write_bit, cur_live.tm, get_floppy(), limit)) + return; + } + // clock read shift register cur_live.shift_reg <<= 1; cur_live.shift_reg |= bit; cur_live.shift_reg &= 0x3ff; @@ -1261,11 +1276,12 @@ void victor_9000_fdc_t::live_run(const attotime &limit) // GCR error int gcr_err = !(brdy || BIT(cur_live.e, 3)); - // write bit - if (!cur_live.drw) { // TODO WPS - int write_bit = BIT(cur_live.shift_reg_write, 9); - if (LOG) logerror("%s writing bit %u sr %03x\n",cur_live.tm.as_string(),write_bit,cur_live.shift_reg_write); - pll_write_next_bit(write_bit, cur_live.tm, get_floppy(), limit); + if (LOG_BITS) { + if (cur_live.drw) { + logerror("%s cyl %u bit %u sync %u bc %u sr %03x i %03x e %02x\n",cur_live.tm.as_string(),get_floppy()->get_cyl(),bit,sync,cur_live.bit_counter,cur_live.shift_reg,cur_live.i,cur_live.e); + } else { + logerror("%s cyl %u writing bit %u bc %u sr %03x i %03x e %02x\n",cur_live.tm.as_string(),get_floppy()->get_cyl(),write_bit,cur_live.bit_counter,cur_live.shift_reg_write,cur_live.i,cur_live.e); + } } if (!brdy) { diff --git a/src/mess/machine/victor9k_fdc.h b/src/mess/machine/victor9k_fdc.h index f107e718452..f9005c4af16 100644 --- a/src/mess/machine/victor9k_fdc.h +++ b/src/mess/machine/victor9k_fdc.h @@ -218,7 +218,7 @@ private: floppy_image_device* get_floppy(); void live_start(); - void pll_reset(const attotime &when, const attotime &clock); + void pll_reset(const attotime &when); void pll_start_writing(const attotime &tm); void pll_commit(floppy_image_device *floppy, const attotime &tm); void pll_stop_writing(floppy_image_device *floppy, const attotime &tm); -- cgit v1.2.3-70-g09d2 From 4e22124500bbe4d2c9376e0c7ec164762f0d4b3a Mon Sep 17 00:00:00 2001 From: mamehaze Date: Thu, 16 Apr 2015 09:54:52 +0100 Subject: new clones Perfect Billiard (MC-8123, 317-5008) [PokeMame] (CPU has a different sitcker, seems to function in same way as existing encrypted one tho) --- src/mame/drivers/freekick.c | 32 ++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 ++- 2 files changed, 34 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c index aad990e66a1..26fd033c52e 100644 --- a/src/mame/drivers/freekick.c +++ b/src/mame/drivers/freekick.c @@ -756,6 +756,37 @@ ROM_START( pbillrds ) /* Encrytped with a Sega MC-8123 (317-0030) CPU module */ ROM_LOAD( "82s129.3c", 0x0500, 0x0100, CRC(cc1657e5) SHA1(358f20dce376c2389009f9673ce38b297af863f6) ) ROM_END +// all ROMs were HN4827128G-25, except 17, HN27256G-25 +// CPU module marked 3?7-500B, but seems to act the same as above +ROM_START( pbillrdsa ) + ROM_REGION( 0x18000, "maincpu", 0 ) /* Z80 Code */ + ROM_LOAD( "29", 0x00000, 0x4000, CRC(da020258) SHA1(172276061c2e06bcf3477488734a72598412181b) ) /* encrypted */ // label scraped off, might be 20 + ROM_LOAD( "17", 0x04000, 0x4000, CRC(9bb3d467) SHA1(5d61c80c920363cbcb548f4a08434e2a05b3d5f3) ) /* encrypted */ + ROM_CONTINUE( 0x10000, 0x4000 ) + ROM_LOAD( "19", 0x14000, 0x4000, CRC(2335e6dd) SHA1(82352b6f4abea88aad3a96ca63cccccb6e278f48) ) /* encrypted */ + + ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */ + ROM_LOAD( "317-0030.key", 0x0000, 0x2000, CRC(9223f06d) SHA1(51a22a4c80fe273526bde68918c13c6476cec383) ) + + ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */ + ROM_LOAD( "pb.4", 0x000000, 0x04000, CRC(2f4d4dd3) SHA1(ee4facabf591c235c270db4f4d3f612b8c474e57) ) + ROM_LOAD( "pb.5", 0x004000, 0x04000, CRC(9dfccbd3) SHA1(66ad8882f36630312b488d5d67ae554477574c31) ) + ROM_LOAD( "pb.6", 0x008000, 0x04000, CRC(b5c3f6f6) SHA1(586b47587619a766cf977b74978550aff41a58cc) ) + + ROM_REGION( 0xc000, "gfx2", 0 ) /* GFX */ + ROM_LOAD( "1", 0x000000, 0x04000, CRC(c8ed651e) SHA1(9ddeb7906e0772f344af1d4f74755694cade1f97) ) + ROM_LOAD( "3", 0x004000, 0x04000, CRC(5282fc86) SHA1(dd8938489071ce61dc9bd4fed5a28403131e5706) ) + ROM_LOAD( "2", 0x008000, 0x04000, CRC(e9f73f5b) SHA1(470ad3b0d13269b098eec9d81956d70ac3aebc39) ) + + ROM_REGION( 0x0600, "proms", 0 ) + ROM_LOAD( "82s129.3a", 0x0000, 0x0100, CRC(44802169) SHA1(f181d80185e0f87ee906d2b40e3a5deb6f563aa2) ) + ROM_LOAD( "82s129.4d", 0x0100, 0x0100, CRC(69ca07cc) SHA1(38ab08174633b53d70a38aacb40059a25cf12069) ) + ROM_LOAD( "82s129.4a", 0x0200, 0x0100, CRC(145f950a) SHA1(b007d0c1cc9545e0e241b39b79a48593d457f826) ) + ROM_LOAD( "82s129.3d", 0x0300, 0x0100, CRC(43d24e17) SHA1(de5c9391574781dcd8f244794010e8eddffa1c1e) ) + ROM_LOAD( "82s129.3b", 0x0400, 0x0100, CRC(7fdc872c) SHA1(98572560aa524490489d4202dba292a5af9f15e7) ) + ROM_LOAD( "82s129.3c", 0x0500, 0x0100, CRC(cc1657e5) SHA1(358f20dce376c2389009f9673ce38b297af863f6) ) +ROM_END + /* The original Freekick boards have the main CPU code inside a custom CPU "block". This code is stored in battery @@ -1171,6 +1202,7 @@ GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, R GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1987, pbillrd, 0, pbillrd, pbillrd, driver_device, 0, ROT0, "Nihon System", "Perfect Billiard", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1987, pbillrds, pbillrd, pbillrd, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1987, pbillrdsa, pbillrd, pbillrd, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same GAME( 1987, freekick, 0, freekickb, freekck, driver_device, 0, ROT270, "Nihon System (Merit license)", "Free Kick (NS6201-A 1987.10)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1987, freekicka, freekick, freekickb, freekck, driver_device, 0, ROT270, "Nihon System", "Free Kick (NS6201-A 1987.9)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) GAME( 1987, freekickb1,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f5620972c43..1c003e3727a 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10042,7 +10042,8 @@ gigasb // (c) 1986 bootleg gigasm2b // (c) 1986 bootleg oigas // (c) 1986 bootleg pbillrd // (c) 1987 Nihon System -pbillrds // (c) 1988 Nihon System (+ optional Sega) +pbillrds // (c) 1987 Nihon System (Sega license?) +pbillrdsa // (c) 1987 Nihon System (Sega license?) freekick // (c) 1988 Nihon System licensed to Merit (+ optional Sega) NS6201-A 1987.10 freekicka // (c) 1988 Nihon System (+ optional Sega) NS6201-A 1987.9 freekickb1 // (c) 1987 bootleg -- cgit v1.2.3-70-g09d2 From 83741611c2beac4394ab7849fc19c75e4a7b395f Mon Sep 17 00:00:00 2001 From: Miso Kim Date: Thu, 16 Apr 2015 21:46:39 +0900 Subject: cassette motor fix for recording fuction working Motor on/off function has not implemented. Motor on/off function and cassette play/record button are coupled for port A of AY8910. --- src/mess/drivers/spc1000.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mess/drivers/spc1000.c b/src/mess/drivers/spc1000.c index e67c0c4b3d6..4465cfa647b 100644 --- a/src/mess/drivers/spc1000.c +++ b/src/mess/drivers/spc1000.c @@ -206,7 +206,12 @@ READ8_MEMBER(spc1000_state::iplk_r) WRITE8_MEMBER( spc1000_state::cass_w ) { + static char motor = 0; + char m = BIT(data, 1); m_cass->output(BIT(data, 0) ? -1.0 : 1.0); + if (m != motor && m == 1) + m_cass->change_state(m_cass->get_state() & CASSETTE_MASK_MOTOR ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR); + motor = m; } WRITE8_MEMBER(spc1000_state::gmode_w) @@ -414,7 +419,7 @@ READ8_MEMBER( spc1000_state::porta_r ) { UINT8 data = 0x3f; data |= (m_cass->input() > 0.0038) ? 0x80 : 0; - data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY) ? 0x00 : 0x40; + data |= ((m_cass->get_state() & CASSETTE_MASK_UISTATE) != CASSETTE_STOPPED) && ((m_cass->get_state() & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED) ? 0x00 : 0x40; data &= ~(m_io_joy->read() & 0x3f); return data; -- cgit v1.2.3-70-g09d2 From cce44e050a672c9975b0ffef852655be8d60dd61 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 16 Apr 2015 15:26:52 +0200 Subject: Fix compiling tools on OSX 10.10 (nw) --- src/osd/sdl/aueffectutil.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/osd/sdl/aueffectutil.m b/src/osd/sdl/aueffectutil.m index d5c1e18d3e6..0dfb3376086 100644 --- a/src/osd/sdl/aueffectutil.m +++ b/src/osd/sdl/aueffectutil.m @@ -723,7 +723,7 @@ static void UpdateChangeCountCallback(void *userData, @end -@interface AUEffectUtilAppDelegate : NSObject +@interface AUEffectUtilAppDelegate : NSObject { EffectInfo *effects; @@ -1036,7 +1036,7 @@ int main(int argc, char *argv[]) pool = [[NSAutoreleasePool alloc] init]; [NSApplication sharedApplication]; AUEffectUtilAppDelegate *const delegate = [[AUEffectUtilAppDelegate alloc] init]; - [NSApp setDelegate:delegate]; + [[NSApplication sharedApplication] setDelegate:delegate]; [pool release]; // Let's go! -- cgit v1.2.3-70-g09d2 From bf30ebe77ea5e51587eacace83e20d9a6cce04a2 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 17 Apr 2015 00:22:37 +1000 Subject: Fix build --- 3rdparty/bgfx/3rdparty/stb/stb_rect_pack.h | 2 ++ src/lib/util/xmlfile.c | 2 +- src/osd/sdl/aueffectutil.m | 5 ++++- 3 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/3rdparty/bgfx/3rdparty/stb/stb_rect_pack.h b/3rdparty/bgfx/3rdparty/stb/stb_rect_pack.h index eb0ef2f268f..64c30761b80 100644 --- a/3rdparty/bgfx/3rdparty/stb/stb_rect_pack.h +++ b/3rdparty/bgfx/3rdparty/stb/stb_rect_pack.h @@ -488,6 +488,7 @@ static int rect_height_compare(const void *a, const void *b) return (p->w > q->w) ? -1 : (p->w < q->w); } +#if 0 static int rect_width_compare(const void *a, const void *b) { stbrp_rect *p = (stbrp_rect *) a; @@ -498,6 +499,7 @@ static int rect_width_compare(const void *a, const void *b) return 1; return (p->h > q->h) ? -1 : (p->h < q->h); } +#endif static int rect_original_order(const void *a, const void *b) { diff --git a/src/lib/util/xmlfile.c b/src/lib/util/xmlfile.c index e03893134f9..8635cfc427f 100644 --- a/src/lib/util/xmlfile.c +++ b/src/lib/util/xmlfile.c @@ -698,7 +698,7 @@ static void expat_data(void *data, const XML_Char *s, int len) if ((*curnode)->value != NULL) { memcpy(newdata, (*curnode)->value, oldlen); - free((*curnode)->value); + free((void *)(*curnode)->value); } (*curnode)->value = newdata; diff --git a/src/osd/sdl/aueffectutil.m b/src/osd/sdl/aueffectutil.m index 0dfb3376086..397fb640c68 100644 --- a/src/osd/sdl/aueffectutil.m +++ b/src/osd/sdl/aueffectutil.m @@ -20,6 +20,9 @@ typedef ComponentDescription AudioComponentDescription; +@protocol NSApplicationDelegate +@end + @protocol NSWindowDelegate @end @@ -723,7 +726,7 @@ static void UpdateChangeCountCallback(void *userData, @end -@interface AUEffectUtilAppDelegate : NSObject +@interface AUEffectUtilAppDelegate : NSObject { EffectInfo *effects; -- cgit v1.2.3-70-g09d2 From 019d1f56ff472fde3fad950071f5391e28aa991d Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 16 Apr 2015 18:20:18 +0200 Subject: murogem.c, murogmbl.c: enabled save state support (nw) --- src/mame/drivers/murogem.c | 31 +++++++++++++++++-------------- src/mame/drivers/murogmbl.c | 21 ++++++++++++--------- 2 files changed, 29 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/murogem.c b/src/mame/drivers/murogem.c index 8078fa06d40..44c0fde91a1 100644 --- a/src/mame/drivers/murogem.c +++ b/src/mame/drivers/murogem.c @@ -84,8 +84,8 @@ f205v - Added "Las Vegas, Nevada" (hack). - Added the missing 74s288 dump (32x8 PROM located at 1B) from the new set. - Confirmed the MC6845 at $4000/$4001. -- Corrected screen size acording to MC6845 registers. -- Corrected visible area acording to MC6845 registers. The last characters line looks odd, but should be visible. +- Corrected screen size according to MC6845 registers. +- Corrected visible area according to MC6845 registers. The last characters line looks odd, but should be visible. - There are not illegal opcodes. The above mentioned are in fact strings (plain ASCII text). MC6845 registers: @@ -115,20 +115,23 @@ class murogem_state : public driver_device public: murogem_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), m_maincpu(*this, "maincpu"), m_dac(*this, "dac"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram") { } - required_shared_ptr m_videoram; - DECLARE_WRITE8_MEMBER(outport_w); - DECLARE_PALETTE_INIT(murogem); - UINT32 screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device m_maincpu; required_device m_dac; required_device m_gfxdecode; required_device m_palette; + + required_shared_ptr m_videoram; + + DECLARE_WRITE8_MEMBER(outport_w); + DECLARE_PALETTE_INIT(murogem); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; @@ -211,7 +214,7 @@ GFXDECODE_END PALETTE_INIT_MEMBER(murogem_state, murogem) {} -UINT32 murogem_state::screen_update_murogem(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 murogem_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int xx,yy,count; count = 0x000; @@ -249,7 +252,7 @@ static MACHINE_CONFIG_START( murogem, murogem_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE((39+1)*8, (38+1)*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(murogem_state, screen_update_murogem) + MCFG_SCREEN_UPDATE_DRIVER(murogem_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", murogem) @@ -323,7 +326,7 @@ ROM_START( lasvegas ) ROM_LOAD( "a3.1b", 0x0000, 0x0020, CRC(abddfb6b) SHA1(ed78b93701b5a3bf2053d2584e9a354fb6cec203) ) /* 74s288 at 1B */ ROM_END -GAME( 198?, murogem, 0, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 1)", GAME_WRONG_COLORS ) -GAME( 198?, murogema, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 2)", GAME_WRONG_COLORS ) -GAME( 198?, murogemb, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 3)", GAME_WRONG_COLORS ) -GAME( 198?, lasvegas, murogem, murogem, murogem, driver_device, 0, ROT0, "hack", "Las Vegas, Nevada", GAME_WRONG_COLORS ) +GAME( 198?, murogem, 0, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 1)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) +GAME( 198?, murogema, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 2)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) +GAME( 198?, murogemb, murogem, murogem, murogem, driver_device, 0, ROT0, "", "Muroge Monaco (set 3)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) +GAME( 198?, lasvegas, murogem, murogem, murogem, driver_device, 0, ROT0, "hack", "Las Vegas, Nevada", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/murogmbl.c b/src/mame/drivers/murogmbl.c index 8c1d3edaa52..f5ea5c87d34 100644 --- a/src/mame/drivers/murogmbl.c +++ b/src/mame/drivers/murogmbl.c @@ -45,18 +45,21 @@ class murogmbl_state : public driver_device public: murogmbl_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_video(*this, "video"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_video(*this, "video") { } - required_shared_ptr m_video; - virtual void video_start(); - DECLARE_PALETTE_INIT(murogmbl); - UINT32 screen_update_murogmbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device m_maincpu; required_device m_gfxdecode; required_device m_palette; + + required_shared_ptr m_video; + + virtual void video_start(); + DECLARE_PALETTE_INIT(murogmbl); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; @@ -102,7 +105,7 @@ void murogmbl_state::video_start() { } -UINT32 murogmbl_state::screen_update_murogmbl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 murogmbl_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { gfx_element *gfx = m_gfxdecode->gfx(0); int count = 0; @@ -201,7 +204,7 @@ static MACHINE_CONFIG_START( murogmbl, murogmbl_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(64*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(murogmbl_state, screen_update_murogmbl) + MCFG_SCREEN_UPDATE_DRIVER(murogmbl_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 0x100) @@ -227,4 +230,4 @@ ROM_START(murogmbl) ROM_LOAD( "74s288.a8", 0x0000, 0x0020, CRC(fc35201c) SHA1(4549e228c48992e0d10957f029b89a547392e72b) ) ROM_END -GAME( 1982, murogmbl, murogem, murogmbl, murogmbl, driver_device, 0, ROT0, "bootleg?", "Muroge Monaco (bootleg?)", GAME_NO_SOUND ) +GAME( 1982, murogmbl, murogem, murogmbl, murogmbl, driver_device, 0, ROT0, "bootleg?", "Muroge Monaco (bootleg?)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) -- cgit v1.2.3-70-g09d2 From 85e65cb4a16df64094a32e09d2eda47f1b7491a8 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 16 Apr 2015 18:33:29 +0200 Subject: VTech Invaders WIP (not working yet) --- src/mess/drivers/hh_hmcs40.c | 124 +++++++++++++++++++++++++++++++++++++++---- src/mess/mess.lst | 1 + 2 files changed, 115 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c index cebec56b36e..3790a38408b 100644 --- a/src/mess/drivers/hh_hmcs40.c +++ b/src/mess/drivers/hh_hmcs40.c @@ -10,7 +10,7 @@ ---------------------------------------------------------------- *07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B) @08 HD38750A 1979, Bambino Basketball (ET-05) - *45 HD38750A 1981, Vtech Invaders + @45 HD38750A 1981, VTech Invaders *58 HD38750A 1982, Ludotronic(Hanzawa) Grand Prix Turbo *62 HD38750A 1982, Actronics(Hanzawa) Pack'n Maze @@ -315,7 +315,7 @@ public: WRITE8_MEMBER(bambball_state::plate_w) { - // R1x-R3x, D0-D3: vfd matrix plate + // R1x-R3x(,D0-D3): vfd matrix plate int shift = (offset - HMCS40_PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -335,7 +335,7 @@ WRITE16_MEMBER(bambball_state::grid_w) // D7-D15: vfd matrix grid m_grid = data >> 7 & 0x1ff; - // D0-D3: plates (update display there) + // D0-D3: more plates (update display there) plate_w(space, 3 + HMCS40_PORT_R1X, data & 0xf); } @@ -557,7 +557,7 @@ public: WRITE8_MEMBER(packmon_state::plate_w) { - // R0x-R3x, D0-D3: vfd matrix plate + // R0x-R3x(,D0-D3): vfd matrix plate int shift = offset * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -796,7 +796,7 @@ public: WRITE8_MEMBER(zackman_state::plate_w) { - // R0x-R6x,D0,D1: vfd matrix plate + // R0x-R6x(,D0,D1): vfd matrix plate int shift = offset * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -915,7 +915,7 @@ public: WRITE8_MEMBER(alnattck_state::plate_w) { - // R0x-R3x, D0-D3: vfd matrix plate + // R0x-R3x(,D0-D3): vfd matrix plate int shift = offset * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -1283,7 +1283,7 @@ public: WRITE8_MEMBER(cpacman_state::plate_w) { - // R1x-R6x, D1,D2: vfd matrix plate + // R1x-R6x(,D1,D2): vfd matrix plate int shift = (offset - HMCS40_PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -1399,7 +1399,7 @@ public: WRITE8_MEMBER(cmspacmn_state::plate_w) { - // R1x-R6x, D0,D1: vfd matrix plate + // R1x-R6x(,D0,D1): vfd matrix plate int shift = (offset - HMCS40_PORT_R1X) * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -1607,6 +1607,8 @@ MACHINE_CONFIG_END Entex Pac Man 2 (manufactured in Japan) * Hitachi HD38820A23 MCU * cyan/red VFD display Futaba DM-28Z 1G + + 2 VFD revisions are known, the difference is Pac-Man's color: cyan or red. NOTE!: MESS external artwork is recommended @@ -1707,7 +1709,7 @@ public: WRITE8_MEMBER(pbqbert_state::plate_w) { - // R0x-R6x,D8: vfd matrix plate + // R0x-R6x(,D8): vfd matrix plate int shift = offset * 4; m_plate = (m_plate & ~(0xf << shift)) | (data << shift); @@ -2011,6 +2013,100 @@ MACHINE_CONFIG_END +/*************************************************************************** + + VTech Invaders (manufactured in Taiwan) + * Hitachi HD38750A45 MCU + * cyan/red VFD display Futaba DM-26Z 1G, with bezel + + known releases: + - USA: Invaders/Sonic Invader + - UK: Cosmic Invader, published by Grandstand + - UK: Galactic Invaders, published by Prinztronic + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class vinvader_state : public hh_hmcs40_state +{ +public: + vinvader_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_hmcs40_state(mconfig, type, tag) + { } + + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE16_MEMBER(grid_w); +}; + +// handlers + +WRITE8_MEMBER(vinvader_state::plate_w) +{ + // R1x-R3x(,D4-D6): vfd matrix plate + int shift = (offset - HMCS40_PORT_R1X) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // update display + UINT16 plate = BITSWAP16(m_plate,15,11,7,3,10,6,14,2,9,5,13,1,8,4,12,0); + display_matrix(12, 9, plate, m_grid); +} + +WRITE16_MEMBER(vinvader_state::grid_w) +{ + // D0: speaker out + m_speaker->level_w(data & 1); + + // D7-D15: vfd matrix grid + m_grid = data >> 7 & 0x1ff; + + // D4-D6: more plates (update display there) + plate_w(space, 3 + HMCS40_PORT_R1X, data >> 4 & 7); +} + + +// config + +static INPUT_PORTS_START( vinvader ) + PORT_START("IN.0") // port R0x + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") // port D + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_CONFNAME( 0x08, 0x00, "Skill Level") + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x08, "2" ) + PORT_BIT( 0xfff5, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( vinvader, vinvader_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation - RC osc. + MCFG_HMCS40_READ_R_CB(0, IOPORT("IN.0")) + MCFG_HMCS40_WRITE_R_CB(1, WRITE8(vinvader_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(2, WRITE8(vinvader_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(3, WRITE8(vinvader_state, plate_w)) + MCFG_HMCS40_WRITE_D_CB(WRITE16(vinvader_state, grid_w)) + MCFG_HMCS40_READ_D_CB(IOPORT("IN.1")) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Game driver(s) @@ -2128,6 +2224,13 @@ ROM_START( tmtron ) ROM_END +ROM_START( vinvader ) + ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(e02d94d9) SHA1(d4679abbb9c6778e5e853aa6c2b90dee1d21c9dd) ) + ROM_CONTINUE( 0x0f00, 0x0080 ) +ROM_END + + /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Basketball - Dribble Away", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) @@ -2147,8 +2250,9 @@ CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Colec CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) - CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1984, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) + +CONS( 1981, vinvader, 0, 0, vinvader, vinvader, driver_device, 0, "VTech", "Invaders (VTech)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 6843acc7069..462e3683c06 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2198,6 +2198,7 @@ epacman2 // Entex pbqbert // Parker Brothers kingman // Tomy tmtron // Tomy +vinvader // VTech maniac // Ideal -- cgit v1.2.3-70-g09d2 From 00b9788d3770187a7dd70f3e851a23c6761c7b34 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 16 Apr 2015 18:42:15 +0200 Subject: vamphalf.c: added save state support (nw) --- src/mame/drivers/vamphalf.c | 105 +++++++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c index 41476df94f6..487b1a773c5 100644 --- a/src/mame/drivers/vamphalf.c +++ b/src/mame/drivers/vamphalf.c @@ -50,7 +50,7 @@ Undumped Semicom games on similar hardware: Red Wyvern - A semi-sequel or update? Same time era, but unknown hardware: - Gaia The last Choice of the Earth (c) 1998 (might be Byron Future Assault type hardware) + Gaia The last Choice of the Earth (c) 1998 (might be Baryon Future Assault type hardware) Choice III: Joker's Dream (c) 2001 TODO: @@ -75,25 +75,20 @@ class vamphalf_state : public driver_device public: vamphalf_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_tiles(*this,"tiles"), - m_wram(*this,"wram"), - m_tiles32(*this,"tiles32"), - m_wram32(*this,"wram32"), m_maincpu(*this, "maincpu"), m_qs1000(*this, "qs1000"), m_oki(*this, "oki"), m_oki2(*this, "oki_2"), m_eeprom(*this, "eeprom"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { + m_palette(*this, "palette"), + m_tiles(*this,"tiles"), + m_wram(*this,"wram"), + m_tiles32(*this,"tiles32"), + m_wram32(*this,"wram32") { m_has_extra_gfx = 0; } - optional_shared_ptr m_tiles; - optional_shared_ptr m_wram; - optional_shared_ptr m_tiles32; - optional_shared_ptr m_wram32; - required_device m_maincpu; optional_device m_qs1000; optional_device m_oki; @@ -102,15 +97,22 @@ public: required_device m_gfxdecode; required_device m_palette; + optional_shared_ptr m_tiles; + optional_shared_ptr m_wram; + optional_shared_ptr m_tiles32; + optional_shared_ptr m_wram32; + + // driver init configuration int m_flip_bit; - int m_flipscreen; int m_palshift; + int m_has_extra_gfx; + UINT16 m_semicom_prot_data[2]; + + int m_flipscreen; int m_semicom_prot_idx; int m_semicom_prot_which; - UINT16 m_semicom_prot_data[2]; UINT16 m_finalgdr_backupram_bank; UINT8 *m_finalgdr_backupram; - int m_has_extra_gfx; UINT8 m_qs1000_data; DECLARE_WRITE16_MEMBER(flipscreen_w); @@ -162,10 +164,10 @@ public: DECLARE_WRITE16_MEMBER(boonggab_oki_bank_w); DECLARE_WRITE32_MEMBER(wyvernwg_snd_w); DECLARE_WRITE16_MEMBER(misncrft_snd_w); - - DECLARE_READ8_MEMBER(qs1000_p1_r); DECLARE_WRITE8_MEMBER(qs1000_p3_w); + + virtual void video_start(); DECLARE_DRIVER_INIT(vamphalf); DECLARE_DRIVER_INIT(vamphafk); DECLARE_DRIVER_INIT(coolmini); @@ -185,6 +187,7 @@ public: DECLARE_DRIVER_INIT(boonggab); DECLARE_DRIVER_INIT(wyvernwg); DECLARE_DRIVER_INIT(yorijori); + UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap); @@ -590,6 +593,12 @@ or Offset+3 -------x xxxxxxxx X offs */ + +void vamphalf_state::video_start() +{ + save_item(NAME(m_flipscreen)); +} + void vamphalf_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap) { gfx_element *gfx = m_gfxdecode->gfx(0); @@ -2683,6 +2692,8 @@ DRIVER_INIT_MEMBER(vamphalf_state,misncrft) // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); + + save_item(NAME(m_qs1000_data)); } DRIVER_INIT_MEMBER(vamphalf_state,coolmini) @@ -2741,11 +2752,15 @@ DRIVER_INIT_MEMBER(vamphalf_state,wyvernwg) // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); + + save_item(NAME(m_qs1000_data)); + save_item(NAME(m_semicom_prot_idx)); + save_item(NAME(m_semicom_prot_which)); } DRIVER_INIT_MEMBER(vamphalf_state,yorijori) { - // seesm close to Final Godori in terms of port mappings, possibly a SemiCom game? + // seems close to Final Godori in terms of port mappings, possibly a SemiCom game? m_palshift = 0; m_flip_bit = 1; @@ -2762,6 +2777,8 @@ DRIVER_INIT_MEMBER(vamphalf_state,yorijori) // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data"); membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); + + save_item(NAME(m_qs1000_data)); } DRIVER_INIT_MEMBER(vamphalf_state,finalgdr) @@ -2777,6 +2794,11 @@ DRIVER_INIT_MEMBER(vamphalf_state,finalgdr) m_semicom_prot_idx = 8; m_semicom_prot_data[0] = 2; m_semicom_prot_data[1] = 3; + + save_item(NAME(m_finalgdr_backupram_bank)); + save_pointer(NAME(m_finalgdr_backupram), 0x80*0x100); + save_item(NAME(m_semicom_prot_idx)); + save_item(NAME(m_semicom_prot_which)); } DRIVER_INIT_MEMBER(vamphalf_state,mrkicker) @@ -2793,6 +2815,9 @@ DRIVER_INIT_MEMBER(vamphalf_state,mrkicker) m_semicom_prot_idx = 8; m_semicom_prot_data[0] = 2; m_semicom_prot_data[1] = 3; + + save_item(NAME(m_semicom_prot_idx)); + save_item(NAME(m_semicom_prot_which)); } DRIVER_INIT_MEMBER(vamphalf_state,dquizgo2) @@ -2854,26 +2879,26 @@ DRIVER_INIT_MEMBER(vamphalf_state,boonggab) m_flip_bit = 1; } -GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", 0 ) -GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , 0 ) -GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , 0 ) -GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", 0 ) -GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", 0 ) -GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", 0 ) -GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", 0 ) -GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", 0 ) -GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", 0 ) -GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , 0) -GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", GAME_IMPERFECT_SOUND ) -GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", GAME_IMPERFECT_SOUND ) -GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", 0 ) -GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", 0 ) -GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", 0 ) -GAME( 2001, mrkicker, 0, mrkicker, finalgdr, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker", 0 ) -GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", 0 ) -GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", GAME_IMPERFECT_SOUND ) -GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", GAME_IMPERFECT_SOUND ) -GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND ) -GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", 0 ) -GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", 0 ) -GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) +GAME( 1999, coolmini, 0, coolmini, common, vamphalf_state, coolmini, ROT0, "SemiCom", "Cool Minigame Collection", GAME_SUPPORTS_SAVE ) +GAME( 1999, jmpbreak, 0, jmpbreak, common, vamphalf_state, jmpbreak, ROT0, "F2 System", "Jumping Break" , GAME_SUPPORTS_SAVE ) +GAME( 1999, suplup, 0, suplup, common, vamphalf_state, suplup, ROT0, "Omega System", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)" , GAME_SUPPORTS_SAVE ) +GAME( 1999, luplup, suplup, suplup, common, vamphalf_state, luplup, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", GAME_SUPPORTS_SAVE ) +GAME( 1999, luplup29, suplup, suplup, common, vamphalf_state, luplup29, ROT0, "Omega System", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", GAME_SUPPORTS_SAVE ) +GAME( 1999, puzlbang, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", GAME_SUPPORTS_SAVE ) +GAME( 1999, puzlbanga, suplup, suplup, common, vamphalf_state, puzlbang, ROT0, "Omega System", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", GAME_SUPPORTS_SAVE ) +GAME( 1999, vamphalf, 0, vamphalf, common, vamphalf_state, vamphalf, ROT0, "Danbi / F2 System", "Vamf x1/2 (Europe)", GAME_SUPPORTS_SAVE ) +GAME( 1999, vamphalfk, vamphalf, vamphalf, common, vamphalf_state, vamphafk, ROT0, "Danbi / F2 System", "Vamp x1/2 (Korea)", GAME_SUPPORTS_SAVE ) +GAME( 2000, dquizgo2, 0, coolmini, common, vamphalf_state, dquizgo2, ROT0, "SemiCom", "Date Quiz Go Go Episode 2" , GAME_SUPPORTS_SAVE ) +GAME( 2000, misncrft, 0, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.7)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2000, misncrfta, misncrft, misncrft, common, vamphalf_state, misncrft, ROT90, "Sun", "Mission Craft (version 2.4)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2000, mrdig, 0, mrdig, common, vamphalf_state, mrdig, ROT0, "Sun", "Mr. Dig", GAME_SUPPORTS_SAVE ) +GAME( 2001, dtfamily, 0, coolmini, common, vamphalf_state, dtfamily, ROT0, "SemiCom", "Diet Family", GAME_SUPPORTS_SAVE ) +GAME( 2001, finalgdr, 0, finalgdr, finalgdr, vamphalf_state, finalgdr, ROT0, "SemiCom", "Final Godori (Korea, version 2.20.5915)", GAME_SUPPORTS_SAVE ) +GAME( 2001, mrkicker, 0, mrkicker, finalgdr, vamphalf_state, mrkicker, ROT0, "SemiCom", "Mr. Kicker", GAME_SUPPORTS_SAVE ) +GAME( 2001, toyland, 0, coolmini, common, vamphalf_state, toyland, ROT0, "SemiCom", "Toy Land Adventure", GAME_SUPPORTS_SAVE ) +GAME( 2001, wivernwg, 0, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom", "Wivern Wings", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2001, wyvernwg, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", GAME_SUPPORTS_SAVE ) +GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", GAME_SUPPORTS_SAVE ) +GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) -- cgit v1.2.3-70-g09d2 From 2deefb4a3596dea311d6d548fbd5352b3e96ea3b Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 16 Apr 2015 19:47:21 +0200 Subject: changed test layout "lampxy" to "x.y" --- src/mess/layout/hh_hmcs40_test.lay | 1280 ++++++++++++++++++------------------ src/mess/layout/hh_ucom4_test.lay | 1024 ++++++++++++++--------------- 2 files changed, 1152 insertions(+), 1152 deletions(-) (limited to 'src') diff --git a/src/mess/layout/hh_hmcs40_test.lay b/src/mess/layout/hh_hmcs40_test.lay index 95fdc39d59d..0a7960cee0e 100644 --- a/src/mess/layout/hh_hmcs40_test.lay +++ b/src/mess/layout/hh_hmcs40_test.lay @@ -23,661 +23,661 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mess/layout/hh_ucom4_test.lay b/src/mess/layout/hh_ucom4_test.lay index 55266384f2e..66cedd6b015 100644 --- a/src/mess/layout/hh_ucom4_test.lay +++ b/src/mess/layout/hh_ucom4_test.lay @@ -23,533 +23,533 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3-70-g09d2 From 0802a8fdb3793959b08e2f1929076cb1a8d4b082 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 16 Apr 2015 20:09:50 +0200 Subject: (MESS)New working game added ----------------- Mego Mini-Vid Break Free [hap, Kevin Horton] --- src/mess/drivers/hh_hmcs40.c | 22 +++---- src/mess/drivers/hh_tms1k.c | 16 ++--- src/mess/drivers/hh_ucom4.c | 142 +++++++++++++++++++++++++++++++++++-------- src/mess/mess.lst | 3 +- 4 files changed, 139 insertions(+), 44 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c index 3790a38408b..ab2c67dc252 100644 --- a/src/mess/drivers/hh_hmcs40.c +++ b/src/mess/drivers/hh_hmcs40.c @@ -357,7 +357,7 @@ static INPUT_PORTS_START( bambball ) PORT_START("IN.1") // D8 port R0x PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // separate directional buttons, hence 16way - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.2") // D9 port R0x @@ -1548,12 +1548,12 @@ static INPUT_PORTS_START( egalaxn2 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // separate directional buttons, hence 16way PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " PORT_START("IN.1") // D2 port R0x - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // " PORT_START("IN.2") // D3 port R0x @@ -1628,15 +1628,15 @@ public: static INPUT_PORTS_START( epacman2 ) PORT_START("IN.0") // D1 port R0x - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // " - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " PORT_START("IN.1") // D2 port R0x - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // " PORT_START("IN.2") // D3 port R0x diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c index 6e3e26b4e0e..036fde49b71 100644 --- a/src/mess/drivers/hh_tms1k.c +++ b/src/mess/drivers/hh_tms1k.c @@ -181,7 +181,7 @@ void hh_tms1k_state::display_update() int state = active_state[y] >> x & 1; char buf1[0x10]; // lampyx char buf2[0x10]; // y.x - + if (x == m_display_maxx) { // always-on if selected @@ -918,7 +918,7 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Electronic Baseball 2 - * PCBs are labeled: ZENY + * boards are labeled: ZENY * TMS1000 MCU, MP0923 (die labeled MP0923) * 3 7seg LEDs, and other LEDs behind bezel, 1bit sound @@ -1045,7 +1045,7 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Electronic Baseball 3 - * PCBs are labeled: ZENY + * boards are labeled: ZENY * TMS1100NLL 6007 MP1204 (die labeled MP1204) * 2*SN75492N LED display driver * 4 7seg LEDs, and other LEDs behind bezel, 1bit sound @@ -1291,7 +1291,7 @@ WRITE16_MEMBER(einvader_state::write_o) static INPUT_PORTS_START( einvader ) PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // " PORT_CONFNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, einvader_state, difficulty_switch, NULL) PORT_CONFSETTING( 0x00, "Amateur" ) @@ -1346,7 +1346,7 @@ MACHINE_CONFIG_END Ideal Electronic Detective * TMS0980NLL MP6100A (die labeled 0980B-00) * 10-digit 7seg LED display, 1bit sound - + hardware (and concept) is very similar to Parker Bros Stop Thief This is an electronic board game. It requires game cards with suspect info, @@ -1638,7 +1638,7 @@ WRITE16_MEMBER(astro_state::write_r) { // R0-R7: input mux m_inp_mux = data & 0xff; - + // R0-R9: led select m_r = data; prepare_display(); @@ -1965,13 +1965,13 @@ WRITE16_MEMBER(ssimon_state::write_r) { // R0-R3,R9,R10: input mux m_inp_mux = (data & 0xf) | (data >> 5 & 0x30); - + // R4: yellow lamps // R5: green lamps // R6: blue lamps // R7: red lamps display_matrix(4, 1, data >> 4, 1); - + // R8: speaker out m_speaker->level_w(data >> 8 & 1); } diff --git a/src/mess/drivers/hh_ucom4.c b/src/mess/drivers/hh_ucom4.c index bef639156f9..76b8c35e285 100644 --- a/src/mess/drivers/hh_ucom4.c +++ b/src/mess/drivers/hh_ucom4.c @@ -32,27 +32,6 @@ ***************************************************************************/ - - - - - - - -/*************************************************************************** - - Mego Mini-Vid Break Free (manufactured in Japan) - * PCB label Mego 79 rev F - * NEC uCOM-43 MCU, labeled D553C 031 - * cyan VFD display Futaba DM-4.5 91 - - NOTE!: MESS external artwork is recommended - -***************************************************************************/ - - - - #include "emu.h" #include "cpu/ucom4/ucom4.h" #include "sound/speaker.h" @@ -957,6 +936,113 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Mego Mini-Vid Break Free (manufactured in Japan) + * PCB label Mego 79 rev F + * NEC uCOM-43 MCU, labeled D553C 049 + * cyan VFD display Futaba DM-4.5 91 + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class mvbfree_state : public hh_ucom4_state +{ +public: + mvbfree_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE8_MEMBER(speaker_w); +}; + +// handlers + +void mvbfree_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); + UINT16 plate = BITSWAP16(m_plate,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9); + display_matrix(10, 14, plate, grid); +} + +WRITE8_MEMBER(mvbfree_state::grid_w) +{ + // E23,F,G,H: vfd matrix grid + int shift = (offset - NEC_UCOM4_PORTE) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + + // E01: plate 0,1 + if (offset == NEC_UCOM4_PORTE) + plate_w(space, 2 + NEC_UCOM4_PORTC, data & 3); + else + prepare_display(); +} + +WRITE8_MEMBER(mvbfree_state::plate_w) +{ + // C,D(,E01): vfd matrix plate + int shift = (offset - NEC_UCOM4_PORTC) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(mvbfree_state::speaker_w) +{ + // I0: speaker out + m_speaker->level_w(data & 1); +} + + +// config + +static INPUT_PORTS_START( mvbfree ) + PORT_START("IN.0") // port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + + PORT_START("IN.1") // port B + PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED ) // unimplemented p1/p2 buttons + PORT_CONFNAME( 0x0c, 0x04, "Game Select") + PORT_CONFSETTING( 0x04, "1" ) + PORT_CONFSETTING( 0x00, "2" ) + PORT_CONFSETTING( 0x08, "3" ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( mvbfree, mvbfree_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D553, 400000) // approximation + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(mvbfree_state, plate_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(mvbfree_state, plate_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(mvbfree_state, grid_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(mvbfree_state, grid_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(mvbfree_state, grid_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(mvbfree_state, grid_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(mvbfree_state, speaker_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Tomy(tronic) Tennis (manufactured in Japan) @@ -1182,10 +1268,10 @@ WRITE8_MEMBER(tmpacman_state::plate_w) static INPUT_PORTS_START( tmpacman ) PORT_START("IN.0") // port A - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // " - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // " PORT_START("IN.1") // port B PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) @@ -1597,6 +1683,12 @@ ROM_START( edracula ) ROM_END +ROM_START( mvbfree ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "d553c-049", 0x0000, 0x0800, CRC(d64a8399) SHA1(97887e486fa29b1fc4a5a40cacf3c960f67aacbf) ) +ROM_END + + ROM_START( tmtennis ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) ) @@ -1638,6 +1730,8 @@ CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) + CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 462e3683c06..123e94a4f07 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2191,11 +2191,12 @@ alnattck // Coleco cdkong // Coleco cgalaxn // Coleco cpacman // Coleco -cpacmanr1 // +cpacmanr1 // Coleco (rev 1) cmspacmn // Coleco egalaxn2 // Entex epacman2 // Entex pbqbert // Parker Brothers +mvbfree // Mego kingman // Tomy tmtron // Tomy vinvader // VTech -- cgit v1.2.3-70-g09d2 From e3cc0777fe144008e3eb2d9729de584e14838e7b Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 16 Apr 2015 20:13:00 +0200 Subject: gah --- src/mess/drivers/hh_tms1k.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c index 036fde49b71..a51dba8addd 100644 --- a/src/mess/drivers/hh_tms1k.c +++ b/src/mess/drivers/hh_tms1k.c @@ -918,7 +918,7 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Electronic Baseball 2 - * boards are labeled: ZENY + * PCBs are labeled: ZENY * TMS1000 MCU, MP0923 (die labeled MP0923) * 3 7seg LEDs, and other LEDs behind bezel, 1bit sound @@ -1045,7 +1045,7 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Electronic Baseball 3 - * boards are labeled: ZENY + * PCBs are labeled: ZENY * TMS1100NLL 6007 MP1204 (die labeled MP1204) * 2*SN75492N LED display driver * 4 7seg LEDs, and other LEDs behind bezel, 1bit sound -- cgit v1.2.3-70-g09d2 From 1c7e636fef403f8b2305a9c7c426062683cbe375 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Thu, 16 Apr 2015 23:49:18 +0300 Subject: (MESS) Implemented writing to Commodore d64/d67/d71/d80/d82 sector images. [Curt Coder] --- src/lib/formats/d64_dsk.c | 65 ++++++++++++++++++++++++++++++++-- src/lib/formats/d64_dsk.h | 6 +++- src/lib/formats/flopimg.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib/formats/flopimg.h | 3 ++ 4 files changed, 160 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/lib/formats/d64_dsk.c b/src/lib/formats/d64_dsk.c index 3bcbee87727..e5ffc9d15d9 100644 --- a/src/lib/formats/d64_dsk.c +++ b/src/lib/formats/d64_dsk.c @@ -122,6 +122,25 @@ void d64_format::get_disk_id(const format &f, io_generic *io, UINT8 &id1, UINT8 id2 = id[1]; } +int d64_format::get_image_offset(const format &f, int _head, int _track) +{ + int offset = 0; + if (_head) { + for (int track = 0; track < f.track_count; track++) { + offset += compute_track_size(f, track); + } + } + for (int track = 0; track < _track; track++) { + offset += compute_track_size(f, track); + } + return offset; +} + +int d64_format::compute_track_size(const format &f, int track) +{ + return this->get_sectors_per_track(f, track) * f.sector_base_size; +} + UINT32 d64_format::get_cell_size(const format &f, int track) { return cell_size[speed_zone[track]]; @@ -244,9 +263,51 @@ bool d64_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) return true; } -bool d64_format::supports_save() const +bool d64_format::save(io_generic *io, floppy_image *image) +{ + const format &f = formats[0]; + + for(int head=0; head < f.head_count; head++) { + for(int track=0; track < f.track_count; track++) { + int sector_count = this->get_sectors_per_track(f, track); + int track_size = compute_track_size(f, track); + UINT8 sectdata[40*256]; + desc_s sectors[40]; + int offset = get_image_offset(f, head, track); + + build_sector_description(f, sectdata, 0, 0, sectors, sector_count); + extract_sectors(image, f, sectors, track, head, sector_count); + io_generic_write(io, sectdata, offset, track_size); + } + } + + return true; +} + +void d64_format::extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head, int sector_count) { - return false; + UINT8 bitstream[500000/8]; + UINT8 sectdata[50000]; + desc_xs sectors[256]; + int physical_track = this->get_physical_track(f, head, track); + int cell_size = this->get_cell_size(f, track); + int track_size; + + // Extract the sectors + generate_bitstream_from_track(physical_track, head, cell_size, bitstream, track_size, image); + extract_sectors_from_bitstream_gcr5(bitstream, track_size, sectors, sectdata, sizeof(sectdata), head, f.track_count); + + for(int i=0; i; diff --git a/src/lib/formats/d64_dsk.h b/src/lib/formats/d64_dsk.h index 573bbab4cbc..9d6add2817e 100644 --- a/src/lib/formats/d64_dsk.h +++ b/src/lib/formats/d64_dsk.h @@ -36,7 +36,8 @@ public: virtual int identify(io_generic *io, UINT32 form_factor); virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image); - virtual bool supports_save() const; + virtual bool save(io_generic *io, floppy_image *image); + virtual bool supports_save() const { return true; } protected: enum @@ -63,9 +64,12 @@ protected: virtual int get_sectors_per_track(const format &f, int track); virtual int get_disk_id_offset(const format &f); void get_disk_id(const format &f, io_generic *io, UINT8 &id1, UINT8 &id2); + virtual int get_image_offset(const format &f, int head, int track); + int compute_track_size(const format &f, int track); virtual floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2); void build_sector_description(const format &f, UINT8 *sectdata, UINT32 sect_offs, UINT32 error_offs, desc_s *sectors, int sector_count) const; virtual void fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size); + void extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head, int sector_count); static const format file_formats[]; diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c index 0f17c7e3b4d..93ef36edcf5 100644 --- a/src/lib/formats/flopimg.c +++ b/src/lib/formats/flopimg.c @@ -2366,6 +2366,16 @@ UINT8 floppy_image_format_t::sbyte_mfm_r(const UINT8 *bitstream, int &pos, int t return res; } +UINT8 floppy_image_format_t::sbyte_gcr5_r(const UINT8 *bitstream, int &pos, int track_size) +{ + UINT16 gcr = 0; + for(int i=0; i<10; i++) { + if(sbit_rp(bitstream, pos, track_size)) + gcr |= 0x200 >> i; + } + + return (gcr5bw_tb[gcr >> 5] << 4) | gcr5bw_tb[gcr & 0x1f]; +} void floppy_image_format_t::extract_sectors_from_bitstream_mfm_pc(const UINT8 *bitstream, int track_size, desc_xs *sectors, UINT8 *sectdata, int sectdata_size) { @@ -2801,3 +2811,82 @@ void floppy_image_format_t::build_pc_track_mfm(int track, int head, floppy_image generate_track_from_levels(track, head, track_data, 0, image); } + +void floppy_image_format_t::extract_sectors_from_bitstream_gcr5(const UINT8 *bitstream, int track_size, desc_xs *sectors, UINT8 *sectdata, int sectdata_size, int head, int tracks) +{ + memset(sectors, 0, 256*sizeof(desc_xs)); + + // Don't bother if it's just too small + if(track_size < 100) + return; + + // Start by detecting all id and data blocks + int hblk[100], dblk[100]; + int hblk_count = 0, dblk_count = 0; + + // Precharge the shift register to detect over-the-index stuff + UINT16 shift_reg = 0; + for(int i=0; i<16; i++) + if(sbit_r(bitstream, track_size-16+i)) + shift_reg |= 0x8000 >> i; + + // Scan the bitstream for sync marks and follow them to check for blocks + bool sync = false; + for(int i=0; i tracks) track -= tracks; + sectors[sector].track = track; + sectors[sector].head = head; + sectors[sector].size = 256; + sectors[sector].data = sectdata + sectdata_pos; + UINT8 data_crc = 0; + for(int j=0; j Date: Thu, 16 Apr 2015 23:46:55 +0200 Subject: Fix compile. (nw) --- src/lib/formats/flopimg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c index 93ef36edcf5..cc7e00d0ed4 100644 --- a/src/lib/formats/flopimg.c +++ b/src/lib/formats/flopimg.c @@ -2859,7 +2859,7 @@ void floppy_image_format_t::extract_sectors_from_bitstream_gcr5(const UINT8 *bit int sectdata_pos = 0; for(int i=0; i Date: Fri, 17 Apr 2015 00:38:54 +0200 Subject: Minor netlist changes. (nw) --- src/emu/machine/netlist.c | 3 ++- src/emu/netlist/analog/nld_solver.c | 25 +++++++++++---------- src/emu/netlist/nl_base.c | 15 +++++++++++-- src/emu/netlist/nl_base.h | 43 ++++++++++++++++--------------------- src/emu/netlist/nl_config.h | 2 +- src/emu/netlist/nl_lists.h | 19 ++++++++++------ 6 files changed, 61 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index ae88104f605..ad6153eca54 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -537,7 +537,7 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off int relpc = pc - m_genPC; //UINT16 opcode = (oprom[pc - startpc] << 8) | oprom[pc+1 - startpc]; //UINT8 inst = opcode >> 13; - +#if 0 if (relpc >= 0 && relpc < netlist().queue().count()) { // sprintf(buffer, "%04x %02d %s", pc, relpc, netlist().queue()[netlist().queue().count() - relpc - 1].object().name().cstr()); @@ -547,6 +547,7 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off } else sprintf(buffer, "%s", ""); +#endif pc+=1; return (pc - startpc); } diff --git a/src/emu/netlist/analog/nld_solver.c b/src/emu/netlist/analog/nld_solver.c index 22a10ea1a3d..e254f6587a1 100644 --- a/src/emu/netlist/analog/nld_solver.c +++ b/src/emu/netlist/analog/nld_solver.c @@ -400,25 +400,28 @@ NETLIB_UPDATE(solver) { #pragma omp for nowait for (int i = 0; i < t_cnt; i++) - { - this_resched[i] = m_mat_solvers[i]->solve(); - } + if (m_mat_solvers[i]->is_timestep()) + { + // Ignore return value + ATTR_UNUSED const nl_double ts = m_mat_solvers[i]->solve(); + } } } else for (int i = 0; i < t_cnt; i++) - { - if (do_full || (m_mat_solvers[i]->is_timestep())) - this_resched[i] = m_mat_solvers[i]->solve(); - } -#else - for (int i = 0; i < t_cnt; i++) - { - if (m_mat_solvers[i]->is_timestep()) + if (m_mat_solvers[i]->is_timestep()) { // Ignore return value ATTR_UNUSED const nl_double ts = m_mat_solvers[i]->solve(); } +#else + for (int i = 0; i < t_cnt; i++) + { + if (m_mat_solvers[i]->is_timestep()) + { + // Ignore return value + ATTR_UNUSED const nl_double ts = m_mat_solvers[i]->solve(); + } } #endif diff --git a/src/emu/netlist/nl_base.c b/src/emu/netlist/nl_base.c index 8a4d0089c7b..8d4b67369f0 100644 --- a/src/emu/netlist/nl_base.c +++ b/src/emu/netlist/nl_base.c @@ -249,7 +249,7 @@ ATTR_COLD void netlist_base_t::reset() } -ATTR_HOT ATTR_ALIGN void netlist_base_t::process_queue(const netlist_time delta) +ATTR_HOT ATTR_ALIGN void netlist_base_t::process_queue(const netlist_time &delta) { m_stop = m_time + delta; @@ -508,7 +508,7 @@ ATTR_HOT void netlist_net_t::inc_active(netlist_core_terminal_t &term) if (m_time > netlist().time()) { m_in_queue = 1; /* pending */ - netlist().push_to_queue(this, m_time); + netlist().push_to_queue(*this, m_time); } else { @@ -671,6 +671,7 @@ ATTR_COLD void netlist_net_t::merge_net(netlist_net_t *othernet) } } + // ---------------------------------------------------------------------------------------- // netlist_logic_net_t // ---------------------------------------------------------------------------------------- @@ -1001,3 +1002,13 @@ NETLIB_UPDATE(mainclock) net.toggle_new_Q(); net.set_time(netlist().time() + m_inc); } + +ATTR_HOT void netlist_base_t::push_to_queue(netlist_net_t &out, const netlist_time &attime) +{ + m_queue.push(netlist_queue_t::entry_t(attime, &out)); +} + +ATTR_HOT void netlist_base_t::remove_from_queue(netlist_net_t &out) +{ + m_queue.remove(&out); +} diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h index d8af15e53f8..b6cb33ed724 100644 --- a/src/emu/netlist/nl_base.h +++ b/src/emu/netlist/nl_base.h @@ -166,7 +166,9 @@ // Type definitions // ---------------------------------------------------------------------------------------- -typedef UINT8 netlist_sig_t; +//typedef UINT8 netlist_sig_t; + +#define netlist_sig_t UINT8 class netlist_core_device_t; @@ -619,14 +621,14 @@ public: ATTR_HOT void update_devs(); - ATTR_HOT inline const netlist_time time() const { return m_time; } - ATTR_HOT inline void set_time(const netlist_time ntime) { m_time = ntime; } + ATTR_HOT inline const netlist_time &time() const { return m_time; } + ATTR_HOT inline void set_time(const netlist_time &ntime) { m_time = ntime; } ATTR_HOT inline bool isRailNet() const { return !(m_railterminal == NULL); } ATTR_HOT inline const netlist_core_terminal_t & RESTRICT railterminal() const { return *m_railterminal; } - ATTR_HOT inline void push_to_queue(const netlist_time delay); - ATTR_HOT inline void reschedule_in_queue(const netlist_time delay); + ATTR_HOT inline void push_to_queue(const netlist_time &delay); + ATTR_HOT inline void reschedule_in_queue(const netlist_time &delay); ATTR_HOT bool inline is_queued() const { return m_in_queue == 1; } ATTR_HOT inline int num_cons() const { return m_core_terms.count(); } @@ -685,7 +687,7 @@ public: return m_new_Q; } - ATTR_HOT inline void set_Q(const netlist_sig_t newQ, const netlist_time delay) + ATTR_HOT inline void set_Q(const netlist_sig_t &newQ, const netlist_time &delay) { if (EXPECTED(newQ != m_new_Q)) { @@ -806,7 +808,7 @@ public: ATTR_COLD nld_base_d_to_a_proxy *get_proxy() const { return m_proxy; } ATTR_COLD void set_proxy(nld_base_d_to_a_proxy *proxy) { m_proxy = proxy; } - ATTR_HOT inline void set_Q(const netlist_sig_t newQ, const netlist_time delay) + ATTR_HOT inline void set_Q(const netlist_sig_t newQ, const netlist_time &delay) { net().as_logic().set_Q(newQ, delay); } @@ -992,7 +994,7 @@ public: return inp.Q(); } - ATTR_HOT inline void OUTLOGIC(netlist_logic_output_t &out, const netlist_sig_t val, const netlist_time delay) + ATTR_HOT inline void OUTLOGIC(netlist_logic_output_t &out, const netlist_sig_t val, const netlist_time &delay) { out.set_Q(val, delay); } @@ -1117,22 +1119,15 @@ public: ATTR_HOT inline const netlist_queue_t &queue() const { return m_queue; } ATTR_HOT inline netlist_queue_t &queue() { return m_queue; } - ATTR_HOT inline const netlist_time time() const { return m_time; } + ATTR_HOT inline const netlist_time &time() const { return m_time; } ATTR_HOT inline NETLIB_NAME(solver) *solver() const { return m_solver; } ATTR_HOT inline NETLIB_NAME(gnd) *gnd() const { return m_gnd; } ATTR_HOT const nl_double gmin() const; - ATTR_HOT inline void push_to_queue(netlist_net_t *out, const netlist_time attime) - { - m_queue.push(netlist_queue_t::entry_t(attime, out)); - } - - ATTR_HOT inline void remove_from_queue(netlist_net_t *out) - { - m_queue.remove(out); - } + ATTR_HOT void push_to_queue(netlist_net_t &out, const netlist_time &attime); + ATTR_HOT void remove_from_queue(netlist_net_t &out); - ATTR_HOT void process_queue(const netlist_time delta); + ATTR_HOT void process_queue(const netlist_time &delta); ATTR_HOT inline void abort_current_queue_slice() { m_stop = netlist_time::zero; } ATTR_COLD void rebuild_lists(); /* must be called after post_load ! */ @@ -1322,7 +1317,7 @@ ATTR_HOT inline void netlist_logic_input_t::activate_lh() } -ATTR_HOT inline void netlist_net_t::push_to_queue(const netlist_time delay) +ATTR_HOT inline void netlist_net_t::push_to_queue(const netlist_time &delay) { //if (UNEXPECTED(m_num_cons == 0 || is_queued())) if (!is_queued()) @@ -1331,22 +1326,22 @@ ATTR_HOT inline void netlist_net_t::push_to_queue(const netlist_time delay) m_in_queue = (m_active > 0); /* queued ? */ if (EXPECTED(m_in_queue)) { - netlist().push_to_queue(this, m_time); + netlist().push_to_queue(*this, m_time); } } } -ATTR_HOT inline void netlist_net_t::reschedule_in_queue(const netlist_time delay) +ATTR_HOT inline void netlist_net_t::reschedule_in_queue(const netlist_time &delay) { //if (UNEXPECTED(m_num_cons == 0 || is_queued())) if (is_queued()) - netlist().remove_from_queue(this); + netlist().remove_from_queue(*this); m_time = netlist().time() + delay; m_in_queue = (m_active > 0); /* queued ? */ if (EXPECTED(m_in_queue)) { - netlist().push_to_queue(this, m_time); + netlist().push_to_queue(*this, m_time); } } diff --git a/src/emu/netlist/nl_config.h b/src/emu/netlist/nl_config.h index 966163bb053..c2ef152247d 100644 --- a/src/emu/netlist/nl_config.h +++ b/src/emu/netlist/nl_config.h @@ -39,7 +39,7 @@ // The following adds about 10% performance ... -#define USE_OPENMP (0) +#define USE_OPENMP (1) // Use nano-second resolution - Sufficient for now #define NETLIST_INTERNAL_RES (U64(1000000000)) diff --git a/src/emu/netlist/nl_lists.h b/src/emu/netlist/nl_lists.h index ea2cf597e1b..b0bfdd9b517 100644 --- a/src/emu/netlist/nl_lists.h +++ b/src/emu/netlist/nl_lists.h @@ -27,14 +27,20 @@ public: { public: ATTR_HOT inline entry_t() - : m_exec_time(), m_object() {} - ATTR_HOT inline entry_t(const _Time atime, const _Element elem) : m_exec_time(atime), m_object(elem) {} + : m_object(), m_exec_time() {} + ATTR_HOT inline entry_t(const _Time &atime, const _Element &elem) : m_object(elem), m_exec_time(atime) {} ATTR_HOT inline const _Time exec_time() const { return m_exec_time; } ATTR_HOT inline const _Element object() const { return m_object; } + ATTR_HOT inline entry_t &operator=(const entry_t &right) { + m_object = right.m_object; + m_exec_time = right.m_exec_time; + return *this; + } + private: - _Time m_exec_time; _Element m_object; + _Time m_exec_time; }; netlist_timed_queue() @@ -47,11 +53,10 @@ public: ATTR_HOT inline bool is_empty() const { return (m_end == &m_list[0]); } ATTR_HOT inline bool is_not_empty() const { return (m_end > &m_list[0]); } - ATTR_HOT ATTR_ALIGN void push(const entry_t &e) + ATTR_HOT /*ATTR_ALIGN*/ void push(const entry_t &e) { entry_t * i = m_end++; - const _Time e_time = e.exec_time(); - while ((i > &m_list[0]) && (e_time > (i - 1)->exec_time()) ) + while ((i > &m_list[0]) && (e.exec_time() > (i - 1)->exec_time()) ) { *(i) = *(i-1); i--; @@ -72,7 +77,7 @@ public: return (m_end-1); } - ATTR_HOT inline void remove(const _Element elem) + ATTR_HOT /*inline*/ void remove(const _Element &elem) { entry_t * i = m_end - 1; while (i > &m_list[0]) -- cgit v1.2.3-70-g09d2 From dad79cb4d2cca2231b598971328cf62a6ffdaf49 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 17 Apr 2015 09:42:06 +1000 Subject: Better way of setting default USE_OPENMP (nw) --- src/emu/netlist/nl_config.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/emu/netlist/nl_config.h b/src/emu/netlist/nl_config.h index c2ef152247d..f16eca5add4 100644 --- a/src/emu/netlist/nl_config.h +++ b/src/emu/netlist/nl_config.h @@ -8,7 +8,7 @@ #ifndef NLCONFIG_H_ #define NLCONFIG_H_ -/* FIXME: at some time, make it compile on it's own */ +/* FIXME: at some time, make it compile on its own */ #include "osdcore.h" #include "corealloc.h" @@ -39,7 +39,13 @@ // The following adds about 10% performance ... +#if !defined(USE_OPENMP) +#if defined(_OPENMP) #define USE_OPENMP (1) +#else // defined(_OPENMP) +#define USE_OPENMP (0) +#endif // defined(_OPENMP) +#endif // !defined(USE_OPENMP) // Use nano-second resolution - Sufficient for now #define NETLIST_INTERNAL_RES (U64(1000000000)) -- cgit v1.2.3-70-g09d2 From a8dec7ae7067ca55e6504825fb6ba47607cb3257 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 17 Apr 2015 09:46:17 +1000 Subject: Fix unused var --- src/emu/machine/netlist.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index ad6153eca54..e67e086ab92 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -534,10 +534,10 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off { //char tmp[16]; unsigned startpc = pc; - int relpc = pc - m_genPC; - //UINT16 opcode = (oprom[pc - startpc] << 8) | oprom[pc+1 - startpc]; - //UINT8 inst = opcode >> 13; #if 0 + int relpc = pc - m_genPC; + UINT16 opcode = (oprom[pc - startpc] << 8) | oprom[pc+1 - startpc]; + UINT8 inst = opcode >> 13; if (relpc >= 0 && relpc < netlist().queue().count()) { // sprintf(buffer, "%04x %02d %s", pc, relpc, netlist().queue()[netlist().queue().count() - relpc - 1].object().name().cstr()); -- cgit v1.2.3-70-g09d2 From b7a5efe5b70db8eaebcf0aa46dc9a72a3bcc0f50 Mon Sep 17 00:00:00 2001 From: k2-git Date: Fri, 17 Apr 2015 09:34:52 +0900 Subject: fix kbm3rd keyboard error(nw) --- src/mame/machine/midikbd.c | 113 ++++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/mame/machine/midikbd.c b/src/mame/machine/midikbd.c index 070511fc2a8..2ceb68ae23f 100644 --- a/src/mame/machine/midikbd.c +++ b/src/mame/machine/midikbd.c @@ -12,66 +12,73 @@ midi_keyboard_device::midi_keyboard_device(const machine_config &mconfig, const void midi_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - const int keyboard_notes[24] = + if(id) { - 0x3c, // C1 - 0x3d, // C1# - 0x3e, // D1 - 0x3f, // D1# - 0x40, // E1 - 0x41, // F1 - 0x42, // F1# - 0x43, // G1 - 0x44, // G1# - 0x45, // A1 - 0x46, // A1# - 0x47, // B1 - 0x48, // C2 - 0x49, // C2# - 0x4a, // D2 - 0x4b, // D2# - 0x4c, // E2 - 0x4d, // F2 - 0x4e, // F2# - 0x4f, // G2 - 0x50, // G2# - 0x51, // A2 - 0x52, // A2# - 0x53, // B2 - }; - - int i; - - UINT32 kbstate = m_keyboard->read(); - if(kbstate != m_keyboard_state) + device_serial_interface::device_timer(timer, id, param, ptr); + } + else { - for (i=0; i < 24; i++) + const int keyboard_notes[24] = { - int kbnote = keyboard_notes[i]; - - if ((m_keyboard_state & (1 << i)) != 0 && (kbstate & (1 << i)) == 0) - { - // key was on, now off -> send Note Off message - push_tx(0x80); - push_tx(kbnote); - push_tx(0x7f); - } - else if ((m_keyboard_state & (1 << i)) == 0 && (kbstate & (1 << i)) != 0) + 0x3c, // C1 + 0x3d, // C1# + 0x3e, // D1 + 0x3f, // D1# + 0x40, // E1 + 0x41, // F1 + 0x42, // F1# + 0x43, // G1 + 0x44, // G1# + 0x45, // A1 + 0x46, // A1# + 0x47, // B1 + 0x48, // C2 + 0x49, // C2# + 0x4a, // D2 + 0x4b, // D2# + 0x4c, // E2 + 0x4d, // F2 + 0x4e, // F2# + 0x4f, // G2 + 0x50, // G2# + 0x51, // A2 + 0x52, // A2# + 0x53, // B2 + }; + + int i; + + UINT32 kbstate = m_keyboard->read(); + if(kbstate != m_keyboard_state) + { + for (i=0; i < 24; i++) { - // key was off, now on -> send Note On message - push_tx(0x90); - push_tx(kbnote); - push_tx(0x7f); + int kbnote = keyboard_notes[i]; + + if ((m_keyboard_state & (1 << i)) != 0 && (kbstate & (1 << i)) == 0) + { + // key was on, now off -> send Note Off message + push_tx(0x80); + push_tx(kbnote); + push_tx(0x7f); + } + else if ((m_keyboard_state & (1 << i)) == 0 && (kbstate & (1 << i)) != 0) + { + // key was off, now on -> send Note On message + push_tx(0x90); + push_tx(kbnote); + push_tx(0x7f); + } } } + else + // no messages, send Active Sense message instead + push_tx(0xfe); + + m_keyboard_state = kbstate; + if(is_transmit_register_empty()) + tra_complete(); } - else - // no messages, send Active Sense message instead - push_tx(0xfe); - - m_keyboard_state = kbstate; - if(is_transmit_register_empty()) - tra_complete(); } void midi_keyboard_device::device_start() -- cgit v1.2.3-70-g09d2 From aa1cbfc0daeaa213bdf58396e1ff7a7232a03068 Mon Sep 17 00:00:00 2001 From: mamehaze Date: Fri, 17 Apr 2015 16:16:30 +0100 Subject: note about poor control design --- src/mame/drivers/snowbros.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/snowbros.c b/src/mame/drivers/snowbros.c index cc2d667a4e1..bd2a13f63ac 100644 --- a/src/mame/drivers/snowbros.c +++ b/src/mame/drivers/snowbros.c @@ -61,6 +61,15 @@ These appear to have clipping problems on the left / right edges, but this may be correct, the sprites which should be drawn there are simply blanked out of the sprite list at that point.. (verify on real hw) +Ma Cheon Ru + +The electrified maze + ball minigame appears unreponsive to controls, this +is because it actually requires you to move the joysticks in a circular +motion through all 8 directions at a very even speed, a task which is +practically impossible to perform on keyboard, and not even that easy with +a joystick. This is not an emulation bug. + + ***************************************************************************/ #include "emu.h" @@ -2718,7 +2727,7 @@ GAME( 1997, pzlbreak, 0, semiprot, pzlbreak, snowbros_state, pzlbreak GAME( 1997, suhosong, 0, semiprot, suhosong, driver_device, 0, ROT0, "SemiCom", "Su Ho Seong", GAME_SUPPORTS_SAVE ) GAME( 1997, twinkle, 0, semiprot, twinkle, driver_device, 0, ROT0, "SemiCom", "Twinkle", GAME_SUPPORTS_SAVE ) GAME( 1998, 3in1semi, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom", "XESS - The New Revolution (SemiCom 3-in-1)", GAME_SUPPORTS_SAVE ) -GAME( 1999, mcheonru, 0, semiprot, mcheonru, snowbros_state, 3in1semi, ROT0, "SemiCom", "Ma Cheon Ru", GAME_SUPPORTS_SAVE ) // the 'electrified maze' minigame seems to be broken, controls don't work, is it an original game bug? +GAME( 1999, mcheonru, 0, semiprot, mcheonru, snowbros_state, 3in1semi, ROT0, "SemiCom", "Ma Cheon Ru", GAME_SUPPORTS_SAVE ) GAME( 1999, moremore, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More", GAME_SUPPORTS_SAVE ) GAME( 1999, moremorp, 0, semiprot, moremore, snowbros_state, 3in1semi, ROT0, "SemiCom / Exit", "More More Plus", GAME_SUPPORTS_SAVE ) // This is very similar to the SemiCom titles, but unprotected. -- cgit v1.2.3-70-g09d2 From eb740564f1b52b9cf7c5fef32c7e251e8dbcc88b Mon Sep 17 00:00:00 2001 From: mamehaze Date: Fri, 17 Apr 2015 16:31:08 +0100 Subject: new clones Robocop 2 (US v0.10) [Bill D, The Dumping Union] --- src/mame/drivers/cninja.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++- src/mame/mame.lst | 1 + 2 files changed, 58 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c index 9f0307c9ce5..b1d5da9af1d 100644 --- a/src/mame/drivers/cninja.c +++ b/src/mame/drivers/cninja.c @@ -1877,7 +1877,59 @@ ROM_START( robocop2 ) ROM_LOAD( "go-12.v7", 0x00000, 0x400, CRC(278f674f) SHA1(d4f5b9770d6d2ddebf1b999e291c80a3e274d492) ) /* Priority Unused */ ROM_END + ROM_START( robocop2u ) + ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "gp03-3.k1", 0x00000, 0x20000, CRC(c016a84b) SHA1(3ac4c61fd87899831e093596ffd7e8a213b946a2) ) + ROM_LOAD16_BYTE( "gp07-3.k3", 0x00001, 0x20000, CRC(54c541ae) SHA1(c9aa46bdc182aceff3cfb1ad958965deabb335e3) ) + ROM_LOAD16_BYTE( "gp02-3.j1", 0x40000, 0x20000, CRC(6777b8a0) SHA1(9081bd187c3b5923efab3e4abde952e9ab29d946) ) // == gq-02.j1 in 'robocop2' + ROM_LOAD16_BYTE( "gp06-3.j3", 0x40001, 0x20000, CRC(73b8cf96) SHA1(6c651db1d4322946529569f3e516f382f1becde7) ) + ROM_LOAD16_BYTE( "gp01-.h1", 0x80000, 0x20000, CRC(ab5356c0) SHA1(297a89b4d9212c916745997bbb959b0ed660f909) ) // no '-1' but matches other '-1' roms we have + ROM_LOAD16_BYTE( "gp05-.h3", 0x80001, 0x20000, CRC(ce21bda5) SHA1(615701d4abdb56d50da44589e6e03909f4b28d45) ) + ROM_LOAD16_BYTE( "gp00-.f1", 0xc0000, 0x20000, CRC(a93369ea) SHA1(9e13c36112eb7ebc97dc919e24d0b2955c57e10e) ) + ROM_LOAD16_BYTE( "gp04-.f3", 0xc0001, 0x20000, CRC(ee2f6ad9) SHA1(3abc07792f444a3415fd32e50d6855843e900b1d) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_LOAD( "gp-09.k13", 0x00000, 0x10000, CRC(4a4e0f8d) SHA1(5408465667d2854bbade23a26ba619d42a0c22f8) ) + + ROM_REGION( 0x020000, "gfx1", 0 ) + ROM_LOAD16_BYTE( "gp10-1.y6", 0x00001, 0x10000, CRC(d25d719c) SHA1(be874cf403ec0e607eb9b54b7cfff0a53f4d59a2) ) /* chars */ + ROM_LOAD16_BYTE( "gp11-1.z6", 0x00000, 0x10000, CRC(030ded47) SHA1(59ded540b2601ec37255e871e38ac71a47c8d007) ) + + ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_LOAD( "mah-04.z4", 0x000000, 0x40000, CRC(9b6ca18c) SHA1(29a20200ea50b9e8e79da072c1b6e580e6ca180f) ) + ROM_CONTINUE( 0x080000, 0x40000 ) + ROM_LOAD( "mah-03.y4", 0x040000, 0x40000, CRC(37894ddc) SHA1(ee08440b3b2023ec6ee2af6d509b642bcead2e60) ) + ROM_CONTINUE( 0x0c0000, 0x40000 ) + + ROM_REGION( 0x180000, "gfx3", 0 ) + ROM_LOAD( "mah-01.z1", 0x000000, 0x40000, CRC(26e0dfff) SHA1(8cca2dbcda64f4bc6ee0842486da7dc7df3046fd) ) + ROM_CONTINUE( 0x0c0000, 0x40000 ) + ROM_LOAD( "mah-00.y1", 0x040000, 0x40000, CRC(7bd69e41) SHA1(296adbf7d40f1092bf38599b3bad51f39d8093b2) ) + ROM_CONTINUE( 0x100000, 0x40000 ) + ROM_LOAD( "mah-02.a1", 0x080000, 0x40000, CRC(328a247d) SHA1(879f75452dc7c327fd5b35c960c58bc0c0efd33c) ) + ROM_CONTINUE( 0x140000, 0x40000 ) + + ROM_REGION( 0x300000, "gfx4", 0 ) + ROM_LOAD16_BYTE( "mah-05.y9", 0x000000, 0x80000, CRC(6773e613) SHA1(ee6cb4272bb9f80e0d918dc059b40e0a47db0876) ) + ROM_LOAD16_BYTE( "mah-08.y12", 0x000001, 0x80000, CRC(88d310a5) SHA1(82d249f331f51b7c72f9114ecf4e835ccdae7e97) ) + ROM_LOAD16_BYTE( "mah-06.z9", 0x100000, 0x80000, CRC(27a8808a) SHA1(cb14992d1073de38406e36f5884d77933dd6b765) ) + ROM_LOAD16_BYTE( "mah-09.z12", 0x100001, 0x80000, CRC(a58c43a7) SHA1(0b7f743cf0443d998479b7d5d95b8f2aaf1ef136) ) + ROM_LOAD16_BYTE( "mah-07.a9", 0x200000, 0x80000, CRC(526f4190) SHA1(23cb79230ec267b8e4236381b5a596d7af8ec5b3) ) + ROM_LOAD16_BYTE( "mah-10.a12", 0x200001, 0x80000, CRC(14b770da) SHA1(6d57da630da1ec457ebaeed8c251e85bd737e97c) ) + + ROM_REGION( 0x40000, "oki1", 0 ) /* Oki samples */ + ROM_LOAD( "gp-08.j13", 0x00000, 0x20000, CRC(365183b1) SHA1(7d3c201c49981c3ac84022283b048e380cbb7ec3) ) + + ROM_REGION( 0x80000, "oki2", 0 ) /* Extra Oki samples */ + ROM_LOAD( "mah-11.f13", 0x00000, 0x80000, CRC(642bc692) SHA1(8d9e446b7633bb6acc46d9f92044a69b99a0ccc9) ) /* banked */ + + ROM_REGION( 1024, "proms", 0 ) + ROM_LOAD( "go-12.v7", 0x00000, 0x400, CRC(278f674f) SHA1(d4f5b9770d6d2ddebf1b999e291c80a3e274d492) ) /* Priority Unused */ +ROM_END + + +ROM_START( robocop2ua ) ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "robo03.k1", 0x00000, 0x20000, CRC(f4c96cc9) SHA1(2eb58aca1134c33f2084267e65a565f9adc6ba49) ) ROM_LOAD16_BYTE( "robo07.k3", 0x00001, 0x20000, CRC(11e53a7c) SHA1(cdeb7f1983a771238d9d2000f99aed35ae4a06ee) ) @@ -2230,6 +2282,7 @@ GAME( 1990, edrandy, 0, edrandy, edrandy, driver_device, 0, ROT0 GAME( 1990, edrandy2, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 2)", GAME_SUPPORTS_SAVE ) GAME( 1990, edrandy1, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", GAME_SUPPORTS_SAVE ) GAME( 1990, edrandyj, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", GAME_SUPPORTS_SAVE ) + GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", GAME_SUPPORTS_SAVE ) GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", GAME_SUPPORTS_SAVE ) GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", GAME_SUPPORTS_SAVE ) @@ -2237,9 +2290,12 @@ GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0 GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", GAME_SUPPORTS_SAVE ) GAME( 1991, cninjabl, cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", GAME_SUPPORTS_SAVE ) GAME( 1991, cninjabl2,cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg, alt)", GAME_NOT_WORKING ) + GAME( 1991, robocop2, 0, robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", GAME_SUPPORTS_SAVE ) -GAME( 1991, robocop2u,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", GAME_SUPPORTS_SAVE ) +GAME( 1991, robocop2u,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.10)", GAME_SUPPORTS_SAVE ) +GAME( 1991, robocop2ua,robocop2,robocop2,robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", GAME_SUPPORTS_SAVE ) GAME( 1991, robocop2j,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", GAME_SUPPORTS_SAVE ) + GAME( 1992, mutantf, 0, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-5)", GAME_SUPPORTS_SAVE ) GAME( 1992, mutantf4, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-4)", GAME_SUPPORTS_SAVE ) GAME( 1992, mutantf3, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-3)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 1c003e3727a..8b20487d0b9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -6045,6 +6045,7 @@ cninjabl2 // bootleg stoneage // bootleg robocop2 // MAH (c) 1991 Data East Corporation (World) robocop2u // MAH (c) 1991 Data East Corporation (US) +robocop2ua // MAH (c) 1991 Data East Corporation (US) robocop2j // MAH (c) 1991 Data East Corporation (Japan) thndzone // MAJ (c) 1991 Data East Corporation (World) - Rev 1 thndzonea // MAJ (c) 1991 Data East Corporation (World) -- cgit v1.2.3-70-g09d2 From 3962ef35db253558caa2b8f2e9e1c40d0714cbcf Mon Sep 17 00:00:00 2001 From: couriersud Date: Fri, 17 Apr 2015 18:04:06 +0200 Subject: Remove some code commented out during debug. (nw) --- src/emu/machine/netlist.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index e67e086ab92..83979cbb09b 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -534,10 +534,7 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off { //char tmp[16]; unsigned startpc = pc; -#if 0 int relpc = pc - m_genPC; - UINT16 opcode = (oprom[pc - startpc] << 8) | oprom[pc+1 - startpc]; - UINT8 inst = opcode >> 13; if (relpc >= 0 && relpc < netlist().queue().count()) { // sprintf(buffer, "%04x %02d %s", pc, relpc, netlist().queue()[netlist().queue().count() - relpc - 1].object().name().cstr()); @@ -547,7 +544,7 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off } else sprintf(buffer, "%s", ""); -#endif + pc+=1; return (pc - startpc); } -- cgit v1.2.3-70-g09d2 From 0d60fe780559dca91448a4917a8b9ec026368c8b Mon Sep 17 00:00:00 2001 From: couriersud Date: Fri, 17 Apr 2015 18:05:01 +0200 Subject: Make sure USE_OPENMP is passed via define. (nw) --- scripts/genie.lua | 4 ++++ src/emu/netlist/nl_config.h | 6 +----- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/scripts/genie.lua b/scripts/genie.lua index e544f318075..b5619c41f50 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -749,6 +749,10 @@ if _OPTIONS["OPENMP"]=="1" then linkoptions { "-fopenmp" } + defines { + "USE_OPENMP=1", + } + else buildoptions { "-Wno-unknown-pragmas", diff --git a/src/emu/netlist/nl_config.h b/src/emu/netlist/nl_config.h index f16eca5add4..f392bfb577c 100644 --- a/src/emu/netlist/nl_config.h +++ b/src/emu/netlist/nl_config.h @@ -40,11 +40,7 @@ // The following adds about 10% performance ... #if !defined(USE_OPENMP) -#if defined(_OPENMP) -#define USE_OPENMP (1) -#else // defined(_OPENMP) #define USE_OPENMP (0) -#endif // defined(_OPENMP) #endif // !defined(USE_OPENMP) // Use nano-second resolution - Sufficient for now @@ -248,7 +244,7 @@ __extension__ typedef signed long long INT64; #if (USE_OPENMP) #if (!(HAS_OPENMP)) -#warning To use openmp compile and link with "-fopenmp" +#error To use openmp compile and link with "-fopenmp" #endif #endif -- cgit v1.2.3-70-g09d2 From 61ed7581995d0b7785ae897a9450ec6bac00fd86 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 17 Apr 2015 20:24:11 +0200 Subject: (MESS)New working game added ----------------- Bambino Knock-Em Out Boxing [hap, Kevin Horton] --- src/mess/drivers/hh_hmcs40.c | 185 ++++++++++++++++++++++++++++++++++++++----- src/mess/mess.lst | 1 + 2 files changed, 166 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c index ab2c67dc252..ab3874d78e3 100644 --- a/src/mess/drivers/hh_hmcs40.c +++ b/src/mess/drivers/hh_hmcs40.c @@ -2,13 +2,14 @@ // copyright-holders:hap, Kevin Horton /*************************************************************************** - Hitachi HMCS40 MCU tabletops/handhelds or other simple devices. + Hitachi HMCS40 MCU tabletops/handhelds or other simple devices, + most of them are VFD electronic games/toys. known chips: serial device etc. ---------------------------------------------------------------- - *07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B) + @07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B) @08 HD38750A 1979, Bambino Basketball (ET-05) @45 HD38750A 1981, VTech Invaders *58 HD38750A 1982, Ludotronic(Hanzawa) Grand Prix Turbo @@ -341,7 +342,7 @@ WRITE16_MEMBER(bambball_state::grid_w) READ8_MEMBER(bambball_state::input_r) { - // R0x: inputs + // R0x: multiplexed inputs return read_inputs(4); } @@ -378,7 +379,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( bambball, bambball_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(bambball_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bambball_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bambball_state, plate_w)) @@ -400,6 +401,142 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Bambino Knock-Em Out Boxing + * PCBs are labeled Emix Corp. ET-06B + * Hitachi HD38750A07 MCU + * cyan VFD display Emix-103, with blue or green color overlay + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class bmboxing_state : public hh_hmcs40_state +{ +public: + bmboxing_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_hmcs40_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE16_MEMBER(grid_w); + DECLARE_READ8_MEMBER(input_r); +}; + +// handlers + +void bmboxing_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8); + UINT32 plate = BITSWAP16(m_plate,15,14,13,12,1,2,0,3,11,4,10,7,5,6,9,8); + display_matrix(12, 9, plate, grid); +} + +WRITE8_MEMBER(bmboxing_state::plate_w) +{ + // R1x-R3x: vfd matrix plate + int shift = (offset - HMCS40_PORT_R1X) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE16_MEMBER(bmboxing_state::grid_w) +{ + // D13: speaker out + m_speaker->level_w(data >> 13 & 1); + + // D9-D12: input mux + m_inp_mux = data >> 9 & 0xf; + + // D4-D12: vfd matrix grid + m_grid = data >> 4 & 0x1ff; + prepare_display(); +} + +READ8_MEMBER(bmboxing_state::input_r) +{ + // R0x: multiplexed inputs + return read_inputs(4); +} + + +// config + +/* physical button layout and labels is like this: + + * left = P2 side * * right = P1 side * + + [ BACK ] [ HIGH ] (players sw) [ HIGH ] [ BACK ] + 1<--->2 [START/ + [NORMAL] [MEDIUM] RESET] [MEDIUM] [NORMAL] + 1<---OFF--->2 + [ DUCK ] [ LOW ] (skill lvl sw) [ LOW ] [ DUCK ] +*/ + +static INPUT_PORTS_START( bmboxing ) + PORT_START("IN.0") // D9 port R0x + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("P1 Punch High") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("P1 Punch Medium") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("P1 Punch Low") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") // D10 port R0x + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("P1 Position Normal") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("P1 Position Back") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("P1 Position Ducking") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") // D11 port R0x + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("P2 Punch High") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("P2 Punch Medium") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("P2 Punch Low") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.3") // D12 port R0x + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("P2 Position Normal") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("P2 Position Back") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("P2 Position Ducking") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.4") // port D + PORT_CONFNAME( 0x01, 0x00, "Players" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x01, "2" ) + PORT_CONFNAME( 0x02, 0x00, "Skill Level" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x02, "2" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( bmboxing, bmboxing_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation + MCFG_HMCS40_READ_R_CB(0, READ8(bmboxing_state, input_r)) + MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bmboxing_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bmboxing_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bmboxing_state, plate_w)) + MCFG_HMCS40_WRITE_D_CB(WRITE16(bmboxing_state, grid_w)) + MCFG_HMCS40_READ_D_CB(IOPORT("IN.4")) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Bandai Frisky Tom (manufactured in Japan) @@ -502,7 +639,7 @@ INPUT_CHANGED_MEMBER(bfriskyt_state::input_changed) static MACHINE_CONFIG_START( bfriskyt, bfriskyt_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bfriskyt_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bfriskyt_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bfriskyt_state, plate_w)) @@ -611,7 +748,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( packmon, packmon_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(packmon_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(packmon_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(packmon_state, plate_w)) @@ -746,7 +883,7 @@ INPUT_CHANGED_MEMBER(msthawk_state::input_changed) static MACHINE_CONFIG_START( msthawk, msthawk_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(msthawk_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(msthawk_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(msthawk_state, plate_w)) @@ -861,7 +998,7 @@ INPUT_CHANGED_MEMBER(zackman_state::input_changed) static MACHINE_CONFIG_START( zackman, zackman_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(zackman_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(zackman_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(zackman_state, plate_w)) @@ -976,7 +1113,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( alnattck, alnattck_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(alnattck_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(alnattck_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(alnattck_state, plate_w)) @@ -1100,7 +1237,7 @@ void cdkong_state::machine_start() static MACHINE_CONFIG_START( cdkong, cdkong_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cdkong_state, plate_w)) @@ -1222,7 +1359,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(cgalaxn_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cgalaxn_state, grid_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cgalaxn_state, grid_w)) @@ -1340,7 +1477,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( cpacman, cpacman_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(cpacman_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cpacman_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cpacman_state, plate_w)) @@ -1456,7 +1593,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( cmspacmn, cmspacmn_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(cmspacmn_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(cmspacmn_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(cmspacmn_state, plate_w)) @@ -1577,7 +1714,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( egalaxn2, egalaxn2_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w)) @@ -1659,7 +1796,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( epacman2, epacman2_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, READ8(egalaxn2_state, input_r)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(egalaxn2_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(egalaxn2_state, plate_w)) @@ -1745,7 +1882,7 @@ INPUT_PORTS_END static MACHINE_CONFIG_START( pbqbert, pbqbert_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(pbqbert_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(pbqbert_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pbqbert_state, plate_w)) @@ -1870,7 +2007,7 @@ INPUT_CHANGED_MEMBER(kingman_state::input_changed) static MACHINE_CONFIG_START( kingman, kingman_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(kingman_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(kingman_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(kingman_state, plate_w)) @@ -1991,7 +2128,7 @@ INPUT_CHANGED_MEMBER(tmtron_state::input_changed) static MACHINE_CONFIG_START( tmtron, tmtron_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation MCFG_HMCS40_WRITE_R_CB(0, WRITE8(tmtron_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(tmtron_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(tmtron_state, plate_w)) @@ -2078,13 +2215,13 @@ static INPUT_PORTS_START( vinvader ) PORT_CONFNAME( 0x08, 0x00, "Skill Level") PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x08, "2" ) - PORT_BIT( 0xfff5, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x05, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static MACHINE_CONFIG_START( vinvader, vinvader_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation - RC osc. + MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation MCFG_HMCS40_READ_R_CB(0, IOPORT("IN.0")) MCFG_HMCS40_WRITE_R_CB(1, WRITE8(vinvader_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(vinvader_state, plate_w)) @@ -2120,6 +2257,13 @@ ROM_START( bambball ) ROM_END +ROM_START( bmboxing ) + ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hd38750a07", 0x0000, 0x0800, CRC(7f33e259) SHA1(c5fcdd6bf060c96666354f09f0570c754f6ed4e0) ) + ROM_CONTINUE( 0x0f00, 0x0080 ) +ROM_END + + ROM_START( bfriskyt ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "hd38800a77", 0x0000, 0x1000, CRC(a2445c4f) SHA1(0aaccfec90b66d27dae194d4462d88e654c41578) ) @@ -2234,6 +2378,7 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Basketball - Dribble Away", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, packmon, 0, 0, packmon, packmon, driver_device, 0, "Bandai", "Packri Monster", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 123e94a4f07..c46cbaa8b3f 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2183,6 +2183,7 @@ ngenb38 // 1991 // Dedicated handhelds/tabletops bambball // Bambino +bmboxing // Bambino bfriskyt // Bandai packmon // Bandai msthawk // Bandai(Mattel) -- cgit v1.2.3-70-g09d2 From d49608897fdb89ce0de29ada050bdac97ac42790 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sat, 18 Apr 2015 07:47:42 +0200 Subject: vigilant.c: added save state support (nw) --- src/mame/drivers/vigilant.c | 30 ++++++++++++------------ src/mame/includes/vigilant.h | 25 ++++++++++++-------- src/mame/video/vigilant.c | 55 ++++++++++++++++++++++---------------------- 3 files changed, 58 insertions(+), 52 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/vigilant.c b/src/mame/drivers/vigilant.c index 62ea412c426..ef910062437 100644 --- a/src/mame/drivers/vigilant.c +++ b/src/mame/drivers/vigilant.c @@ -27,7 +27,7 @@ void vigilant_state::machine_start() membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000); } -WRITE8_MEMBER(vigilant_state::vigilant_bank_select_w) +WRITE8_MEMBER(vigilant_state::bank_select_w) { membank("bank1")->set_entry(data & 0x07); } @@ -65,7 +65,7 @@ static ADDRESS_MAP_START( vigilant_map, AS_PROGRAM, 8, vigilant_state ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */ AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc020, 0xc0df) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vigilant_paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram") AM_RANGE(0xe000, 0xefff) AM_RAM ADDRESS_MAP_END @@ -76,7 +76,7 @@ static ADDRESS_MAP_START( vigilant_io_map, AS_IO, 8, vigilant_state ) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(vigilant_out2_w) /* OUT2 */ AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(vigilant_bank_select_w) /* PBANK */ + AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2") AM_WRITE(bank_select_w) /* PBANK */ AM_RANGE(0x80, 0x81) AM_WRITE(vigilant_horiz_scroll_w) /* HSPL, HSPH */ AM_RANGE(0x82, 0x83) AM_WRITE(vigilant_rear_horiz_scroll_w) /* RHSPL, RHSPH */ AM_RANGE(0x84, 0x84) AM_WRITE(vigilant_rear_color_w) /* RCOD */ @@ -86,7 +86,7 @@ static ADDRESS_MAP_START( kikcubic_map, AS_PROGRAM, 8, vigilant_state ) AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") /* Fallthrough */ AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(vigilant_paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") AM_RANGE(0xd000, 0xdfff) AM_RAM AM_SHARE("videoram") AM_RANGE(0xe000, 0xffff) AM_RAM ADDRESS_MAP_END @@ -97,7 +97,7 @@ static ADDRESS_MAP_START( kikcubic_io_map, AS_IO, 8, vigilant_state ) AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") AM_RANGE(0x03, 0x03) AM_READ_PORT("IN1") - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(vigilant_bank_select_w) + AM_RANGE(0x04, 0x04) AM_READ_PORT("IN2") AM_WRITE(bank_select_w) AM_RANGE(0x06, 0x06) AM_DEVWRITE("m72", m72_audio_device, sound_command_byte_w) // AM_RANGE(0x07, 0x07) AM_WRITENOP /* ?? */ ADDRESS_MAP_END @@ -964,15 +964,15 @@ ROM_START( buccanrsa ) ROM_LOAD( "prom2.u99", 0x0300, 0x0100, CRC(e0aa8869) SHA1(ac8bdfeba69420ba56ec561bf3d0f1229d02cea2) ) ROM_END -GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev E)", GAME_NO_COCKTAIL ) -GAME( 1988, vigilant1, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev C)", GAME_NO_COCKTAIL ) -GAME( 1988, vigilantu, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL ) -GAME( 1988, vigilantu2,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US, Rev G)", GAME_NO_COCKTAIL ) -GAME( 1988, vigilantj, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", GAME_NO_COCKTAIL ) -GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg", "Vigilante (bootleg)", GAME_NO_COCKTAIL ) +GAME( 1988, vigilant, 0, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev E)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1988, vigilant1, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (World, Rev C)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1988, vigilantu, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1988, vigilantu2,vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem (Data East USA license)", "Vigilante (US, Rev G)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1988, vigilantj, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "Irem", "Vigilante (Japan, Rev D)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1988, vigilantb, vigilant, vigilant, vigilant, driver_device, 0, ROT0, "bootleg", "Vigilante (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) -GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL ) /* English title is Kickle Cubicle */ -GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL ) +GAME( 1988, kikcubic, 0, kikcubic, kikcubic, driver_device, 0, ROT0, "Irem", "Meikyu Jima (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) /* English title is Kickle Cubicle */ +GAME( 1988, kikcubicb, kikcubic, kikcubic, kikcubic, driver_device, 0, ROT0, "bootleg", "Kickle Cubele", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) -GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL ) -GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL ) +GAME( 1989, buccanrs, 0, buccanrs, buccanrs, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1989, buccanrsa, buccanrs, buccanrs, buccanra, driver_device, 0, ROT0, "Duintronic", "Buccaneers (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/vigilant.h b/src/mame/includes/vigilant.h index e1797090313..c58bc2eb703 100644 --- a/src/mame/includes/vigilant.h +++ b/src/mame/includes/vigilant.h @@ -5,16 +5,13 @@ class vigilant_state : public driver_device public: vigilant_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_spriteram(*this, "spriteram"), - m_videoram(*this, "videoram"), m_maincpu(*this, "maincpu"), m_audio(*this, "m72"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram") { } - - required_shared_ptr m_spriteram; - required_shared_ptr m_videoram; + m_generic_paletteram_8(*this, "paletteram"), + m_spriteram(*this, "spriteram"), + m_videoram(*this, "videoram") { } required_device m_maincpu; required_device m_audio; @@ -22,6 +19,9 @@ public: required_device m_palette; required_shared_ptr m_generic_paletteram_8; + required_shared_ptr m_spriteram; + required_shared_ptr m_videoram; + int m_horiz_scroll_low; int m_horiz_scroll_high; int m_rear_horiz_scroll_low; @@ -31,16 +31,23 @@ public: int m_rear_refresh; bitmap_ind16 *m_bg_bitmap; - DECLARE_WRITE8_MEMBER(vigilant_bank_select_w); + // common + DECLARE_WRITE8_MEMBER(bank_select_w); + DECLARE_WRITE8_MEMBER(paletteram_w); + + // vigilant and buccanrs DECLARE_WRITE8_MEMBER(vigilant_out2_w); - DECLARE_WRITE8_MEMBER(kikcubic_coin_w); - DECLARE_WRITE8_MEMBER(vigilant_paletteram_w); DECLARE_WRITE8_MEMBER(vigilant_horiz_scroll_w); DECLARE_WRITE8_MEMBER(vigilant_rear_horiz_scroll_w); DECLARE_WRITE8_MEMBER(vigilant_rear_color_w); + + // kikcubic + DECLARE_WRITE8_MEMBER(kikcubic_coin_w); + virtual void machine_start(); virtual void video_start(); virtual void video_reset(); + UINT32 screen_update_vigilant(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_kikcubic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void update_background(); diff --git a/src/mame/video/vigilant.c b/src/mame/video/vigilant.c index 6930e7f06cc..d6ceb52cff8 100644 --- a/src/mame/video/vigilant.c +++ b/src/mame/video/vigilant.c @@ -1,6 +1,6 @@ /*************************************************************************** - video.c + vigilant.c Functions to emulate the video hardware of the machine. @@ -20,6 +20,15 @@ static const rectangle bottomvisiblearea(16*8, 48*8-1, 6*8, 32*8-1); void vigilant_state::video_start() { m_bg_bitmap = auto_bitmap_ind16_alloc(machine(),512*4,256); + + save_item(NAME(m_horiz_scroll_low)); + save_item(NAME(m_horiz_scroll_high)); + save_item(NAME(m_rear_horiz_scroll_low)); + save_item(NAME(m_rear_horiz_scroll_high)); + save_item(NAME(m_rear_color)); + save_item(NAME(m_rear_disable)); + save_item(NAME(m_rear_refresh)); + save_item(NAME(*m_bg_bitmap)); } @@ -69,7 +78,7 @@ void vigilant_state::update_background() } /*************************************************************************** - vigilant_paletteram_w + paletteram_w There are two palette chips, each one is labelled "KNA91H014". One is used for the sprites, one is used for the two background layers. @@ -84,7 +93,7 @@ void vigilant_state::update_background() These are used to index a color triplet of RGB. The triplet is read from RAM, and output to R0-R4, G0-G4, and B0-B4. **************************************************************************/ -WRITE8_MEMBER(vigilant_state::vigilant_paletteram_w) +WRITE8_MEMBER(vigilant_state::paletteram_w) { int bank,r,g,b; @@ -160,18 +169,16 @@ WRITE8_MEMBER(vigilant_state::vigilant_rear_color_w) void vigilant_state::draw_foreground(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority, int opaque ) { - UINT8 *videoram = m_videoram; - int offs; int scroll = -(m_horiz_scroll_low + m_horiz_scroll_high); - for (offs = 0; offs < 0x1000; offs += 2) + for (int offs = 0; offs < 0x1000; offs += 2) { int sy = 8 * ((offs/2) / 64); int sx = 8 * ((offs/2) % 64); - int attributes = videoram[offs+1]; + int attributes = m_videoram[offs+1]; int color = attributes & 0x0F; - int tile_number = videoram[offs] | ((attributes & 0xF0) << 4); + int tile_number = m_videoram[offs] | ((attributes & 0xF0) << 4); if (priority) /* foreground */ { @@ -223,20 +230,17 @@ void vigilant_state::draw_background(bitmap_ind16 &bitmap, const rectangle &clip void vigilant_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) { - UINT8 *spriteram = m_spriteram; - int offs; - - for (offs = 0;offs < m_spriteram.bytes();offs += 8) + for (int offs = 0;offs < m_spriteram.bytes();offs += 8) { int code,color,sx,sy,flipx,flipy,h,y; - code = spriteram[offs+4] | ((spriteram[offs+5] & 0x0f) << 8); - color = spriteram[offs+0] & 0x0f; - sx = (spriteram[offs+6] | ((spriteram[offs+7] & 0x01) << 8)); - sy = 256+128 - (spriteram[offs+2] | ((spriteram[offs+3] & 0x01) << 8)); - flipx = spriteram[offs+5] & 0x40; - flipy = spriteram[offs+5] & 0x80; - h = 1 << ((spriteram[offs+5] & 0x30) >> 4); + code = m_spriteram[offs+4] | ((m_spriteram[offs+5] & 0x0f) << 8); + color = m_spriteram[offs+0] & 0x0f; + sx = (m_spriteram[offs+6] | ((m_spriteram[offs+7] & 0x01) << 8)); + sy = 256+128 - (m_spriteram[offs+2] | ((m_spriteram[offs+3] & 0x01) << 8)); + flipx = m_spriteram[offs+5] & 0x40; + flipy = m_spriteram[offs+5] & 0x80; + h = 1 << ((m_spriteram[offs+5] & 0x30) >> 4); sy -= 16 * h; code &= ~(h - 1); @@ -259,16 +263,13 @@ void vigilant_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect UINT32 vigilant_state::screen_update_kikcubic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - UINT8 *videoram = m_videoram; - int offs; - - for (offs = 0; offs < 0x1000; offs += 2) + for (int offs = 0; offs < 0x1000; offs += 2) { int sy = 8 * ((offs/2) / 64); int sx = 8 * ((offs/2) % 64); - int attributes = videoram[offs+1]; + int attributes = m_videoram[offs+1]; int color = (attributes & 0xF0) >> 4; - int tile_number = videoram[offs] | ((attributes & 0x0F) << 8); + int tile_number = m_videoram[offs] | ((attributes & 0x0F) << 8); m_gfxdecode->gfx(0)->opaque(bitmap,cliprect, tile_number, @@ -283,10 +284,8 @@ UINT32 vigilant_state::screen_update_kikcubic(screen_device &screen, bitmap_ind1 UINT32 vigilant_state::screen_update_vigilant(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int i; - /* copy the background palette */ - for (i = 0;i < 16;i++) + for (int i = 0;i < 16;i++) { int r,g,b; -- cgit v1.2.3-70-g09d2 From 38458c4d8feb96f2d763424408e0b75650125dae Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 12:50:19 +0200 Subject: fixed alloca define to standard one (nw) --- src/osd/osdcomm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/osd/osdcomm.h b/src/osd/osdcomm.h index 25a383f74f4..ddcb0bc9490 100644 --- a/src/osd/osdcomm.h +++ b/src/osd/osdcomm.h @@ -247,7 +247,7 @@ static __inline double log2(double x) { return log(x) * M_LOG2E; } #ifdef __GNUC__ #ifndef alloca -#define alloca __builtin_alloca +#define alloca(size) __builtin_alloca(size) #endif #endif -- cgit v1.2.3-70-g09d2 From 6a41d76a80e505ba3f772a39acdd5cafe14a1987 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 15:18:05 +0200 Subject: removed not used state_save_register_item_* calls (nw) --- src/emu/save.h | 7 ------- 1 file changed, 7 deletions(-) (limited to 'src') diff --git a/src/emu/save.h b/src/emu/save.h index 8b6e0d4f167..0c9553e1d5b 100644 --- a/src/emu/save.h +++ b/src/emu/save.h @@ -64,13 +64,6 @@ typedef delegate save_prepost_delegate; #define state_save_register_item_array(_mach, _mod, _tag, _index, _val) \ (_mach).save().save_item(NULL, _mod, _tag, _index, _val, #_val) -#define state_save_register_item_2d_array(_mach, _mod, _tag, _index, _val) \ - (_mach).save().save_item(NULL, _mod, _tag, _index, _val, #_val) - -#define state_save_register_item_bitmap(_mach, _mod, _tag, _index, _val) \ - (_mach).save().save_item(NULL, _mod, _tag, _index, *(_val), #_val) - - //************************************************************************** // TYPE DEFINITIONS -- cgit v1.2.3-70-g09d2 From 59bb9d4fd68f870bb3d05317953ec73cdb13fe14 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 18:35:04 +0200 Subject: some astring to std::string conversion (nw) --- src/emu/addrmap.c | 2 +- src/emu/bus/a1bus/a1cassette.c | 2 +- src/emu/bus/a1bus/a1cffa.c | 2 +- src/emu/bus/a2bus/a2applicard.c | 2 +- src/emu/bus/a2bus/a2cffa.c | 2 +- src/emu/bus/a2bus/a2corvus.c | 2 +- src/emu/bus/a2bus/a2diskii.c | 2 +- src/emu/bus/a2bus/a2diskiing.c | 2 +- src/emu/bus/a2bus/a2hsscsi.c | 2 +- src/emu/bus/a2bus/a2memexp.c | 2 +- src/emu/bus/a2bus/a2pic.c | 2 +- src/emu/bus/a2bus/a2scsi.c | 2 +- src/emu/bus/a2bus/a2ssc.c | 2 +- src/emu/bus/a2bus/a2swyft.c | 2 +- src/emu/bus/a2bus/a2thunderclock.c | 2 +- src/emu/bus/a2bus/a2ultraterm.c | 4 +-- src/emu/bus/a2bus/a2videoterm.c | 4 +-- src/emu/bus/a2bus/a2vulcan.c | 2 +- src/emu/bus/a2bus/a2zipdrive.c | 2 +- src/emu/bus/a2bus/corvfdc01.c | 2 +- src/emu/bus/a2bus/corvfdc02.c | 3 ++- src/emu/bus/a2bus/mouse.c | 2 +- src/emu/bus/a2bus/timemasterho.c | 2 +- src/emu/bus/a7800/a78_slot.c | 4 +-- src/emu/bus/a7800/a78_slot.h | 2 +- src/emu/bus/a800/a800_slot.c | 12 ++++----- src/emu/bus/a800/a800_slot.h | 6 ++--- src/emu/bus/adam/exp.c | 2 +- src/emu/bus/adam/exp.h | 2 +- src/emu/bus/apf/slot.c | 4 +-- src/emu/bus/apf/slot.h | 2 +- src/emu/bus/arcadia/slot.c | 2 +- src/emu/bus/arcadia/slot.h | 2 +- src/emu/bus/astrocde/slot.c | 4 +-- src/emu/bus/astrocde/slot.h | 2 +- src/emu/bus/c64/exp.c | 2 +- src/emu/bus/c64/exp.h | 2 +- src/emu/bus/cbm2/exp.c | 2 +- src/emu/bus/cbm2/exp.h | 2 +- src/emu/bus/chanf/slot.c | 4 +-- src/emu/bus/chanf/slot.h | 2 +- src/emu/bus/coco/cococart.c | 2 +- src/emu/bus/coco/cococart.h | 2 +- src/emu/bus/coleco/exp.c | 2 +- src/emu/bus/coleco/exp.h | 2 +- src/emu/bus/crvision/slot.c | 4 +-- src/emu/bus/crvision/slot.h | 2 +- src/emu/bus/gameboy/gb_slot.c | 8 +++--- src/emu/bus/gameboy/gb_slot.h | 4 +-- src/emu/bus/gba/gba_slot.c | 4 +-- src/emu/bus/gba/gba_slot.h | 2 +- src/emu/bus/generic/slot.c | 2 +- src/emu/bus/generic/slot.h | 2 +- src/emu/bus/intv/slot.c | 4 +-- src/emu/bus/intv/slot.h | 2 +- src/emu/bus/iq151/iq151.c | 2 +- src/emu/bus/iq151/iq151.h | 2 +- src/emu/bus/isa/cga.c | 2 +- src/emu/bus/isa/ega.c | 2 +- src/emu/bus/isa/hdc.c | 2 +- src/emu/bus/isa/isa.c | 2 +- src/emu/bus/isa/mda.c | 4 +-- src/emu/bus/isa/pc1640_iga.c | 2 +- src/emu/bus/kc/kc.c | 2 +- src/emu/bus/kc/kc.h | 2 +- src/emu/bus/macpds/macpds.c | 2 +- src/emu/bus/megadrive/md_slot.c | 4 +-- src/emu/bus/megadrive/md_slot.h | 2 +- src/emu/bus/msx_slot/cartridge.c | 4 +-- src/emu/bus/msx_slot/cartridge.h | 2 +- src/emu/bus/neogeo/neogeo_slot.c | 2 +- src/emu/bus/neogeo/neogeo_slot.h | 2 +- src/emu/bus/nes/aladdin.c | 4 +-- src/emu/bus/nes/aladdin.h | 2 +- src/emu/bus/nes/datach.c | 2 +- src/emu/bus/nes/datach.h | 2 +- src/emu/bus/nes/karastudio.c | 2 +- src/emu/bus/nes/karastudio.h | 2 +- src/emu/bus/nes/nes_slot.c | 4 +-- src/emu/bus/nes/nes_slot.h | 2 +- src/emu/bus/nes/sunsoft_dcs.c | 2 +- src/emu/bus/nes/sunsoft_dcs.h | 2 +- src/emu/bus/nubus/nubus.c | 2 +- src/emu/bus/odyssey2/slot.c | 4 +-- src/emu/bus/odyssey2/slot.h | 2 +- src/emu/bus/oricext/jasmin.c | 2 +- src/emu/bus/oricext/microdisc.c | 2 +- src/emu/bus/pce/pce_slot.c | 4 +-- src/emu/bus/pce/pce_slot.h | 2 +- src/emu/bus/plus4/exp.c | 2 +- src/emu/bus/plus4/exp.h | 2 +- src/emu/bus/ql/rom.c | 2 +- src/emu/bus/ql/rom.h | 2 +- src/emu/bus/saturn/sat_slot.c | 2 +- src/emu/bus/saturn/sat_slot.h | 2 +- src/emu/bus/scv/slot.c | 4 +-- src/emu/bus/scv/slot.h | 2 +- src/emu/bus/sega8/sega8_slot.c | 4 +-- src/emu/bus/sega8/sega8_slot.h | 2 +- src/emu/bus/snes/snes_slot.c | 4 +-- src/emu/bus/snes/snes_slot.h | 2 +- src/emu/bus/vboy/slot.c | 2 +- src/emu/bus/vboy/slot.h | 2 +- src/emu/bus/vc4000/slot.c | 4 +-- src/emu/bus/vc4000/slot.h | 2 +- src/emu/bus/vcs/vcs_slot.c | 4 +-- src/emu/bus/vcs/vcs_slot.h | 2 +- src/emu/bus/vectrex/slot.c | 4 +-- src/emu/bus/vectrex/slot.h | 2 +- src/emu/bus/vic10/exp.c | 2 +- src/emu/bus/vic10/exp.h | 2 +- src/emu/bus/vic20/exp.c | 2 +- src/emu/bus/vic20/exp.h | 2 +- src/emu/bus/vidbrain/exp.c | 2 +- src/emu/bus/vidbrain/exp.h | 2 +- src/emu/bus/wswan/slot.c | 4 +-- src/emu/bus/wswan/slot.h | 2 +- src/emu/bus/x68k/x68k_scsiext.c | 2 +- src/emu/bus/z88/z88.c | 2 +- src/emu/bus/z88/z88.h | 2 +- src/emu/device.c | 50 +++++++++++++++++++------------------- src/emu/device.h | 22 ++++++++--------- src/emu/diexec.c | 2 +- src/emu/digfx.c | 2 +- src/emu/diimage.c | 8 +++--- src/emu/diimage.h | 2 +- src/emu/dimemory.c | 4 +-- src/emu/dislot.h | 2 +- src/emu/driver.c | 2 +- src/emu/emuopts.c | 4 +-- src/emu/imagedev/chd_cd.c | 2 +- src/emu/imagedev/diablo.c | 2 +- src/emu/imagedev/harddriv.c | 2 +- src/emu/ioport.c | 6 ++--- src/emu/machine/wozfdc.c | 2 +- src/emu/mconfig.c | 4 +-- src/emu/mconfig.h | 2 +- src/emu/memory.c | 20 +++++++-------- src/emu/parameters.c | 4 +-- src/emu/parameters.h | 6 ++--- src/emu/romload.c | 12 ++++----- src/emu/romload.h | 6 ++--- src/emu/schedule.c | 2 +- src/emu/sound/disc_inp.inc | 2 +- src/emu/validity.c | 4 +-- src/lib/formats/cbm_crt.c | 6 ++--- src/lib/formats/cbm_crt.h | 2 +- src/mame/machine/fd1089.c | 2 +- src/mame/machine/fd1094.c | 2 +- src/mess/machine/cuda.c | 2 +- src/mess/machine/egret.c | 2 +- 151 files changed, 250 insertions(+), 249 deletions(-) (limited to 'src') diff --git a/src/emu/addrmap.c b/src/emu/addrmap.c index 4453da2668f..339f7611fdd 100644 --- a/src/emu/addrmap.c +++ b/src/emu/addrmap.c @@ -490,7 +490,7 @@ void address_map::uplift_submaps(running_machine &machine, device_t &device, dev { if (entry->m_read.m_type == AMH_DEVICE_SUBMAP) { - astring tag; + std::string tag; owner.subtag(tag, entry->m_read.m_tag); device_t *mapdevice = machine.device(tag.c_str()); if (mapdevice == NULL) { diff --git a/src/emu/bus/a1bus/a1cassette.c b/src/emu/bus/a1bus/a1cassette.c index 3c27cc339a1..c9a933b3aed 100644 --- a/src/emu/bus/a1bus/a1cassette.c +++ b/src/emu/bus/a1bus/a1cassette.c @@ -78,7 +78,7 @@ void a1bus_cassette_device::device_start() { set_a1bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, CASSETTE_ROM_REGION).c_str())->base(); install_device(0xc000, 0xc0ff, read8_delegate(FUNC(a1bus_cassette_device::cassette_r), this), write8_delegate(FUNC(a1bus_cassette_device::cassette_w), this)); diff --git a/src/emu/bus/a1bus/a1cffa.c b/src/emu/bus/a1bus/a1cffa.c index da73162547b..76c6273d075 100644 --- a/src/emu/bus/a1bus/a1cffa.c +++ b/src/emu/bus/a1bus/a1cffa.c @@ -73,7 +73,7 @@ void a1bus_cffa_device::device_start() { set_a1bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, CFFA_ROM_REGION).c_str())->base(); install_device(0xafe0, 0xafff, read8_delegate(FUNC(a1bus_cffa_device::cffa_r), this), write8_delegate(FUNC(a1bus_cffa_device::cffa_w), this)); diff --git a/src/emu/bus/a2bus/a2applicard.c b/src/emu/bus/a2bus/a2applicard.c index 4552ee3dd62..f861b808ccb 100644 --- a/src/emu/bus/a2bus/a2applicard.c +++ b/src/emu/bus/a2bus/a2applicard.c @@ -97,7 +97,7 @@ void a2bus_applicard_device::device_start() set_a2bus_device(); // locate Z80 ROM - astring tempstring; + std::string tempstring; m_z80rom = device().machine().root_device().memregion(this->subtag(tempstring, Z80_ROM_REGION).c_str())->base(); save_item(NAME(m_bROMAtZ80Zero)); diff --git a/src/emu/bus/a2bus/a2cffa.c b/src/emu/bus/a2bus/a2cffa.c index 484e121948a..0237bf77b94 100644 --- a/src/emu/bus/a2bus/a2cffa.c +++ b/src/emu/bus/a2bus/a2cffa.c @@ -109,7 +109,7 @@ void a2bus_cffa2000_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, CFFA2_ROM_REGION).c_str())->base(); // patch default setting so slave device is enabled and up to 13 devices on both connectors diff --git a/src/emu/bus/a2bus/a2corvus.c b/src/emu/bus/a2bus/a2corvus.c index 3f85c8446af..a333d51d362 100644 --- a/src/emu/bus/a2bus/a2corvus.c +++ b/src/emu/bus/a2bus/a2corvus.c @@ -122,7 +122,7 @@ void a2bus_corvus_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, CORVUS_ROM_REGION).c_str())->base(); } diff --git a/src/emu/bus/a2bus/a2diskii.c b/src/emu/bus/a2bus/a2diskii.c index d48a4ccd7e2..de06de2cccd 100644 --- a/src/emu/bus/a2bus/a2diskii.c +++ b/src/emu/bus/a2bus/a2diskii.c @@ -114,7 +114,7 @@ void a2bus_floppy_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, DISKII_ROM_REGION).c_str())->base(); } diff --git a/src/emu/bus/a2bus/a2diskiing.c b/src/emu/bus/a2bus/a2diskiing.c index 843b7cde714..b1398e048ce 100644 --- a/src/emu/bus/a2bus/a2diskiing.c +++ b/src/emu/bus/a2bus/a2diskiing.c @@ -84,7 +84,7 @@ void a2bus_diskiing_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, DISKII_ROM_REGION).c_str())->base(); } diff --git a/src/emu/bus/a2bus/a2hsscsi.c b/src/emu/bus/a2bus/a2hsscsi.c index ef912a2ea7f..17b46d2f452 100644 --- a/src/emu/bus/a2bus/a2hsscsi.c +++ b/src/emu/bus/a2bus/a2hsscsi.c @@ -136,7 +136,7 @@ void a2bus_hsscsi_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, SCSI_ROM_REGION).c_str())->base(); memset(m_ram, 0, 8192); diff --git a/src/emu/bus/a2bus/a2memexp.c b/src/emu/bus/a2bus/a2memexp.c index 2ae514b6495..d25414b88a9 100644 --- a/src/emu/bus/a2bus/a2memexp.c +++ b/src/emu/bus/a2bus/a2memexp.c @@ -102,7 +102,7 @@ void a2bus_memexp_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, MEMEXP_ROM_REGION).c_str())->base(); memset(m_ram, 0xff, 1024*1024*sizeof(UINT8)); diff --git a/src/emu/bus/a2bus/a2pic.c b/src/emu/bus/a2bus/a2pic.c index 19d5a442c6a..e59915feac4 100644 --- a/src/emu/bus/a2bus/a2pic.c +++ b/src/emu/bus/a2bus/a2pic.c @@ -127,7 +127,7 @@ void a2bus_pic_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, PIC_ROM_REGION).c_str())->base(); m_timer = timer_alloc(0, NULL); diff --git a/src/emu/bus/a2bus/a2scsi.c b/src/emu/bus/a2bus/a2scsi.c index e85ccc53115..17b4a1c1eec 100644 --- a/src/emu/bus/a2bus/a2scsi.c +++ b/src/emu/bus/a2bus/a2scsi.c @@ -129,7 +129,7 @@ void a2bus_scsi_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, SCSI_ROM_REGION).c_str())->base(); memset(m_ram, 0, 8192); diff --git a/src/emu/bus/a2bus/a2ssc.c b/src/emu/bus/a2bus/a2ssc.c index 8fcfd4d4b63..db22d3f8a4e 100644 --- a/src/emu/bus/a2bus/a2ssc.c +++ b/src/emu/bus/a2bus/a2ssc.c @@ -154,7 +154,7 @@ void a2bus_ssc_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, SSC_ROM_REGION).c_str())->base(); } diff --git a/src/emu/bus/a2bus/a2swyft.c b/src/emu/bus/a2bus/a2swyft.c index bbfb910d920..18eb6a4f5cc 100644 --- a/src/emu/bus/a2bus/a2swyft.c +++ b/src/emu/bus/a2bus/a2swyft.c @@ -64,7 +64,7 @@ void a2bus_swyft_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, SWYFT_ROM_REGION).c_str())->base(); save_item(NAME(m_rombank)); diff --git a/src/emu/bus/a2bus/a2thunderclock.c b/src/emu/bus/a2bus/a2thunderclock.c index 34780319800..ea7bdc547c1 100644 --- a/src/emu/bus/a2bus/a2thunderclock.c +++ b/src/emu/bus/a2bus/a2thunderclock.c @@ -97,7 +97,7 @@ void a2bus_thunderclock_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, THUNDERCLOCK_ROM_REGION).c_str())->base(); save_item(NAME(m_dataout)); diff --git a/src/emu/bus/a2bus/a2ultraterm.c b/src/emu/bus/a2bus/a2ultraterm.c index dc078a62172..e6c721092e8 100644 --- a/src/emu/bus/a2bus/a2ultraterm.c +++ b/src/emu/bus/a2bus/a2ultraterm.c @@ -162,10 +162,10 @@ void a2bus_videx160_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, ULTRATERM_ROM_REGION).c_str())->base(); - astring tempstring2; + std::string tempstring2; m_chrrom = device().machine().root_device().memregion(this->subtag(tempstring2, ULTRATERM_GFX_REGION).c_str())->base(); memset(m_ram, 0, 256*16); diff --git a/src/emu/bus/a2bus/a2videoterm.c b/src/emu/bus/a2bus/a2videoterm.c index eeccd16bd78..cc2c525e775 100644 --- a/src/emu/bus/a2bus/a2videoterm.c +++ b/src/emu/bus/a2bus/a2videoterm.c @@ -217,10 +217,10 @@ void a2bus_videx80_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, VIDEOTERM_ROM_REGION).c_str())->base(); - astring tempstring2; + std::string tempstring2; m_chrrom = device().machine().root_device().memregion(this->subtag(tempstring2, VIDEOTERM_GFX_REGION).c_str())->base(); memset(m_ram, 0, 4*512); diff --git a/src/emu/bus/a2bus/a2vulcan.c b/src/emu/bus/a2bus/a2vulcan.c index 52ffd8f0c9c..2ca9eecbf1e 100644 --- a/src/emu/bus/a2bus/a2vulcan.c +++ b/src/emu/bus/a2bus/a2vulcan.c @@ -138,7 +138,7 @@ void a2bus_vulcanbase_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, VULCAN_ROM_REGION).c_str())->base(); save_item(NAME(m_lastdata)); diff --git a/src/emu/bus/a2bus/a2zipdrive.c b/src/emu/bus/a2bus/a2zipdrive.c index d16bc099f04..9815d6fb3df 100644 --- a/src/emu/bus/a2bus/a2zipdrive.c +++ b/src/emu/bus/a2bus/a2zipdrive.c @@ -88,7 +88,7 @@ void a2bus_zipdrivebase_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, ZIPDRIVE_ROM_REGION).c_str())->base(); save_item(NAME(m_lastdata)); diff --git a/src/emu/bus/a2bus/corvfdc01.c b/src/emu/bus/a2bus/corvfdc01.c index 9c8382513cc..d935272b40a 100644 --- a/src/emu/bus/a2bus/corvfdc01.c +++ b/src/emu/bus/a2bus/corvfdc01.c @@ -139,7 +139,7 @@ void a2bus_corvfdc01_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, FDC01_ROM_REGION).c_str())->base(); save_item(NAME(m_fdc_local_status)); diff --git a/src/emu/bus/a2bus/corvfdc02.c b/src/emu/bus/a2bus/corvfdc02.c index 8302a88343e..be9375252e5 100644 --- a/src/emu/bus/a2bus/corvfdc02.c +++ b/src/emu/bus/a2bus/corvfdc02.c @@ -35,6 +35,7 @@ static SLOT_INTERFACE_START( corv_floppies ) SLOT_INTERFACE( "525dsqd", FLOPPY_525_QD ) SLOT_INTERFACE_END + MACHINE_CONFIG_FRAGMENT( fdc02 ) MCFG_UPD765A_ADD(FDC02_FDC_TAG, true, false) MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(a2bus_corvfdc02_device, intrq_w)) @@ -108,7 +109,7 @@ void a2bus_corvfdc02_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, FDC02_ROM_REGION).c_str())->base(); m_timer = timer_alloc(0); diff --git a/src/emu/bus/a2bus/mouse.c b/src/emu/bus/a2bus/mouse.c index 7327ed8dc96..56f629dac57 100644 --- a/src/emu/bus/a2bus/mouse.c +++ b/src/emu/bus/a2bus/mouse.c @@ -205,7 +205,7 @@ void a2bus_mouse_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, MOUSE_ROM_REGION).c_str())->base(); // allocate two timers: one for the 68705, one for the quadrature magic diff --git a/src/emu/bus/a2bus/timemasterho.c b/src/emu/bus/a2bus/timemasterho.c index 0639afa0b38..d87e1a94118 100644 --- a/src/emu/bus/a2bus/timemasterho.c +++ b/src/emu/bus/a2bus/timemasterho.c @@ -148,7 +148,7 @@ void a2bus_timemasterho_device::device_start() // set_a2bus_device makes m_slot valid set_a2bus_device(); - astring tempstring; + std::string tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, TIMEMASTER_ROM_REGION).c_str())->base(); } diff --git a/src/emu/bus/a7800/a78_slot.c b/src/emu/bus/a7800/a78_slot.c index 2db5871323f..9bb1010ceeb 100644 --- a/src/emu/bus/a7800/a78_slot.c +++ b/src/emu/bus/a7800/a78_slot.c @@ -530,7 +530,7 @@ int a78_cart_slot_device::verify_header(char *header) get default card software -------------------------------------------------*/ -void a78_cart_slot_device::get_default_card_software(astring &result) +void a78_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -588,7 +588,7 @@ void a78_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "a78_rom"); diff --git a/src/emu/bus/a7800/a78_slot.h b/src/emu/bus/a7800/a78_slot.h index 5fdecfc0c45..a42954677ce 100644 --- a/src/emu/bus/a7800/a78_slot.h +++ b/src/emu/bus/a7800/a78_slot.h @@ -114,7 +114,7 @@ public: virtual device_image_partialhash_func get_partial_hash() const { return &a78_partialhash; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_04xx); diff --git a/src/emu/bus/a800/a800_slot.c b/src/emu/bus/a800/a800_slot.c index 650ba7a02d6..0b011893a9f 100644 --- a/src/emu/bus/a800/a800_slot.c +++ b/src/emu/bus/a800/a800_slot.c @@ -408,7 +408,7 @@ int a800_cart_slot_device::identify_cart_type(UINT8 *header) get default card software -------------------------------------------------*/ -void a800_cart_slot_device::get_default_card_software(astring &result) +void a800_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -438,14 +438,14 @@ void a800_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "a800_8k"); } -void a5200_cart_slot_device::get_default_card_software(astring &result) +void a5200_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -471,14 +471,14 @@ void a5200_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "a5200"); } -void xegs_cart_slot_device::get_default_card_software(astring &result) +void xegs_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -506,7 +506,7 @@ void xegs_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "xegs"); diff --git a/src/emu/bus/a800/a800_slot.h b/src/emu/bus/a800/a800_slot.h index 491daa03e60..9995083437d 100644 --- a/src/emu/bus/a800/a800_slot.h +++ b/src/emu/bus/a800/a800_slot.h @@ -113,7 +113,7 @@ public: virtual const char *file_extensions() const { return "bin,rom,car"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_80xx); @@ -142,7 +142,7 @@ public: virtual const char *file_extensions() const { return "bin,rom,car,a52"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); }; // ======================> xegs_cart_slot_device @@ -157,7 +157,7 @@ public: virtual const char *file_extensions() const { return "bin,rom,car"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); }; // device type definition diff --git a/src/emu/bus/adam/exp.c b/src/emu/bus/adam/exp.c index b6b59d79a5a..6cfc04ad7fe 100644 --- a/src/emu/bus/adam/exp.c +++ b/src/emu/bus/adam/exp.c @@ -127,7 +127,7 @@ bool adam_expansion_slot_device::call_softlist_load(software_list_device &swlist // get_default_card_software - //------------------------------------------------- -void adam_expansion_slot_device::get_default_card_software(astring &result) +void adam_expansion_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/adam/exp.h b/src/emu/bus/adam/exp.h index 59a24cd7a09..c352eff6a77 100644 --- a/src/emu/bus/adam/exp.h +++ b/src/emu/bus/adam/exp.h @@ -90,7 +90,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_write_line m_write_irq; diff --git a/src/emu/bus/apf/slot.c b/src/emu/bus/apf/slot.c index 80e08a5753a..860b38419ea 100644 --- a/src/emu/bus/apf/slot.c +++ b/src/emu/bus/apf/slot.c @@ -223,7 +223,7 @@ bool apf_cart_slot_device::call_softlist_load(software_list_device &swlist, cons get default card software -------------------------------------------------*/ -void apf_cart_slot_device::get_default_card_software(astring &result) +void apf_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -242,7 +242,7 @@ void apf_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/apf/slot.h b/src/emu/bus/apf/slot.h index ab0c054cf2b..53ea98be030 100644 --- a/src/emu/bus/apf/slot.h +++ b/src/emu/bus/apf/slot.h @@ -84,7 +84,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/arcadia/slot.c b/src/emu/bus/arcadia/slot.c index 119d5d2d883..f9452ad7d3d 100644 --- a/src/emu/bus/arcadia/slot.c +++ b/src/emu/bus/arcadia/slot.c @@ -232,7 +232,7 @@ bool arcadia_cart_slot_device::call_softlist_load(software_list_device &swlist, get default card software -------------------------------------------------*/ -void arcadia_cart_slot_device::get_default_card_software(astring &result) +void arcadia_cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "std"); } diff --git a/src/emu/bus/arcadia/slot.h b/src/emu/bus/arcadia/slot.h index ce9f6363dbd..52fa63ac8a6 100644 --- a/src/emu/bus/arcadia/slot.h +++ b/src/emu/bus/arcadia/slot.h @@ -73,7 +73,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/astrocde/slot.c b/src/emu/bus/astrocde/slot.c index 706f3a821de..7ea90e171bb 100644 --- a/src/emu/bus/astrocde/slot.c +++ b/src/emu/bus/astrocde/slot.c @@ -200,7 +200,7 @@ bool astrocade_cart_slot_device::call_softlist_load(software_list_device &swlist get default card software -------------------------------------------------*/ -void astrocade_cart_slot_device::get_default_card_software(astring &result) +void astrocade_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -218,7 +218,7 @@ void astrocade_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/astrocde/slot.h b/src/emu/bus/astrocde/slot.h index 959043b1ef7..9ba2e194d19 100644 --- a/src/emu/bus/astrocde/slot.h +++ b/src/emu/bus/astrocde/slot.h @@ -74,7 +74,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/c64/exp.c b/src/emu/bus/c64/exp.c index 5f2f278f04d..c48d899dbf5 100644 --- a/src/emu/bus/c64/exp.c +++ b/src/emu/bus/c64/exp.c @@ -220,7 +220,7 @@ bool c64_expansion_slot_device::call_softlist_load(software_list_device &swlist, // get_default_card_software - //------------------------------------------------- -void c64_expansion_slot_device::get_default_card_software(astring &result) +void c64_expansion_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { diff --git a/src/emu/bus/c64/exp.h b/src/emu/bus/c64/exp.h index 6da81655e30..2374c89abce 100644 --- a/src/emu/bus/c64/exp.h +++ b/src/emu/bus/c64/exp.h @@ -152,7 +152,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_read8 m_read_dma_cd; devcb_write8 m_write_dma_cd; diff --git a/src/emu/bus/cbm2/exp.c b/src/emu/bus/cbm2/exp.c index 160c080d8fd..44ffd8ba2d2 100644 --- a/src/emu/bus/cbm2/exp.c +++ b/src/emu/bus/cbm2/exp.c @@ -158,7 +158,7 @@ bool cbm2_expansion_slot_device::call_softlist_load(software_list_device &swlist // get_default_card_software - //------------------------------------------------- -void cbm2_expansion_slot_device::get_default_card_software(astring &result) +void cbm2_expansion_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/cbm2/exp.h b/src/emu/bus/cbm2/exp.h index 726f00a5bb3..cbdb79941bc 100644 --- a/src/emu/bus/cbm2/exp.h +++ b/src/emu/bus/cbm2/exp.h @@ -99,7 +99,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); device_cbm2_expansion_card_interface *m_card; }; diff --git a/src/emu/bus/chanf/slot.c b/src/emu/bus/chanf/slot.c index 136d135835c..6295deb3296 100644 --- a/src/emu/bus/chanf/slot.c +++ b/src/emu/bus/chanf/slot.c @@ -219,7 +219,7 @@ bool channelf_cart_slot_device::call_softlist_load(software_list_device &swlist, get default card software -------------------------------------------------*/ -void channelf_cart_slot_device::get_default_card_software(astring &result) +void channelf_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -237,7 +237,7 @@ void channelf_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } software_get_default_slot(result, "chess"); diff --git a/src/emu/bus/chanf/slot.h b/src/emu/bus/chanf/slot.h index 123e3a4fafd..283b41f371c 100644 --- a/src/emu/bus/chanf/slot.h +++ b/src/emu/bus/chanf/slot.h @@ -87,7 +87,7 @@ public: virtual const char *file_extensions() const { return "bin,chf"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/coco/cococart.c b/src/emu/bus/coco/cococart.c index 594e1f3f69c..626382b283b 100644 --- a/src/emu/bus/coco/cococart.c +++ b/src/emu/bus/coco/cococart.c @@ -362,7 +362,7 @@ bool cococart_slot_device::call_softlist_load(software_list_device &swlist, cons // get_default_card_software //------------------------------------------------- -void cococart_slot_device::get_default_card_software(astring &result) +void cococart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "pak"); } diff --git a/src/emu/bus/coco/cococart.h b/src/emu/bus/coco/cococart.h index 128cdea8e48..05f50ff135c 100644 --- a/src/emu/bus/coco/cococart.h +++ b/src/emu/bus/coco/cococart.h @@ -100,7 +100,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing to $FF40-$FF7F DECLARE_READ8_MEMBER(read); diff --git a/src/emu/bus/coleco/exp.c b/src/emu/bus/coleco/exp.c index 47a0d49c0e3..68834faf4b1 100644 --- a/src/emu/bus/coleco/exp.c +++ b/src/emu/bus/coleco/exp.c @@ -115,7 +115,7 @@ bool colecovision_cartridge_slot_device::call_softlist_load(software_list_device // get_default_card_software - //------------------------------------------------- -void colecovision_cartridge_slot_device::get_default_card_software(astring &result) +void colecovision_cartridge_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/coleco/exp.h b/src/emu/bus/coleco/exp.h index 4498b9bb6f2..8e5e7774cac 100644 --- a/src/emu/bus/coleco/exp.h +++ b/src/emu/bus/coleco/exp.h @@ -96,7 +96,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); device_colecovision_cartridge_interface *m_card; }; diff --git a/src/emu/bus/crvision/slot.c b/src/emu/bus/crvision/slot.c index eb3f63c3e4c..0abbded4f1a 100644 --- a/src/emu/bus/crvision/slot.c +++ b/src/emu/bus/crvision/slot.c @@ -231,7 +231,7 @@ bool crvision_cart_slot_device::call_softlist_load(software_list_device &swlist, get default card software -------------------------------------------------*/ -void crvision_cart_slot_device::get_default_card_software(astring &result) +void crvision_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -269,7 +269,7 @@ void crvision_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/crvision/slot.h b/src/emu/bus/crvision/slot.h index 4219c153d1f..6d81d885a91 100644 --- a/src/emu/bus/crvision/slot.h +++ b/src/emu/bus/crvision/slot.h @@ -78,7 +78,7 @@ public: virtual const char *file_extensions() const { return "bin,rom"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom40); diff --git a/src/emu/bus/gameboy/gb_slot.c b/src/emu/bus/gameboy/gb_slot.c index 0348efb6b65..a78cc09c3bb 100644 --- a/src/emu/bus/gameboy/gb_slot.c +++ b/src/emu/bus/gameboy/gb_slot.c @@ -600,7 +600,7 @@ int base_gb_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void base_gb_cart_slot_device::get_default_card_software(astring &result) +void base_gb_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -623,7 +623,7 @@ void base_gb_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } @@ -631,11 +631,11 @@ void base_gb_cart_slot_device::get_default_card_software(astring &result) } -void megaduck_cart_slot_device::get_default_card_software(astring &result) +void megaduck_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { - result.cpy("rom"); + result.assign("rom"); return; } diff --git a/src/emu/bus/gameboy/gb_slot.h b/src/emu/bus/gameboy/gb_slot.h index 7e01ce1e374..c04220323a4 100644 --- a/src/emu/bus/gameboy/gb_slot.h +++ b/src/emu/bus/gameboy/gb_slot.h @@ -139,7 +139,7 @@ public: virtual const char *file_extensions() const { return "bin,gb,gbc"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); @@ -180,7 +180,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); }; diff --git a/src/emu/bus/gba/gba_slot.c b/src/emu/bus/gba/gba_slot.c index 30f50201a3f..1e25f392e05 100644 --- a/src/emu/bus/gba/gba_slot.c +++ b/src/emu/bus/gba/gba_slot.c @@ -399,7 +399,7 @@ int gba_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void gba_cart_slot_device::get_default_card_software(astring &result) +void gba_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -416,7 +416,7 @@ void gba_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/gba/gba_slot.h b/src/emu/bus/gba/gba_slot.h index ede5f7321f8..384101f76dd 100644 --- a/src/emu/bus/gba/gba_slot.h +++ b/src/emu/bus/gba/gba_slot.h @@ -90,7 +90,7 @@ public: virtual const char *file_extensions() const { return "gba,bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ32_MEMBER(read_rom); diff --git a/src/emu/bus/generic/slot.c b/src/emu/bus/generic/slot.c index 9473e2aa3e0..247044f043f 100644 --- a/src/emu/bus/generic/slot.c +++ b/src/emu/bus/generic/slot.c @@ -181,7 +181,7 @@ bool generic_slot_device::call_softlist_load(software_list_device &swlist, const get default card software -------------------------------------------------*/ -void generic_slot_device::get_default_card_software(astring &result) +void generic_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, m_default_card); } diff --git a/src/emu/bus/generic/slot.h b/src/emu/bus/generic/slot.h index 7223a388d45..3517974d119 100644 --- a/src/emu/bus/generic/slot.h +++ b/src/emu/bus/generic/slot.h @@ -124,7 +124,7 @@ public: virtual const char *file_extensions() const { return m_extensions; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/intv/slot.c b/src/emu/bus/intv/slot.c index 2702247554b..956668a5133 100644 --- a/src/emu/bus/intv/slot.c +++ b/src/emu/bus/intv/slot.c @@ -459,7 +459,7 @@ bool intv_cart_slot_device::call_softlist_load(software_list_device &swlist, con get default card software -------------------------------------------------*/ -void intv_cart_slot_device::get_default_card_software(astring &result) +void intv_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -503,7 +503,7 @@ void intv_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } software_get_default_slot(result, "intv_rom"); diff --git a/src/emu/bus/intv/slot.h b/src/emu/bus/intv/slot.h index 4cdcc444b4b..44a50ce28b7 100644 --- a/src/emu/bus/intv/slot.h +++ b/src/emu/bus/intv/slot.h @@ -118,7 +118,7 @@ public: virtual const char *file_extensions() const { return "bin,int,rom,itv"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ16_MEMBER(read_rom04) { if (m_cart) return m_cart->read_rom04(space, offset, mem_mask); else return 0xffff; } diff --git a/src/emu/bus/iq151/iq151.c b/src/emu/bus/iq151/iq151.c index 51c3b576c56..842602aceb8 100644 --- a/src/emu/bus/iq151/iq151.c +++ b/src/emu/bus/iq151/iq151.c @@ -204,7 +204,7 @@ bool iq151cart_slot_device::call_softlist_load(software_list_device &swlist, con get default card software -------------------------------------------------*/ -void iq151cart_slot_device::get_default_card_software(astring &result) +void iq151cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "basic6"); } diff --git a/src/emu/bus/iq151/iq151.h b/src/emu/bus/iq151/iq151.h index 9b85ee9d3a2..4b9c5db9887 100644 --- a/src/emu/bus/iq151/iq151.h +++ b/src/emu/bus/iq151/iq151.h @@ -106,7 +106,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual void read(offs_t offset, UINT8 &data); diff --git a/src/emu/bus/isa/cga.c b/src/emu/bus/isa/cga.c index da5591d1a2c..ed15f287b71 100644 --- a/src/emu/bus/isa/cga.c +++ b/src/emu/bus/isa/cga.c @@ -362,7 +362,7 @@ void isa8_cga_device::device_start() } } - astring tempstring; + std::string tempstring; m_chr_gen_base = memregion(subtag(tempstring, "gfx1").c_str())->base(); m_chr_gen = m_chr_gen_base + m_chr_gen_offset[1]; diff --git a/src/emu/bus/isa/ega.c b/src/emu/bus/isa/ega.c index 2f620fc0e62..7267886c27b 100644 --- a/src/emu/bus/isa/ega.c +++ b/src/emu/bus/isa/ega.c @@ -593,7 +593,7 @@ void isa8_ega_device::device_start() if (m_palette != NULL && !m_palette->started()) throw device_missing_dependencies(); - astring tempstring; + std::string tempstring; set_isa_device(); diff --git a/src/emu/bus/isa/hdc.c b/src/emu/bus/isa/hdc.c index 9376ab65952..c7a0ce5d5f6 100644 --- a/src/emu/bus/isa/hdc.c +++ b/src/emu/bus/isa/hdc.c @@ -257,7 +257,7 @@ void isa8_hdc_device::device_reset() hard_disk_file *isa8_hdc_device::pc_hdc_file(int id) { harddisk_image_device *img = NULL; - astring tempstring; + std::string tempstring; switch( id ) { case 0: diff --git a/src/emu/bus/isa/isa.c b/src/emu/bus/isa/isa.c index 68068691958..837f56449eb 100644 --- a/src/emu/bus/isa/isa.c +++ b/src/emu/bus/isa/isa.c @@ -329,7 +329,7 @@ void isa8_device::unmap_bank(offs_t start, offs_t end, offs_t mask, offs_t mirro void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, offs_t mask, offs_t mirror, const char *tag, const char *region) { - astring tempstring; + std::string tempstring; if (machine().root_device().memregion("isa")) { UINT8 *src = dev->memregion(region)->base(); UINT8 *dest = machine().root_device().memregion("isa")->base() + start - 0xc0000; diff --git a/src/emu/bus/isa/mda.c b/src/emu/bus/isa/mda.c index f50b03602d7..85fe974b124 100644 --- a/src/emu/bus/isa/mda.c +++ b/src/emu/bus/isa/mda.c @@ -195,7 +195,7 @@ void isa8_mda_device::device_reset() m_hsync = 0; m_pixel = 0; - astring tempstring; + std::string tempstring; m_chr_gen = memregion(subtag(tempstring, "gfx1").c_str())->base(); } @@ -612,7 +612,7 @@ void isa8_hercules_device::device_reset() isa8_mda_device::device_reset(); m_configuration_switch = 0; - astring tempstring; + std::string tempstring; m_chr_gen = memregion(subtag(tempstring, "gfx1").c_str())->base(); } diff --git a/src/emu/bus/isa/pc1640_iga.c b/src/emu/bus/isa/pc1640_iga.c index 0238301e6d8..6bbf7bf5dee 100644 --- a/src/emu/bus/isa/pc1640_iga.c +++ b/src/emu/bus/isa/pc1640_iga.c @@ -85,7 +85,7 @@ void isa8_pc1640_iga_device::device_start() if (m_palette != NULL && !m_palette->started()) throw device_missing_dependencies(); - astring tempstring; + std::string tempstring; set_isa_device(); diff --git a/src/emu/bus/kc/kc.c b/src/emu/bus/kc/kc.c index ebef757e7b0..5ecc1b196b6 100644 --- a/src/emu/bus/kc/kc.c +++ b/src/emu/bus/kc/kc.c @@ -370,7 +370,7 @@ bool kccart_slot_device::call_softlist_load(software_list_device &swlist, const get default card software -------------------------------------------------*/ -void kccart_slot_device::get_default_card_software(astring &result) +void kccart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/kc/kc.h b/src/emu/bus/kc/kc.h index 1b9b4c7f5d5..def77ffd955 100644 --- a/src/emu/bus/kc/kc.h +++ b/src/emu/bus/kc/kc.h @@ -104,7 +104,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); }; // device type definition diff --git a/src/emu/bus/macpds/macpds.c b/src/emu/bus/macpds/macpds.c index 08355e2c47c..8dea59c4db3 100644 --- a/src/emu/bus/macpds/macpds.c +++ b/src/emu/bus/macpds/macpds.c @@ -187,7 +187,7 @@ void device_macpds_card_interface::install_bank(offs_t start, offs_t end, offs_t void device_macpds_card_interface::install_rom(device_t *dev, const char *romregion, UINT32 addr) { - astring tempstring; + std::string tempstring; UINT8 *rom = device().machine().root_device().memregion(dev->subtag(tempstring, romregion).c_str())->base(); UINT32 romlen = device().machine().root_device().memregion(dev->subtag(tempstring, romregion).c_str())->bytes(); char bankname[128]; diff --git a/src/emu/bus/megadrive/md_slot.c b/src/emu/bus/megadrive/md_slot.c index 383912da695..e215c8b91ec 100644 --- a/src/emu/bus/megadrive/md_slot.c +++ b/src/emu/bus/megadrive/md_slot.c @@ -900,7 +900,7 @@ int base_md_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void base_md_cart_slot_device::get_default_card_software(astring &result) +void base_md_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -919,7 +919,7 @@ void base_md_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "rom"); diff --git a/src/emu/bus/megadrive/md_slot.h b/src/emu/bus/megadrive/md_slot.h index 8aa7e10987e..de7074537fd 100644 --- a/src/emu/bus/megadrive/md_slot.h +++ b/src/emu/bus/megadrive/md_slot.h @@ -159,7 +159,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); int get_type() { return m_type; } diff --git a/src/emu/bus/msx_slot/cartridge.c b/src/emu/bus/msx_slot/cartridge.c index 091bb9345f2..41bf0c48d38 100644 --- a/src/emu/bus/msx_slot/cartridge.c +++ b/src/emu/bus/msx_slot/cartridge.c @@ -276,7 +276,7 @@ int msx_slot_cartridge_device::get_cart_type(UINT8 *rom, UINT32 length) } -void msx_slot_cartridge_device::get_default_card_software(astring &result) +void msx_slot_cartridge_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -334,7 +334,7 @@ void msx_slot_cartridge_device::get_default_card_software(astring &result) slot_string = msx_cart_get_slot_option(type); } - result.cpy(slot_string); + result.assign(slot_string); return; } software_get_default_slot(result, "nomapper"); diff --git a/src/emu/bus/msx_slot/cartridge.h b/src/emu/bus/msx_slot/cartridge.h index a086e3d9592..6543284d67b 100644 --- a/src/emu/bus/msx_slot/cartridge.h +++ b/src/emu/bus/msx_slot/cartridge.h @@ -53,7 +53,7 @@ public: virtual const char *file_extensions() const { return "mx1,bin,rom"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // msx_internal_slot-level overrides virtual DECLARE_READ8_MEMBER(read); diff --git a/src/emu/bus/neogeo/neogeo_slot.c b/src/emu/bus/neogeo/neogeo_slot.c index c96314fbb27..497b2b237bc 100644 --- a/src/emu/bus/neogeo/neogeo_slot.c +++ b/src/emu/bus/neogeo/neogeo_slot.c @@ -202,7 +202,7 @@ bool neogeo_cart_slot_device::call_softlist_load(software_list_device &swlist, c get default card software -------------------------------------------------*/ -void neogeo_cart_slot_device::get_default_card_software(astring &result) +void neogeo_cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "rom"); } diff --git a/src/emu/bus/neogeo/neogeo_slot.h b/src/emu/bus/neogeo/neogeo_slot.h index 8104ca9bc09..79bfdb4dc99 100644 --- a/src/emu/bus/neogeo/neogeo_slot.h +++ b/src/emu/bus/neogeo/neogeo_slot.h @@ -39,7 +39,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ16_MEMBER(read_rom); diff --git a/src/emu/bus/nes/aladdin.c b/src/emu/bus/nes/aladdin.c index 1c6b97219eb..cd5712bc926 100644 --- a/src/emu/bus/nes/aladdin.c +++ b/src/emu/bus/nes/aladdin.c @@ -141,7 +141,7 @@ bool nes_aladdin_slot_device::call_softlist_load(software_list_device &swlist, c return TRUE; } -void nes_aladdin_slot_device::get_default_card_software(astring &result) +void nes_aladdin_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -162,7 +162,7 @@ void nes_aladdin_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "algn"); diff --git a/src/emu/bus/nes/aladdin.h b/src/emu/bus/nes/aladdin.h index fad8ac15f27..a53816268cb 100644 --- a/src/emu/bus/nes/aladdin.h +++ b/src/emu/bus/nes/aladdin.h @@ -63,7 +63,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); virtual DECLARE_READ8_MEMBER(read); void write_prg(UINT32 offset, UINT8 data) { if (m_cart) m_cart->write_prg(offset, data); } diff --git a/src/emu/bus/nes/datach.c b/src/emu/bus/nes/datach.c index c8d826e8095..d0a9bed64ee 100644 --- a/src/emu/bus/nes/datach.c +++ b/src/emu/bus/nes/datach.c @@ -144,7 +144,7 @@ bool nes_datach_slot_device::call_softlist_load(software_list_device &swlist, co return TRUE; } -void nes_datach_slot_device::get_default_card_software(astring &result) +void nes_datach_slot_device::get_default_card_software(std::string &result) { // any way to detect the game with X24C01? software_get_default_slot(result, "datach_rom"); diff --git a/src/emu/bus/nes/datach.h b/src/emu/bus/nes/datach.h index 76a95a06395..69cd1a646bf 100644 --- a/src/emu/bus/nes/datach.h +++ b/src/emu/bus/nes/datach.h @@ -65,7 +65,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); virtual DECLARE_READ8_MEMBER(read); void write_prg_bank(UINT8 bank) { if (m_cart) m_cart->write_prg_bank(bank); } diff --git a/src/emu/bus/nes/karastudio.c b/src/emu/bus/nes/karastudio.c index 3f3d1b649b8..db926c131e0 100644 --- a/src/emu/bus/nes/karastudio.c +++ b/src/emu/bus/nes/karastudio.c @@ -133,7 +133,7 @@ bool nes_kstudio_slot_device::call_softlist_load(software_list_device &swlist, c return TRUE; } -void nes_kstudio_slot_device::get_default_card_software(astring &result) +void nes_kstudio_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "ks_exp"); } diff --git a/src/emu/bus/nes/karastudio.h b/src/emu/bus/nes/karastudio.h index bfa4c252ac7..8c4a28afe17 100644 --- a/src/emu/bus/nes/karastudio.h +++ b/src/emu/bus/nes/karastudio.h @@ -62,7 +62,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); virtual DECLARE_READ8_MEMBER(read); void write_prg_bank(UINT8 bank) { if (m_cart) m_cart->write_prg_bank(bank); } diff --git a/src/emu/bus/nes/nes_slot.c b/src/emu/bus/nes/nes_slot.c index 5d8af191412..f3dc43ccdfa 100644 --- a/src/emu/bus/nes/nes_slot.c +++ b/src/emu/bus/nes/nes_slot.c @@ -912,7 +912,7 @@ bool nes_cart_slot_device::call_softlist_load(software_list_device &swlist, cons get default card software -------------------------------------------------*/ -void nes_cart_slot_device::get_default_card_software(astring &result) +void nes_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -930,7 +930,7 @@ void nes_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "nrom"); diff --git a/src/emu/bus/nes/nes_slot.h b/src/emu/bus/nes/nes_slot.h index d946825ec63..2f8ec875f8c 100644 --- a/src/emu/bus/nes/nes_slot.h +++ b/src/emu/bus/nes/nes_slot.h @@ -361,7 +361,7 @@ public: virtual device_image_partialhash_func get_partial_hash() const { return &nes_partialhash; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); const char * get_default_card_ines(UINT8 *ROM, UINT32 len); const char * get_default_card_unif(UINT8 *ROM, UINT32 len); const char * nes_get_slot(int pcb_id); diff --git a/src/emu/bus/nes/sunsoft_dcs.c b/src/emu/bus/nes/sunsoft_dcs.c index b290e9611a8..4deb83e3e9a 100644 --- a/src/emu/bus/nes/sunsoft_dcs.c +++ b/src/emu/bus/nes/sunsoft_dcs.c @@ -112,7 +112,7 @@ bool nes_ntb_slot_device::call_softlist_load(software_list_device &swlist, const return TRUE; } -void nes_ntb_slot_device::get_default_card_software(astring &result) +void nes_ntb_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "ntbrom"); } diff --git a/src/emu/bus/nes/sunsoft_dcs.h b/src/emu/bus/nes/sunsoft_dcs.h index 02c32fc3f19..0203e316431 100644 --- a/src/emu/bus/nes/sunsoft_dcs.h +++ b/src/emu/bus/nes/sunsoft_dcs.h @@ -59,7 +59,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); virtual DECLARE_READ8_MEMBER(read); diff --git a/src/emu/bus/nubus/nubus.c b/src/emu/bus/nubus/nubus.c index c2f929cea59..fbe0f8be8da 100644 --- a/src/emu/bus/nubus/nubus.c +++ b/src/emu/bus/nubus/nubus.c @@ -325,7 +325,7 @@ void device_nubus_card_interface::install_declaration_rom(device_t *dev, const c { bool inverted = false; - astring tempstring; + std::string tempstring; UINT8 *rom = device().machine().root_device().memregion(dev->subtag(tempstring, romregion).c_str())->base(); UINT32 romlen = device().machine().root_device().memregion(dev->subtag(tempstring, romregion).c_str())->bytes(); diff --git a/src/emu/bus/odyssey2/slot.c b/src/emu/bus/odyssey2/slot.c index f5a8afc6b04..7d5a01acdc1 100644 --- a/src/emu/bus/odyssey2/slot.c +++ b/src/emu/bus/odyssey2/slot.c @@ -211,7 +211,7 @@ bool o2_cart_slot_device::call_softlist_load(software_list_device &swlist, const get default card software -------------------------------------------------*/ -void o2_cart_slot_device::get_default_card_software(astring &result) +void o2_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -229,7 +229,7 @@ void o2_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/odyssey2/slot.h b/src/emu/bus/odyssey2/slot.h index 9ca22730bbe..1e79b648041 100644 --- a/src/emu/bus/odyssey2/slot.h +++ b/src/emu/bus/odyssey2/slot.h @@ -84,7 +84,7 @@ public: virtual const char *file_extensions() const { return "bin,rom"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom04); diff --git a/src/emu/bus/oricext/jasmin.c b/src/emu/bus/oricext/jasmin.c index bb09ca39063..fc73c4e432f 100644 --- a/src/emu/bus/oricext/jasmin.c +++ b/src/emu/bus/oricext/jasmin.c @@ -53,7 +53,7 @@ jasmin_device::~jasmin_device() void jasmin_device::device_start() { oricext_device::device_start(); - astring tempstring; + std::string tempstring; jasmin_rom = device().machine().root_device().memregion(this->subtag(tempstring, "jasmin").c_str())->base(); cpu->space(AS_PROGRAM).install_device(0x0000, 0xffff, *this, &jasmin_device::map); diff --git a/src/emu/bus/oricext/microdisc.c b/src/emu/bus/oricext/microdisc.c index 9c05d2e261c..9276c88fc08 100644 --- a/src/emu/bus/oricext/microdisc.c +++ b/src/emu/bus/oricext/microdisc.c @@ -48,7 +48,7 @@ microdisc_device::~microdisc_device() void microdisc_device::device_start() { oricext_device::device_start(); - astring tempstring; + std::string tempstring; microdisc_rom = device().machine().root_device().memregion(this->subtag(tempstring, "microdisc").c_str())->base(); cpu->space(AS_PROGRAM).install_device(0x0000, 0xffff, *this, µdisc_device::map); diff --git a/src/emu/bus/pce/pce_slot.c b/src/emu/bus/pce/pce_slot.c index f5c07c2780e..f61d2b78b64 100644 --- a/src/emu/bus/pce/pce_slot.c +++ b/src/emu/bus/pce/pce_slot.c @@ -339,7 +339,7 @@ int pce_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void pce_cart_slot_device::get_default_card_software(astring &result) +void pce_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -356,7 +356,7 @@ void pce_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/pce/pce_slot.h b/src/emu/bus/pce/pce_slot.h index 542151964fc..eb7d7b9e95c 100644 --- a/src/emu/bus/pce/pce_slot.h +++ b/src/emu/bus/pce/pce_slot.h @@ -87,7 +87,7 @@ public: virtual const char *file_extensions() const { return "pce,bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_cart); diff --git a/src/emu/bus/plus4/exp.c b/src/emu/bus/plus4/exp.c index d49bb98b970..efdff1a1a70 100644 --- a/src/emu/bus/plus4/exp.c +++ b/src/emu/bus/plus4/exp.c @@ -160,7 +160,7 @@ bool plus4_expansion_slot_device::call_softlist_load(software_list_device &swlis // get_default_card_software - //------------------------------------------------- -void plus4_expansion_slot_device::get_default_card_software(astring &result) +void plus4_expansion_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/plus4/exp.h b/src/emu/bus/plus4/exp.h index 64cdacc4dc2..2cbcf1a0a1a 100644 --- a/src/emu/bus/plus4/exp.h +++ b/src/emu/bus/plus4/exp.h @@ -138,7 +138,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_write_line m_write_irq; devcb_read8 m_read_dma_cd; diff --git a/src/emu/bus/ql/rom.c b/src/emu/bus/ql/rom.c index f3d6b6673e9..6d336f61dbc 100644 --- a/src/emu/bus/ql/rom.c +++ b/src/emu/bus/ql/rom.c @@ -117,7 +117,7 @@ bool ql_rom_cartridge_slot_t::call_softlist_load(software_list_device &swlist, c // get_default_card_software - //------------------------------------------------- -void ql_rom_cartridge_slot_t::get_default_card_software(astring &result) +void ql_rom_cartridge_slot_t::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/ql/rom.h b/src/emu/bus/ql/rom.h index 02e79f8f2d8..97311d82ebd 100644 --- a/src/emu/bus/ql/rom.h +++ b/src/emu/bus/ql/rom.h @@ -113,7 +113,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); device_ql_rom_cartridge_card_interface *m_card; }; diff --git a/src/emu/bus/saturn/sat_slot.c b/src/emu/bus/saturn/sat_slot.c index 77108f2fa01..431902e973b 100644 --- a/src/emu/bus/saturn/sat_slot.c +++ b/src/emu/bus/saturn/sat_slot.c @@ -219,7 +219,7 @@ bool sat_cart_slot_device::call_softlist_load(software_list_device &swlist, cons get default card software -------------------------------------------------*/ -void sat_cart_slot_device::get_default_card_software(astring &result) +void sat_cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "rom"); } diff --git a/src/emu/bus/saturn/sat_slot.h b/src/emu/bus/saturn/sat_slot.h index 04dc190c1d3..7f622bb456b 100644 --- a/src/emu/bus/saturn/sat_slot.h +++ b/src/emu/bus/saturn/sat_slot.h @@ -87,7 +87,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ32_MEMBER(read_rom); diff --git a/src/emu/bus/scv/slot.c b/src/emu/bus/scv/slot.c index bfad094a2ad..93605370f84 100644 --- a/src/emu/bus/scv/slot.c +++ b/src/emu/bus/scv/slot.c @@ -261,7 +261,7 @@ int scv_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void scv_cart_slot_device::get_default_card_software(astring &result) +void scv_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -278,7 +278,7 @@ void scv_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/scv/slot.h b/src/emu/bus/scv/slot.h index 5d637275425..070418d6b8a 100644 --- a/src/emu/bus/scv/slot.h +++ b/src/emu/bus/scv/slot.h @@ -88,7 +88,7 @@ public: virtual const char *file_extensions() const { return "bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_cart); diff --git a/src/emu/bus/sega8/sega8_slot.c b/src/emu/bus/sega8/sega8_slot.c index 95eb98037d3..b68de6d962b 100644 --- a/src/emu/bus/sega8/sega8_slot.c +++ b/src/emu/bus/sega8/sega8_slot.c @@ -603,7 +603,7 @@ int sega8_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void sega8_cart_slot_device::get_default_card_software(astring &result) +void sega8_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -623,7 +623,7 @@ void sega8_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/sega8/sega8_slot.h b/src/emu/bus/sega8/sega8_slot.h index 6409d7d5796..5bac375e6fb 100644 --- a/src/emu/bus/sega8/sega8_slot.h +++ b/src/emu/bus/sega8/sega8_slot.h @@ -138,7 +138,7 @@ public: virtual const char *file_extensions() const { return m_extensions; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_cart); diff --git a/src/emu/bus/snes/snes_slot.c b/src/emu/bus/snes/snes_slot.c index 760f1b1e19d..937daab39e2 100644 --- a/src/emu/bus/snes/snes_slot.c +++ b/src/emu/bus/snes/snes_slot.c @@ -999,7 +999,7 @@ void base_sns_cart_slot_device::get_cart_type_addon(UINT8 *ROM, UINT32 len, int get default card software -------------------------------------------------*/ -void base_sns_cart_slot_device::get_default_card_software(astring &result) +void base_sns_cart_slot_device::get_default_card_software(std::string &result) { bool fullpath = open_image_file(mconfig().options()); @@ -1058,7 +1058,7 @@ void base_sns_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/snes/snes_slot.h b/src/emu/bus/snes/snes_slot.h index eafba459ef0..967011e7976 100644 --- a/src/emu/bus/snes/snes_slot.h +++ b/src/emu/bus/snes/snes_slot.h @@ -178,7 +178,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_l); diff --git a/src/emu/bus/vboy/slot.c b/src/emu/bus/vboy/slot.c index 2cf3441d656..70ec14be0b9 100644 --- a/src/emu/bus/vboy/slot.c +++ b/src/emu/bus/vboy/slot.c @@ -235,7 +235,7 @@ bool vboy_cart_slot_device::call_softlist_load(software_list_device &swlist, con get default card software -------------------------------------------------*/ -void vboy_cart_slot_device::get_default_card_software(astring &result) +void vboy_cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "vb_rom"); } diff --git a/src/emu/bus/vboy/slot.h b/src/emu/bus/vboy/slot.h index 9661716ce14..084c1ac5abd 100644 --- a/src/emu/bus/vboy/slot.h +++ b/src/emu/bus/vboy/slot.h @@ -84,7 +84,7 @@ public: virtual const char *file_extensions() const { return "vb,bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ32_MEMBER(read_cart); diff --git a/src/emu/bus/vc4000/slot.c b/src/emu/bus/vc4000/slot.c index c16d5b25aa0..e1ddb87b973 100644 --- a/src/emu/bus/vc4000/slot.c +++ b/src/emu/bus/vc4000/slot.c @@ -224,7 +224,7 @@ bool vc4000_cart_slot_device::call_softlist_load(software_list_device &swlist, c get default card software -------------------------------------------------*/ -void vc4000_cart_slot_device::get_default_card_software(astring &result) +void vc4000_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -243,7 +243,7 @@ void vc4000_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/vc4000/slot.h b/src/emu/bus/vc4000/slot.h index 3749801d4b6..c09821097b6 100644 --- a/src/emu/bus/vc4000/slot.h +++ b/src/emu/bus/vc4000/slot.h @@ -85,7 +85,7 @@ public: virtual const char *file_extensions() const { return "bin,rom"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/vcs/vcs_slot.c b/src/emu/bus/vcs/vcs_slot.c index 26086333a9a..94c328bed26 100755 --- a/src/emu/bus/vcs/vcs_slot.c +++ b/src/emu/bus/vcs/vcs_slot.c @@ -779,7 +779,7 @@ int vcs_cart_slot_device::identify_cart_type(UINT8 *ROM, UINT32 len) get default card software -------------------------------------------------*/ -void vcs_cart_slot_device::get_default_card_software(astring &result) +void vcs_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -795,7 +795,7 @@ void vcs_cart_slot_device::get_default_card_software(astring &result) clear(); - result.cpy(slot_string); + result.assign(slot_string); } else software_get_default_slot(result, "a26_4k"); diff --git a/src/emu/bus/vcs/vcs_slot.h b/src/emu/bus/vcs/vcs_slot.h index e9a6b2ba60b..31cb03543e2 100755 --- a/src/emu/bus/vcs/vcs_slot.h +++ b/src/emu/bus/vcs/vcs_slot.h @@ -108,7 +108,7 @@ public: virtual const char *file_extensions() const { return "bin,a26"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/vectrex/slot.c b/src/emu/bus/vectrex/slot.c index 6af9228f56c..60250ea32db 100644 --- a/src/emu/bus/vectrex/slot.c +++ b/src/emu/bus/vectrex/slot.c @@ -219,7 +219,7 @@ bool vectrex_cart_slot_device::call_softlist_load(software_list_device &swlist, get default card software -------------------------------------------------*/ -void vectrex_cart_slot_device::get_default_card_software(astring &result) +void vectrex_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -240,7 +240,7 @@ void vectrex_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/vectrex/slot.h b/src/emu/bus/vectrex/slot.h index 10682f7204a..d6b55516c6b 100644 --- a/src/emu/bus/vectrex/slot.h +++ b/src/emu/bus/vectrex/slot.h @@ -84,7 +84,7 @@ public: virtual const char *file_extensions() const { return "bin,gam,vec"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom); diff --git a/src/emu/bus/vic10/exp.c b/src/emu/bus/vic10/exp.c index be18aaf8bfb..ea3b3e2009f 100644 --- a/src/emu/bus/vic10/exp.c +++ b/src/emu/bus/vic10/exp.c @@ -185,7 +185,7 @@ bool vic10_expansion_slot_device::call_softlist_load(software_list_device &swlis // get_default_card_software - //------------------------------------------------- -void vic10_expansion_slot_device::get_default_card_software(astring &result) +void vic10_expansion_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { diff --git a/src/emu/bus/vic10/exp.h b/src/emu/bus/vic10/exp.h index 7c93ef7b247..189ed376f93 100644 --- a/src/emu/bus/vic10/exp.h +++ b/src/emu/bus/vic10/exp.h @@ -137,7 +137,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_write_line m_write_irq; devcb_write_line m_write_res; diff --git a/src/emu/bus/vic20/exp.c b/src/emu/bus/vic20/exp.c index 0091f1368f2..a6f80554593 100644 --- a/src/emu/bus/vic20/exp.c +++ b/src/emu/bus/vic20/exp.c @@ -170,7 +170,7 @@ bool vic20_expansion_slot_device::call_softlist_load(software_list_device &swlis // get_default_card_software - //------------------------------------------------- -void vic20_expansion_slot_device::get_default_card_software(astring &result) +void vic20_expansion_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/vic20/exp.h b/src/emu/bus/vic20/exp.h index 7fab2965790..13d3ccef43d 100644 --- a/src/emu/bus/vic20/exp.h +++ b/src/emu/bus/vic20/exp.h @@ -128,7 +128,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_write_line m_write_irq; devcb_write_line m_write_nmi; diff --git a/src/emu/bus/vidbrain/exp.c b/src/emu/bus/vidbrain/exp.c index eaac1a18155..e388aecbf03 100644 --- a/src/emu/bus/vidbrain/exp.c +++ b/src/emu/bus/vidbrain/exp.c @@ -157,7 +157,7 @@ bool videobrain_expansion_slot_device::call_softlist_load(software_list_device & // get_default_card_software - //------------------------------------------------- -void videobrain_expansion_slot_device::get_default_card_software(astring &result) +void videobrain_expansion_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "standard"); } diff --git a/src/emu/bus/vidbrain/exp.h b/src/emu/bus/vidbrain/exp.h index c4ec1ca1ffb..326ccfd43c4 100644 --- a/src/emu/bus/vidbrain/exp.h +++ b/src/emu/bus/vidbrain/exp.h @@ -153,7 +153,7 @@ protected: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); devcb_write_line m_write_extres; diff --git a/src/emu/bus/wswan/slot.c b/src/emu/bus/wswan/slot.c index 6acc8292d18..7890a6a0c17 100644 --- a/src/emu/bus/wswan/slot.c +++ b/src/emu/bus/wswan/slot.c @@ -306,7 +306,7 @@ int ws_cart_slot_device::get_cart_type(UINT8 *ROM, UINT32 len, UINT32 &nvram_len get default card software -------------------------------------------------*/ -void ws_cart_slot_device::get_default_card_software(astring &result) +void ws_cart_slot_device::get_default_card_software(std::string &result) { if (open_image_file(mconfig().options())) { @@ -325,7 +325,7 @@ void ws_cart_slot_device::get_default_card_software(astring &result) //printf("type: %s\n", slot_string); clear(); - result.cpy(slot_string); + result.assign(slot_string); return; } diff --git a/src/emu/bus/wswan/slot.h b/src/emu/bus/wswan/slot.h index 94c093d0b05..6e0c9182369 100644 --- a/src/emu/bus/wswan/slot.h +++ b/src/emu/bus/wswan/slot.h @@ -94,7 +94,7 @@ public: virtual const char *file_extensions() const { return "ws,wsc,bin"; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read_rom20); diff --git a/src/emu/bus/x68k/x68k_scsiext.c b/src/emu/bus/x68k/x68k_scsiext.c index f7b89c8e305..d62e93cbc96 100644 --- a/src/emu/bus/x68k/x68k_scsiext.c +++ b/src/emu/bus/x68k/x68k_scsiext.c @@ -65,7 +65,7 @@ void x68k_scsiext_device::device_start() { device_t* cpu = machine().device("maincpu"); UINT8* ROM; - astring temp; + std::string temp; address_space& space = cpu->memory().space(AS_PROGRAM); m_slot = dynamic_cast(owner()); space.install_read_bank(0xea0020,0xea1fff,0,0,"scsi_ext"); diff --git a/src/emu/bus/z88/z88.c b/src/emu/bus/z88/z88.c index 460d4d7a6f7..b1c13865fb7 100644 --- a/src/emu/bus/z88/z88.c +++ b/src/emu/bus/z88/z88.c @@ -182,7 +182,7 @@ bool z88cart_slot_device::call_softlist_load(software_list_device &swlist, const get default card software -------------------------------------------------*/ -void z88cart_slot_device::get_default_card_software(astring &result) +void z88cart_slot_device::get_default_card_software(std::string &result) { software_get_default_slot(result, "128krom"); } diff --git a/src/emu/bus/z88/z88.h b/src/emu/bus/z88/z88.h index d899c69fe9a..bcba1671941 100644 --- a/src/emu/bus/z88/z88.h +++ b/src/emu/bus/z88/z88.h @@ -109,7 +109,7 @@ public: virtual const option_guide *create_option_guide() const { return NULL; } // slot interface overrides - virtual void get_default_card_software(astring &result); + virtual void get_default_card_software(std::string &result); // reading and writing virtual DECLARE_READ8_MEMBER(read); diff --git a/src/emu/device.c b/src/emu/device.c index 334505591b6..3e47445289e 100644 --- a/src/emu/device.c +++ b/src/emu/device.c @@ -101,9 +101,9 @@ device_t::device_t(const machine_config &mconfig, device_type type, const char * m_auto_finder_list(NULL) { if (owner != NULL) - m_tag.cpy((owner->owner() == NULL) ? "" : owner->tag()).cat(":").cat(tag); + m_tag.assign((owner->owner() == NULL) ? "" : owner->tag()).append(":").append(tag); else - m_tag.cpy(":"); + m_tag.assign(":"); static_set_clock(*this, clock); } @@ -129,7 +129,7 @@ memory_region *device_t::memregion(const char *_tag) const return NULL; // build a fully-qualified name and look it up - astring fullpath; + std::string fullpath; return machine().memory().region(subtag(fullpath, _tag).c_str()); } @@ -146,7 +146,7 @@ memory_share *device_t::memshare(const char *_tag) const return NULL; // build a fully-qualified name and look it up - astring fullpath; + std::string fullpath; return machine().memory().shared(subtag(fullpath, _tag).c_str()); } @@ -163,7 +163,7 @@ memory_bank *device_t::membank(const char *_tag) const return NULL; // build a fully-qualified name and look it up - astring fullpath; + std::string fullpath; return machine().memory().bank(subtag(fullpath, _tag).c_str()); } @@ -180,7 +180,7 @@ ioport_port *device_t::ioport(const char *tag) const return NULL; // build a fully-qualified name and look it up - astring fullpath; + std::string fullpath; return machine().ioport().port(subtag(fullpath, tag).c_str()); } @@ -190,14 +190,14 @@ ioport_port *device_t::ioport(const char *tag) const // object for a given port name //------------------------------------------------- -astring device_t::parameter(const char *tag) const +std::string device_t::parameter(const char *tag) const { // safety first if (this == NULL) return NULL; // build a fully-qualified name and look it up - astring fullpath; + std::string fullpath; return machine().parameters().lookup(subtag(fullpath, tag)); } @@ -695,7 +695,7 @@ void device_t::device_timer(emu_timer &timer, device_timer_id id, int param, voi device_t *device_t::subdevice_slow(const char *tag) const { // resolve the full path - astring fulltag; + std::string fulltag; subtag(fulltag, tag); // we presume the result is a rooted path; also doubled colons mess up our @@ -705,12 +705,12 @@ device_t *device_t::subdevice_slow(const char *tag) const // walk the device list to the final path device_t *curdevice = &mconfig().root_device(); - if (fulltag.len() > 1) - for (int start = 1, end = fulltag.chr(start, ':'); start != 0 && curdevice != NULL; start = end + 1, end = fulltag.chr(start, ':')) + if (fulltag.length() > 1) + for (int start = 1, end = fulltag.find_first_of(':', start); start != 0 && curdevice != NULL; start = end + 1, end = fulltag.find_first_of(':', start)) { - astring part(fulltag, start, (end == -1) ? -1 : end - start); + std::string part(fulltag, start, (end == -1) ? -1 : end - start); for (curdevice = curdevice->m_subdevice_list.first(); curdevice != NULL; curdevice = curdevice->next()) - if (part == curdevice->m_basetag) + if (part.compare(curdevice->m_basetag)==0) break; } @@ -726,21 +726,21 @@ device_t *device_t::subdevice_slow(const char *tag) const // to our device based on the provided tag //------------------------------------------------- -astring &device_t::subtag(astring &result, const char *tag) const +std::string &device_t::subtag(std::string &result, const char *tag) const { // if the tag begins with a colon, ignore our path and start from the root if (*tag == ':') { tag++; - result.cpy(":"); + result.assign(":"); } // otherwise, start with our path else { - result.cpy(m_tag); + result.assign(m_tag); if (result != ":") - result.cat(":"); + result.append(":"); } // iterate over the tag, look for special path characters to resolve @@ -748,30 +748,30 @@ astring &device_t::subtag(astring &result, const char *tag) const while ((caret = strchr(tag, '^')) != NULL) { // copy everything up to there - result.cat(tag, caret - tag); + result.append(tag, caret - tag); tag = caret + 1; // strip trailing colons - int len = result.len(); + int len = result.length(); while (result[--len] == ':') - result.substr(0, len); + result = result.substr(0, len); // remove the last path part, leaving the last colon if (result != ":") { - int lastcolon = result.rchr(0, ':'); + int lastcolon = result.find_last_of(':'); if (lastcolon != -1) - result.substr(0, lastcolon + 1); + result = result.substr(0, lastcolon + 1); } } // copy everything else - result.cat(tag); + result.append(tag); // strip trailing colons up to the root - int len = result.len(); + int len = result.length(); while (len > 1 && result[--len] == ':') - result.substr(0, len); + result = result.substr(0, len); return result; } diff --git a/src/emu/device.h b/src/emu/device.h index bdd3ef45234..ce9b2df0181 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -129,8 +129,8 @@ public: ioport_constructor input_ports() const { return device_input_ports(); } UINT8 default_bios() const { return m_default_bios; } UINT8 system_bios() const { return m_system_bios; } - astring default_bios_tag() const { return m_default_bios_tag; } - astring parameter(const char *tag) const; + std::string default_bios_tag() const { return m_default_bios_tag; } + std::string parameter(const char *tag) const; // interface helpers device_interface *first_interface() const { return m_interface_list; } @@ -150,8 +150,8 @@ public: // owned object helpers device_t *first_subdevice() const { return m_subdevice_list.first(); } - astring &subtag(astring &dest, const char *tag) const; - astring &siblingtag(astring &dest, const char *tag) const { return (this != NULL && m_owner != NULL) ? m_owner->subtag(dest, tag) : dest.cpy(tag); } + std::string &subtag(std::string &dest, const char *tag) const; + std::string &siblingtag(std::string &dest, const char *tag) const { return (this != NULL && m_owner != NULL) ? m_owner->subtag(dest, tag) : dest.assign(tag); } memory_region *memregion(const char *tag) const; memory_share *memshare(const char *tag) const; memory_bank *membank(const char *tag) const; @@ -238,10 +238,10 @@ protected: // core device properties const device_type m_type; // device type - astring m_name; // name of the device - astring m_shortname; // short name of the device - astring m_searchpath; // search path, used for media loading - astring m_source; // device source file name + std::string m_name; // name of the device + std::string m_shortname; // short name of the device + std::string m_searchpath; // search path, used for media loading + std::string m_source; // device source file name // device relationships device_t * m_owner; // device that owns us @@ -270,7 +270,7 @@ protected: UINT8 m_system_bios; // the system BIOS we wish to load UINT8 m_default_bios; // the default system BIOS - astring m_default_bios_tag; // tag of the default system BIOS + std::string m_default_bios_tag; // tag of the default system BIOS private: // private helpers @@ -282,8 +282,8 @@ private: // private state; accessor use required running_machine * m_machine; save_manager * m_save; - astring m_tag; // full tag for this instance - astring m_basetag; // base part of the tag + std::string m_tag; // full tag for this instance + std::string m_basetag; // base part of the tag bool m_config_complete; // have we completed our configuration? bool m_started; // true if the start function has succeeded finder_base * m_auto_finder_list; // list of objects to auto-find diff --git a/src/emu/diexec.c b/src/emu/diexec.c index 73148950ea8..7c063110899 100644 --- a/src/emu/diexec.c +++ b/src/emu/diexec.c @@ -547,7 +547,7 @@ void device_execute_interface::interface_post_reset() if (m_vblank_interrupt_screen != NULL) { // get the screen that will trigger the VBLANK - astring tempstring; + std::string tempstring; screen_device *screen = downcast(device().machine().device(device().siblingtag(tempstring, m_vblank_interrupt_screen).c_str())); assert(screen != NULL); diff --git a/src/emu/digfx.c b/src/emu/digfx.c index b3bd0edb770..c208d6a8ad6 100644 --- a/src/emu/digfx.c +++ b/src/emu/digfx.c @@ -319,7 +319,7 @@ void device_gfx_interface::interface_validity_check(validity_checker &valid) con if (region != NULL && GFXENTRY_ISROM(gfx.flags)) { // resolve the region - astring gfxregion; + std::string gfxregion; if (GFXENTRY_ISDEVICE(gfx.flags)) device().subtag(gfxregion, region); else diff --git a/src/emu/diimage.c b/src/emu/diimage.c index 42799b68c0b..e9e4963f227 100644 --- a/src/emu/diimage.c +++ b/src/emu/diimage.c @@ -1318,19 +1318,19 @@ bool device_image_interface::load_software_part(const char *path, software_part // software_get_default_slot //------------------------------------------------- -void device_image_interface::software_get_default_slot(astring &result, const char *default_card_slot) +void device_image_interface::software_get_default_slot(std::string &result, const char *default_card_slot) { const char *path = device().mconfig().options().value(instance_name()); - result.reset(); + result.clear(); if (strlen(path) > 0) { - result.cpy(default_card_slot); + result.assign(default_card_slot); software_part *swpart = find_software_item(path, true); if (swpart != NULL) { const char *slot = swpart->feature("slot"); if (slot != NULL) - result.cpy(slot); + result.assign(slot); } } } diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 3878732dfbd..deaa9f8e9a1 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -259,7 +259,7 @@ protected: software_part *find_software_item(const char *path, bool restrict_to_interface); bool load_software_part(const char *path, software_part *&swpart); - void software_get_default_slot(astring &result, const char *default_card_slot); + void software_get_default_slot(std::string &result, const char *default_card_slot); // derived class overrides diff --git a/src/emu/dimemory.c b/src/emu/dimemory.c index c36a68531ea..362c0fe8fda 100644 --- a/src/emu/dimemory.c +++ b/src/emu/dimemory.c @@ -297,7 +297,7 @@ void device_memory_interface::interface_validity_check(validity_checker &valid) { // make sure we can resolve the full path to the region bool found = false; - astring entry_region; + std::string entry_region; entry->m_devbase.subtag(entry_region, entry->m_region); // look for the region @@ -305,7 +305,7 @@ void device_memory_interface::interface_validity_check(validity_checker &valid) for (device_t *device = deviter.first(); device != NULL; device = deviter.next()) for (const rom_entry *romp = rom_first_region(*device); romp != NULL && !found; romp = rom_next_region(romp)) { - astring fulltag; + std::string fulltag; rom_region_name(fulltag, *device, romp); if (fulltag == entry_region) { diff --git a/src/emu/dislot.h b/src/emu/dislot.h index d7df2c451d5..77c7eb91bf0 100644 --- a/src/emu/dislot.h +++ b/src/emu/dislot.h @@ -116,7 +116,7 @@ public: const char *default_option() const { return m_default_option; } device_slot_option *first_option() const { return m_options.first(); } device_slot_option *option(const char *name) const { if (name) return m_options.find(name); return NULL; } - virtual void get_default_card_software(astring &result) { result.reset(); } + virtual void get_default_card_software(std::string &result) { result.clear(); } device_t *get_card_device(); private: diff --git a/src/emu/driver.c b/src/emu/driver.c index 901f4587cc3..399a30c15c9 100644 --- a/src/emu/driver.c +++ b/src/emu/driver.c @@ -75,7 +75,7 @@ void driver_device::static_set_game(device_t &device, const game_driver &game) // and set the search path to include all parents driver.m_searchpath = game.name; for (int parent = driver_list::clone(game); parent != -1; parent = driver_list::clone(parent)) - driver.m_searchpath.cat(";").cat(driver_list::driver(parent).name); + driver.m_searchpath.append(";").append(driver_list::driver(parent).name); } diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c index e1142588300..1b16624fa53 100644 --- a/src/emu/emuopts.c +++ b/src/emu/emuopts.c @@ -271,9 +271,9 @@ void emu_options::update_slot_options() const char *name = slot->device().tag() + 1; if (exists(name) && slot->first_option() != NULL) { - astring defvalue; + std::string defvalue; slot->get_default_card_software(defvalue); - if (defvalue.len() > 0) + if (defvalue.length() > 0) { set_default_value(name, defvalue.c_str()); const device_slot_option *option = slot->option(defvalue.c_str()); diff --git a/src/emu/imagedev/chd_cd.c b/src/emu/imagedev/chd_cd.c index 54d360a1225..b702feaa590 100644 --- a/src/emu/imagedev/chd_cd.c +++ b/src/emu/imagedev/chd_cd.c @@ -96,7 +96,7 @@ bool cdrom_image_device::call_load() { chd_error err = (chd_error)0; chd_file *chd = NULL; - astring tempstring; + std::string tempstring; if (m_cdrom_handle) cdrom_close(m_cdrom_handle); diff --git a/src/emu/imagedev/diablo.c b/src/emu/imagedev/diablo.c index 1f4af5b3242..43afc241471 100644 --- a/src/emu/imagedev/diablo.c +++ b/src/emu/imagedev/diablo.c @@ -209,7 +209,7 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file int diablo_image_device::internal_load_dsk() { - astring tempstring; + std::string tempstring; chd_error err = CHDERR_NONE; m_chd = NULL; diff --git a/src/emu/imagedev/harddriv.c b/src/emu/imagedev/harddriv.c index a34658600e7..1f61bc6b5a9 100644 --- a/src/emu/imagedev/harddriv.c +++ b/src/emu/imagedev/harddriv.c @@ -215,7 +215,7 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file int harddisk_image_device::internal_load_hd() { - astring tempstring; + std::string tempstring; chd_error err = CHDERR_NONE; m_chd = NULL; diff --git a/src/emu/ioport.c b/src/emu/ioport.c index 507ac6206ac..3b4410e551c 100644 --- a/src/emu/ioport.c +++ b/src/emu/ioport.c @@ -1488,7 +1488,7 @@ ioport_field::ioport_field(ioport_port &port, ioport_type type, ioport_value def if (def != NULL) { const char *fulltag = port.tag(); - astring fullpath; + std::string fullpath; for ( ; def->tag != NULL; def++) if (device().subtag(fullpath, def->tag) == fulltag && def->mask == m_mask) m_defvalue = def->defvalue & m_mask; @@ -3681,7 +3681,7 @@ const char *ioport_configurer::string_from_token(const char *string) void ioport_configurer::port_alloc(const char *tag) { // create the full tag - astring fulltag; + std::string fulltag; m_owner.subtag(fulltag, tag); // add it to the list, and reset current field/setting @@ -3699,7 +3699,7 @@ void ioport_configurer::port_alloc(const char *tag) void ioport_configurer::port_modify(const char *tag) { // create the full tag - astring fulltag; + std::string fulltag; m_owner.subtag(fulltag, tag); // find the existing port diff --git a/src/emu/machine/wozfdc.c b/src/emu/machine/wozfdc.c index f43620ff427..c099ea85497 100644 --- a/src/emu/machine/wozfdc.c +++ b/src/emu/machine/wozfdc.c @@ -63,7 +63,7 @@ appleiii_fdc::appleiii_fdc(const machine_config &mconfig, const char *tag, devic void wozfdc_device::device_start() { - astring tempstring; + std::string tempstring; m_rom_p6 = machine().root_device().memregion(this->subtag(tempstring, DISKII_P6_REGION).c_str())->base(); timer = timer_alloc(0); diff --git a/src/emu/mconfig.c b/src/emu/mconfig.c index 9a87c269328..b05c33653e9 100644 --- a/src/emu/mconfig.c +++ b/src/emu/mconfig.c @@ -122,10 +122,10 @@ device_t *machine_config::device_add(device_t *owner, const char *tag, device_ty { const char *next = strchr(tag, ':'); assert(next != tag); - astring part(tag, next-tag); + std::string part(tag, next-tag); device_t *curdevice; for (curdevice = owner->m_subdevice_list.first(); curdevice != NULL; curdevice = curdevice->next()) - if (part == curdevice->m_basetag) + if (part.compare(curdevice->m_basetag)==0) break; if (!curdevice) throw emu_fatalerror("Could not find %s when looking up path for device %s\n", diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h index 76e439625ea..3a0739faee8 100644 --- a/src/emu/mconfig.h +++ b/src/emu/mconfig.h @@ -59,7 +59,7 @@ public: // public state attotime m_minimum_quantum; // minimum scheduling quantum - astring m_perfect_cpu_quantum; // tag of CPU to use for "perfect" scheduling + std::string m_perfect_cpu_quantum; // tag of CPU to use for "perfect" scheduling INT32 m_watchdog_vblank_count; // number of VBLANKs until the watchdog kills us attotime m_watchdog_time; // length of time until the watchdog kills us diff --git a/src/emu/memory.c b/src/emu/memory.c index c802d428e9a..3defdf6fe53 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -1835,7 +1835,7 @@ void address_space::prepare_map() if (entry->m_share != NULL) { // if we can't find it, add it to our map - astring fulltag; + std::string fulltag; if (manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str()) == NULL) { VPRINTF(("Creating share '%s' of length 0x%X\n", fulltag.c_str(), entry->m_byteend + 1 - entry->m_bytestart)); @@ -1859,7 +1859,7 @@ void address_space::prepare_map() if (entry->m_region != NULL && entry->m_share == NULL) { // determine full tag - astring fulltag; + std::string fulltag; entry->m_devbase.subtag(fulltag, entry->m_region); // find the region @@ -1876,7 +1876,7 @@ void address_space::prepare_map() if (entry->m_region != NULL) { // determine full tag - astring fulltag; + std::string fulltag; entry->m_devbase.subtag(fulltag, entry->m_region); // set the memory address @@ -2153,7 +2153,7 @@ address_map_entry *address_space::block_assign_intersecting(offs_t bytestart, of // if we haven't assigned this block yet, see if we have a mapped shared pointer for it if (entry->m_memory == NULL && entry->m_share != NULL) { - astring fulltag; + std::string fulltag; memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str()); if (share != NULL && share->ptr() != NULL) { @@ -2176,7 +2176,7 @@ address_map_entry *address_space::block_assign_intersecting(offs_t bytestart, of // if we're the first match on a shared pointer, assign it now if (entry->m_memory != NULL && entry->m_share != NULL) { - astring fulltag; + std::string fulltag; memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str()); if (share != NULL && share->ptr() == NULL) { @@ -2292,7 +2292,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off if (rtag != NULL) { // find the port - astring fulltag; + std::string fulltag; ioport_port *port = machine().root_device().ioport(device().siblingtag(fulltag, rtag).c_str()); if (port == NULL) throw emu_fatalerror("Attempted to map non-existent port '%s' for read in space %s of device '%s'\n", rtag, m_name, m_device.tag()); @@ -2304,7 +2304,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off if (wtag != NULL) { // find the port - astring fulltag; + std::string fulltag; ioport_port *port = machine().root_device().ioport(device().siblingtag(fulltag, wtag).c_str()); if (port == NULL) fatalerror("Attempted to map non-existent port '%s' for write in space %s of device '%s'\n", wtag, m_name, m_device.tag()); @@ -2333,7 +2333,7 @@ void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_ // map the read bank if (rtag != NULL) { - astring fulltag; + std::string fulltag; device().siblingtag(fulltag, rtag); memory_bank &bank = bank_find_or_allocate(fulltag.c_str(), addrstart, addrend, addrmask, addrmirror, ROW_READ); read().map_range(addrstart, addrend, addrmask, addrmirror, bank.index()); @@ -2342,7 +2342,7 @@ void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_ // map the write bank if (wtag != NULL) { - astring fulltag; + std::string fulltag; device().siblingtag(fulltag, wtag); memory_bank &bank = bank_find_or_allocate(fulltag.c_str(), addrstart, addrend, addrmask, addrmirror, ROW_WRITE); write().map_range(addrstart, addrend, addrmask, addrmirror, bank.index()); @@ -2612,7 +2612,7 @@ bool address_space::needs_backing_store(const address_map_entry *entry) // if we are sharing, and we don't have a pointer yet, create one if (entry->m_share != NULL) { - astring fulltag; + std::string fulltag; memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str()); if (share != NULL && share->ptr() == NULL) return true; diff --git a/src/emu/parameters.c b/src/emu/parameters.c index 5fb8a051223..cdc32b6e468 100644 --- a/src/emu/parameters.c +++ b/src/emu/parameters.c @@ -15,12 +15,12 @@ parameters_manager::parameters_manager(running_machine &machine) { } -astring parameters_manager::lookup(astring tag) const +std::string parameters_manager::lookup(std::string tag) const { return m_parameters.find(tag.c_str()); } -void parameters_manager::add(astring tag, astring value) +void parameters_manager::add(std::string tag, std::string value) { m_parameters.add(tag.c_str(), value); } diff --git a/src/emu/parameters.h b/src/emu/parameters.h index 03c41386769..f24b4055053 100644 --- a/src/emu/parameters.h +++ b/src/emu/parameters.h @@ -34,15 +34,15 @@ public: // getters running_machine &machine() const { return m_machine; } - astring lookup(astring tag) const; + std::string lookup(std::string tag) const; // setters - void add(astring tag, astring value); + void add(std::string tag, std::string value); private: // internal state running_machine & m_machine; // reference to owning machine - tagmap_t m_parameters; + tagmap_t m_parameters; }; #endif // __INPTPORT_H__ */ diff --git a/src/emu/romload.c b/src/emu/romload.c index 5dd7c641ab9..86ea4ebb70c 100644 --- a/src/emu/romload.c +++ b/src/emu/romload.c @@ -254,7 +254,7 @@ const rom_entry *rom_next_parameter(const rom_entry *romp) for a rom region -------------------------------------------------*/ -astring &rom_region_name(astring &result, const device_t &device, const rom_entry *romp) +std::string &rom_region_name(std::string &result, const device_t &device, const rom_entry *romp) { return device.subtag(result, ROM_GETNAME(romp)); } @@ -265,7 +265,7 @@ astring &rom_region_name(astring &result, const device_t &device, const rom_entr for a per-game parameter -------------------------------------------------*/ -astring &rom_parameter_name(astring &result, const device_t &device, const rom_entry *romp) +std::string &rom_parameter_name(std::string &result, const device_t &device, const rom_entry *romp) { return device.subtag(result, romp->_name); } @@ -276,9 +276,9 @@ astring &rom_parameter_name(astring &result, const device_t &device, const rom_e per-game parameter -------------------------------------------------*/ -astring rom_parameter_value(const rom_entry *romp) +std::string rom_parameter_value(const rom_entry *romp) { - return romp->_hashdata; + return std::string(romp->_hashdata); } @@ -1338,7 +1338,7 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c astring locationtag(swlist.list_name()), breakstr("%"); romload_private *romdata = device.machine().romload_data; const rom_entry *region; - astring regiontag; + std::string regiontag; romdata->errorstring.reset(); romdata->softwarningstring.reset(); @@ -1453,7 +1453,7 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c static void process_region_list(romload_private *romdata) { - astring regiontag; + std::string regiontag; /* loop until we hit the end */ device_iterator deviter(romdata->machine().root_device()); diff --git a/src/emu/romload.h b/src/emu/romload.h index 290a8ba447b..a533bc12120 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -297,7 +297,7 @@ const rom_entry *rom_next_file(const rom_entry *romp); UINT32 rom_file_size(const rom_entry *romp); /* return the appropriate name for a rom region */ -astring &rom_region_name(astring &result, const device_t &device, const rom_entry *romp); +std::string &rom_region_name(std::string &result, const device_t &device, const rom_entry *romp); /* return pointer to the first per-game parameter */ const rom_entry *rom_first_parameter(const device_t &device); @@ -306,10 +306,10 @@ const rom_entry *rom_first_parameter(const device_t &device); const rom_entry *rom_next_parameter(const rom_entry *romp); /* return the appropriate name for a per-game parameter */ -astring &rom_parameter_name(astring &result, const device_t &device, const rom_entry *romp); +std::string &rom_parameter_name(std::string &result, const device_t &device, const rom_entry *romp); /* return the value for a per-game parameter */ -astring rom_parameter_value(const rom_entry *romp); +std::string rom_parameter_value(const rom_entry *romp); /* ----- disk handling ----- */ diff --git a/src/emu/schedule.c b/src/emu/schedule.c index d777f1d1b41..c4aa618caee 100644 --- a/src/emu/schedule.c +++ b/src/emu/schedule.c @@ -753,7 +753,7 @@ void device_scheduler::rebuild_execute_list() min_quantum = attotime::from_hz(60); // if the configuration specifies a device to make perfect, pick that as the minimum - if (machine().config().m_perfect_cpu_quantum) + if (!machine().config().m_perfect_cpu_quantum.empty()) { device_t *device = machine().device(machine().config().m_perfect_cpu_quantum.c_str()); if (device == NULL) diff --git a/src/emu/sound/disc_inp.inc b/src/emu/sound/disc_inp.inc index 36af37c6583..0003b5e2736 100644 --- a/src/emu/sound/disc_inp.inc +++ b/src/emu/sound/disc_inp.inc @@ -62,7 +62,7 @@ DISCRETE_RESET(dss_adjustment) { double min, max; - astring fulltag; + std::string fulltag; m_port = m_device->machine().root_device().ioport(m_device->siblingtag(fulltag, (const char *)this->custom_data()).c_str()); if (m_port == NULL) fatalerror("DISCRETE_ADJUSTMENT - NODE_%d has invalid tag\n", this->index()); diff --git a/src/emu/validity.c b/src/emu/validity.c index 2bf05137dd1..722e6c555fd 100644 --- a/src/emu/validity.c +++ b/src/emu/validity.c @@ -639,7 +639,7 @@ void validity_checker::validate_roms() validate_tag(basetag); // generate the full tag - astring fulltag; + std::string fulltag; rom_region_name(fulltag, *device, romp); // attempt to add it to the map, reporting duplicates as errors @@ -848,7 +848,7 @@ void validity_checker::validate_dip_settings(ioport_field &field) void validity_checker::validate_condition(ioport_condition &condition, device_t &device, int_map &port_map) { // resolve the tag - astring porttag; + std::string porttag; device.subtag(porttag, condition.tag()); // then find a matching port diff --git a/src/lib/formats/cbm_crt.c b/src/lib/formats/cbm_crt.c index 3be90b29ab1..dce20d6e603 100644 --- a/src/lib/formats/cbm_crt.c +++ b/src/lib/formats/cbm_crt.c @@ -122,7 +122,7 @@ static const char * CRT_C64_SLOT_NAMES[_CRT_C64_COUNT] = // cbm_crt_get_card - get slot interface card //------------------------------------------------- -void cbm_crt_get_card(astring &result, core_file *file) +void cbm_crt_get_card(std::string &result, core_file *file) { // read the header cbm_crt_header header; @@ -132,11 +132,11 @@ void cbm_crt_get_card(astring &result, core_file *file) { UINT16 hardware = pick_integer_be(header.hardware, 0, 2); - result.cpy(CRT_C64_SLOT_NAMES[hardware]); + result.assign(CRT_C64_SLOT_NAMES[hardware]); return; } - result.reset(); + result.clear(); } diff --git a/src/lib/formats/cbm_crt.h b/src/lib/formats/cbm_crt.h index 8049ddacff7..9be37bc0740 100644 --- a/src/lib/formats/cbm_crt.h +++ b/src/lib/formats/cbm_crt.h @@ -135,7 +135,7 @@ struct cbm_crt_chip // FUNCTION PROTOTYPES //************************************************************************** -void cbm_crt_get_card(astring &result, core_file *file); +void cbm_crt_get_card(std::string &result, core_file *file); bool cbm_crt_read_header(core_file* file, size_t *roml_size, size_t *romh_size, int *exrom, int *game); bool cbm_crt_read_data(core_file* file, UINT8 *roml, UINT8 *romh); diff --git a/src/mame/machine/fd1089.c b/src/mame/machine/fd1089.c index a9c7cf0465e..3128f56a7b8 100644 --- a/src/mame/machine/fd1089.c +++ b/src/mame/machine/fd1089.c @@ -220,7 +220,7 @@ fd1089_base_device::fd1089_base_device(const machine_config &mconfig, device_typ : m68000_device(mconfig, tag, owner, clock, shortname, source) { // override the name after the m68000 initializes - m_name.cpy(name); + m_name.assign(name); } fd1089a_device::fd1089a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) diff --git a/src/mame/machine/fd1094.c b/src/mame/machine/fd1094.c index 7dc24150121..050755aed69 100644 --- a/src/mame/machine/fd1094.c +++ b/src/mame/machine/fd1094.c @@ -558,7 +558,7 @@ fd1094_device::fd1094_device(const machine_config &mconfig, const char *tag, dev m_key(NULL) { // override the name after the m68000 initializes - m_name.cpy("FD1094"); + m_name.assign("FD1094"); // create the initial masked opcode table memset(m_masked_opcodes_lookup, 0, sizeof(m_masked_opcodes_lookup)); diff --git a/src/mess/machine/cuda.c b/src/mess/machine/cuda.c index aa2dc4e4222..fb3e30622de 100644 --- a/src/mess/machine/cuda.c +++ b/src/mess/machine/cuda.c @@ -438,7 +438,7 @@ void cuda_device::device_start() save_item(NAME(pram)); save_item(NAME(disk_pram)); - astring tempstring; + std::string tempstring; UINT8 *rom = device().machine().root_device().memregion(device().subtag(tempstring, CUDA_CPU_TAG).c_str())->base(); if (rom) diff --git a/src/mess/machine/egret.c b/src/mess/machine/egret.c index b8cb5e78cf6..111cf99fe2c 100644 --- a/src/mess/machine/egret.c +++ b/src/mess/machine/egret.c @@ -387,7 +387,7 @@ void egret_device::device_start() save_item(NAME(pram)); save_item(NAME(disk_pram)); - astring tempstring; + std::string tempstring; UINT8 *rom = device().machine().root_device().memregion(device().subtag(tempstring, EGRET_CPU_TAG).c_str())->base(); if (rom) -- cgit v1.2.3-70-g09d2 From abbea170e701626a3a4bf28ecd91a23d94a0c264 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 19:01:35 +0200 Subject: preventing asserting on vector item access (nw) --- src/emu/sound.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/emu/sound.c b/src/emu/sound.c index 6c8f4b74da2..cf022cef8a8 100644 --- a/src/emu/sound.c +++ b/src/emu/sound.c @@ -598,6 +598,8 @@ void sound_stream::postload() void sound_stream::generate_samples(int samples) { + stream_sample_t **inputs = NULL; + stream_sample_t **outputs = NULL; // if we're already there, skip it if (samples <= 0) return; @@ -616,6 +618,11 @@ void sound_stream::generate_samples(int samples) m_input_array[inputnum] = generate_resampled_data(input, samples); } + if (m_input.size()>0) + { + inputs = &m_input_array[0]; + } + // loop over all outputs and compute the output pointer for (unsigned int outputnum = 0; outputnum < m_output.size(); outputnum++) { @@ -623,9 +630,14 @@ void sound_stream::generate_samples(int samples) m_output_array[outputnum] = &output.m_buffer[m_output_sampindex - m_output_base_sampindex]; } + if (m_output.size()>0) + { + outputs = &m_output_array[0]; + } + // run the callback VPRINTF((" callback(%p, %d)\n", this, samples)); - m_callback(*this, &m_input_array[0], &m_output_array[0], samples); + m_callback(*this, inputs, outputs, samples); VPRINTF((" callback done\n")); } -- cgit v1.2.3-70-g09d2 From efb47469d364b08895566a60222567806bd23153 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 20:08:25 +0200 Subject: better like this (nw) --- src/emu/sound.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/sound.c b/src/emu/sound.c index cf022cef8a8..02211325158 100644 --- a/src/emu/sound.c +++ b/src/emu/sound.c @@ -618,7 +618,7 @@ void sound_stream::generate_samples(int samples) m_input_array[inputnum] = generate_resampled_data(input, samples); } - if (m_input.size()>0) + if (!m_input.empty()) { inputs = &m_input_array[0]; } @@ -630,7 +630,7 @@ void sound_stream::generate_samples(int samples) m_output_array[outputnum] = &output.m_buffer[m_output_sampindex - m_output_base_sampindex]; } - if (m_output.size()>0) + if (!m_output.empty()) { outputs = &m_output_array[0]; } -- cgit v1.2.3-70-g09d2 From 1a5d5bbbd1e589b907e72a21d8bd5f0ba1a35cd0 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 18 Apr 2015 20:16:22 +0200 Subject: added ume subtarget dummy so can test compile of all devices (nw) --- scripts/target/ume/dummy.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ src/ume/dummy.lst | 10 ++++++++++ 2 files changed, 53 insertions(+) create mode 100644 scripts/target/ume/dummy.lua create mode 100644 src/ume/dummy.lst (limited to 'src') diff --git a/scripts/target/ume/dummy.lua b/scripts/target/ume/dummy.lua new file mode 100644 index 00000000000..59ee39ae65d --- /dev/null +++ b/scripts/target/ume/dummy.lua @@ -0,0 +1,43 @@ +--------------------------------------------------------------------------- +-- +-- ume.lua +-- +-- Universal target makefile +-- +--------------------------------------------------------------------------- + +dofile("../mess/mess.lua") +dofile("../mame/mame.lua") + +function createProjects_ume_dummy(_target, _subtarget) + project ("ume_dummy") + targetsubdir(_target .."_" .. _subtarget) + kind "StaticLib" + uuid (os.uuid("drv-ume_dummy")) + + options { + "ForceCPP", + } + + includedirs { + MAME_DIR .. "src/osd", + MAME_DIR .. "src/emu", + MAME_DIR .. "src/mess", + MAME_DIR .. "src/lib", + MAME_DIR .. "src/lib/util", + MAME_DIR .. "3rdparty", + MAME_DIR .. "3rdparty/zlib", + GEN_DIR .. "mess/layout", + } + + files{ + MAME_DIR .. "src/mess/drivers/coleco.c", + MAME_DIR .. "src/mess/machine/coleco.c", + } +end + +function linkProjects_ume_dummy(_target, _subtarget) + links { + "ume_dummy", + } +end \ No newline at end of file diff --git a/src/ume/dummy.lst b/src/ume/dummy.lst new file mode 100644 index 00000000000..2c9c7698de6 --- /dev/null +++ b/src/ume/dummy.lst @@ -0,0 +1,10 @@ +/****************************************************************************** + + dummy.lst + + List of all enabled drivers in the system. This file is parsed by + makelist.exe, sorted, and output as C code describing the drivers. + +******************************************************************************/ + +coleco \ No newline at end of file -- cgit v1.2.3-70-g09d2 From c000ed0aea9ae1abf6352503879412d5bc56eb56 Mon Sep 17 00:00:00 2001 From: Sandro Ronco Date: Sat, 18 Apr 2015 21:48:25 +0200 Subject: jwildb52a: dumped GFX roms [anonyMous] new NOT WORKING games --------------------- Sigma Super 8 Ways FC (Fruit combination) [anonyMous] --- src/mame/drivers/sigmab52.c | 76 ++++++++++++++++++++++++++++++++------------ src/mame/layout/sigmab52.lay | 10 +++--- src/mame/mame.lst | 1 + 3 files changed, 61 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c index a46c5927cad..0b4d664496e 100644 --- a/src/mame/drivers/sigmab52.c +++ b/src/mame/drivers/sigmab52.c @@ -390,11 +390,11 @@ INPUT_CHANGED_MEMBER( sigmab52_state::coin_drop_start ) static INPUT_PORTS_START( jwildb52 ) PORT_START("IN0") PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 5 - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 4 - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 3 - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 2 - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 1 + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW1", 0x50, EQUALS, 0x00) PORT_NAME("Double") PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW1", 0x50, EQUALS, 0x00) PORT_NAME("Deal / Draw") @@ -428,16 +428,16 @@ static INPUT_PORTS_START( jwildb52 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Machine Door") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hopper Weight Switch") - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 1 PORT_START("IN2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Attendant Call") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 2 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Drop Door") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CODE(KEYCODE_2_PAD) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 3 + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 4 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) // Hold 5 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Meter Wire") PORT_START("IN3") @@ -533,12 +533,24 @@ static INPUT_PORTS_START( jwildb52 ) PORT_DIPNAME( 0x40, 0x40, "DSW2-9" ) PORT_DIPLOCATION("SW2:9") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "DSW2-10" ) PORT_DIPLOCATION("SW2:10") + PORT_DIPNAME( 0x80, 0x00, "DSW2-10" ) PORT_DIPLOCATION("SW2:10") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( s8waysfc ) + PORT_INCLUDE( jwildb52 ) + + PORT_MODIFY("IN0") + PORT_BIT( 0x07ff, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Start") + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Max Bet") + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("One Bet") + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect / Payout") +INPUT_PORTS_END + /************************* * Machine Start * @@ -554,6 +566,7 @@ void sigmab52_state::machine_reset() m_bank1->set_entry(1); m_coin_start_cycles = 0; m_hopper_start_cycles = 0; + m_audiocpu_cmd_irq = CLEAR_LINE; } /************************* @@ -583,7 +596,7 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state ) MCFG_SCREEN_REFRESH_RATE(30) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(1024, 1024) - MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 384-1) + MCFG_SCREEN_VISIBLE_AREA(0, 544-1, 0, 436-1) MCFG_SCREEN_UPDATE_DEVICE("hd63484", h63484_device, update_screen) MCFG_SCREEN_PALETTE("palette") @@ -625,13 +638,13 @@ ROM_START( jwildb52a ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sigm_wrk.bin", 0x00000, 0x10000, CRC(15c83c6c) SHA1(7a05bd94ea8b1ad051fbe6580a6550d4bb47dd15) ) - /* No gfx & sound dumps. Using the ones from parent set for now... */ - ROM_REGION16_BE( 0x40000, "gfx1", 0 ) - ROM_LOAD32_BYTE( "cards_2001-1.ic45", 0x00003, 0x10000, BAD_DUMP CRC(7664455e) SHA1(c9f129060e63b9ac9058ab94208846e4dc578ead) ) - ROM_LOAD32_BYTE( "cards_2001-2.ic46", 0x00001, 0x10000, BAD_DUMP CRC(c1455d64) SHA1(ddb576ba471b5d2faa415ec425615cf5f9d87911) ) - ROM_LOAD32_BYTE( "cards_2001-3.ic47", 0x00000, 0x10000, BAD_DUMP CRC(cb2ece6e) SHA1(f2b6949085fe395d0fdd16322a880ec87e2efd50) ) - ROM_LOAD32_BYTE( "cards_2001-4.ic48", 0x00002, 0x10000, BAD_DUMP CRC(8131d236) SHA1(8984aa1f2af70df41973b61df17f184796a2ffe9) ) + ROM_LOAD32_BYTE( "c-1416-1.ic45", 0x00003, 0x10000, CRC(02a0b517) SHA1(5a0818a174683f791ca885bfdfd7555616c80758) ) + ROM_LOAD32_BYTE( "c-1416-2.ic46", 0x00001, 0x10000, CRC(3196e486) SHA1(2d264e518083ff05d1a1eb7f8e1649feb70349e7) ) + ROM_LOAD32_BYTE( "c-1416-3.ic47", 0x00000, 0x10000, CRC(1c9a2939) SHA1(e18fdf9a656687db47ac00700e7721c3d8e800c5) ) + ROM_LOAD32_BYTE( "c-1416-4.ic48", 0x00002, 0x10000, CRC(7bd8bf78) SHA1(ddacbb75df14a343e69949dcaa14ce1a7ec8407a) ) + + /* No sound dumps. Using the ones from parent set for now... */ ROM_REGION( 0x8000, "audiocpu", 0 ) ROM_LOAD( "sound-01-00.43", 0x0000, 0x8000, BAD_DUMP CRC(2712d44c) SHA1(295526b27676cd97cbf111d47305d63c2b3ea50d) ) @@ -659,6 +672,26 @@ ROM_START( jwildb52h ) ROM_END +ROM_START( s8waysfc ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "dv98103.011", 0x00000, 0x10000, CRC(416190a1) SHA1(e2738644efc6c2adcea2470b482f3f818ed9af8d) ) + + ROM_REGION16_BE( 0x40000, "gfx1", 0 ) + ROM_LOAD32_BYTE( "symb112.1", 0x00003, 0x10000, CRC(b09bd4f5) SHA1(af04845e84cb381f9babe088884b5bbab927a326) ) + ROM_LOAD32_BYTE( "symb112.2", 0x00001, 0x10000, CRC(462a2d55) SHA1(3157893d150b98c80c0045f78cb2520e8b3ce4eb) ) + ROM_LOAD32_BYTE( "symb112.3", 0x00000, 0x10000, CRC(be0c2e64) SHA1(82de83fc4754ff73e80e22187b7fba041832613e) ) + ROM_LOAD32_BYTE( "symb112.4", 0x00002, 0x10000, CRC(f9d8529c) SHA1(7cd54bda71fb38c7bcbea42be4e322aec0581964) ) + + ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_LOAD( "v-slot02.00", 0x00000, 0x08000, CRC(bc1eec0a) SHA1(300ebfbd314c58b434bb20a5c3c8f7463b424207) ) + + /* No prom dumps. Using the ones from jwildb52 for now... */ + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "mb7118.41", 0x0000, 0x0100, CRC(b362f9e2) SHA1(3963b40389ed6584e4cd96ab48849552857d99af) ) +ROM_END + + /************************* * Driver Init * *************************/ @@ -673,6 +706,7 @@ DRIVER_INIT_MEMBER(sigmab52_state,jwildb52) *************************/ /* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */ -GAMEL( 199?, jwildb52, 0, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, set 1)", GAME_NO_SOUND | GAME_NOT_WORKING, layout_sigmab52 ) -GAMEL( 199?, jwildb52a, jwildb52, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, set 2)", GAME_NO_SOUND | GAME_NOT_WORKING, layout_sigmab52 ) -GAMEL( 199?, jwildb52h, jwildb52, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, Harrah's GFX)", GAME_NO_SOUND | GAME_NOT_WORKING, layout_sigmab52 ) +GAMEL( 199?, jwildb52, 0, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, set 1)", GAME_NOT_WORKING, layout_sigmab52 ) +GAMEL( 199?, jwildb52a, jwildb52, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, set 2)", GAME_NOT_WORKING, layout_sigmab52 ) +GAMEL( 199?, jwildb52h, jwildb52, jwildb52, jwildb52, sigmab52_state, jwildb52, ROT0, "Sigma", "Joker's Wild (B52 system, Harrah's GFX)", GAME_NOT_WORKING, layout_sigmab52 ) +GAME ( 199?, s8waysfc, 0, jwildb52, s8waysfc, sigmab52_state, jwildb52, ROT0, "Sigma", "Super 8 Ways FC (Fruit combination)", GAME_NOT_WORKING ) diff --git a/src/mame/layout/sigmab52.lay b/src/mame/layout/sigmab52.lay index 175b1bcd4b0..ac636d245ce 100644 --- a/src/mame/layout/sigmab52.lay +++ b/src/mame/layout/sigmab52.lay @@ -84,19 +84,19 @@ - + - + - + - + 4 - + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 8b20487d0b9..4d58ebac83c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9730,6 +9730,7 @@ sub // (c) 1985 Sigma Ent. Inc. jwildb52 // (c) 199? Sigma jwildb52a // (c) 199? Sigma jwildb52h // (c) 199? Sigma +s8waysfc // (c) 199? Sigma // Sigma B98 / Sammy Medal Games dodghero // b9802 (c) 1997 Sigma -- cgit v1.2.3-70-g09d2 From 5905f4d907858a39631f70c16539d17e28cad770 Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 19 Apr 2015 00:02:31 +0200 Subject: Added rtrim, ltrim and trim to pstring. (nw) --- src/emu/netlist/pstring.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/emu/netlist/pstring.h | 9 +++++++++ 2 files changed, 56 insertions(+) (limited to 'src') diff --git a/src/emu/netlist/pstring.c b/src/emu/netlist/pstring.c index e60f950be1d..3f19cc16a89 100644 --- a/src/emu/netlist/pstring.c +++ b/src/emu/netlist/pstring.c @@ -88,6 +88,53 @@ pstring pstring::ucase() const return ret; } +int pstring::find_first_not_of(const pstring no) const +{ + for (int i=0; i < len(); i++) + { + bool f = true; + for (int j=0; j < no.len(); j++) + if (m_ptr->m_str[i] == no.m_ptr->m_str[j]) + f = false; + if (f) + return i; + } + return -1; +} + +int pstring::find_last_not_of(const pstring no) const +{ + for (int i=len() - 1; i >= 0; i--) + { + bool f = true; + for (int j=0; j < no.len(); j++) + if (m_ptr->m_str[i] == no.m_ptr->m_str[j]) + f = false; + if (f) + return i; + } + return -1; +} + + +pstring pstring::ltrim(const pstring ws) const +{ + int f = find_first_not_of(ws); + if (f>=0) + return substr(f); + else + return ""; +} + +pstring pstring::rtrim(const pstring ws) const +{ + int f = find_last_not_of(ws); + if (f>=0) + return left(f+1); + else + return ""; +} + //------------------------------------------------- // pcmpi - compare a character array to an nstring //------------------------------------------------- diff --git a/src/emu/netlist/pstring.h b/src/emu/netlist/pstring.h index b2b5cd0ae91..6ed539e0c13 100644 --- a/src/emu/netlist/pstring.h +++ b/src/emu/netlist/pstring.h @@ -155,6 +155,15 @@ public: inline pstring left(unsigned int count) const { return substr(0, count); } inline pstring right(unsigned int count) const { return substr(len() - count, count); } + int find_first_not_of(const pstring no) const; + int find_last_not_of(const pstring no) const; + + pstring ltrim(const pstring ws = " \t\n\r") const; + pstring rtrim(const pstring ws = " \t\n\r") const; + + + inline pstring trim(const pstring ws = " \t\n\r") const { return this->ltrim(ws).rtrim(ws); } + pstring ucase() const; // conversions -- cgit v1.2.3-70-g09d2 From 92867a9e68bd5c6b3c09875e6eeaffe9fabc2e53 Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 19 Apr 2015 02:06:30 +0200 Subject: Improve truthtable handling in netlist. Prepare per-game setting of USE_DEACTIVE_DEVICE. [Couriersud] --- src/emu/netlist/devices/nld_7400.c | 12 +++++++++- src/emu/netlist/devices/nld_7400.h | 6 ++--- src/emu/netlist/devices/nld_signal.h | 16 ++++++------- src/emu/netlist/devices/nld_truthtable.h | 37 ++++++++++++++--------------- src/emu/netlist/nl_base.c | 40 +++++++++++++++++--------------- src/emu/netlist/nl_base.h | 3 +++ src/emu/netlist/nl_config.h | 2 ++ 7 files changed, 65 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/emu/netlist/devices/nld_7400.c b/src/emu/netlist/devices/nld_7400.c index bf0952a6a9f..32122aa4aa2 100644 --- a/src/emu/netlist/devices/nld_7400.c +++ b/src/emu/netlist/devices/nld_7400.c @@ -5,9 +5,10 @@ #include "nld_7400.h" -#if 0 +#if (USE_TRUTHTABLE) nld_7400::truthtable_t nld_7400::m_ttbl; +#if 0 const char *nld_7400::m_desc[] = { "A,B,PQ,PA,PB|Q", "0,X,X,X,X|1|22", @@ -15,6 +16,15 @@ const char *nld_7400::m_desc[] = { "1,1,X,X,X|0|15", "" }; +#else +const char *nld_7400::m_desc[] = { + "A , B | Q ", + "0,X|1|22", + "X,0|1|22", + "1,1|0|15", + "" +}; +#endif #endif diff --git a/src/emu/netlist/devices/nld_7400.h b/src/emu/netlist/devices/nld_7400.h index e39a485fd1a..73f5ffe33f8 100644 --- a/src/emu/netlist/devices/nld_7400.h +++ b/src/emu/netlist/devices/nld_7400.h @@ -39,11 +39,11 @@ NET_CONNECT(_name, A, _A) \ NET_CONNECT(_name, B, _B) -#if 1 -NETLIB_SIGNAL(7400, 2, 0, 0); -#else +#if (USE_TRUTHTABLE) #include "nld_truthtable.h" NETLIB_TRUTHTABLE(7400, 2, 1, 0); +#else +NETLIB_SIGNAL(7400, 2, 0, 0); #endif diff --git a/src/emu/netlist/devices/nld_signal.h b/src/emu/netlist/devices/nld_signal.h index 2f703e955da..6826250eb00 100644 --- a/src/emu/netlist/devices/nld_signal.h +++ b/src/emu/netlist/devices/nld_signal.h @@ -53,9 +53,9 @@ public: m_active = 1; } -#if (USE_DEACTIVE_DEVICE) ATTR_HOT void inc_active() { + nl_assert(netlist().use_deactivate()); if (++m_active == 1) { update(); @@ -64,21 +64,21 @@ public: ATTR_HOT void dec_active() { + nl_assert(netlist().use_deactivate()); if (--m_active == 0) { for (int i = 0; i< _numdev; i++) m_i[i].inactivate(); } } -#endif virtual void update() { const netlist_time times[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22)}; // FIXME: this check is needed because update is called during startup as well - if (UNEXPECTED(USE_DEACTIVE_DEVICE && m_active == 0)) - return; + //if (m_active == 0 && netlist().use_deactivate()) + // return; for (int i = 0; i< _numdev; i++) { @@ -127,9 +127,9 @@ public: m_active = 1; } -#if (USE_DEACTIVE_DEVICE) ATTR_HOT virtual void inc_active() { + nl_assert(netlist().use_deactivate()); if (++m_active == 1) { update(); @@ -138,21 +138,21 @@ public: ATTR_HOT virtual void dec_active() { + nl_assert(netlist().use_deactivate()); if (--m_active == 0) { m_i[0].inactivate(); m_i[1].inactivate(); } } -#endif ATTR_HOT ATTR_ALIGN void update() { const netlist_time times[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22)}; // FIXME: this check is needed because update is called during startup as well - if (UNEXPECTED(USE_DEACTIVE_DEVICE && m_active == 0)) - return; + //if (m_active == 0 && netlist().use_deactivate()) + // return; m_i[0].activate(); m_i[1].activate(); diff --git a/src/emu/netlist/devices/nld_truthtable.h b/src/emu/netlist/devices/nld_truthtable.h index be5d0703445..d1546c56a1c 100644 --- a/src/emu/netlist/devices/nld_truthtable.h +++ b/src/emu/netlist/devices/nld_truthtable.h @@ -50,19 +50,19 @@ public: { nl_util::pstring_list io = nl_util::split(ttline,"|"); // checks - nl_assert(io.count() == 2); + nl_assert_always(io.count() == 2, "too many '|'"); nl_util::pstring_list inout = nl_util::split(io[0], ","); - nl_assert(inout.count() == m_num_bits); + nl_assert_always(inout.count() == m_num_bits, "bitcount wrong"); nl_util::pstring_list out = nl_util::split(io[1], ","); - nl_assert(out.count() == m_NO); + nl_assert_always(out.count() == m_NO, "output count wrong"); for (int i=0; i < m_NI; i++) { - register_input(inout[i], m_i[i]); + register_input(inout[i].trim(), m_i[i]); } for (int i=0; i < m_NO; i++) { - register_output(out[i], m_Q[i]); + register_output(out[i].trim(), m_Q[i]); } } setup_tt(); @@ -178,38 +178,35 @@ public: ATTR_HOT ATTR_ALIGN void update() { - //const netlist_time times[2] = { NLTIME_FROM_NS(15), NLTIME_FROM_NS(22)}; - // FIXME: this check is needed because update is called during startup as well - if (UNEXPECTED(USE_DEACTIVE_DEVICE && m_active == 0)) - return; + //if (m_active == 0 && UNEXPECTED(netlist().use_deactivate())) + // return; UINT32 state = 0; - for (int i=0; i< m_NI; i++) + for (int i = 0; i < m_NI; i++) { m_i[i].activate(); - state = state | (INPLOGIC(m_i[i]) << i); + state |= (INPLOGIC(m_i[i]) << i); } - const UINT32 nstate = (has_state ? state | (m_last_state << m_NI) : state); + const UINT32 nstate = state | (has_state ? (m_last_state << m_NI) : 0); const UINT32 out = m_ttp->m_outs[nstate] & ((1 << m_NO) - 1); const UINT32 ign = m_ttp->m_outs[nstate] >> m_NO; - if (has_state) m_last_state = (state << m_NO) | out; + if (has_state) + m_last_state = (state << m_NO) | out; - for (int i=0; i< m_NI; i++) + for (int i = 0; i < m_NI; i++) if (ign & (1 << i)) m_i[i].inactivate(); - for (int i=0; i> i) & 1, times[(out >> i) & 1]);// ? 22000 : 15000); - OUTLOGIC(m_Q[i], (out >> i) & 1, m_ttp->m_timing_nt[m_ttp->m_timing[nstate][i]]);// ? 22000 : 15000); - + for (int i = 0; i < m_NO; i++) + OUTLOGIC(m_Q[i], (out >> i) & 1, m_ttp->m_timing_nt[m_ttp->m_timing[nstate][i]]); } -#if (USE_DEACTIVE_DEVICE) ATTR_HOT void inc_active() { + nl_assert(netlist().use_deactivate()); if (++m_active == 1) { update(); @@ -218,13 +215,13 @@ public: ATTR_HOT void dec_active() { + nl_assert(netlist().use_deactivate()); if (--m_active == 0) { for (int i = 0; i< m_NI; i++) m_i[i].inactivate(); } } -#endif netlist_ttl_input_t m_i[m_NI]; netlist_ttl_output_t m_Q[m_NO]; diff --git a/src/emu/netlist/nl_base.c b/src/emu/netlist/nl_base.c index 8d4b67369f0..b24c7fb3653 100644 --- a/src/emu/netlist/nl_base.c +++ b/src/emu/netlist/nl_base.c @@ -137,6 +137,9 @@ ATTR_COLD void netlist_owned_object_t::init_object(netlist_core_device_t &dev, netlist_base_t::netlist_base_t() : netlist_object_t(NETLIST, GENERIC), + m_stop(netlist_time::zero), + // FIXME:: Use a parameter to set this on a schematics per schematics basis + m_use_deactivate(USE_DEACTIVE_DEVICE), m_time(netlist_time::zero), m_queue(*this), m_mainclock(NULL), @@ -494,26 +497,28 @@ ATTR_HOT void netlist_net_t::inc_active(netlist_core_terminal_t &term) m_list_active.insert(term); - if (USE_DEACTIVE_DEVICE) + if (m_active == 1) { - if (m_active == 1 && m_in_queue > 0) + if (m_in_queue == 0) { - railterminal().netdev().inc_active(); - m_cur_Q = m_new_Q; - } - } - - if (m_active == 1 && m_in_queue == 0) - { - if (m_time > netlist().time()) - { - m_in_queue = 1; /* pending */ - netlist().push_to_queue(*this, m_time); + if (m_time > netlist().time()) + { + m_in_queue = 1; /* pending */ + netlist().push_to_queue(*this, m_time); + } + else + { + m_cur_Q = m_new_Q; + m_in_queue = 2; + } } else { - m_cur_Q = m_new_Q; - m_in_queue = 2; + if (netlist().use_deactivate()) + { + railterminal().netdev().inc_active(); + m_cur_Q = m_new_Q; + } } } } @@ -523,11 +528,8 @@ ATTR_HOT void netlist_net_t::dec_active(netlist_core_terminal_t &term) m_active--; m_list_active.remove(term); - if (USE_DEACTIVE_DEVICE) - { - if (m_active == 0) + if (m_active == 0 && netlist().use_deactivate()) railterminal().netdev().dec_active(); - } } ATTR_COLD void netlist_net_t::register_railterminal(netlist_output_t &mr) diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h index b6cb33ed724..11267d69aa6 100644 --- a/src/emu/netlist/nl_base.h +++ b/src/emu/netlist/nl_base.h @@ -1130,6 +1130,8 @@ public: ATTR_HOT void process_queue(const netlist_time &delta); ATTR_HOT inline void abort_current_queue_slice() { m_stop = netlist_time::zero; } + ATTR_HOT inline const bool &use_deactivate() const { return m_use_deactivate; } + ATTR_COLD void rebuild_lists(); /* must be called after post_load ! */ ATTR_COLD void set_setup(netlist_setup_t *asetup) { m_setup = asetup; } @@ -1214,6 +1216,7 @@ protected: private: netlist_time m_stop; // target time for current queue processing + bool m_use_deactivate; netlist_time m_time; netlist_queue_t m_queue; diff --git a/src/emu/netlist/nl_config.h b/src/emu/netlist/nl_config.h index f392bfb577c..26d5f5620b1 100644 --- a/src/emu/netlist/nl_config.h +++ b/src/emu/netlist/nl_config.h @@ -37,6 +37,8 @@ #define USE_DEACTIVE_DEVICE (0) +#define USE_TRUTHTABLE (0) + // The following adds about 10% performance ... #if !defined(USE_OPENMP) -- cgit v1.2.3-70-g09d2 From 6540842bc7c2af3fe02292dcbf00485a449539d9 Mon Sep 17 00:00:00 2001 From: Guru Date: Sun, 19 Apr 2015 10:34:36 +0800 Subject: system1.c: added some info and correct EPR-numbers for wboyo set --- src/mame/drivers/system1.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/system1.c b/src/mame/drivers/system1.c index 9a74bd79f73..d1b33bd765d 100644 --- a/src/mame/drivers/system1.c +++ b/src/mame/drivers/system1.c @@ -3660,9 +3660,8 @@ ROM_START( raflesia ) ROM_LOAD( "epr-7410.05", 0xc000, 0x4000, CRC(ced74789) SHA1(d0ad845bfe83412ac8d43125e1c50d0581a5b47e) ) /* epr-7410.2 */ ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "pr-5317.76", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) - /* pr-5317.106 */ -ROM_END + ROM_LOAD( "pr-5317.76", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) /* pr-5317.106 */ + ROM_END ROM_START( wboy ) @@ -3692,11 +3691,17 @@ ROM_START( wboy ) ROM_LOAD( "pr-5317.76", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) ) ROM_END + +/* Wonder Boy (Escape, Sega license) +PCB: 834-3984-09 WONDER BOY +CPU: 317-0003 (encrypted Z80 @ IC137) +PAL: 315-5063 (PAL @ IC67) +*/ ROM_START( wboyo ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "epr-.116", 0x0000, 0x4000, CRC(51d27534) SHA1(1cbc7201aacde89857f83b2600f309b514c5e758) ) /* encrypted */ - ROM_LOAD( "epr-.109", 0x4000, 0x4000, CRC(e29d1cd1) SHA1(f6ff4a6fffea77cc5706549bb2d8bf9e96ed0be0) ) /* encrypted */ - ROM_LOAD( "epr-7491.96", 0x8000, 0x4000, CRC(1f7d0efe) SHA1(a1b4f8faf1614f4808df1292209c340f1490adbd) ) + ROM_LOAD( "epr-7532.116", 0x0000, 0x4000, CRC(51d27534) SHA1(1cbc7201aacde89857f83b2600f309b514c5e758) ) /* encrypted */ + ROM_LOAD( "epr-7533.109", 0x4000, 0x4000, CRC(e29d1cd1) SHA1(f6ff4a6fffea77cc5706549bb2d8bf9e96ed0be0) ) /* encrypted */ + ROM_LOAD( "epr-7534.96", 0x8000, 0x4000, CRC(1f7d0efe) SHA1(a1b4f8faf1614f4808df1292209c340f1490adbd) ) /* same contents as epr-7491.96 */ ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "epr-7498.120", 0x0000, 0x2000, CRC(78ae1e7b) SHA1(86032f443359b0bb2766e33024ed2e320aa9bc84) ) -- cgit v1.2.3-70-g09d2 From 3c3ee1d1775274c0358425c8692b5f9b82c99a8a Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 08:08:34 +0200 Subject: more conversions to std::string (nw) --- src/emu/bus/a800/a800_slot.c | 2 +- src/emu/cpu/dsp56k/inst.h | 10 ++--- src/emu/cpu/dsp56k/tables.c | 78 ++++++++++++++++++------------------- src/emu/debug/express.c | 46 +++++++++++----------- src/emu/diimage.c | 24 ++++++------ src/emu/diimage.h | 2 +- src/emu/emuopts.c | 4 +- src/emu/imagedev/floppy.c | 4 +- src/emu/mame.c | 4 +- src/emu/ui/devopt.c | 8 ++-- src/lib/util/astring.h | 24 ++++++------ src/lib/util/tagmap.h | 6 +-- src/osd/modules/font/font_windows.c | 2 +- src/osd/modules/lib/osdobj_common.h | 4 +- src/tools/chdman.c | 2 +- src/tools/src2html.c | 4 +- 16 files changed, 112 insertions(+), 112 deletions(-) (limited to 'src') diff --git a/src/emu/bus/a800/a800_slot.c b/src/emu/bus/a800/a800_slot.c index 0b011893a9f..ff9baade892 100644 --- a/src/emu/bus/a800/a800_slot.c +++ b/src/emu/bus/a800/a800_slot.c @@ -461,7 +461,7 @@ void a5200_cart_slot_device::get_default_card_software(std::string &result) type = identify_cart_type(&head[0]); astring info; - if (hashfile_extrainfo(*this, info) && info == "A13MIRRORING") + if (hashfile_extrainfo(*this, info) && info.cmp("A13MIRRORING")==0) type = A5200_16K_2CHIPS; } if (type < A5200_4K) diff --git a/src/emu/cpu/dsp56k/inst.h b/src/emu/cpu/dsp56k/inst.h index bad517ab171..b4b5c3e1688 100644 --- a/src/emu/cpu/dsp56k/inst.h +++ b/src/emu/cpu/dsp56k/inst.h @@ -358,7 +358,7 @@ public: assemble_D_from_P_table(BITSn(word0,0x0020), BITSn(word0,0x001f), dString); - if (dString == "!!") + if (dString.cmp("!!")==0) return false; switch(BITSn(word1,0x1f00)) @@ -1847,7 +1847,7 @@ public: void disassemble(astring& retString) const { astring ts = m_sign; - if (ts != "-") ts = ""; + if (ts.cmp("-") != 0) ts = ""; retString = "mac " + ts + regIdAsString(m_source) + "," + @@ -1941,7 +1941,7 @@ public: void disassemble(astring& retString) const { astring ts = m_sign; - if (ts != "-") ts = ""; + if (ts.cmp("-")!=0) ts = ""; retString = "macr " + ts + regIdAsString(m_source) + "," + @@ -2685,7 +2685,7 @@ public: void disassemble(astring& retString) const { astring ts = m_sign; - if (ts != "-") ts = ""; + if (ts.cmp("-")!=0) ts = ""; retString = "mpy " + ts + regIdAsString(m_source) + "," + @@ -2781,7 +2781,7 @@ public: void disassemble(astring& retString) const { astring ts = m_sign; - if (ts != "-") ts = ""; + if (ts.cmp("-") != 0) ts = ""; retString = "mpyr " + ts + regIdAsString(m_source) + "," + diff --git a/src/emu/cpu/dsp56k/tables.c b/src/emu/cpu/dsp56k/tables.c index 36af446cb96..727d7772d6e 100644 --- a/src/emu/cpu/dsp56k/tables.c +++ b/src/emu/cpu/dsp56k/tables.c @@ -831,45 +831,45 @@ astring opMnemonicAsString(const op_mnem& mnem) reg_id stringAsRegID(const astring& str) { - if (str == "X") return iX; - if (str == "X0") return iX0; - if (str == "X1") return iX1; - if (str == "Y") return iY; - if (str == "Y0") return iY0; - if (str == "Y1") return iY1; - if (str == "A") return iA; - if (str == "A0") return iA0; - if (str == "A1") return iA1; - if (str == "A2") return iA2; - if (str == "B") return iB; - if (str == "B0") return iB0; - if (str == "B1") return iB1; - if (str == "B2") return iB2; - if (str == "R0") return iR0; - if (str == "R1") return iR1; - if (str == "R2") return iR2; - if (str == "R3") return iR3; - if (str == "N0") return iN0; - if (str == "N1") return iN1; - if (str == "N2") return iN2; - if (str == "N3") return iN3; - if (str == "M0") return iM0; - if (str == "M1") return iM1; - if (str == "M2") return iM2; - if (str == "M3") return iM3; - if (str == "LC") return iLC; - if (str == "SR") return iSR; - if (str == "OMR") return iOMR; - if (str == "SP") return iSP; - if (str == "SSH") return iSSH; - if (str == "SSL") return iSSL; - if (str == "LA") return iLA; - if (str == "MR") return iMR; - if (str == "CCR") return iCCR; - if (str == "F") return iF; - if (str == "^F") return iFHAT; - if (str == "!!") return iINVALID; - if (str == "?") return iWEIRD; + if (str.cmp("X")==0) return iX; + if (str.cmp("X0") == 0) return iX0; + if (str.cmp("X1") == 0) return iX1; + if (str.cmp("Y") == 0) return iY; + if (str.cmp("Y0") == 0) return iY0; + if (str.cmp("Y1") == 0) return iY1; + if (str.cmp("A") == 0) return iA; + if (str.cmp("A0") == 0) return iA0; + if (str.cmp("A1") == 0) return iA1; + if (str.cmp("A2") == 0) return iA2; + if (str.cmp("B") == 0) return iB; + if (str.cmp("B0") == 0) return iB0; + if (str.cmp("B1") == 0) return iB1; + if (str.cmp("B2") == 0) return iB2; + if (str.cmp("R0") == 0) return iR0; + if (str.cmp("R1") == 0) return iR1; + if (str.cmp("R2") == 0) return iR2; + if (str.cmp("R3") == 0) return iR3; + if (str.cmp("N0") == 0) return iN0; + if (str.cmp("N1") == 0) return iN1; + if (str.cmp("N2") == 0) return iN2; + if (str.cmp("N3") == 0) return iN3; + if (str.cmp("M0") == 0) return iM0; + if (str.cmp("M1") == 0) return iM1; + if (str.cmp("M2") == 0) return iM2; + if (str.cmp("M3") == 0) return iM3; + if (str.cmp("LC") == 0) return iLC; + if (str.cmp("SR") == 0) return iSR; + if (str.cmp("OMR") == 0) return iOMR; + if (str.cmp("SP") == 0) return iSP; + if (str.cmp("SSH") == 0) return iSSH; + if (str.cmp("SSL") == 0) return iSSL; + if (str.cmp("LA") == 0) return iLA; + if (str.cmp("MR") == 0) return iMR; + if (str.cmp("CCR") == 0) return iCCR; + if (str.cmp("F") == 0) return iF; + if (str.cmp("^F") == 0) return iFHAT; + if (str.cmp("!!") == 0) return iINVALID; + if (str.cmp("?") == 0)return iWEIRD; return iINVALID; } diff --git a/src/emu/debug/express.c b/src/emu/debug/express.c index 28b2e408e3b..6269a25aa3a 100644 --- a/src/emu/debug/express.c +++ b/src/emu/debug/express.c @@ -861,14 +861,14 @@ void parsed_expression::parse_symbol_or_number(parse_token &token, const char *& { // accumulate a lower-case version of the symbol const char *stringstart = string; - astring buffer; + std::string buffer; while (1) { static const char valid[] = "abcdefghijklmnopqrstuvwxyz0123456789_$#.:"; char val = tolower((UINT8)string[0]); if (val == 0 || strchr(valid, val) == NULL) break; - buffer.cat(&val, 1); + buffer.append(&val, 1); string++; } @@ -880,49 +880,49 @@ void parsed_expression::parse_symbol_or_number(parse_token &token, const char *& } // empty string is automatically invalid - if (!buffer) + if (buffer.empty()) throw expression_error(expression_error::INVALID_TOKEN, token.offset()); // check for wordy variants on standard operators - if (buffer == "bnot") + if (buffer.compare("bnot")==0) { token.configure_operator(TVL_NOT, 2); return; } - if (buffer == "plus") + if (buffer.compare("plus") == 0) { token.configure_operator(TVL_ADD, 4); return; } - if (buffer == "minus") + if (buffer.compare("minus") == 0) { token.configure_operator(TVL_SUBTRACT, 4); return; } - if (buffer == "times" || buffer == "mul") + if (buffer.compare("times") == 0 || buffer.compare("mul") == 0) { token.configure_operator(TVL_MULTIPLY, 3); return; } - if (buffer == "div") + if (buffer.compare("div") == 0) { token.configure_operator(TVL_DIVIDE, 3); return; } - if (buffer == "mod") + if (buffer.compare("mod") == 0) { token.configure_operator(TVL_MODULO, 3); return; } - if (buffer == "lt") + if (buffer.compare("lt") == 0) { token.configure_operator(TVL_LESS, 6); return; } - if (buffer == "le") + if (buffer.compare("le") == 0) { token.configure_operator(TVL_LESSOREQUAL, 6); return; } - if (buffer == "gt") + if (buffer.compare("gt") == 0) { token.configure_operator(TVL_GREATER, 6); return; } - if (buffer == "ge") + if (buffer.compare("ge") == 0) { token.configure_operator(TVL_GREATEROREQUAL, 6); return; } - if (buffer == "eq") + if (buffer.compare("eq") == 0) { token.configure_operator(TVL_EQUAL, 7); return; } - if (buffer == "ne") + if (buffer.compare("ne") == 0) { token.configure_operator(TVL_NOTEQUAL, 7); return; } - if (buffer == "not") + if (buffer.compare("not") == 0) { token.configure_operator(TVL_COMPLEMENT, 2); return; } - if (buffer == "and") + if (buffer.compare("and") == 0) { token.configure_operator(TVL_LAND, 8); return; } - if (buffer == "band") + if (buffer.compare("band") == 0) { token.configure_operator(TVL_BAND, 8); return; } - if (buffer == "or") + if (buffer.compare("or") == 0) { token.configure_operator(TVL_LOR, 12); return; } - if (buffer == "bor") + if (buffer.compare("bor") == 0) { token.configure_operator(TVL_BOR, 10); return; } - if (buffer == "bxor") + if (buffer.compare("bxor") == 0) { token.configure_operator(TVL_BXOR, 9); return; } - if (buffer == "lshift") + if (buffer.compare("lshift") == 0) { token.configure_operator(TVL_LSHIFT, 5); return; } - if (buffer == "rshift") + if (buffer.compare("rshift") == 0) { token.configure_operator(TVL_RSHIFT, 5); return; } // if we have an 0x prefix, we must be a hex value diff --git a/src/emu/diimage.c b/src/emu/diimage.c index e9e4963f227..fb890c08dac 100644 --- a/src/emu/diimage.c +++ b/src/emu/diimage.c @@ -1171,18 +1171,18 @@ void device_image_interface::update_names(const device_type device_type, const c // case. //------------------------------------------------- -void device_image_interface::software_name_split(const char *swlist_swname, astring &swlist_name, astring &swname, astring &swpart) +void device_image_interface::software_name_split(const char *swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart) { // reset all output parameters - swlist_name.reset(); - swname.reset(); - swpart.reset(); + swlist_name.clear(); + swname.clear(); + swpart.clear(); // if no colon, this is the swname by itself const char *split1 = strchr(swlist_swname, ':'); if (split1 == NULL) { - swname.cpy(swlist_swname); + swname.assign(swlist_swname); return; } @@ -1190,22 +1190,22 @@ void device_image_interface::software_name_split(const char *swlist_swname, astr const char *split2 = strchr(split1 + 1, ':'); if (split2 == NULL) { - swname.cpy(swlist_swname, split1 - swlist_swname); - swpart.cpy(split1 + 1); + swname.assign(swlist_swname, split1 - swlist_swname); + swpart.assign(split1 + 1); return; } // if two colons present, split into 3 parts - swlist_name.cpy(swlist_swname, split1 - swlist_swname); - swname.cpy(split1 + 1, split2 - (split1 + 1)); - swpart.cpy(split2 + 1); + swlist_name.assign(swlist_swname, split1 - swlist_swname); + swname.assign(split1 + 1, split2 - (split1 + 1)); + swpart.assign(split2 + 1); } software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface) { // split full software name into software list name and short software name - astring swlist_name, swinfo_name, swpart_name; + std::string swlist_name, swinfo_name, swpart_name; software_name_split(path, swlist_name, swinfo_name, swpart_name); // determine interface @@ -1217,7 +1217,7 @@ software_part *device_image_interface::find_software_item(const char *path, bool software_list_device_iterator deviter(device().mconfig().root_device()); for (software_list_device *swlistdev = deviter.first(); swlistdev != NULL; swlistdev = deviter.next()) { - if (swlist_name == swlistdev->list_name() || !(swlist_name.len() > 0)) + if (swlist_name.compare(swlistdev->list_name())==0 || !(swlist_name.length() > 0)) { software_info *info = swlistdev->find(swinfo_name.c_str()); if (info != NULL) diff --git a/src/emu/diimage.h b/src/emu/diimage.h index deaa9f8e9a1..459bcacac4b 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -234,7 +234,7 @@ public: bool load_software(software_list_device &swlist, const char *swname, const rom_entry *entry); int reopen_for_write(const char *path); - static void software_name_split(const char *swlist_swname, astring &swlist_name, astring &swname, astring &swpart); + static void software_name_split(const char *swlist_swname, std::string &swlist_name, std::string &swname, std::string &swpart); protected: bool load_internal(const char *path, bool is_create, int create_format, option_resolution *create_args, bool just_load); diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c index 1b16624fa53..74a452d00af 100644 --- a/src/emu/emuopts.c +++ b/src/emu/emuopts.c @@ -484,10 +484,10 @@ const game_driver *emu_options::system() const void emu_options::set_system_name(const char *name) { // remember the original system name - astring old_system_name(system_name()); + std::string old_system_name(system_name()); // if the system name changed, fix up the device options - if (old_system_name != name) + if (old_system_name.compare(name)!=0) { // first set the new name astring error; diff --git a/src/emu/imagedev/floppy.c b/src/emu/imagedev/floppy.c index baa5ea514a2..6fe78ec14d7 100644 --- a/src/emu/imagedev/floppy.c +++ b/src/emu/imagedev/floppy.c @@ -862,7 +862,7 @@ ui_menu_control_floppy_image::~ui_menu_control_floppy_image() void ui_menu_control_floppy_image::do_load_create() { floppy_image_device *fd = static_cast(image); - if(input_filename == "") { + if(input_filename.cmp("")==0) { int err = fd->create(output_filename.c_str(), 0, NULL); if (err != 0) { popmessage("Error: %s", fd->error()); @@ -871,7 +871,7 @@ void ui_menu_control_floppy_image::do_load_create() fd->setup_write(output_format); } else { int err = fd->load(input_filename.c_str()); - if(!err && output_filename != "") + if(!err && output_filename.cmp("")!=0) err = fd->reopen_for_write(output_filename.c_str()); if(err != 0) { popmessage("Error: %s", fd->error()); diff --git a/src/emu/mame.c b/src/emu/mame.c index 9632ab04a79..297fe1c6d9b 100644 --- a/src/emu/mame.c +++ b/src/emu/mame.c @@ -225,8 +225,8 @@ int machine_manager::execute() // check the state of the machine if (m_new_driver_pending) { - astring old_system_name(m_options.system_name()); - bool new_system = (old_system_name != m_new_driver_pending->name); + std::string old_system_name(m_options.system_name()); + bool new_system = (old_system_name.compare(m_new_driver_pending->name)!=0); // first: if we scheduled a new system, remove device options of the old system // notice that, if we relaunch the same system, there is no effect on the emulation if (new_system) diff --git a/src/emu/ui/devopt.c b/src/emu/ui/devopt.c index b203eb24324..c1e26ed9049 100644 --- a/src/emu/ui/devopt.c +++ b/src/emu/ui/devopt.c @@ -158,11 +158,11 @@ void ui_menu_device_config::populate() int bios = 0; if (dev->rom_region()) { - astring bios_str; + std::string bios_str; // first loop through roms in search of default bios (shortname) for (const rom_entry *rom = dev->rom_region(); !ROMENTRY_ISEND(rom); rom++) if (ROMENTRY_ISDEFAULT_BIOS(rom)) - bios_str.cpy(ROM_GETNAME(rom)); + bios_str.assign(ROM_GETNAME(rom)); // then loop again to count bios options and to get the default bios complete name for (const rom_entry *rom = dev->rom_region(); !ROMENTRY_ISEND(rom); rom++) @@ -170,8 +170,8 @@ void ui_menu_device_config::populate() if (ROMENTRY_ISSYSTEM_BIOS(rom)) { bios++; - if (bios_str == ROM_GETNAME(rom)) - bios_str.cpy(ROM_GETHASHDATA(rom)); + if (bios_str.compare(ROM_GETNAME(rom))==0) + bios_str.assign(ROM_GETHASHDATA(rom)); } } diff --git a/src/lib/util/astring.h b/src/lib/util/astring.h index 089ee585dae..b17ae17076d 100644 --- a/src/lib/util/astring.h +++ b/src/lib/util/astring.h @@ -48,18 +48,18 @@ public: friend astring operator+(const char *lhs, const astring &rhs) { return astring(lhs) += rhs; } // comparison operators - bool operator==(const char *string) const { return (cmp(string) == 0); } - bool operator==(const astring &string) const { return (cmp(string) == 0); } - bool operator!=(const char *string) const { return (cmp(string) != 0); } - bool operator!=(const astring &string) const { return (cmp(string) != 0); } - bool operator<(const char *string) const { return (cmp(string) < 0); } - bool operator<(const astring &string) const { return (cmp(string) < 0); } - bool operator<=(const char *string) const { return (cmp(string) <= 0); } - bool operator<=(const astring &string) const { return (cmp(string) <= 0); } - bool operator>(const char *string) const { return (cmp(string) > 0); } - bool operator>(const astring &string) const { return (cmp(string) > 0); } - bool operator>=(const char *string) const { return (cmp(string) >= 0); } - bool operator>=(const astring &string) const { return (cmp(string) >= 0); } +// bool operator==(const char *string) const { return (cmp(string) == 0); } +// bool operator==(const astring &string) const { return (cmp(string) == 0); } +// bool operator!=(const char *string) const { return (cmp(string) != 0); } +// bool operator!=(const astring &string) const { return (cmp(string) != 0); } +// bool operator<(const char *string) const { return (cmp(string) < 0); } +// bool operator<(const astring &string) const { return (cmp(string) < 0); } +// bool operator<=(const char *string) const { return (cmp(string) <= 0); } +// bool operator<=(const astring &string) const { return (cmp(string) <= 0); } +// bool operator>(const char *string) const { return (cmp(string) > 0); } +// bool operator>(const astring &string) const { return (cmp(string) > 0); } +// bool operator>=(const char *string) const { return (cmp(string) >= 0); } +// bool operator>=(const astring &string) const { return (cmp(string) >= 0); } // character access operators char operator[](int index) const { return (index < len()) ? m_text[index] : 0; } diff --git a/src/lib/util/tagmap.h b/src/lib/util/tagmap.h index a2b82e2da96..50550f3e6c3 100644 --- a/src/lib/util/tagmap.h +++ b/src/lib/util/tagmap.h @@ -15,7 +15,7 @@ #include "osdcore.h" #include "coretmpl.h" -#include "astring.h" +#include #ifdef MAME_DEBUG #include "eminline.h" #endif @@ -67,7 +67,7 @@ public: m_object(object) { } // accessors - const astring &tag() const { return m_tag; } + const std::string &tag() const { return m_tag; } _ElementType object() const { return m_object; } // setters @@ -81,7 +81,7 @@ public: // internal state entry_t * m_next; UINT32 m_fullhash; - astring m_tag; + std::string m_tag; _ElementType m_object; }; diff --git a/src/osd/modules/font/font_windows.c b/src/osd/modules/font/font_windows.c index 9056b98054a..162a8956f89 100644 --- a/src/osd/modules/font/font_windows.c +++ b/src/osd/modules/font/font_windows.c @@ -47,7 +47,7 @@ bool osd_font_windows::open(const char *font_path, const char *_name, int &heigh { // accept qualifiers from the name astring name(_name); - if (name == "default") name = "Tahoma"; + if (name.cmp("default")==0) name = "Tahoma"; bool bold = (name.replace(0, "[B]", "") + name.replace(0, "[b]", "") > 0); bool italic = (name.replace(0, "[I]", "") + name.replace(0, "[i]", "") > 0); diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index e6a2a7a0311..366e832fd03 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -240,8 +240,8 @@ private: // FIXME: should be elsewhere osd_module *select_module_options(const core_options &opts, const astring &opt_name) { - astring opt_val = opts.value(opt_name.c_str()); - if (opt_val == "auto") + std::string opt_val = opts.value(opt_name.c_str()); + if (opt_val.compare("auto")==0) opt_val = ""; else if (!m_mod_man.type_has_name(opt_name.c_str(), opt_val.c_str())) { diff --git a/src/tools/chdman.c b/src/tools/chdman.c index d80e6d79921..a416772729d 100644 --- a/src/tools/chdman.c +++ b/src/tools/chdman.c @@ -1075,7 +1075,7 @@ static void parse_compression(const parameters_t ¶ms, chd_codec_type compres return; // special case: 'none' - if (*compression_str == "none") + if (compression_str->cmp("none")==0) { compression[0] = compression[1] = compression[2] = compression[3] = CHD_CODEC_NONE; return; diff --git a/src/tools/src2html.c b/src/tools/src2html.c index 33dd77604f4..7d0c55fa6c0 100644 --- a/src/tools/src2html.c +++ b/src/tools/src2html.c @@ -833,7 +833,7 @@ static bool find_include_file(astring &srcincpath, int srcrootlen, int dstrootle for (include_path *curpath = incpaths; curpath != NULL; curpath = curpath->next) { // a '.' include path is specially treated - if (curpath->path == ".") + if (curpath->path.cmp(".")==0) srcincpath.cpysubstr(srcfile, 0, srcfile.rchr(0, PATH_SEPARATOR[0])); else srcincpath.cpysubstr(srcfile, 0, srcrootlen + 1).cat(curpath->path); @@ -845,7 +845,7 @@ static bool find_include_file(astring &srcincpath, int srcrootlen, int dstrootle { // handle .. by removing a chunk from the incpath astring pathpart(filename, lastsepindex, sepindex - lastsepindex); - if (pathpart == "..") + if (pathpart.cmp("..")==0) { sepindex = srcincpath.rchr(0, PATH_SEPARATOR[0]); if (sepindex != -1) -- cgit v1.2.3-70-g09d2 From 1b419ea06a5ca365f39918fa9971f5506977b49b Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sun, 19 Apr 2015 09:08:26 +0200 Subject: Fix for aes slot regression (OG please check) (nw) --- src/emu/bus/neogeo/neogeo_slot.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/emu/bus/neogeo/neogeo_slot.h b/src/emu/bus/neogeo/neogeo_slot.h index 79bfdb4dc99..5fc1ab8f730 100644 --- a/src/emu/bus/neogeo/neogeo_slot.h +++ b/src/emu/bus/neogeo/neogeo_slot.h @@ -45,7 +45,7 @@ public: virtual DECLARE_READ16_MEMBER(read_rom); UINT16* get_rom_base() { if (m_cart) { return m_cart->get_rom_base(); } else { return 0; } } - UINT32 get_rom_size() { if (m_cart) { return m_cart->get_rom_size()*sizeof(UINT16); } else { return 0; } } + UINT32 get_rom_size() { if (m_cart) { return m_cart->get_rom_size(); } else { return 0; } } UINT8* get_fixed_base() { if (m_cart) { return m_cart->get_fixed_base(); } else { return 0; } } UINT32 get_fixed_size() { if (m_cart) { return m_cart->get_fixed_size(); } else { return 0; } } UINT8* get_sprites_base() { if (m_cart) { return m_cart->get_sprites_base(); } else { return 0; } } -- cgit v1.2.3-70-g09d2 From 3dcf442d7b85e78db30bd5ff5e936b2045f62f0c Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 09:29:57 +0200 Subject: astring to std::string in bus section (nw) --- src/emu/bus/a7800/a78_slot.c | 44 +++++++++++++++++------------------ src/emu/bus/a800/a800_slot.c | 8 +++---- src/emu/bus/apf/slot.c | 4 ++-- src/emu/bus/arcadia/slot.c | 4 ++-- src/emu/bus/astrocde/slot.c | 4 ++-- src/emu/bus/chanf/slot.c | 4 ++-- src/emu/bus/crvision/slot.c | 4 ++-- src/emu/bus/gameboy/gb_slot.c | 4 ++-- src/emu/bus/gba/gba_slot.c | 4 ++-- src/emu/bus/generic/slot.c | 4 ++-- src/emu/bus/intv/ecs.c | 4 ++-- src/emu/bus/intv/slot.c | 8 +++---- src/emu/bus/macpds/pds_tpdfpd.c | 4 ++-- src/emu/bus/macpds/pds_tpdfpd.h | 2 +- src/emu/bus/megadrive/md_slot.c | 16 ++++++------- src/emu/bus/msx_slot/cartridge.c | 4 ++-- src/emu/bus/nes/nes_ines.inc | 4 ++-- src/emu/bus/nes/nes_slot.c | 8 +++---- src/emu/bus/nubus/nubus_48gc.c | 2 +- src/emu/bus/nubus/nubus_48gc.h | 2 +- src/emu/bus/nubus/nubus_m2hires.c | 4 ++-- src/emu/bus/nubus/nubus_m2hires.h | 2 +- src/emu/bus/nubus/nubus_m2video.c | 4 ++-- src/emu/bus/nubus/nubus_m2video.h | 2 +- src/emu/bus/nubus/nubus_radiustpd.c | 4 ++-- src/emu/bus/nubus/nubus_radiustpd.h | 2 +- src/emu/bus/nubus/nubus_spec8.c | 4 ++-- src/emu/bus/nubus/nubus_spec8.h | 2 +- src/emu/bus/nubus/nubus_specpdq.c | 4 ++-- src/emu/bus/nubus/nubus_specpdq.h | 2 +- src/emu/bus/nubus/nubus_wsportrait.c | 4 ++-- src/emu/bus/nubus/nubus_wsportrait.h | 2 +- src/emu/bus/nubus/pds30_30hr.c | 4 ++-- src/emu/bus/nubus/pds30_30hr.h | 2 +- src/emu/bus/nubus/pds30_cb264.c | 4 ++-- src/emu/bus/nubus/pds30_cb264.h | 2 +- src/emu/bus/nubus/pds30_mc30.c | 4 ++-- src/emu/bus/nubus/pds30_mc30.h | 2 +- src/emu/bus/nubus/pds30_procolor816.c | 4 ++-- src/emu/bus/nubus/pds30_procolor816.h | 2 +- src/emu/bus/nubus/pds30_sigmalview.c | 4 ++-- src/emu/bus/nubus/pds30_sigmalview.h | 2 +- src/emu/bus/odyssey2/slot.c | 4 ++-- src/emu/bus/pce/pce_slot.c | 4 ++-- src/emu/bus/saturn/sat_slot.c | 4 ++-- src/emu/bus/scv/slot.c | 4 ++-- src/emu/bus/sega8/sega8_slot.c | 4 ++-- src/emu/bus/snes/snes_slot.c | 6 ++--- src/emu/bus/vboy/slot.c | 4 ++-- src/emu/bus/vc4000/slot.c | 4 ++-- src/emu/bus/vcs/vcs_slot.c | 4 ++-- src/emu/bus/vectrex/slot.c | 4 ++-- src/emu/bus/wswan/slot.c | 4 ++-- src/emu/hashfile.c | 12 ++++------ src/emu/hashfile.h | 2 +- 55 files changed, 131 insertions(+), 133 deletions(-) (limited to 'src') diff --git a/src/emu/bus/a7800/a78_slot.c b/src/emu/bus/a7800/a78_slot.c index 9bb1010ceeb..ccc334ac459 100644 --- a/src/emu/bus/a7800/a78_slot.c +++ b/src/emu/bus/a7800/a78_slot.c @@ -66,8 +66,8 @@ void device_a78_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(A78SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(A78SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; @@ -733,75 +733,75 @@ void a78_cart_slot_device::internal_header_logging(UINT8 *header, UINT32 len) UINT8 head_ctrl1 = header[55]; UINT8 head_ctrl2 = header[56]; UINT8 head_ispal = header[57]; - astring cart_mapper, ctrl1, ctrl2; + std::string cart_mapper, ctrl1, ctrl2; memcpy(head_title, header + 0x11, 0x20); switch (head_mapper) { case 0x0000: - cart_mapper.cpy("No Bankswitch"); + cart_mapper.assign("No Bankswitch"); break; case 0x0001: - cart_mapper.cpy("No Bankswitch + POKEY"); + cart_mapper.assign("No Bankswitch + POKEY"); break; case 0x0002: - cart_mapper.cpy("SuperCart Bankswitch"); + cart_mapper.assign("SuperCart Bankswitch"); break; case 0x0003: - cart_mapper.cpy("SuperCart Bankswitch + POKEY"); + cart_mapper.assign("SuperCart Bankswitch + POKEY"); break; case 0x0006: - cart_mapper.cpy("SuperCart Bankswitch + RAM"); + cart_mapper.assign("SuperCart Bankswitch + RAM"); break; case 0x000a: - cart_mapper.cpy("SuperCart 9Banks"); + cart_mapper.assign("SuperCart 9Banks"); break; case 0x000b: - cart_mapper.cpy("SuperCart XM Compatible"); + cart_mapper.assign("SuperCart XM Compatible"); break; case 0x0020: - cart_mapper.cpy("SuperCart Bankswitch + 32K RAM"); + cart_mapper.assign("SuperCart Bankswitch + 32K RAM"); break; case 0x0100: - cart_mapper.cpy("Activision Bankswitch"); + cart_mapper.assign("Activision Bankswitch"); break; case 0x0200: - cart_mapper.cpy("Absolute Bankswitch"); + cart_mapper.assign("Absolute Bankswitch"); break; default: - cart_mapper.cpy("Unknown mapper"); + cart_mapper.assign("Unknown mapper"); break; } switch (head_ctrl1) { case 0x00: - ctrl1.cpy("None"); + ctrl1.assign("None"); break; case 0x01: - ctrl1.cpy("Joystick"); + ctrl1.assign("Joystick"); break; case 0x02: - ctrl1.cpy("Light Gun"); + ctrl1.assign("Light Gun"); break; default: - ctrl1.cpy("Unknown controller"); + ctrl1.assign("Unknown controller"); break; } switch (head_ctrl2) { case 0x00: - ctrl2.cpy("None"); + ctrl2.assign("None"); break; case 0x01: - ctrl2.cpy("Joystick"); + ctrl2.assign("Joystick"); break; case 0x02: - ctrl2.cpy("Light Gun"); + ctrl2.assign("Light Gun"); break; default: - ctrl2.cpy("Unknown controller"); + ctrl2.assign("Unknown controller"); break; } diff --git a/src/emu/bus/a800/a800_slot.c b/src/emu/bus/a800/a800_slot.c index ff9baade892..6ea37620143 100644 --- a/src/emu/bus/a800/a800_slot.c +++ b/src/emu/bus/a800/a800_slot.c @@ -63,8 +63,8 @@ void device_a800_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(A800SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(A800SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; @@ -460,8 +460,8 @@ void a5200_cart_slot_device::get_default_card_software(std::string &result) core_fread(m_file, &head[0], 0x10); type = identify_cart_type(&head[0]); - astring info; - if (hashfile_extrainfo(*this, info) && info.cmp("A13MIRRORING")==0) + std::string info; + if (hashfile_extrainfo(*this, info) && info.compare("A13MIRRORING")==0) type = A5200_16K_2CHIPS; } if (type < A5200_4K) diff --git a/src/emu/bus/apf/slot.c b/src/emu/bus/apf/slot.c index 860b38419ea..0e0a29a6846 100644 --- a/src/emu/bus/apf/slot.c +++ b/src/emu/bus/apf/slot.c @@ -49,8 +49,8 @@ void device_apf_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(APFSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(APFSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/arcadia/slot.c b/src/emu/bus/arcadia/slot.c index f9452ad7d3d..3106a319bf9 100644 --- a/src/emu/bus/arcadia/slot.c +++ b/src/emu/bus/arcadia/slot.c @@ -49,8 +49,8 @@ void device_arcadia_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(EA2001SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(EA2001SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/astrocde/slot.c b/src/emu/bus/astrocde/slot.c index 7ea90e171bb..bc7714bf689 100644 --- a/src/emu/bus/astrocde/slot.c +++ b/src/emu/bus/astrocde/slot.c @@ -49,8 +49,8 @@ void device_astrocade_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(ASTROCADESLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(ASTROCADESLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/chanf/slot.c b/src/emu/bus/chanf/slot.c index 6295deb3296..92abc56c93e 100644 --- a/src/emu/bus/chanf/slot.c +++ b/src/emu/bus/chanf/slot.c @@ -49,8 +49,8 @@ void device_channelf_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(CHANFSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(CHANFSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/crvision/slot.c b/src/emu/bus/crvision/slot.c index 0abbded4f1a..ac7fa6ef418 100644 --- a/src/emu/bus/crvision/slot.c +++ b/src/emu/bus/crvision/slot.c @@ -49,8 +49,8 @@ void device_crvision_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(CRVSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(CRVSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/gameboy/gb_slot.c b/src/emu/bus/gameboy/gb_slot.c index a78cc09c3bb..08e124dc284 100644 --- a/src/emu/bus/gameboy/gb_slot.c +++ b/src/emu/bus/gameboy/gb_slot.c @@ -61,8 +61,8 @@ void device_gb_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(GBSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(GBSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/gba/gba_slot.c b/src/emu/bus/gba/gba_slot.c index 1e25f392e05..1122958a4b5 100644 --- a/src/emu/bus/gba/gba_slot.c +++ b/src/emu/bus/gba/gba_slot.c @@ -48,8 +48,8 @@ void device_gba_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(GBASLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(GBASLOT_ROM_REGION_TAG); // we always alloc 32MB of rom region! m_rom = (UINT32 *)device().machine().memory().region_alloc(tempstring.c_str(), 0x2000000, 4, ENDIANNESS_LITTLE)->base(); m_rom_size = size; diff --git a/src/emu/bus/generic/slot.c b/src/emu/bus/generic/slot.c index 247044f043f..418f0870526 100644 --- a/src/emu/bus/generic/slot.c +++ b/src/emu/bus/generic/slot.c @@ -59,8 +59,8 @@ void device_generic_cart_interface::rom_alloc(size_t size, int width, endianness { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(GENERIC_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(GENERIC_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, width, endian)->base(); m_rom_size = size; } diff --git a/src/emu/bus/intv/ecs.c b/src/emu/bus/intv/ecs.c index 7862b1cc1e2..67da5066caa 100644 --- a/src/emu/bus/intv/ecs.c +++ b/src/emu/bus/intv/ecs.c @@ -54,8 +54,8 @@ void intv_ecs_device::device_start() // if the ECS is mounted directly in the system, use device rom and alloc RAM if (m_rom == NULL) { - astring region_tag; - m_rom = memregion(region_tag.cpy(tag()).cat(":ecs").c_str())->base(); + std::string region_tag; + m_rom = memregion(region_tag.assign(tag()).append(":ecs").c_str())->base(); } if (m_ram.empty()) { diff --git a/src/emu/bus/intv/slot.c b/src/emu/bus/intv/slot.c index 956668a5133..9f1f8434bf6 100644 --- a/src/emu/bus/intv/slot.c +++ b/src/emu/bus/intv/slot.c @@ -118,8 +118,8 @@ void device_intv_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(INTVSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(INTVSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); memset(m_rom, 0xff, size); m_rom_size = size; @@ -310,7 +310,7 @@ int intv_cart_slot_device::load_fullpath() // 7. extra = 1 ECS, 2 Intellivoice int start, size; int mapper, rom[5], ram, extra; - astring extrainfo; + std::string extrainfo; m_cart->rom_alloc(0x20000, tag()); ROM = (UINT8 *)m_cart->get_rom_base(); @@ -479,7 +479,7 @@ void intv_cart_slot_device::get_default_card_software(std::string &result) // assume it's .BIN and try to use .hsi file to determine type (just RAM) int start; int mapper, rom[5], ram, extra; - astring extrainfo; + std::string extrainfo; if (hashfile_extrainfo(*this, extrainfo)) { diff --git a/src/emu/bus/macpds/pds_tpdfpd.c b/src/emu/bus/macpds/pds_tpdfpd.c index 1adcedcd680..fb46126eb62 100644 --- a/src/emu/bus/macpds/pds_tpdfpd.c +++ b/src/emu/bus/macpds/pds_tpdfpd.c @@ -88,7 +88,7 @@ macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, device_video_interface(mconfig, *this), device_macpds_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(SEDISPLAY_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SEDISPLAY_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -97,7 +97,7 @@ macpds_sedisplay_device::macpds_sedisplay_device(const machine_config &mconfig, device_video_interface(mconfig, *this), device_macpds_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(SEDISPLAY_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SEDISPLAY_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/macpds/pds_tpdfpd.h b/src/emu/bus/macpds/pds_tpdfpd.h index e33c505fb49..e62a9d74dff 100644 --- a/src/emu/bus/macpds/pds_tpdfpd.h +++ b/src/emu/bus/macpds/pds_tpdfpd.h @@ -43,7 +43,7 @@ public: UINT32 m_vbl_disable; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/megadrive/md_slot.c b/src/emu/bus/megadrive/md_slot.c index e215c8b91ec..59c843d39be 100644 --- a/src/emu/bus/megadrive/md_slot.c +++ b/src/emu/bus/megadrive/md_slot.c @@ -85,8 +85,8 @@ void device_md_cart_interface::rom_alloc(size_t size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(MDSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(MDSLOT_ROM_REGION_TAG); m_rom = (UINT16 *)device().machine().memory().region_alloc(tempstring.c_str(), size, 2, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } @@ -989,7 +989,7 @@ void base_md_cart_slot_device::file_logging(UINT8 *ROM8, UINT32 rom_len, UINT32 UINT32 rom_start, rom_end, ram_start, ram_end, sram_start = 0, sram_end = 0; UINT16 checksum, csum = 0; bool valid_sram = FALSE, is_pico = FALSE; - astring ctrl(""), reg(""); + std::string ctrl(""), reg(""); // LOG FILE DETAILS logerror("FILE DETAILS\n"); @@ -1027,9 +1027,9 @@ void base_md_cart_slot_device::file_logging(UINT8 *ROM8, UINT32 rom_len, UINT32 { io[i] = ROM8[0x190 + (i ^ 1)]; if (io[i] == 'J') - ctrl.cat(" - Joypad 3 buttons [J]\n"); + ctrl.append(" - Joypad 3 buttons [J]\n"); if (io[i] == '6') - ctrl.cat(" - Joypad 6 buttons [6]\n"); + ctrl.append(" - Joypad 6 buttons [6]\n"); } rom_start = (ROM8[0x1a1] << 24 | ROM8[0x1a0] << 16 | ROM8[0x1a3] << 8 | ROM8[0x1a2]); @@ -1051,11 +1051,11 @@ void base_md_cart_slot_device::file_logging(UINT8 *ROM8, UINT32 rom_len, UINT32 { country[i] = ROM8[0x1f0 + (i ^ 1)]; if (country[i] == 'J') - reg.cat(" - Japan [J]\n"); + reg.append(" - Japan [J]\n"); if (country[i] == 'U') - reg.cat(" - USA [U]\n"); + reg.append(" - USA [U]\n"); if (country[i] == 'E') - reg.cat(" - Europe [E]\n"); + reg.append(" - Europe [E]\n"); } // compute cart checksum to compare with expected one diff --git a/src/emu/bus/msx_slot/cartridge.c b/src/emu/bus/msx_slot/cartridge.c index 41bf0c48d38..fde2470802c 100644 --- a/src/emu/bus/msx_slot/cartridge.c +++ b/src/emu/bus/msx_slot/cartridge.c @@ -166,7 +166,7 @@ bool msx_slot_cartridge_device::call_load() } // Check if there's some mapper related - astring extrainfo; + std::string extrainfo; if (hashfile_extrainfo(*this, extrainfo)) { } @@ -286,7 +286,7 @@ void msx_slot_cartridge_device::get_default_card_software(std::string &result) int type = NOMAPPER; // Check if there's some mapper related information in the hashfiles - astring extrainfo; + std::string extrainfo; if (hashfile_extrainfo(*this, extrainfo)) { int extrainfo_type = -1; diff --git a/src/emu/bus/nes/nes_ines.inc b/src/emu/bus/nes/nes_ines.inc index 07b48cd7629..62ca924075d 100644 --- a/src/emu/bus/nes/nes_ines.inc +++ b/src/emu/bus/nes/nes_ines.inc @@ -342,7 +342,7 @@ void nes_cart_slot_device::call_load_ines() UINT8 header[0x10]; UINT8 mapper, submapper = 0, local_options; bool ines20 = FALSE, prg16k; - astring mapinfo; + std::string mapinfo; int pcb_id = 0, mapint1 = 0, mapint2 = 0, mapint3 = 0, mapint4 = 0; int crc_hack = 0; bool bus_conflict = FALSE; @@ -813,7 +813,7 @@ const char * nes_cart_slot_device::get_default_card_ines(UINT8 *ROM, UINT32 len) { UINT8 mapper, submapper = 0; bool ines20 = FALSE; - astring mapinfo; + std::string mapinfo; int pcb_id = 0, mapint1 = 0, mapint2 = 0, mapint3 = 0, mapint4 = 0; int crc_hack = 0; diff --git a/src/emu/bus/nes/nes_slot.c b/src/emu/bus/nes/nes_slot.c index f3dc43ccdfa..f1cc0dfb173 100644 --- a/src/emu/bus/nes/nes_slot.c +++ b/src/emu/bus/nes/nes_slot.c @@ -148,8 +148,8 @@ void device_nes_cart_interface::prg_alloc(size_t size, const char *tag) { if (m_prg == NULL) { - astring tempstring(tag); - tempstring.cat(NESSLOT_PRGROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(NESSLOT_PRGROM_REGION_TAG); m_prg = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_prg_size = size; m_prg_chunks = size / 0x4000; @@ -217,8 +217,8 @@ void device_nes_cart_interface::vrom_alloc(size_t size, const char *tag) { if (m_vrom == NULL) { - astring tempstring(tag); - tempstring.cat(NESSLOT_CHRROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(NESSLOT_CHRROM_REGION_TAG); m_vrom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_vrom_size = size; m_vrom_chunks = size / 0x2000; diff --git a/src/emu/bus/nubus/nubus_48gc.c b/src/emu/bus/nubus/nubus_48gc.c index e6a1283708b..5e450d84003 100644 --- a/src/emu/bus/nubus/nubus_48gc.c +++ b/src/emu/bus/nubus/nubus_48gc.c @@ -79,7 +79,7 @@ jmfb_device::jmfb_device(const machine_config &mconfig, device_type type, const device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(GC48_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(GC48_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_48gc.h b/src/emu/bus/nubus/nubus_48gc.h index b22c79b98f4..ad81b1b0fc1 100644 --- a/src/emu/bus/nubus/nubus_48gc.h +++ b/src/emu/bus/nubus/nubus_48gc.h @@ -45,7 +45,7 @@ public: UINT32 m_registers[0x100]; int m_xres, m_yres; bool m_is824; - astring m_assembled_tag; + std::string m_assembled_tag; }; class nubus_48gc_device : public jmfb_device diff --git a/src/emu/bus/nubus/nubus_m2hires.c b/src/emu/bus/nubus/nubus_m2hires.c index 3827b033ebc..bb222c15483 100644 --- a/src/emu/bus/nubus/nubus_m2hires.c +++ b/src/emu/bus/nubus/nubus_m2hires.c @@ -68,7 +68,7 @@ nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, const device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(M2HIRES_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(M2HIRES_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -77,7 +77,7 @@ nubus_m2hires_device::nubus_m2hires_device(const machine_config &mconfig, device device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(M2HIRES_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(M2HIRES_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_m2hires.h b/src/emu/bus/nubus/nubus_m2hires.h index ef389eff2b8..1d910d4bdf8 100644 --- a/src/emu/bus/nubus/nubus_m2hires.h +++ b/src/emu/bus/nubus/nubus_m2hires.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/nubus_m2video.c b/src/emu/bus/nubus/nubus_m2video.c index da461776532..5719270df2d 100644 --- a/src/emu/bus/nubus/nubus_m2video.c +++ b/src/emu/bus/nubus/nubus_m2video.c @@ -69,7 +69,7 @@ nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, const device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(M2VIDEO_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(M2VIDEO_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -78,7 +78,7 @@ nubus_m2video_device::nubus_m2video_device(const machine_config &mconfig, device device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(M2VIDEO_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(M2VIDEO_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_m2video.h b/src/emu/bus/nubus/nubus_m2video.h index 228e6e229c7..6e048898d0f 100644 --- a/src/emu/bus/nubus/nubus_m2video.h +++ b/src/emu/bus/nubus/nubus_m2video.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/nubus_radiustpd.c b/src/emu/bus/nubus/nubus_radiustpd.c index d78afdc8cf8..7710318b29e 100644 --- a/src/emu/bus/nubus/nubus_radiustpd.c +++ b/src/emu/bus/nubus/nubus_radiustpd.c @@ -68,7 +68,7 @@ nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, co device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(RADIUSTPD_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(RADIUSTPD_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -77,7 +77,7 @@ nubus_radiustpd_device::nubus_radiustpd_device(const machine_config &mconfig, de device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(RADIUSTPD_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(RADIUSTPD_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_radiustpd.h b/src/emu/bus/nubus/nubus_radiustpd.h index d25b4798b06..259cfbebd03 100644 --- a/src/emu/bus/nubus/nubus_radiustpd.h +++ b/src/emu/bus/nubus/nubus_radiustpd.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/nubus_spec8.c b/src/emu/bus/nubus/nubus_spec8.c index 7d691129800..4447417aefb 100644 --- a/src/emu/bus/nubus/nubus_spec8.c +++ b/src/emu/bus/nubus/nubus_spec8.c @@ -70,7 +70,7 @@ nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, const device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(SPEC8S3_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SPEC8S3_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -79,7 +79,7 @@ nubus_spec8s3_device::nubus_spec8s3_device(const machine_config &mconfig, device device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(SPEC8S3_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SPEC8S3_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_spec8.h b/src/emu/bus/nubus/nubus_spec8.h index 9af67b9bdd4..de0628fc532 100644 --- a/src/emu/bus/nubus/nubus_spec8.h +++ b/src/emu/bus/nubus/nubus_spec8.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; private: //UINT32 m_7xxxxx_regs[0x100000/4]; diff --git a/src/emu/bus/nubus/nubus_specpdq.c b/src/emu/bus/nubus/nubus_specpdq.c index 582cd04262d..f7c3abc2998 100644 --- a/src/emu/bus/nubus/nubus_specpdq.c +++ b/src/emu/bus/nubus/nubus_specpdq.c @@ -86,7 +86,7 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, const device_nubus_card_interface(mconfig, *this), m_palette(*this, "palette") { - m_assembled_tag = astring(tag).cat(":").cat(SPECPDQ_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SPECPDQ_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -96,7 +96,7 @@ nubus_specpdq_device::nubus_specpdq_device(const machine_config &mconfig, device device_nubus_card_interface(mconfig, *this), m_palette(*this, "palette") { - m_assembled_tag = astring(tag).cat(":").cat(SPECPDQ_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(SPECPDQ_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_specpdq.h b/src/emu/bus/nubus/nubus_specpdq.h index d1267ec42f3..287297d2b11 100644 --- a/src/emu/bus/nubus/nubus_specpdq.h +++ b/src/emu/bus/nubus/nubus_specpdq.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable; UINT32 m_palette_val[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; private: UINT32 m_7xxxxx_regs[0x100000/4]; diff --git a/src/emu/bus/nubus/nubus_wsportrait.c b/src/emu/bus/nubus/nubus_wsportrait.c index 30a2a6e4bbb..9d2a1be3e0c 100644 --- a/src/emu/bus/nubus/nubus_wsportrait.c +++ b/src/emu/bus/nubus/nubus_wsportrait.c @@ -71,7 +71,7 @@ nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(WSPORTRAIT_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(WSPORTRAIT_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -80,7 +80,7 @@ nubus_wsportrait_device::nubus_wsportrait_device(const machine_config &mconfig, device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(WSPORTRAIT_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(WSPORTRAIT_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/nubus_wsportrait.h b/src/emu/bus/nubus/nubus_wsportrait.h index 16a675fb4fe..52cbbbf26eb 100644 --- a/src/emu/bus/nubus/nubus_wsportrait.h +++ b/src/emu/bus/nubus/nubus_wsportrait.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/pds30_30hr.c b/src/emu/bus/nubus/pds30_30hr.c index a92044d1b98..21c3a79bf16 100644 --- a/src/emu/bus/nubus/pds30_30hr.c +++ b/src/emu/bus/nubus/pds30_30hr.c @@ -71,7 +71,7 @@ nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, co device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(XCEED30HR_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(XCEED30HR_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -80,7 +80,7 @@ nubus_xceed30hr_device::nubus_xceed30hr_device(const machine_config &mconfig, de device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(XCEED30HR_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(XCEED30HR_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/pds30_30hr.h b/src/emu/bus/nubus/pds30_30hr.h index 430a8e1249a..804877dd327 100644 --- a/src/emu/bus/nubus/pds30_30hr.h +++ b/src/emu/bus/nubus/pds30_30hr.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/pds30_cb264.c b/src/emu/bus/nubus/pds30_cb264.c index 0497ed86531..0f2655ed741 100644 --- a/src/emu/bus/nubus/pds30_cb264.c +++ b/src/emu/bus/nubus/pds30_cb264.c @@ -64,7 +64,7 @@ nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, co device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(CB264SE30_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(CB264SE30_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -73,7 +73,7 @@ nubus_cb264se30_device::nubus_cb264se30_device(const machine_config &mconfig, de device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(CB264SE30_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(CB264SE30_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/pds30_cb264.h b/src/emu/bus/nubus/pds30_cb264.h index bb315c629a7..26766072889 100644 --- a/src/emu/bus/nubus/pds30_cb264.h +++ b/src/emu/bus/nubus/pds30_cb264.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/pds30_mc30.c b/src/emu/bus/nubus/pds30_mc30.c index 0179589c9dd..87067bf4602 100644 --- a/src/emu/bus/nubus/pds30_mc30.c +++ b/src/emu/bus/nubus/pds30_mc30.c @@ -67,7 +67,7 @@ nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, co device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(XCEEDMC30_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(XCEEDMC30_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -76,7 +76,7 @@ nubus_xceedmc30_device::nubus_xceedmc30_device(const machine_config &mconfig, de device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(XCEEDMC30_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(XCEEDMC30_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/pds30_mc30.h b/src/emu/bus/nubus/pds30_mc30.h index f5dd7999c3b..7882cff534d 100644 --- a/src/emu/bus/nubus/pds30_mc30.h +++ b/src/emu/bus/nubus/pds30_mc30.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/pds30_procolor816.c b/src/emu/bus/nubus/pds30_procolor816.c index 7d09328632a..f615ae2e988 100644 --- a/src/emu/bus/nubus/pds30_procolor816.c +++ b/src/emu/bus/nubus/pds30_procolor816.c @@ -70,7 +70,7 @@ nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(PROCOLOR816_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(PROCOLOR816_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -79,7 +79,7 @@ nubus_procolor816_device::nubus_procolor816_device(const machine_config &mconfig device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(PROCOLOR816_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(PROCOLOR816_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/pds30_procolor816.h b/src/emu/bus/nubus/pds30_procolor816.h index c8d39cf82fd..41cd02d8717 100644 --- a/src/emu/bus/nubus/pds30_procolor816.h +++ b/src/emu/bus/nubus/pds30_procolor816.h @@ -44,7 +44,7 @@ public: UINT32 m_mode, m_vbl_disable, m_toggle; UINT32 m_palette[256], m_colors[3], m_count, m_clutoffs; emu_timer *m_timer; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/nubus/pds30_sigmalview.c b/src/emu/bus/nubus/pds30_sigmalview.c index 78dbb29f58e..82824d18c2b 100644 --- a/src/emu/bus/nubus/pds30_sigmalview.c +++ b/src/emu/bus/nubus/pds30_sigmalview.c @@ -64,7 +64,7 @@ nubus_lview_device::nubus_lview_device(const machine_config &mconfig, const char device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(LVIEW_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(LVIEW_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } @@ -73,7 +73,7 @@ nubus_lview_device::nubus_lview_device(const machine_config &mconfig, device_typ device_video_interface(mconfig, *this), device_nubus_card_interface(mconfig, *this) { - m_assembled_tag = astring(tag).cat(":").cat(LVIEW_SCREEN_NAME); + m_assembled_tag = std::string(tag).append(":").append(LVIEW_SCREEN_NAME); m_screen_tag = m_assembled_tag.c_str(); } diff --git a/src/emu/bus/nubus/pds30_sigmalview.h b/src/emu/bus/nubus/pds30_sigmalview.h index 13bc9b013f0..b72f7f46485 100644 --- a/src/emu/bus/nubus/pds30_sigmalview.h +++ b/src/emu/bus/nubus/pds30_sigmalview.h @@ -45,7 +45,7 @@ public: UINT32 m_palette[256]; emu_timer *m_timer; int m_protstate; - astring m_assembled_tag; + std::string m_assembled_tag; }; diff --git a/src/emu/bus/odyssey2/slot.c b/src/emu/bus/odyssey2/slot.c index 7d5a01acdc1..27776304aad 100644 --- a/src/emu/bus/odyssey2/slot.c +++ b/src/emu/bus/odyssey2/slot.c @@ -49,8 +49,8 @@ void device_o2_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(O2SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(O2SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/pce/pce_slot.c b/src/emu/bus/pce/pce_slot.c index f61d2b78b64..6fa08f76cba 100644 --- a/src/emu/bus/pce/pce_slot.c +++ b/src/emu/bus/pce/pce_slot.c @@ -51,8 +51,8 @@ void device_pce_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(PCESLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(PCESLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/saturn/sat_slot.c b/src/emu/bus/saturn/sat_slot.c index 431902e973b..ca70c4bd5f3 100644 --- a/src/emu/bus/saturn/sat_slot.c +++ b/src/emu/bus/saturn/sat_slot.c @@ -58,8 +58,8 @@ void device_sat_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(SATSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(SATSLOT_ROM_REGION_TAG); m_rom = (UINT32 *)device().machine().memory().region_alloc(tempstring.c_str(), size, 4, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/scv/slot.c b/src/emu/bus/scv/slot.c index 93605370f84..0dbe91be6e0 100644 --- a/src/emu/bus/scv/slot.c +++ b/src/emu/bus/scv/slot.c @@ -49,8 +49,8 @@ void device_scv_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(SCVSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(SCVSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/sega8/sega8_slot.c b/src/emu/bus/sega8/sega8_slot.c index b68de6d962b..b4958cafa11 100644 --- a/src/emu/bus/sega8/sega8_slot.c +++ b/src/emu/bus/sega8/sega8_slot.c @@ -76,8 +76,8 @@ void device_sega8_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(S8SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(S8SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; m_rom_page_count = size / 0x4000; diff --git a/src/emu/bus/snes/snes_slot.c b/src/emu/bus/snes/snes_slot.c index 937daab39e2..c7fa4e72c35 100644 --- a/src/emu/bus/snes/snes_slot.c +++ b/src/emu/bus/snes/snes_slot.c @@ -90,8 +90,8 @@ void device_sns_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(SNSSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(SNSSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } @@ -796,7 +796,7 @@ void base_sns_cart_slot_device::setup_addon_from_fullpath() // otherwise, we need to use the legacy versions including DSP dump in device romset if (!m_cart->get_addon_bios_size()) { - astring region = astring(m_cart->device().tag()).cat(":addon"); + std::string region = std::string(m_cart->device().tag()).append(":addon"); UINT8 *ROM = NULL; switch (m_addon) diff --git a/src/emu/bus/vboy/slot.c b/src/emu/bus/vboy/slot.c index 70ec14be0b9..8895f633b4b 100644 --- a/src/emu/bus/vboy/slot.c +++ b/src/emu/bus/vboy/slot.c @@ -50,8 +50,8 @@ void device_vboy_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(VBOYSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(VBOYSLOT_ROM_REGION_TAG); m_rom = (UINT32 *)device().machine().memory().region_alloc(tempstring.c_str(), size, 4, ENDIANNESS_LITTLE)->base(); m_rom_size = size/4; m_rom_mask = m_rom_size - 1; diff --git a/src/emu/bus/vc4000/slot.c b/src/emu/bus/vc4000/slot.c index e1ddb87b973..70715cbdfb6 100644 --- a/src/emu/bus/vc4000/slot.c +++ b/src/emu/bus/vc4000/slot.c @@ -49,8 +49,8 @@ void device_vc4000_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(VC4000SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(VC4000SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/vcs/vcs_slot.c b/src/emu/bus/vcs/vcs_slot.c index 94c328bed26..4bf8db44e2c 100755 --- a/src/emu/bus/vcs/vcs_slot.c +++ b/src/emu/bus/vcs/vcs_slot.c @@ -51,8 +51,8 @@ void device_vcs_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(A26SLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(A26SLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/vectrex/slot.c b/src/emu/bus/vectrex/slot.c index 60250ea32db..54bd8a2559f 100644 --- a/src/emu/bus/vectrex/slot.c +++ b/src/emu/bus/vectrex/slot.c @@ -49,8 +49,8 @@ void device_vectrex_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(VECSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(VECSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; } diff --git a/src/emu/bus/wswan/slot.c b/src/emu/bus/wswan/slot.c index 7890a6a0c17..14d6d66b90b 100644 --- a/src/emu/bus/wswan/slot.c +++ b/src/emu/bus/wswan/slot.c @@ -50,8 +50,8 @@ void device_ws_cart_interface::rom_alloc(UINT32 size, const char *tag) { if (m_rom == NULL) { - astring tempstring(tag); - tempstring.cat(WSSLOT_ROM_REGION_TAG); + std::string tempstring(tag); + tempstring.append(WSSLOT_ROM_REGION_TAG); m_rom = device().machine().memory().region_alloc(tempstring.c_str(), size, 1, ENDIANNESS_LITTLE)->base(); m_rom_size = size; m_bank_mask = ((m_rom_size >> 16) - 1); diff --git a/src/emu/hashfile.c b/src/emu/hashfile.c index b20df1018d7..7b9bde5c346 100644 --- a/src/emu/hashfile.c +++ b/src/emu/hashfile.c @@ -51,7 +51,6 @@ struct hash_file { emu_file *file; object_pool *pool; - astring functions[IO_COUNT]; hash_info **preloaded_hashes; int preloaded_hash_count; @@ -176,7 +175,7 @@ static void start_handler(void *data, const char *tagname, const char **attribut hash_info *hi; char **text_dest; hash_collection hashes; - astring all_functions; + std::string all_functions; char functions; // iodevice_t device; int i; @@ -238,7 +237,7 @@ static void start_handler(void *data, const char *tagname, const char **attribut if (functions) { hashes.add_from_string(functions, attributes[1], strlen(attributes[1])); - all_functions.cat(functions); + all_functions.append(1, functions); } attributes += 2; @@ -493,7 +492,6 @@ struct hashlookup_params static int singular_selector_proc(hash_file *hashfile, void *param, const char *name, const hash_collection *hashes) { - astring tempstr; struct hashlookup_params *hlparams = (struct hashlookup_params *) param; return (*hashes == *hlparams->hashes); } @@ -537,7 +535,7 @@ const hash_info *hashfile_lookup(hash_file *hashfile, const hash_collection *has const char *extra_info = NULL; -bool read_hash_config(device_image_interface &image, const char *sysname, astring &result) +bool read_hash_config(device_image_interface &image, const char *sysname, std::string &result) { hash_file *hashfile = NULL; const hash_info *info = NULL; @@ -556,14 +554,14 @@ bool read_hash_config(device_image_interface &image, const char *sysname, astrin return false; } - result.cpy(info->extrainfo); + result.assign(info->extrainfo); /* copy the relevant entries */ hashfile_close(hashfile); return true; } -bool hashfile_extrainfo(device_image_interface &image, astring &result) +bool hashfile_extrainfo(device_image_interface &image, std::string &result) { /* now read the hash file */ image.crc(); diff --git a/src/emu/hashfile.h b/src/emu/hashfile.h index c462b5c74d3..9bc3c402592 100644 --- a/src/emu/hashfile.h +++ b/src/emu/hashfile.h @@ -12,6 +12,6 @@ #include "emu.h" -bool hashfile_extrainfo(device_image_interface &image, astring &result); +bool hashfile_extrainfo(device_image_interface &image, std::string &result); #endif /* __HASHFILE_H__ */ -- cgit v1.2.3-70-g09d2 From 22c718936249c0dd68e086f40aa80b4695a275f7 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 09:37:18 +0200 Subject: converted in sound and video section (nw) --- src/emu/sound/2610intf.c | 4 ++-- src/emu/sound/fm.c | 5 ++--- src/emu/video/315_5124.c | 2 -- src/emu/video/pc_vga.c | 2 +- src/emu/video/pc_vga.h | 4 ++-- src/emu/video/tms9928a.c | 2 -- 6 files changed, 7 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/emu/sound/2610intf.c b/src/emu/sound/2610intf.c index 7bd00040d38..fb3b8f0e6b7 100644 --- a/src/emu/sound/2610intf.c +++ b/src/emu/sound/2610intf.c @@ -143,7 +143,7 @@ void ym2610_device::device_start() int rate = clock()/72; void *pcmbufa,*pcmbufb; int pcmsizea,pcmsizeb; - astring name; + std::string name(tag()); m_irq_handler.resolve(); @@ -156,7 +156,7 @@ void ym2610_device::device_start() /* setup adpcm buffers */ pcmbufa = region()->base(); pcmsizea = region()->bytes(); - name.printf("%s.deltat", tag()); + name.append(".deltat"); pcmbufb = (void *)(machine().root_device().memregion(name.c_str())->base()); pcmsizeb = machine().root_device().memregion(name.c_str())->bytes(); if (pcmbufb == NULL || pcmsizeb == 0) diff --git a/src/emu/sound/fm.c b/src/emu/sound/fm.c index a7a66c91e46..3563594a6a1 100644 --- a/src/emu/sound/fm.c +++ b/src/emu/sound/fm.c @@ -3673,14 +3673,13 @@ void ym2610_reset_chip(void *chip) FM_OPN *OPN = &F2610->OPN; YM_DELTAT *DELTAT = &F2610->deltaT; - astring name; device_t* dev = F2610->OPN.ST.device; + std::string name(dev->tag()); /* setup PCM buffers again */ - name.printf("%s",dev->tag()); F2610->pcmbuf = (const UINT8 *)dev->machine().root_device().memregion(name.c_str())->base(); F2610->pcm_size = dev->machine().root_device().memregion(name.c_str())->bytes(); - name.printf("%s.deltat",dev->tag()); + name.append(".deltat"); F2610->deltaT.memory = (UINT8 *)dev->machine().root_device().memregion(name.c_str())->base(); if(F2610->deltaT.memory == NULL) { diff --git a/src/emu/video/315_5124.c b/src/emu/video/315_5124.c index d8f27838df6..dbea7d5c287 100644 --- a/src/emu/video/315_5124.c +++ b/src/emu/video/315_5124.c @@ -1573,8 +1573,6 @@ void sega315_5124_device::device_start() m_pause_cb.resolve(); /* Allocate video RAM */ - astring tempstring; - m_frame_timing = (m_is_pal) ? pal_192 : ntsc_192; /* Make temp bitmap for rendering */ diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c index 92e1e4fe130..7625d197d80 100644 --- a/src/emu/video/pc_vga.c +++ b/src/emu/video/pc_vga.c @@ -351,7 +351,7 @@ void ibm8514a_device::device_start() void ibm8514a_device::device_config_complete() { - if(m_vga_tag.len() != 0) + if(m_vga_tag.length() != 0) { m_vga = machine().device(m_vga_tag.c_str()); } diff --git a/src/emu/video/pc_vga.h b/src/emu/video/pc_vga.h index 2d9df7ad88f..695c025e0a4 100644 --- a/src/emu/video/pc_vga.h +++ b/src/emu/video/pc_vga.h @@ -237,7 +237,7 @@ public: ibm8514a_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); ibm8514a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - void set_vga(const char* tag) { m_vga_tag.cpy(tag); } + void set_vga(const char* tag) { m_vga_tag.assign(tag); } void set_vga_owner() { m_vga = dynamic_cast(owner()); } void enabled(); @@ -343,7 +343,7 @@ protected: virtual void device_start(); virtual void device_config_complete(); vga_device* m_vga; // for pass-through - astring m_vga_tag; // pass-through device tag + std::string m_vga_tag; // pass-through device tag private: void ibm8514_draw_vector(UINT8 len, UINT8 dir, bool draw); void ibm8514_wait_draw_ssv(); diff --git a/src/emu/video/tms9928a.c b/src/emu/video/tms9928a.c index 28a7b51e3ce..a48862f93b2 100644 --- a/src/emu/video/tms9928a.c +++ b/src/emu/video/tms9928a.c @@ -635,8 +635,6 @@ void tms9928a_device::set_palette() void tms9928a_device::device_start() { - astring tempstring; - m_top_border = m_50hz ? TMS9928A_VERT_DISPLAY_START_PAL : TMS9928A_VERT_DISPLAY_START_NTSC; m_vertical_size = m_50hz ? TMS9928A_TOTAL_VERT_PAL : TMS9928A_TOTAL_VERT_NTSC; -- cgit v1.2.3-70-g09d2 From b49e9beeef70eba0e55d2c83a1bdddb8ec1648e6 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 09:49:27 +0200 Subject: cleanup in mess section (nw) --- src/mess/drivers/beta.c | 4 ++-- src/mess/drivers/cc40.c | 4 ++-- src/mess/drivers/gameking.c | 4 ++-- src/mess/drivers/gba.c | 4 ++-- src/mess/drivers/kyocera.c | 16 ++++++++-------- src/mess/drivers/leapster.c | 4 ++-- src/mess/drivers/nc.c | 8 ++++---- src/mess/drivers/ngp.c | 4 ++-- src/mess/drivers/pasogo.c | 4 ++-- src/mess/drivers/pb1000.c | 6 +++--- src/mess/drivers/pc2000.c | 8 ++++---- src/mess/drivers/pc6001.c | 12 ++++++------ src/mess/drivers/pc8401a.c | 4 ++-- src/mess/drivers/pockstat.c | 4 ++-- src/mess/drivers/prestige.c | 4 ++-- src/mess/drivers/pv1000.c | 4 ++-- src/mess/drivers/px4.c | 6 +++--- src/mess/drivers/socrates.c | 8 ++++---- src/mess/drivers/svision.c | 4 ++-- src/mess/drivers/timex.c | 4 ++-- src/mess/drivers/tispeak.c | 4 ++-- src/mess/drivers/tutor.c | 4 ++-- src/mess/drivers/tvc.c | 4 ++-- src/mess/drivers/vboy.c | 4 ++-- src/mess/drivers/vii.c | 4 ++-- src/mess/machine/advision.c | 4 ++-- src/mess/machine/amstrad.c | 8 ++++---- src/mess/machine/bbc.c | 16 ++++++++-------- src/mess/machine/electron.c | 4 ++-- src/mess/machine/gamecom.c | 6 +++--- src/mess/machine/primo.c | 6 +++--- src/mess/machine/svi318.c | 4 ++-- src/mess/machine/ti99/gromport.c | 2 +- src/mess/machine/ti99/gromport.h | 2 +- src/mess/machine/vtech2.c | 4 ++-- 35 files changed, 96 insertions(+), 96 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/beta.c b/src/mess/drivers/beta.c index 0c410445a62..984d266496b 100644 --- a/src/mess/drivers/beta.c +++ b/src/mess/drivers/beta.c @@ -316,8 +316,8 @@ void beta_state::machine_start() memset(&m_eprom_rom[0], 0xff, 0x800); else { - astring region_tag; - memcpy(&m_eprom_rom[0], memregion(region_tag.cpy(m_eprom->tag()).cat(GENERIC_ROM_REGION_TAG).c_str())->base(), 0x800); + std::string region_tag; + memcpy(&m_eprom_rom[0], memregion(region_tag.assign(m_eprom->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(), 0x800); } // state saving diff --git a/src/mess/drivers/cc40.c b/src/mess/drivers/cc40.c index b17d13d023f..b5cfcf4cad1 100644 --- a/src/mess/drivers/cc40.c +++ b/src/mess/drivers/cc40.c @@ -545,8 +545,8 @@ void cc40_state::postload() void cc40_state::machine_start() { // init - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000); if (m_cart_rom) diff --git a/src/mess/drivers/gameking.c b/src/mess/drivers/gameking.c index 4a7ac0bb425..9a1092d83ae 100644 --- a/src/mess/drivers/gameking.c +++ b/src/mess/drivers/gameking.c @@ -118,8 +118,8 @@ DEVICE_IMAGE_LOAD_MEMBER( gameking_state, gameking_cart ) void gameking_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (!m_cart_rom) { diff --git a/src/mess/drivers/gba.c b/src/mess/drivers/gba.c index f1ec69c97ab..d36760b65c7 100644 --- a/src/mess/drivers/gba.c +++ b/src/mess/drivers/gba.c @@ -2117,8 +2117,8 @@ void gba_state::machine_start() m_maincpu->space(AS_PROGRAM).install_read_bank(0x0a000000, 0x0bffffff, 0, 0, "rom2"); m_maincpu->space(AS_PROGRAM).install_read_bank(0x0c000000, 0x0cffffff, 0, 0, "rom3"); - astring region_tag; - memory_region *cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GBASLOT_ROM_REGION_TAG).c_str()); + std::string region_tag; + memory_region *cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GBASLOT_ROM_REGION_TAG).c_str()); // install ROM accesses membank("rom1")->set_base(cart_rom->base()); diff --git a/src/mess/drivers/kyocera.c b/src/mess/drivers/kyocera.c index f6b8df08143..14ffe1f28fc 100644 --- a/src/mess/drivers/kyocera.c +++ b/src/mess/drivers/kyocera.c @@ -1168,8 +1168,8 @@ void kc85_state::machine_start() { address_space &program = m_maincpu->space(AS_PROGRAM); - astring region_tag; - m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_opt_region = memregion(region_tag.assign(m_opt_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* initialize RTC */ m_rtc->cs_w(1); @@ -1211,8 +1211,8 @@ void pc8201_state::machine_start() { UINT8 *ram = m_ram->pointer(); - astring region_tag; - m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_opt_region = memregion(region_tag.assign(m_opt_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* initialize RTC */ m_rtc->cs_w(1); @@ -1245,8 +1245,8 @@ void trsm100_state::machine_start() { address_space &program = m_maincpu->space(AS_PROGRAM); - astring region_tag; - m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_opt_region = memregion(region_tag.assign(m_opt_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* initialize RTC */ m_rtc->cs_w(1); @@ -1296,8 +1296,8 @@ void trsm100_state::machine_start() void tandy200_state::machine_start() { - astring region_tag; - m_opt_region = memregion(region_tag.cpy(m_opt_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_opt_region = memregion(region_tag.assign(m_opt_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* configure ROM banking */ membank("bank1")->configure_entry(0, m_rom->base()); diff --git a/src/mess/drivers/leapster.c b/src/mess/drivers/leapster.c index 49c712dc0cc..5b71e821a6d 100644 --- a/src/mess/drivers/leapster.c +++ b/src/mess/drivers/leapster.c @@ -269,8 +269,8 @@ DEVICE_IMAGE_LOAD_MEMBER( leapster_state, leapster_cart ) void leapster_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (m_cart_rom) { diff --git a/src/mess/drivers/nc.c b/src/mess/drivers/nc.c index bfe79bc11b9..6e1e1d108a7 100644 --- a/src/mess/drivers/nc.c +++ b/src/mess/drivers/nc.c @@ -795,8 +795,8 @@ void nc_state::machine_start() { m_type = NC_TYPE_1xx; - astring region_tag; - m_card_ram = memregion(region_tag.cpy(m_card->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_card_ram = memregion(region_tag.assign(m_card->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (m_card_ram) m_card_size = m_card_ram->bytes(); else @@ -1139,8 +1139,8 @@ MACHINE_START_MEMBER(nc_state, nc200) { m_type = NC_TYPE_200; - astring region_tag; - m_card_ram = memregion(region_tag.cpy(m_card->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_card_ram = memregion(region_tag.assign(m_card->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (m_card_ram) m_card_size = m_card_ram->bytes(); else diff --git a/src/mess/drivers/ngp.c b/src/mess/drivers/ngp.c index e7d980cb999..13c0ef74b03 100644 --- a/src/mess/drivers/ngp.c +++ b/src/mess/drivers/ngp.c @@ -644,8 +644,8 @@ void ngp_state::machine_start() { if (m_cart->exists()) { - astring region_tag; - UINT8 *cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str())->base(); + std::string region_tag; + UINT8 *cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(); m_maincpu->space(AS_PROGRAM).install_read_bank(0x200000, 0x3fffff, "flash0"); m_maincpu->space(AS_PROGRAM).install_read_bank(0x800000, 0x9fffff, "flash1"); diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index 0ee66b8a748..49b404d548f 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -516,9 +516,9 @@ INTERRUPT_GEN_MEMBER(pasogo_state::pasogo_interrupt) void pasogo_state::machine_reset() { - astring region_tag; + std::string region_tag; ioport_port *color = ioport("COLOR"); - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (!m_cart_rom) // this should never happen, since we make carts mandatory! m_cart_rom = memregion("maincpu"); diff --git a/src/mess/drivers/pb1000.c b/src/mess/drivers/pb1000.c index 3a313497501..fb15a0b912d 100644 --- a/src/mess/drivers/pb1000.c +++ b/src/mess/drivers/pb1000.c @@ -458,12 +458,12 @@ TIMER_CALLBACK_MEMBER(pb1000_state::keyboard_timer) void pb1000_state::machine_start() { - astring region_tag; + std::string region_tag; m_rom_reg = memregion("rom"); if (m_card1) - m_card1_reg = memregion(region_tag.cpy(m_card1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + m_card1_reg = memregion(region_tag.assign(m_card1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (m_card2) - m_card2_reg = memregion(region_tag.cpy(m_card2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + m_card2_reg = memregion(region_tag.assign(m_card2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); membank("bank1")->set_base(m_rom_reg->base()); diff --git a/src/mess/drivers/pc2000.c b/src/mess/drivers/pc2000.c index bd29eaee6cc..a8537b96e6a 100644 --- a/src/mess/drivers/pc2000.c +++ b/src/mess/drivers/pc2000.c @@ -740,9 +740,9 @@ INPUT_PORTS_END void pc2000_state::machine_start() { - astring region_tag; + std::string region_tag; UINT8 *bios = memregion("bios")->base(); - UINT8 *cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str())->base(); + UINT8 *cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(); if (!cart) cart = memregion("bios")->base(); @@ -754,9 +754,9 @@ void pc2000_state::machine_start() void gl4004_state::machine_start() { - astring region_tag; + std::string region_tag; UINT8 *bios = memregion("bios")->base(); - UINT8 *cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str())->base(); + UINT8 *cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(); if (!cart) cart = memregion("bios")->base(); diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c index 6316e4cc26d..89cc4befb1a 100644 --- a/src/mess/drivers/pc6001.c +++ b/src/mess/drivers/pc6001.c @@ -2078,8 +2078,8 @@ void pc6001_state::machine_reset() if (m_cart->exists()) m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_port_c_8255=0; @@ -2096,8 +2096,8 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001m2) { m_video_ram = m_region_maincpu->base() + 0xc000 + 0x28000; - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); // hackish way to simplify bankswitch handling if (m_cart_rom) memcpy(m_region_maincpu->base() + 0x48000, m_cart_rom->base(), 0x4000); @@ -2135,8 +2135,8 @@ MACHINE_RESET_MEMBER(pc6001_state,pc6001sr) { m_video_ram = m_region_maincpu->base() + 0x70000; - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); // should this be mirrored into the EXROM regions? hard to tell without an actual cart dump... m_port_c_8255=0; diff --git a/src/mess/drivers/pc8401a.c b/src/mess/drivers/pc8401a.c index fdce7dbb51f..05e8eec5ba8 100644 --- a/src/mess/drivers/pc8401a.c +++ b/src/mess/drivers/pc8401a.c @@ -488,8 +488,8 @@ INPUT_PORTS_END void pc8401a_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* initialize RTC */ m_rtc->cs_w(1); diff --git a/src/mess/drivers/pockstat.c b/src/mess/drivers/pockstat.c index 6442d04c47b..fe1cf24052e 100644 --- a/src/mess/drivers/pockstat.c +++ b/src/mess/drivers/pockstat.c @@ -885,8 +885,8 @@ void pockstat_state::machine_start() m_rtc_regs.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pockstat_state::rtc_tick),this)); m_rtc_regs.timer->adjust(attotime::from_hz(1), index); - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); save_item(NAME(m_ftlb_regs.control)); save_item(NAME(m_ftlb_regs.stat)); diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c index 3a15969e0e6..751769cecc2 100644 --- a/src/mess/drivers/prestige.c +++ b/src/mess/drivers/prestige.c @@ -618,8 +618,8 @@ IRQ_CALLBACK_MEMBER(prestige_state::prestige_int_ack) void prestige_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); UINT8 *rom = memregion("maincpu")->base(); UINT8 *cart = m_cart_rom->base(); diff --git a/src/mess/drivers/pv1000.c b/src/mess/drivers/pv1000.c index b555fba8505..ea9fdfe7343 100644 --- a/src/mess/drivers/pv1000.c +++ b/src/mess/drivers/pv1000.c @@ -405,8 +405,8 @@ void pv1000_state::machine_start() m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); // FIXME: this is needed for gfx decoding, but there is probably a cleaner solution! - astring region_tag; - memcpy(memregion("gfxrom")->base(), memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str())->base(), m_cart->get_rom_size()); + std::string region_tag; + memcpy(memregion("gfxrom")->base(), memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str())->base(), m_cart->get_rom_size()); } save_item(NAME(m_io_regs)); diff --git a/src/mess/drivers/px4.c b/src/mess/drivers/px4.c index 0e379ce08e4..46dd71d6e36 100644 --- a/src/mess/drivers/px4.c +++ b/src/mess/drivers/px4.c @@ -1228,9 +1228,9 @@ DRIVER_INIT_MEMBER( px4p_state, px4p ) void px4_state::machine_start() { - astring region_tag; - m_caps1_rom = memregion(region_tag.cpy(m_caps1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); - m_caps2_rom = memregion(region_tag.cpy(m_caps2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_caps1_rom = memregion(region_tag.assign(m_caps1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); + m_caps2_rom = memregion(region_tag.assign(m_caps2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_nvram->set_base(m_ram->pointer(), 0x10000); diff --git a/src/mess/drivers/socrates.c b/src/mess/drivers/socrates.c index b6c2fe87868..6dc5b1ff33b 100644 --- a/src/mess/drivers/socrates.c +++ b/src/mess/drivers/socrates.c @@ -317,8 +317,8 @@ void socrates_state::socrates_check_kb_latch( ) // if kb[1] is full and kb[0] i void socrates_state::machine_reset() { - astring region_tag; - m_cart_reg = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_reg = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_rom_bank = 0xF3; // actually set semi-randomly on real console but we need to initialize it somewhere... socrates_set_rom_bank(); @@ -896,8 +896,8 @@ WRITE8_MEMBER( iqunlim_state::video_regs_w ) void iqunlim_state::machine_start() { - astring region_tag; - m_cart_reg = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_reg = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); UINT8 *bios = m_bios_reg->base(); UINT8 *cart = m_cart_reg ? m_cart_reg->base() : m_bios_reg->base(); diff --git a/src/mess/drivers/svision.c b/src/mess/drivers/svision.c index 4752c1adfcf..a8055bde218 100644 --- a/src/mess/drivers/svision.c +++ b/src/mess/drivers/svision.c @@ -468,8 +468,8 @@ DEVICE_IMAGE_LOAD_MEMBER( svision_state, svision_cart ) void svision_state::machine_start() { int num_banks; - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); num_banks = m_cart_rom->bytes() / 0x4000; m_bank1 = membank("bank1"); diff --git a/src/mess/drivers/timex.c b/src/mess/drivers/timex.c index fcf96c417f9..90f1f7b084f 100644 --- a/src/mess/drivers/timex.c +++ b/src/mess/drivers/timex.c @@ -544,8 +544,8 @@ MACHINE_RESET_MEMBER(spectrum_state,ts2068) m_port_ff_data = 0; m_port_f4_data = 0; - astring region_tag; - m_dock_crt = memregion(region_tag.cpy(m_dock->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_dock_crt = memregion(region_tag.assign(m_dock->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_dock_cart_type = m_dock_crt ? TIMEX_CART_DOCK : TIMEX_CART_NONE; ts2068_update_memory(); diff --git a/src/mess/drivers/tispeak.c b/src/mess/drivers/tispeak.c index b7264622879..b3e2e06ef7b 100644 --- a/src/mess/drivers/tispeak.c +++ b/src/mess/drivers/tispeak.c @@ -354,8 +354,8 @@ void tispeak_state::init_cartridge() { if (m_cart != NULL && m_cart->exists()) { - astring region_tag; - memory_region *src = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + memory_region *src = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (src) memcpy(m_cart_base, src->base(), src->bytes()); } diff --git a/src/mess/drivers/tutor.c b/src/mess/drivers/tutor.c index 01b74a2386e..6433a4c4814 100644 --- a/src/mess/drivers/tutor.c +++ b/src/mess/drivers/tutor.c @@ -225,8 +225,8 @@ public: void tutor_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this)); diff --git a/src/mess/drivers/tvc.c b/src/mess/drivers/tvc.c index 6b992f5a8fc..682e1de9047 100644 --- a/src/mess/drivers/tvc.c +++ b/src/mess/drivers/tvc.c @@ -607,8 +607,8 @@ void tvc_state::machine_start() m_ext = memregion("ext"); m_vram = memregion("vram"); - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); } void tvc_state::machine_reset() diff --git a/src/mess/drivers/vboy.c b/src/mess/drivers/vboy.c index db507565c2e..64ff7725fa2 100644 --- a/src/mess/drivers/vboy.c +++ b/src/mess/drivers/vboy.c @@ -1173,8 +1173,8 @@ void vboy_state::machine_start() // trampoline (but forces us to alloc always a 0x200000-wide region) if (m_cart->exists()) { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(VBOYSLOT_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(VBOYSLOT_ROM_REGION_TAG).c_str()); m_maincpu->space(AS_PROGRAM).install_read_bank(0x07000000, 0x071fffff, 0, 0x0e00000, "prog_cart_bank"); m_maincpu->space(AS_IO).install_read_bank(0x07000000, 0x071fffff, 0, 0x0e00000, "io_cart_bank"); diff --git a/src/mess/drivers/vii.c b/src/mess/drivers/vii.c index 78041843b8d..dfaabb9f51c 100644 --- a/src/mess/drivers/vii.c +++ b/src/mess/drivers/vii.c @@ -1023,8 +1023,8 @@ void vii_state::machine_start() if (m_cart && m_cart->exists()) { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); memcpy(&m_p_cart[0], m_cart_rom->base(), 0x400000 * 2); } else if (m_spg243_mode == SPG243_VII) // Vii bios is banked diff --git a/src/mess/machine/advision.c b/src/mess/machine/advision.c index 7f3199d8870..4dd92ae27f9 100644 --- a/src/mess/machine/advision.c +++ b/src/mess/machine/advision.c @@ -27,8 +27,8 @@ void advision_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); /* configure EA banking */ m_bank1->configure_entry(0, memregion(I8048_TAG)->base()); diff --git a/src/mess/machine/amstrad.c b/src/mess/machine/amstrad.c index 33c89b5dc0b..aea285de11e 100644 --- a/src/mess/machine/amstrad.c +++ b/src/mess/machine/amstrad.c @@ -3032,8 +3032,8 @@ MACHINE_START_MEMBER(amstrad_state,plus) m_system_type = SYSTEM_PLUS; m_centronics->write_data7(0); - astring region_tag; - m_region_cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_region_cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (!m_region_cart) // this should never happen, since we make carts mandatory! m_region_cart = memregion("maincpu"); } @@ -3076,8 +3076,8 @@ MACHINE_START_MEMBER(amstrad_state,gx4000) m_asic.ram = m_region_user1->base(); // 16kB RAM for ASIC, memory-mapped registers. m_system_type = SYSTEM_GX4000; - astring region_tag; - m_region_cart = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_region_cart = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (!m_region_cart) // this should never happen, since we make carts mandatory! m_region_cart = memregion("maincpu"); } diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c index a3a1f517b8b..12923f19048 100644 --- a/src/mess/machine/bbc.c +++ b/src/mess/machine/bbc.c @@ -2033,22 +2033,22 @@ DRIVER_INIT_MEMBER(bbc_state,bbcm) // setup pointers for optional EPROMs void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size) { - astring region_tag; + std::string region_tag; memory_region *tmp_reg; UINT8 *eprom[4]; - if (m_exp1 && (tmp_reg = memregion(region_tag.cpy(m_exp1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp1 && (tmp_reg = memregion(region_tag.assign(m_exp1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[0] = tmp_reg->base() + shift; else eprom[0] = m_region_opt->base() + 0x0000 + shift; - if (m_exp2 && (tmp_reg = memregion(region_tag.cpy(m_exp2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp2 && (tmp_reg = memregion(region_tag.assign(m_exp2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[1] = tmp_reg->base() + shift; else eprom[1] = m_region_opt->base() + 0x4000 + shift; - if (m_exp3 && (tmp_reg = memregion(region_tag.cpy(m_exp3->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp3 && (tmp_reg = memregion(region_tag.assign(m_exp3->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[2] = tmp_reg->base() + shift; else eprom[2] = m_region_opt->base() + 0x8000 + shift; - if (m_exp4 && (tmp_reg = memregion(region_tag.cpy(m_exp4->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp4 && (tmp_reg = memregion(region_tag.assign(m_exp4->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[3] = tmp_reg->base() + shift; else eprom[3] = m_region_opt->base() + 0xc000 + shift; @@ -2067,14 +2067,14 @@ void bbc_state::bbc_setup_banks(memory_bank *membank, int banks, UINT32 shift, U void bbc_state::bbcm_setup_banks(memory_bank *membank, int banks, UINT32 shift, UINT32 size) { - astring region_tag; + std::string region_tag; memory_region *tmp_reg; UINT8 *eprom[2]; - if (m_exp1 && (tmp_reg = memregion(region_tag.cpy(m_exp1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp1 && (tmp_reg = memregion(region_tag.assign(m_exp1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[0] = tmp_reg->base() + shift; else eprom[0] = m_region_opt->base() + 0x0000 + shift; - if (m_exp2 && (tmp_reg = memregion(region_tag.cpy(m_exp2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()))) + if (m_exp2 && (tmp_reg = memregion(region_tag.assign(m_exp2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()))) eprom[1] = tmp_reg->base() + shift; else eprom[1] = m_region_opt->base() + 0x8000 + shift; diff --git a/src/mess/machine/electron.c b/src/mess/machine/electron.c index d88d2cfcc2c..e344624b444 100644 --- a/src/mess/machine/electron.c +++ b/src/mess/machine/electron.c @@ -346,8 +346,8 @@ void electron_state::machine_reset() void electron_state::machine_start() { UINT8 *lo_rom, *up_rom; - astring region_tag; - memory_region *cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + memory_region *cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (cart_rom) up_rom = cart_rom->base(); diff --git a/src/mess/machine/gamecom.c b/src/mess/machine/gamecom.c index 49742f3ffa4..2d2b9908c71 100644 --- a/src/mess/machine/gamecom.c +++ b/src/mess/machine/gamecom.c @@ -25,9 +25,9 @@ void gamecom_state::machine_reset() m_lcv_reg = 0x27; m_lcdc_reg = 0xb0; - astring region_tag; - m_cart1_rom = memregion(region_tag.cpy(m_cart1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); - m_cart2_rom = memregion(region_tag.cpy(m_cart2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart1_rom = memregion(region_tag.assign(m_cart1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); + m_cart2_rom = memregion(region_tag.assign(m_cart2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); } void gamecom_state::gamecom_set_mmu(UINT8 mmu, UINT8 data) diff --git a/src/mess/machine/primo.c b/src/mess/machine/primo.c index f7bf1079efd..d82df83669d 100644 --- a/src/mess/machine/primo.c +++ b/src/mess/machine/primo.c @@ -242,9 +242,9 @@ void primo_state::primo_common_machine_init () void primo_state::machine_start() { - astring region_tag; - m_cart1_rom = memregion(region_tag.cpy(m_cart1->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); - m_cart2_rom = memregion(region_tag.cpy(m_cart2->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart1_rom = memregion(region_tag.assign(m_cart1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); + m_cart2_rom = memregion(region_tag.assign(m_cart2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); } void primo_state::machine_reset() diff --git a/src/mess/machine/svi318.c b/src/mess/machine/svi318.c index 80c0550b2a0..7a2f558e493 100644 --- a/src/mess/machine/svi318.c +++ b/src/mess/machine/svi318.c @@ -421,8 +421,8 @@ DRIVER_INIT_MEMBER(svi318_state, svi328_806) void svi318_state::machine_start() { - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_bios_rom = memregion("maincpu"); // 80 column card start diff --git a/src/mess/machine/ti99/gromport.c b/src/mess/machine/ti99/gromport.c index 236f65173fd..726c87a86a8 100644 --- a/src/mess/machine/ti99/gromport.c +++ b/src/mess/machine/ti99/gromport.c @@ -2285,7 +2285,7 @@ rpk_socket* rpk_reader::load_ram_resource(emu_options &options, xml_data_node* r global_free_array(contents); throw rpk_exception(RPK_INVALID_RAM_SPEC, " must have a 'file' attribute"); } - astring ram_pathname = astring(system_name).cat(PATH_SEPARATOR).cat(ram_filename); + std::string ram_pathname = std::string(system_name).append(PATH_SEPARATOR).append(ram_filename); ram_pname = core_strdup(ram_pathname.c_str()); // load, and fill rest with 00 if (VERBOSE>6) LOG("gromport/RPK: Loading NVRAM contents from '%s'\n", ram_pname); diff --git a/src/mess/machine/ti99/gromport.h b/src/mess/machine/ti99/gromport.h index dd88cb3ca55..115d546c62d 100644 --- a/src/mess/machine/ti99/gromport.h +++ b/src/mess/machine/ti99/gromport.h @@ -509,7 +509,7 @@ public: const char* to_string() { if (m_detail==NULL) return error_text[(int)m_err]; - astring errormsg = astring(error_text[(int)m_err]).cat(": ").cat(m_detail); + std::string errormsg = std::string(error_text[(int)m_err]).append(": ").append(m_detail); return core_strdup(errormsg.c_str()); } diff --git a/src/mess/machine/vtech2.c b/src/mess/machine/vtech2.c index 98480ab5e6c..b7850bd9f8c 100644 --- a/src/mess/machine/vtech2.c +++ b/src/mess/machine/vtech2.c @@ -73,8 +73,8 @@ DRIVER_INIT_MEMBER(vtech2_state,laser) m_mem = memregion("maincpu")->base(); // check ROM expansion - astring region_tag; - m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG).c_str()); + std::string region_tag; + m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); for (i = 0; i < ARRAY_LENGTH(m_laser_bank); i++) m_laser_bank[i] = -1; -- cgit v1.2.3-70-g09d2 From 71c4d9f30460914a6823880e88e446799ecfe30f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 12:08:52 +0200 Subject: removed bool conversion and implicit empty check (nw) --- src/emu/cheat.c | 14 +++++++------- src/emu/clifront.c | 6 +++--- src/emu/debug/debugcmd.c | 16 ++++++++-------- src/emu/debug/debugcpu.c | 8 ++++---- src/emu/debug/express.c | 2 +- src/emu/device.h | 2 +- src/emu/diimage.c | 8 ++++---- src/emu/diimage.h | 10 +++++----- src/emu/emuopts.c | 4 ++-- src/emu/fileio.c | 2 +- src/emu/input.c | 4 ++-- src/emu/ioport.c | 4 ++-- src/emu/machine.c | 2 +- src/emu/machine.h | 2 +- src/emu/machine/ram.c | 2 +- src/emu/rendlay.c | 4 ++-- src/emu/rendlay.h | 2 +- src/emu/save.c | 4 ++-- src/emu/ui/filemngr.c | 2 +- src/emu/ui/miscmenu.c | 4 ++-- src/emu/ui/slotopt.c | 2 +- src/emu/ui/ui.c | 2 +- src/emu/validity.c | 2 +- src/lib/util/astring.h | 5 +++-- src/lib/util/chdcd.c | 4 ++-- src/lib/util/options.c | 4 ++-- src/lib/util/options.h | 4 ++-- src/osd/modules/debugger/debugint.c | 2 +- src/osd/windows/winmain.c | 4 ++-- src/tools/chdman.c | 2 +- src/tools/split.c | 2 +- src/tools/src2html.c | 4 ++-- 32 files changed, 70 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/emu/cheat.c b/src/emu/cheat.c index 44d6693ac13..39cd2074073 100644 --- a/src/emu/cheat.c +++ b/src/emu/cheat.c @@ -498,7 +498,7 @@ void cheat_script::script_entry::execute(cheat_manager &manager, UINT64 &arginde } // if there is a string to display, compute it - if (m_format) + if (!m_format.empty()) { // iterate over arguments and evaluate them UINT64 params[MAX_ARGUMENTS]; @@ -529,7 +529,7 @@ void cheat_script::script_entry::save(emu_file &cheatfile) const astring tempstring; // output an action - if (!m_format) + if (m_format.empty()) { cheatfile.printf("\t\t\t\n"); else { cheatfile.printf(">\n"); // save the comment - if (m_comment) + if (!m_comment.empty()) cheatfile.printf("\t\t\n", m_comment.c_str()); // output the parameter, if present @@ -961,10 +961,10 @@ void cheat_entry::menu_text(astring &description, astring &state, UINT32 &flags) // some cheat entries are just text for display if (is_text_only()) { - if (description) + if (!description.empty()) { description.trimspace(); - if (!description) + if (description.empty()) description.cpy(MENU_SEPARATOR_ITEM); } flags = MENU_FLAG_DISABLE; @@ -1218,7 +1218,7 @@ void cheat_manager::render_text(render_container &container) { // render any text and free it along the way for (int linenum = 0; linenum < ARRAY_LENGTH(m_output); linenum++) - if (m_output[linenum]) + if (!m_output[linenum].empty()) { // output the text machine().ui().draw_text_full(&container, m_output[linenum].c_str(), diff --git a/src/emu/clifront.c b/src/emu/clifront.c index da44830a67c..4c5f11a4585 100644 --- a/src/emu/clifront.c +++ b/src/emu/clifront.c @@ -186,7 +186,7 @@ int cli_frontend::execute(int argc, char **argv) // otherwise, error on the options throw emu_fatalerror(MAMERR_INVALID_CONFIG, "%s", option_errors.trimspace().c_str()); } - if (option_errors) + if (!option_errors.empty()) osd_printf_error("Error in command line:\n%s\n", option_errors.trimspace().c_str()); // determine the base name of the EXE @@ -207,7 +207,7 @@ int cli_frontend::execute(int argc, char **argv) m_options.revert(OPTION_PRIORITY_INI); m_options.parse_standard_inis(option_errors); } - if (option_errors) + if (!option_errors.empty()) osd_printf_error("Error in command line:\n%s\n", option_errors.trimspace().c_str()); // if we can't find it, give an appropriate error @@ -1555,7 +1555,7 @@ void cli_frontend::execute_commands(const char *exename) // other commands need the INIs parsed astring option_errors; m_options.parse_standard_inis(option_errors); - if (option_errors) + if (!option_errors.empty()) osd_printf_error("%s\n", option_errors.c_str()); // createconfig? diff --git a/src/emu/debug/debugcmd.c b/src/emu/debug/debugcmd.c index 37383915e4c..8e1c485046c 100644 --- a/src/emu/debug/debugcmd.c +++ b/src/emu/debug/debugcmd.c @@ -1035,14 +1035,14 @@ static void execute_ignore(running_machine &machine, int ref, int params, const /* build up a comma-separated list */ if (!exec->device().debug()->observing()) { - if (!buffer) + if (buffer.empty()) buffer.printf("Currently ignoring device '%s'", exec->device().tag()); else buffer.catprintf(", '%s'", exec->device().tag()); } /* special message for none */ - if (!buffer) + if (buffer.empty()) buffer.printf("Not currently ignoring any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1100,14 +1100,14 @@ static void execute_observe(running_machine &machine, int ref, int params, const /* build up a comma-separated list */ if (exec->device().debug()->observing()) { - if (!buffer) + if (buffer.empty()) buffer.printf("Currently observing CPU '%s'", exec->device().tag()); else buffer.catprintf(", '%s'", exec->device().tag()); } /* special message for none */ - if (!buffer) + if (buffer.empty()) buffer.printf("Not currently observing any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1328,9 +1328,9 @@ static void execute_bplist(running_machine &machine, int ref, int params, const for (device_debug::breakpoint *bp = device->debug()->breakpoint_first(); bp != NULL; bp = bp->next()) { buffer.printf("%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars())); - if (astring(bp->condition()) != astring("1")) + if (astring(bp->condition()).cmp("1")!=0) buffer.catprintf(" if %s", bp->condition()); - if (astring(bp->action()) != astring("")) + if (astring(bp->action()).cmp("")!=0) buffer.catprintf(" do %s", bp->action()); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; @@ -1498,9 +1498,9 @@ static void execute_wplist(running_machine &machine, int ref, int params, const core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars()), core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars()), types[wp->type() & 3]); - if (astring(wp->condition()) != astring("1")) + if (astring(wp->condition()).cmp("1")!=0) buffer.catprintf(" if %s", wp->condition()); - if (astring(wp->action()) != astring("")) + if (astring(wp->action()).cmp("")!=0) buffer.catprintf(" do %s", wp->action()); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; diff --git a/src/emu/debug/debugcpu.c b/src/emu/debug/debugcpu.c index 29a4d759552..02b939716cb 100644 --- a/src/emu/debug/debugcpu.c +++ b/src/emu/debug/debugcpu.c @@ -2908,7 +2908,7 @@ void device_debug::breakpoint_check(offs_t pc) global->execution_state = EXECUTION_STATE_STOPPED; // if we hit, evaluate the action - if (bp->m_action) + if (!bp->m_action.empty()) debug_console_execute_command(m_device.machine(), bp->m_action.c_str(), 0); // print a notification, unless the action made us go again @@ -2927,7 +2927,7 @@ void device_debug::breakpoint_check(offs_t pc) global->execution_state = EXECUTION_STATE_STOPPED; // if we hit, evaluate the action - if (rp->m_action) + if (!rp->m_action.empty()) { debug_console_execute_command(m_device.machine(), rp->m_action.c_str(), 0); } @@ -3037,7 +3037,7 @@ void device_debug::watchpoint_check(address_space &space, int type, offs_t addre global->execution_state = EXECUTION_STATE_STOPPED; // if we hit, evaluate the action - if (wp->m_action) + if (!wp->m_action.empty()) debug_console_execute_command(space.machine(), wp->m_action.c_str(), 0); // print a notification, unless the action made us go again @@ -3480,7 +3480,7 @@ void device_debug::tracer::update(offs_t pc) m_loops = 0; // execute any trace actions first - if (m_action) + if (!m_action.empty()) debug_console_execute_command(m_debug.m_device.machine(), m_action.c_str(), 0); // print the address diff --git a/src/emu/debug/express.c b/src/emu/debug/express.c index 6269a25aa3a..46a4ff22efc 100644 --- a/src/emu/debug/express.c +++ b/src/emu/debug/express.c @@ -599,7 +599,7 @@ void parsed_expression::copy(const parsed_expression &src) { m_symtable = src.m_symtable; m_original_string.cpy(src.m_original_string); - if (m_original_string) + if (!m_original_string.empty()) parse_string_into_tokens(); } diff --git a/src/emu/device.h b/src/emu/device.h index ce9b2df0181..565a8a278ef 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -166,7 +166,7 @@ public: static void static_set_clock(device_t &device, UINT32 clock); static void static_set_static_config(device_t &device, const void *config) { device.m_static_config = config; } static void static_set_input_default(device_t &device, const input_device_default *config) { device.m_input_defaults = config; } - static void static_set_default_bios_tag(device_t &device, const char *tag) { astring default_bios_tag(tag); device.m_default_bios_tag = default_bios_tag; } + static void static_set_default_bios_tag(device_t &device, const char *tag) { std::string default_bios_tag(tag); device.m_default_bios_tag = default_bios_tag; } // state helpers void config_complete(); diff --git a/src/emu/diimage.c b/src/emu/diimage.c index fb890c08dac..290b92c32ad 100644 --- a/src/emu/diimage.c +++ b/src/emu/diimage.c @@ -210,7 +210,7 @@ const image_device_format *device_image_interface::device_get_named_creatable_fo void device_image_interface::clear_error() { m_err = IMAGE_ERROR_SUCCESS; - if (m_err_message) + if (!m_err_message.empty()) { m_err_message.reset(); } @@ -236,7 +236,7 @@ static const char *const messages[] = const char *device_image_interface::error() { - return (m_err_message) ? m_err_message.c_str() : messages[m_err]; + return (!m_err_message.empty()) ? m_err_message.c_str() : messages[m_err]; } @@ -351,7 +351,7 @@ void device_image_interface::setup_working_directory() const char * device_image_interface::working_directory() { /* check to see if we've never initialized the working directory */ - if (!m_working_directory) + if (m_working_directory.empty()) setup_working_directory(); return m_working_directory.c_str(); @@ -900,7 +900,7 @@ bool device_image_interface::load_internal(const char *path, bool is_create, int // if we had launched from softlist with a specified part, e.g. "shortname:part" // we would have recorded the wrong name, so record it again based on software_info - if (m_software_info_ptr && m_full_software_name) + if (m_software_info_ptr && !m_full_software_name.empty()) m_err = set_image_filename(m_full_software_name.c_str()); // check if image should be read-only diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 459bcacac4b..7d90142e478 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -170,11 +170,11 @@ public: void seterror(image_error_t err, const char *message); void message(const char *format, ...) ATTR_PRINTF(2,3); - bool exists() { return m_image_name; } - const char *filename() { if (!m_image_name) return NULL; else return m_image_name.c_str(); } - const char *basename() { if (!m_basename) return NULL; else return m_basename.c_str(); } - const char *basename_noext() { if (!m_basename_noext) return NULL; else return m_basename_noext.c_str(); } - const char *filetype() { if (!m_filetype) return NULL; else return m_filetype.c_str(); } + bool exists() { return !m_image_name.empty(); } + const char *filename() { if (m_image_name.empty()) return NULL; else return m_image_name.c_str(); } + const char *basename() { if (m_basename.empty()) return NULL; else return m_basename.c_str(); } + const char *basename_noext() { if (m_basename_noext.empty()) return NULL; else return m_basename_noext.c_str(); } + const char *filetype() { if (m_filetype.empty()) return NULL; else return m_filetype.c_str(); } core_file *image_core_file() { return m_file; } UINT64 length() { check_for_file(); return core_fsize(m_file); } bool is_readonly() { return m_readonly; } diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c index 74a452d00af..5ac2d8780d4 100644 --- a/src/emu/emuopts.c +++ b/src/emu/emuopts.c @@ -492,7 +492,7 @@ void emu_options::set_system_name(const char *name) // first set the new name astring error; set_value(OPTION_SYSTEMNAME, name, OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); // remove any existing device options and then add them afresh remove_device_options(); @@ -531,7 +531,7 @@ bool emu_options::parse_one_ini(const char *basename, int priority, astring *err bool result = parse_ini_file(file, priority, OPTION_PRIORITY_DRIVER_INI, error); // append errors if requested - if (error && error_string != NULL) + if (!error.empty() && error_string != NULL) error_string->catprintf("While parsing %s:\n%s\n", file.fullpath(), error.c_str()); return result; diff --git a/src/emu/fileio.c b/src/emu/fileio.c index a19368d7065..ddc225e67f3 100644 --- a/src/emu/fileio.c +++ b/src/emu/fileio.c @@ -229,7 +229,7 @@ hash_collection &emu_file::hashes(const char *types) needed.cat(*scan); // if we need nothing, skip it - if (!needed) + if (needed.empty()) return m_hashes; // load the ZIP file if needed diff --git a/src/emu/input.c b/src/emu/input.c index 0beb4b9e4ef..f62ed6889c7 100644 --- a/src/emu/input.c +++ b/src/emu/input.c @@ -1502,7 +1502,7 @@ const char *input_manager::code_name(astring &str, input_code code) const // concatenate the strings str.cpy(devclass); - if (devindex) + if (!devindex.empty()) str.cat(" ").cat(devindex); if (devcode[0] != 0) str.cat(" ").cat(devcode); @@ -1543,7 +1543,7 @@ const char *input_manager::code_to_token(astring &str, input_code code) const // concatenate the strings str.cpy(devclass); - if (devindex) + if (!devindex.empty()) str.cat("_").cat(devindex); if (devcode[0] != 0) str.cat("_").cat(devcode); diff --git a/src/emu/ioport.c b/src/emu/ioport.c index 3b4410e551c..92d39a90eac 100644 --- a/src/emu/ioport.c +++ b/src/emu/ioport.c @@ -1519,7 +1519,7 @@ ioport_field::~ioport_field() const char *ioport_field::name() const { // if we have a non-default name, use that - if (m_live != NULL && m_live->name) + if (m_live != NULL && !m_live->name.empty()) return m_live->name.c_str(); if (m_name != NULL) return m_name; @@ -2481,7 +2481,7 @@ time_t ioport_manager::initialize() { astring errors; m_portlist.append(*device, errors); - if (errors) + if (!errors.empty()) osd_printf_error("Input port errors:\n%s", errors.c_str()); } diff --git a/src/emu/machine.c b/src/emu/machine.c index e85f39d03cd..fd397757baf 100644 --- a/src/emu/machine.c +++ b/src/emu/machine.c @@ -892,7 +892,7 @@ void running_machine::handle_saveload() // if no name, bail emu_file file(m_saveload_searchpath, openflags); - if (!m_saveload_pending_file) + if (m_saveload_pending_file.empty()) goto cancel; // if there are anonymous timers, we can't save just yet, and we can't load yet either diff --git a/src/emu/machine.h b/src/emu/machine.h index 9fb264f9963..b045d37700a 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -182,7 +182,7 @@ public: bool ui_active() const { return m_ui_active; } const char *basename() const { return m_basename.c_str(); } int sample_rate() const { return m_sample_rate; } - bool save_or_load_pending() const { return m_saveload_pending_file; } + bool save_or_load_pending() const { return !m_saveload_pending_file.empty(); } screen_device *first_screen() const { return primary_screen; } // additional helpers diff --git a/src/emu/machine/ram.c b/src/emu/machine/ram.c index 47d53a48082..d777ab9d064 100644 --- a/src/emu/machine/ram.c +++ b/src/emu/machine/ram.c @@ -168,7 +168,7 @@ void ram_device::device_validity_check(validity_checker &valid) const osd_printf_warning("Setting value to default %s\n",m_default_size); astring error; mconfig().options().set_value(OPTION_RAMSIZE, m_default_size, OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); } } diff --git a/src/emu/rendlay.c b/src/emu/rendlay.c index 9ac68126fa3..397e7a704ec 100644 --- a/src/emu/rendlay.c +++ b/src/emu/rendlay.c @@ -1313,7 +1313,7 @@ void layout_element::component::load_bitmap() m_hasalpha[0] = render_load_png(m_bitmap[0], *m_file[0], m_dirname.c_str(), m_imagefile[0].c_str()); // load the alpha bitmap if specified - if (m_bitmap[0].valid() && m_alphafile[0]) + if (m_bitmap[0].valid() && !m_alphafile[0].empty()) render_load_png(m_bitmap[0], *m_file[0], m_dirname.c_str(), m_alphafile[0].c_str(), true); // if we can't load the bitmap, allocate a dummy one and report an error @@ -1327,7 +1327,7 @@ void layout_element::component::load_bitmap() m_bitmap[0].pix32((step + line) % 100, line % 100) = rgb_t(0xff,0xff,0xff,0xff); // log an error - if (!m_alphafile[0]) + if (m_alphafile[0].empty()) osd_printf_warning("Unable to load component bitmap '%s'\n", m_imagefile[0].c_str()); else osd_printf_warning("Unable to load component bitmap '%s'/'%s'\n", m_imagefile[0].c_str(), m_alphafile[0].c_str()); diff --git a/src/emu/rendlay.h b/src/emu/rendlay.h index 5d59be7e08e..bcfbdcaf6d1 100644 --- a/src/emu/rendlay.h +++ b/src/emu/rendlay.h @@ -207,7 +207,7 @@ public: const render_color &color() const { return m_color; } int orientation() const { return m_orientation; } render_container *screen_container(running_machine &machine) const; - bool has_input() const { return bool(m_input_tag); } + bool has_input() const { return !m_input_tag.empty(); } const char *input_tag_and_mask(ioport_value &mask) const { mask = m_input_mask; return m_input_tag.c_str(); } // fetch state based on configured source diff --git a/src/emu/save.c b/src/emu/save.c index c4a93a0cefd..03f0859ef6a 100644 --- a/src/emu/save.c +++ b/src/emu/save.c @@ -173,12 +173,12 @@ void save_manager::save_memory(device_t *device, const char *module, const char for (state_entry *entry = m_entry_list.first(); entry != NULL; entry = entry->next()) { // stop when we find an entry whose name is after ours - if (entry->m_name > totalname) + if (entry->m_name.cmp(totalname)>0) break; insert_after = entry; // error if we are equal - if (entry->m_name == totalname) + if (entry->m_name.cmp(totalname)==0) fatalerror("Duplicate save state registration entry (%s)\n", totalname.c_str()); } diff --git a/src/emu/ui/filemngr.c b/src/emu/ui/filemngr.c index 38e4a55a9c7..55da5ba86bf 100644 --- a/src/emu/ui/filemngr.c +++ b/src/emu/ui/filemngr.c @@ -104,7 +104,7 @@ void ui_menu_file_manager::populate() bool first_entry = true; astring prev_owner; - if (m_warnings) + if (!m_warnings.empty()) { item_append(m_warnings.c_str(), NULL, MENU_FLAG_DISABLE, NULL); item_append("", NULL, MENU_FLAG_DISABLE, NULL); diff --git a/src/emu/ui/miscmenu.c b/src/emu/ui/miscmenu.c index a3f55b31cd7..431261cee78 100644 --- a/src/emu/ui/miscmenu.c +++ b/src/emu/ui/miscmenu.c @@ -122,14 +122,14 @@ void ui_menu_bios_selection::handle() if (strcmp(dev->tag(),":")==0) { astring error; machine().options().set_value("bios", val-1, OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); } else { astring error; astring value; astring temp; value.printf("%s,bios=%d",machine().options().main_value(temp,dev->owner()->tag()+1),val-1); machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); } reset(UI_MENU_RESET_REMEMBER_REF); } diff --git a/src/emu/ui/slotopt.c b/src/emu/ui/slotopt.c index ff1d7a54482..99fa9b32699 100644 --- a/src/emu/ui/slotopt.c +++ b/src/emu/ui/slotopt.c @@ -136,7 +136,7 @@ void ui_menu_slot_devices::set_slot_device(device_slot_interface *slot, const ch { astring error; machine().options().set_value(slot->device().tag()+1, val, OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); } /*------------------------------------------------- diff --git a/src/emu/ui/ui.c b/src/emu/ui/ui.c index c3041a7d885..7daee1fe5d1 100644 --- a/src/emu/ui/ui.c +++ b/src/emu/ui/ui.c @@ -2422,5 +2422,5 @@ void ui_manager::set_use_natural_keyboard(bool use_natural_keyboard) m_use_natural_keyboard = use_natural_keyboard; astring error; machine().options().set_value(OPTION_NATURAL_KEYBOARD, use_natural_keyboard, OPTION_PRIORITY_CMDLINE, error); - assert(!error); + assert(error.empty()); } diff --git a/src/emu/validity.c b/src/emu/validity.c index 722e6c555fd..887dd76e123 100644 --- a/src/emu/validity.c +++ b/src/emu/validity.c @@ -882,7 +882,7 @@ void validity_checker::validate_inputs() portlist.append(*device, errorbuf); // report any errors during construction - if (errorbuf) + if (!errorbuf.empty()) osd_printf_error("I/O port error during construction:\n%s\n", errorbuf.c_str()); // do a first pass over ports to add their names and find duplicates diff --git a/src/lib/util/astring.h b/src/lib/util/astring.h index b17ae17076d..1988f73840d 100644 --- a/src/lib/util/astring.h +++ b/src/lib/util/astring.h @@ -65,8 +65,8 @@ public: char operator[](int index) const { return (index < len()) ? m_text[index] : 0; } // implicit boolean conversion operators - operator bool() { return m_text[0] != 0; } - operator bool() const { return m_text[0] != 0; } + //operator bool() { return m_text[0] != 0; } + //operator bool() const { return m_text[0] != 0; } // C string conversion operators and helpers const char *c_str() const { return m_text; } @@ -77,6 +77,7 @@ public: // length query int len() const { return m_len; } + bool empty() const { return m_len==0; } // copy helpers astring &cpy(const char *src, int count); diff --git a/src/lib/util/chdcd.c b/src/lib/util/chdcd.c index 0720a6b9aa0..bd2cf2a3837 100644 --- a/src/lib/util/chdcd.c +++ b/src/lib/util/chdcd.c @@ -925,7 +925,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i if (trknum == (outtoc.numtrks-1)) { /* if we have the same filename as the last track, do it that way */ - if (trknum != 0 && outinfo.track[trknum].fname == outinfo.track[trknum-1].fname) + if (trknum != 0 && (outinfo.track[trknum].fname.cmp(outinfo.track[trknum-1].fname)==0)) { tlen = get_file_size(outinfo.track[trknum].fname.c_str()); if (tlen == 0) @@ -952,7 +952,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i else { /* if we have the same filename as the next track, do it that way */ - if (outinfo.track[trknum].fname == outinfo.track[trknum+1].fname) + if (outinfo.track[trknum].fname.cmp(outinfo.track[trknum+1].fname)==0) { outtoc.tracks[trknum].frames = outinfo.track[trknum+1].idx0offs - outinfo.track[trknum].idx0offs; diff --git a/src/lib/util/options.c b/src/lib/util/options.c index f5beddf1d71..3ba8956eb3f 100644 --- a/src/lib/util/options.c +++ b/src/lib/util/options.c @@ -362,7 +362,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, astri if (curentry->type() == OPTION_COMMAND) { // can only have one command - if (m_command) + if (!m_command.empty()) { error_string.catprintf("Error: multiple commands specified -%s and %s\n", m_command.c_str(), curarg); return false; @@ -701,7 +701,7 @@ void core_options::remove_entry(core_options::entry &delentry) { // remove all names from the map for (int name = 0; name < ARRAY_LENGTH(delentry.m_name); name++) - if (delentry.m_name[name]) + if (!delentry.m_name[name].empty()) m_entrymap.remove(delentry.m_name[name].c_str()); // remove the entry from the list diff --git a/src/lib/util/options.h b/src/lib/util/options.h index 1b9528ff433..dafd2214dab 100644 --- a/src/lib/util/options.h +++ b/src/lib/util/options.h @@ -75,7 +75,7 @@ public: public: // getters entry *next() const { return m_next; } - const char *name(int index = 0) const { return (index < ARRAY_LENGTH(m_name) && m_name[index]) ? m_name[index].c_str() : NULL; } + const char *name(int index = 0) const { return (index < ARRAY_LENGTH(m_name) && !m_name[index].empty()) ? m_name[index].c_str() : NULL; } const char *description() const { return m_description; } const char *value() const { return m_data.c_str(); } const char *default_value() const { return m_defdata.c_str(); } @@ -87,7 +87,7 @@ public: bool is_header() const { return type() == OPTION_HEADER; } bool is_command() const { return type() == OPTION_COMMAND; } bool is_internal() const { return m_flags & OPTION_FLAG_INTERNAL; } - bool has_range() const { return (m_minimum && m_maximum); } + bool has_range() const { return (!m_minimum.empty() && !m_maximum.empty()); } int priority() const { return m_priority; } // setters diff --git a/src/osd/modules/debugger/debugint.c b/src/osd/modules/debugger/debugint.c index 9e2c988deff..cbb7a627466 100644 --- a/src/osd/modules/debugger/debugint.c +++ b/src/osd/modules/debugger/debugint.c @@ -481,7 +481,7 @@ static void dview_draw_title(DView *dv) dview_draw_outlined_box(dv, RECT_DVIEW_TITLE, 0, 0, dv->bounds.width(), TITLE_HEIGHT, col); - if (!dv->title) + if (dv->title.empty()) return; for (i = 0; ititle.c_str()); i++) diff --git a/src/osd/windows/winmain.c b/src/osd/windows/winmain.c index c9360a648c4..7cd0fb6bfcb 100644 --- a/src/osd/windows/winmain.c +++ b/src/osd/windows/winmain.c @@ -551,7 +551,7 @@ void windows_osd_interface::init(running_machine &machine) options.set_value(OSDOPTION_SOUND, "none", OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OSDOPTION_VIDEO, "none", OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OPTION_SECONDS_TO_RUN, bench, OPTION_PRIORITY_MAXIMUM, error_string); - assert(!error_string); + assert(error_string.empty()); } // determine if we are profiling, and adjust options appropriately @@ -561,7 +561,7 @@ void windows_osd_interface::init(running_machine &machine) options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OSDOPTION_MULTITHREADING, false, OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OSDOPTION_NUMPROCESSORS, 1, OPTION_PRIORITY_MAXIMUM, error_string); - assert(!error_string); + assert(error_string.empty()); } // thread priority diff --git a/src/tools/chdman.c b/src/tools/chdman.c index a416772729d..4e73fc5f9f8 100644 --- a/src/tools/chdman.c +++ b/src/tools/chdman.c @@ -320,7 +320,7 @@ public: if (offset >= startoffs && offset < endoffs) { // if we don't already have this file open, open it now - if (m_file == NULL || m_lastfile != m_info.track[tracknum].fname) + if (m_file == NULL || m_lastfile.cmp(m_info.track[tracknum].fname)!=0) { if (m_file != NULL) core_fclose(m_file); diff --git a/src/tools/split.c b/src/tools/split.c index 4e3d93c8bb8..8f598064ffd 100644 --- a/src/tools/split.c +++ b/src/tools/split.c @@ -318,7 +318,7 @@ static int join_file(const char *filename, const char *outname, int write_output compute_hash_as_string(computedhash, splitbuffer, length); // compare - if (computedhash != expectedhash) + if (computedhash.cmp(expectedhash)!=0) { printf("\n"); fprintf(stderr, "Fatal error: file '%s' has incorrect hash\n Expected: %s\n Computed: %s\n", infilename.c_str(), expectedhash.c_str(), computedhash.c_str()); diff --git a/src/tools/src2html.c b/src/tools/src2html.c index 7d0c55fa6c0..57bdbd9ba9b 100644 --- a/src/tools/src2html.c +++ b/src/tools/src2html.c @@ -423,7 +423,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, astring &srcdir, astring dstfile.printf("%s%c%s.html", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); if (indexfile != NULL) core_fprintf(indexfile, "\t
  • %s
  • \n", curlist->name.c_str(), curlist->name.c_str()); - result = output_file(type, srcrootlen, dstrootlen, srcfile, dstfile, srcdir == dstdir, tempheader, tempfooter); + result = output_file(type, srcrootlen, dstrootlen, srcfile, dstfile, srcdir.cmp(dstdir)==0, tempheader, tempfooter); } } @@ -879,7 +879,7 @@ static bool find_include_file(astring &srcincpath, int srcrootlen, int dstrootle astring tempinc(srcincpath, 0, sepindex); // if we don't match, stop - if (tempfile != tempinc) + if (tempfile.cmp(tempinc)!=0) break; lastsepindex = sepindex + 1; } -- cgit v1.2.3-70-g09d2 From 2f095e71f13487dbecce6a49895b03250b284b64 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 12:21:16 +0200 Subject: SDL fix (nw) --- src/osd/modules/font/font_sdl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/osd/modules/font/font_sdl.c b/src/osd/modules/font/font_sdl.c index fbe1206d068..ec823243b9f 100644 --- a/src/osd/modules/font/font_sdl.c +++ b/src/osd/modules/font/font_sdl.c @@ -55,7 +55,7 @@ bool osd_font_sdl::open(const char *font_path, const char *_name, int &height) // accept qualifiers from the name astring name(_name); - if (name == "default") + if (name.cmp("default")==0) { name = "Liberation Sans"; } -- cgit v1.2.3-70-g09d2 From 7e1f926b941b4e5a571093e2202caeaa72009708 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 15:06:07 +0200 Subject: more astring -> std::string (nw) --- src/emu/diimage.c | 4 +- src/emu/diimage.h | 2 +- src/emu/imagedev/floppy.c | 12 +++--- src/emu/imagedev/floppy.h | 6 +-- src/emu/ui/filesel.c | 20 +++++----- src/emu/ui/filesel.h | 12 +++--- src/emu/ui/imgcntrl.c | 16 ++++---- src/emu/ui/imgcntrl.h | 8 ++-- src/emu/ui/swlist.c | 2 +- src/emu/ui/swlist.h | 4 +- src/lib/util/zippath.c | 100 ++++++++++++++++++++++++---------------------- src/lib/util/zippath.h | 10 ++--- 12 files changed, 101 insertions(+), 95 deletions(-) (limited to 'src') diff --git a/src/emu/diimage.c b/src/emu/diimage.c index 290b92c32ad..45474cca2c6 100644 --- a/src/emu/diimage.c +++ b/src/emu/diimage.c @@ -573,7 +573,7 @@ image_error_t device_image_interface::load_image_by_path(UINT32 open_flags, cons { file_error filerr = FILERR_NOT_FOUND; image_error_t err = IMAGE_ERROR_FILENOTFOUND; - astring revised_path; + std::string revised_path; /* attempt to read the file */ filerr = zippath_fopen(path, open_flags, m_file, revised_path); @@ -627,7 +627,7 @@ int device_image_interface::reopen_for_write(const char *path) file_error filerr = FILERR_NOT_FOUND; image_error_t err = IMAGE_ERROR_FILENOTFOUND; - astring revised_path; + std::string revised_path; /* attempt to open the file for writing*/ filerr = zippath_fopen(path, OPEN_FLAG_READ|OPEN_FLAG_WRITE|OPEN_FLAG_CREATE, m_file, revised_path); diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 7d90142e478..3d082af7b2e 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -280,7 +280,7 @@ protected: astring m_filetype; /* working directory; persists across mounts */ - astring m_working_directory; + std::string m_working_directory; /* Software information */ astring m_full_software_name; diff --git a/src/emu/imagedev/floppy.c b/src/emu/imagedev/floppy.c index 6fe78ec14d7..ea7e126e177 100644 --- a/src/emu/imagedev/floppy.c +++ b/src/emu/imagedev/floppy.c @@ -320,10 +320,10 @@ void floppy_image_device::device_timer(emu_timer &timer, device_timer_id id, int index_resync(); } -floppy_image_format_t *floppy_image_device::identify(astring filename) +floppy_image_format_t *floppy_image_device::identify(std::string filename) { core_file *fd; - astring revised_path; + std::string revised_path; file_error err = zippath_fopen(filename.c_str(), OPEN_FLAG_READ, fd, revised_path); if(err) { @@ -862,7 +862,7 @@ ui_menu_control_floppy_image::~ui_menu_control_floppy_image() void ui_menu_control_floppy_image::do_load_create() { floppy_image_device *fd = static_cast(image); - if(input_filename.cmp("")==0) { + if(input_filename.compare("")==0) { int err = fd->create(output_filename.c_str(), 0, NULL); if (err != 0) { popmessage("Error: %s", fd->error()); @@ -871,7 +871,7 @@ void ui_menu_control_floppy_image::do_load_create() fd->setup_write(output_format); } else { int err = fd->load(input_filename.c_str()); - if(!err && output_filename.cmp("")!=0) + if (!err && output_filename.compare("") != 0) err = fd->reopen_for_write(output_filename.c_str()); if(err != 0) { popmessage("Error: %s", fd->error()); @@ -882,7 +882,7 @@ void ui_menu_control_floppy_image::do_load_create() } } -void ui_menu_control_floppy_image::hook_load(astring filename, bool softlist) +void ui_menu_control_floppy_image::hook_load(std::string filename, bool softlist) { if (softlist) { @@ -905,7 +905,7 @@ void ui_menu_control_floppy_image::hook_load(astring filename, bool softlist) bool can_in_place = input_format->supports_save(); if(can_in_place) { file_error filerr = FILERR_NOT_FOUND; - astring tmp_path; + std::string tmp_path; core_file *tmp_file; /* attempt to open the file for writing but *without* create */ filerr = zippath_fopen(filename.c_str(), OPEN_FLAG_READ | OPEN_FLAG_WRITE, tmp_file, tmp_path); diff --git a/src/emu/imagedev/floppy.h b/src/emu/imagedev/floppy.h index 17efab51cf8..b2acc7091dc 100644 --- a/src/emu/imagedev/floppy.h +++ b/src/emu/imagedev/floppy.h @@ -67,7 +67,7 @@ public: void set_formats(const floppy_format_type *formats); floppy_image_format_t *get_formats() const; floppy_image_format_t *get_load_format() const; - floppy_image_format_t *identify(astring filename); + floppy_image_format_t *identify(std::string filename); void set_rpm(float rpm); // image-level overrides @@ -197,10 +197,10 @@ protected: floppy_image_format_t **format_array; floppy_image_format_t *input_format, *output_format; - astring input_filename, output_filename; + std::string input_filename, output_filename; void do_load_create(); - virtual void hook_load(astring filename, bool softlist); + virtual void hook_load(std::string filename, bool softlist); }; diff --git a/src/emu/ui/filesel.c b/src/emu/ui/filesel.c index 6828e29ae35..01dff2708b4 100644 --- a/src/emu/ui/filesel.c +++ b/src/emu/ui/filesel.c @@ -219,7 +219,7 @@ static int is_valid_filename_char(unicode_char unichar) // ctor //------------------------------------------------- -ui_menu_file_create::ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, astring ¤t_directory, astring ¤t_file, bool *ok) +ui_menu_file_create::ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok) : ui_menu(machine, container), m_current_directory(current_directory), m_current_file(current_file) @@ -257,14 +257,14 @@ void ui_menu_file_create::custom_render(void *selectedref, float top, float bott void ui_menu_file_create::populate() { - astring buffer; + std::string buffer; const image_device_format *format; const char *new_image_name; // append the "New Image Name" item if (get_selection() == ITEMREF_NEW_IMAGE_NAME) { - buffer.cat(m_filename_buffer).cat("_"); + buffer.append(m_filename_buffer).append("_"); new_image_name = buffer.c_str(); } else @@ -307,10 +307,10 @@ void ui_menu_file_create::handle() case IPT_UI_SELECT: if ((event->itemref == ITEMREF_CREATE) || (event->itemref == ITEMREF_NEW_IMAGE_NAME)) { - astring tmp_file(m_filename_buffer); - if (tmp_file.find(".") != -1 && tmp_file.find(".") < tmp_file.len() - 1) + std::string tmp_file(m_filename_buffer); + if (tmp_file.find(".") != -1 && tmp_file.find(".") < tmp_file.length() - 1) { - m_current_file.cpy(m_filename_buffer); + m_current_file.append(m_filename_buffer); ui_menu::stack_pop(machine()); } else @@ -344,7 +344,7 @@ void ui_menu_file_create::handle() // ctor //------------------------------------------------- -ui_menu_file_selector::ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, astring ¤t_directory, astring ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result) +ui_menu_file_selector::ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result) : ui_menu(machine, container), m_current_directory(current_directory), m_current_file(current_file) @@ -456,7 +456,7 @@ ui_menu_file_selector::file_selector_entry *ui_menu_file_selector::append_entry( ui_menu_file_selector::file_selector_entry *ui_menu_file_selector::append_dirent_entry(const osd_directory_entry *dirent) { - astring buffer; + std::string buffer; file_selector_entry_type entry_type; file_selector_entry *entry; @@ -664,13 +664,13 @@ void ui_menu_file_selector::handle() machine().ui().popup_time(1, "Error accessing %s", entry->fullpath); break; } - m_current_directory.cpy(entry->fullpath); + m_current_directory.assign(entry->fullpath); reset((ui_menu_reset_options)0); break; case SELECTOR_ENTRY_TYPE_FILE: // file - m_current_file.cpy(entry->fullpath); + m_current_file.assign(entry->fullpath); *m_result = R_FILE; ui_menu::stack_pop(machine()); break; diff --git a/src/emu/ui/filesel.h b/src/emu/ui/filesel.h index d06b8853e41..13db951f49a 100644 --- a/src/emu/ui/filesel.h +++ b/src/emu/ui/filesel.h @@ -34,7 +34,7 @@ private: class ui_menu_file_create : public ui_menu { public: - ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, astring ¤t_directory, astring ¤t_file, bool *ok); + ui_menu_file_create(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool *ok); virtual ~ui_menu_file_create(); virtual void populate(); virtual void handle(); @@ -42,8 +42,8 @@ public: private: device_image_interface * m_image; - astring & m_current_directory; - astring & m_current_file; + std::string & m_current_directory; + std::string & m_current_file; const image_device_format * m_current_format; char m_filename_buffer[1024]; @@ -58,7 +58,7 @@ class ui_menu_file_selector : public ui_menu { public: enum { R_EMPTY, R_SOFTLIST, R_CREATE, R_FILE }; - ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, astring ¤t_directory, astring ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result); + ui_menu_file_selector(running_machine &machine, render_container *container, device_image_interface *image, std::string ¤t_directory, std::string ¤t_file, bool has_empty, bool has_softlist, bool has_create, int *result); virtual ~ui_menu_file_selector(); virtual void populate(); virtual void handle(); @@ -86,8 +86,8 @@ private: // internal state device_image_interface * m_image; - astring & m_current_directory; - astring & m_current_file; + std::string & m_current_directory; + std::string & m_current_file; bool m_has_empty; bool m_has_softlist; bool m_has_create; diff --git a/src/emu/ui/imgcntrl.c b/src/emu/ui/imgcntrl.c index bb1d54f0220..132bf2662c5 100644 --- a/src/emu/ui/imgcntrl.c +++ b/src/emu/ui/imgcntrl.c @@ -46,7 +46,7 @@ ui_menu_control_device_image::ui_menu_control_device_image(running_machine &mach if(swi) { state = START_OTHER_PART; - current_directory.cpy(image->working_directory()); + current_directory.assign(image->working_directory()); } else { @@ -55,14 +55,14 @@ ui_menu_control_device_image::ui_menu_control_device_image(running_machine &mach /* if the image exists, set the working directory to the parent directory */ if (image->exists()) { - current_file.cpy(image->filename()); + current_file.assign(image->filename()); zippath_parent(current_directory, current_file.c_str()); } else - current_directory.cpy(image->working_directory()); + current_directory.assign(image->working_directory()); /* check to see if the path exists; if not clear it */ if (zippath_opendir(current_directory.c_str(), NULL) != FILERR_NONE) - current_directory.reset(); + current_directory.clear(); } } @@ -82,7 +82,7 @@ ui_menu_control_device_image::~ui_menu_control_device_image() void ui_menu_control_device_image::test_create(bool &can_create, bool &need_confirm) { - astring path; + std::string path; osd_directory_entry *entry; osd_dir_entry_type file_type; @@ -132,7 +132,7 @@ void ui_menu_control_device_image::test_create(bool &can_create, bool &need_conf void ui_menu_control_device_image::load_software_part() { - astring temp_name = astring(sld->list_name()).cat(":").cat(swi->shortname()).cat(":").cat(swp->name()); + std::string temp_name = std::string(sld->list_name()).append(":").append(swi->shortname()).append(":").append(swp->name()); driver_enumerator drivlist(machine().options(), machine().options().system_name()); media_auditor auditor(drivlist); @@ -152,7 +152,7 @@ void ui_menu_control_device_image::load_software_part() // hook_load //------------------------------------------------- -void ui_menu_control_device_image::hook_load(astring name, bool softlist) +void ui_menu_control_device_image::hook_load(std::string name, bool softlist) { if (image->is_reset_on_load()) image->set_init_phase(); image->load(name.c_str()); @@ -330,7 +330,7 @@ void ui_menu_control_device_image::handle() break; case DO_CREATE: { - astring path; + std::string path; zippath_combine(path, current_directory.c_str(), current_file.c_str()); int err = image->create(path.c_str(), 0, NULL); if (err != 0) diff --git a/src/emu/ui/imgcntrl.h b/src/emu/ui/imgcntrl.h index 62912ce6922..d2db9404187 100644 --- a/src/emu/ui/imgcntrl.h +++ b/src/emu/ui/imgcntrl.h @@ -37,11 +37,11 @@ protected: int state; device_image_interface *image; int submenu_result; - astring current_directory; - astring current_file; + std::string current_directory; + std::string current_file; // methods - virtual void hook_load(astring filename, bool softlist); + virtual void hook_load(std::string filename, bool softlist); bool create_ok; @@ -52,7 +52,7 @@ private: const software_info *swi; const software_part *swp; class software_list_device *sld; - astring software_info_name; + std::string software_info_name; // methods void test_create(bool &can_create, bool &need_confirm); diff --git a/src/emu/ui/swlist.c b/src/emu/ui/swlist.c index 5917b552ea4..ff3d5771b76 100644 --- a/src/emu/ui/swlist.c +++ b/src/emu/ui/swlist.c @@ -120,7 +120,7 @@ void ui_menu_software_parts::handle() // ctor //------------------------------------------------- -ui_menu_software_list::ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, astring &result) +ui_menu_software_list::ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, std::string &result) : ui_menu(machine, container), m_result(result) { m_swlist = swlist; diff --git a/src/emu/ui/swlist.h b/src/emu/ui/swlist.h index 8d234e11ee8..7ca6f7513b8 100644 --- a/src/emu/ui/swlist.h +++ b/src/emu/ui/swlist.h @@ -41,7 +41,7 @@ private: class ui_menu_software_list : public ui_menu { public: - ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, astring &result); + ui_menu_software_list(running_machine &machine, render_container *container, software_list_device *swlist, const char *interface, std::string &result); virtual ~ui_menu_software_list(); virtual void populate(); virtual void handle(); @@ -57,7 +57,7 @@ private: // variables software_list_device * m_swlist; // currently selected list const char * m_interface; - astring & m_result; + std::string & m_result; entry_info * m_entrylist; char m_filename_buffer[1024]; bool m_ordered_by_shortname; diff --git a/src/lib/util/zippath.c b/src/lib/util/zippath.c index 4872f379135..b2097689ac7 100644 --- a/src/lib/util/zippath.c +++ b/src/lib/util/zippath.c @@ -23,7 +23,7 @@ struct zippath_returned_directory { zippath_returned_directory *next; - astring name; + std::string name; }; @@ -48,7 +48,7 @@ public: /* specific to ZIP directories */ bool called_zip_first; zip_file *zipfile; - astring zipprefix; + std::string zipprefix; zippath_returned_directory *returned_dirlist; }; @@ -109,13 +109,19 @@ static void parse_parent_path(const char *path, int *beginpos, int *endpos) zippath_parent - retrieves the parent directory -------------------------------------------------*/ -astring &zippath_parent(astring &dst, const char *path) +std::string &zippath_parent(std::string &dst, const char *path) { int pos; parse_parent_path(path, &pos, NULL); /* return the result */ - return (pos >= 0) ? dst.cpy(path, pos + 1) : dst.reset(); + if (pos >= 0) { + dst.assign(path, pos + 1); + } + else { + dst.clear(); + } + return dst; } @@ -125,12 +131,12 @@ astring &zippath_parent(astring &dst, const char *path) directory basename -------------------------------------------------*/ -astring &zippath_parent_basename(astring &dst, const char *path) +std::string &zippath_parent_basename(std::string &dst, const char *path) { int beginpos, endpos; parse_parent_path(path, &beginpos, &endpos); - - return dst.cpy(path + beginpos + 1, endpos - beginpos); + dst.copy((char*)(path + beginpos + 1), endpos - beginpos); + return dst; } @@ -139,11 +145,11 @@ astring &zippath_parent_basename(astring &dst, const char *path) zippath_combine - combines two paths -------------------------------------------------*/ -astring &zippath_combine(astring &dst, const char *path1, const char *path2) +std::string &zippath_combine(std::string &dst, const char *path1, const char *path2) { if (!strcmp(path2, ".")) { - dst.cpy(path1); + dst.assign(path1); } else if (!strcmp(path2, "..")) { @@ -151,15 +157,15 @@ astring &zippath_combine(astring &dst, const char *path1, const char *path2) } else if (osd_is_absolute_path(path2)) { - dst.cpy(path2); + dst.assign(path2); } else if ((path1[0] != '\0') && !is_path_separator(path1[strlen(path1) - 1])) { - dst.cpy(path1).cat(PATH_SEPARATOR).cat(path2); + dst.assign(path1).append(PATH_SEPARATOR).append(path2); } else { - dst.cpy(path1).cat(path2); + dst.assign(path1).append(path2); } return dst; } @@ -243,7 +249,7 @@ done: zippath_fopen - opens a zip path file -------------------------------------------------*/ -file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&file, astring &revised_path) +file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&file, std::string &revised_path) { file_error filerr = FILERR_NOT_FOUND; zip_error ziperr; @@ -254,13 +260,13 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil int len; /* first, set up the two types of paths */ - astring mainpath(filename); - astring subpath; + std::string mainpath(filename); + std::string subpath; file = NULL; /* loop through */ - while((file == NULL) && (mainpath.len() > 0) - && ((openflags == OPEN_FLAG_READ) || (subpath.len() == 0))) + while((file == NULL) && (mainpath.length() > 0) + && ((openflags == OPEN_FLAG_READ) || (subpath.length() == 0))) { /* is the mainpath a ZIP path? */ if (is_zip_file(mainpath.c_str())) @@ -276,7 +282,7 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil goto done; } - if (subpath.len() > 0) + if (subpath.length() > 0) header = zippath_find_sub_path(zip, subpath.c_str(), &entry_type); else header = zip_file_first_file(zip); @@ -293,8 +299,8 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil goto done; /* update subpath, if appropriate */ - if (subpath.len() == 0) - subpath.cpy(header->filename); + if (subpath.length() == 0) + subpath.assign(header->filename); /* we're done */ goto done; @@ -306,7 +312,7 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil goto done; } - if (subpath.len() == 0) + if (subpath.length() == 0) filerr = core_fopen(filename, openflags, &file); else filerr = FILERR_NOT_FOUND; @@ -315,40 +321,40 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil if (filerr != FILERR_NONE) { /* go up a directory */ - astring temp; + std::string temp; zippath_parent(temp, mainpath.c_str()); /* append to the sub path */ - if (subpath.len() > 0) + if (subpath.length() > 0) { - astring temp2; - temp2.cpysubstr(mainpath, temp.len()).cat(PATH_SEPARATOR).cat(subpath); - subpath.cpy(temp2); + std::string temp2; + temp2.assign(mainpath.substr(temp.length()).append(PATH_SEPARATOR).append(subpath)); + subpath.assign(temp2); } else - subpath.cpysubstr(mainpath, temp.len()); + subpath.assign(mainpath.substr(temp.length())); /* get the new main path, truncating path separators */ - len = temp.len(); + len = temp.length(); while (len > 0 && is_zip_file_separator(temp[len - 1])) len--; - mainpath.cpysubstr(temp, 0, len); + mainpath.assign(temp.substr(0, len)); } } done: /* store the revised path */ - revised_path.reset(); + revised_path.clear(); if (filerr == FILERR_NONE) { /* cannonicalize mainpath */ filerr = osd_get_full_path(&alloc_fullpath, mainpath.c_str()); if (filerr == FILERR_NONE) { - if (subpath.len() > 0) - revised_path.cpy(alloc_fullpath).cat(PATH_SEPARATOR).cat(subpath); + if (subpath.length() > 0) + revised_path.assign(alloc_fullpath).append(PATH_SEPARATOR).append(subpath); else - revised_path.cpy(alloc_fullpath); + revised_path.assign(alloc_fullpath); } } @@ -534,7 +540,7 @@ static const zip_file_header *zippath_find_sub_path(zip_file *zipfile, const cha true path and ZIP entry components -------------------------------------------------*/ -static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_type, zip_file *&zipfile, astring &newpath) +static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_type, zip_file *&zipfile, std::string &newpath) { file_error err; osd_directory_entry *current_entry = NULL; @@ -542,21 +548,21 @@ static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_ty int went_up = FALSE; int i; - newpath.reset(); + newpath.clear(); /* be conservative */ entry_type = ENTTYPE_NONE; zipfile = NULL; - astring apath(path); - astring apath_trimmed; + std::string apath(path); + std::string apath_trimmed; do { /* trim the path of trailing path separators */ - i = apath.len(); + i = apath.length(); while (i > 1 && is_path_separator(apath[i - 1])) i--; - apath_trimmed.cpysubstr(apath, 0, i); + apath_trimmed.assign(apath.substr(0, i)); /* stat the path */ current_entry = osd_stat(apath_trimmed.c_str()); @@ -574,8 +580,8 @@ static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_ty /* if we have not found the file or directory, go up */ current_entry_type = ENTTYPE_NONE; went_up = TRUE; - astring parent; - apath.cpy(zippath_parent(parent, apath.c_str())); + std::string parent; + apath.assign(zippath_parent(parent, apath.c_str())); } } while (current_entry_type == ENTTYPE_NONE && !is_root(apath.c_str())); @@ -591,10 +597,10 @@ static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_ty if ((current_entry_type == ENTTYPE_FILE) && is_zip_file(apath_trimmed.c_str()) && (zip_file_open(apath_trimmed.c_str(), &zipfile) == ZIPERR_NONE)) { - i = strlen(path + apath.len()); - while (i > 0 && is_zip_path_separator(path[apath.len() + i - 1])) + i = strlen(path + apath.length()); + while (i > 0 && is_zip_path_separator(path[apath.length() + i - 1])) i--; - newpath.cpy(path + apath.len(), i); + newpath.assign(path + apath.length(), i); /* this was a true ZIP path - attempt to identify the type of path */ zippath_find_sub_path(zipfile, newpath.c_str(), ¤t_entry_type); @@ -612,7 +618,7 @@ static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_ty err = FILERR_NOT_FOUND; goto done; } - newpath.cpy(path); + newpath.assign(path); } /* success! */ @@ -716,7 +722,7 @@ void zippath_closedir(zippath_directory *directory) static const char *get_relative_path(zippath_directory *directory, const zip_file_header *header) { const char *result = NULL; - int len = directory->zipprefix.len(); + int len = directory->zipprefix.length(); if ((len <= strlen(header->filename)) && !strncmp(directory->zipprefix.c_str(), header->filename, len)) @@ -807,7 +813,7 @@ const osd_directory_entry *zippath_readdir(zippath_directory *directory) /* we've found a new directory; add this to returned_dirlist */ rdent = new zippath_returned_directory; rdent->next = directory->returned_dirlist; - rdent->name.cpy(relpath, separator - relpath); + rdent->name.assign(relpath, separator - relpath); directory->returned_dirlist = rdent; /* ...and return it */ diff --git a/src/lib/util/zippath.h b/src/lib/util/zippath.h index 12c7546ae9a..ff79409f0e8 100644 --- a/src/lib/util/zippath.h +++ b/src/lib/util/zippath.h @@ -12,7 +12,7 @@ #define __ZIPPATH_H__ #include "corefile.h" -#include "astring.h" +#include #include "unzip.h" @@ -31,19 +31,19 @@ class zippath_directory; /* ----- path operations ----- */ /* retrieves the parent directory */ -astring &zippath_parent(astring &dst, const char *path); +std::string &zippath_parent(std::string &dst, const char *path); /* retrieves the parent directory basename */ -astring &zippath_parent_basename(astring &dst, const char *path); +std::string &zippath_parent_basename(std::string &dst, const char *path); /* combines two paths */ -astring &zippath_combine(astring &dst, const char *path1, const char *path2); +std::string &zippath_combine(std::string &dst, const char *path1, const char *path2); /* ----- file operations ----- */ /* opens a zip path file */ -file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&file, astring &revised_path); +file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&file, std::string &revised_path); /* ----- directory operations ----- */ -- cgit v1.2.3-70-g09d2 From f9462eb086d1832237f44e52941e55d56db51ca7 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 19 Apr 2015 15:12:22 +0200 Subject: change astring in ldplayer (nw) --- src/ldplayer/ldplayer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ldplayer/ldplayer.c b/src/ldplayer/ldplayer.c index da94f8331bf..2c954ef4b75 100644 --- a/src/ldplayer/ldplayer.c +++ b/src/ldplayer/ldplayer.c @@ -137,7 +137,7 @@ protected: }; // internal state - astring m_filename; + std::string m_filename; ioport_value m_last_controls; bool m_playing; }; @@ -229,14 +229,14 @@ chd_file *ldplayer_state::get_disc() file_error filerr = image_file.open(dir->name); if (filerr == FILERR_NONE) { - astring fullpath(image_file.fullpath()); + std::string fullpath(image_file.fullpath()); image_file.close(); // try to open the CHD if (set_disk_handle(machine(), "laserdisc", fullpath.c_str()) == CHDERR_NONE) { - m_filename.cpy(dir->name); + m_filename.assign(dir->name); found = TRUE; break; } -- cgit v1.2.3-70-g09d2 From f904ff75a76c4c03342f382e9e52538f17ff4230 Mon Sep 17 00:00:00 2001 From: briantro Date: Sun, 19 Apr 2015 11:15:11 -0500 Subject: new Raiden Fighters clone New Clone Added ------------------------------------ Raiden Fighters (Germany) [Fabrice Arzeno, The Dumping Union] --- src/mame/drivers/seibuspi.c | 63 +++++++++++++++++++++++++++++++++++---------- src/mame/mame.lst | 7 ++--- 2 files changed, 53 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c index a0f14e724b9..fc4b62e7e4e 100644 --- a/src/mame/drivers/seibuspi.c +++ b/src/mame/drivers/seibuspi.c @@ -2755,12 +2755,12 @@ ROM_START( viprp1ot ) ROM_END -ROM_START( rdft ) +ROM_START( rdft ) /* SXX2C ROM SUB2 cart */ ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ - ROM_LOAD32_BYTE("gd_1.211", 0x000000, 0x80000, CRC(f6b2cbdc) SHA1(040c4ff961c8be388c8279b06b777d528c2acc1b) ) - ROM_LOAD32_BYTE("gd_2.212", 0x000001, 0x80000, CRC(1982f812) SHA1(4f12fc3fd7f7a4beda4d29cc81e3a58d255e441f) ) - ROM_LOAD32_BYTE("gd_3.210", 0x000002, 0x80000, CRC(b0f59f44) SHA1(d44fe074ddab35cd0190535cd9fbd7f9e49312a4) ) - ROM_LOAD32_BYTE("gd_4.29", 0x000003, 0x80000, CRC(cd8705bd) SHA1(b19a1486d6b899a134d7b518863ddc8f07967e8b) ) + ROM_LOAD32_BYTE("raiden-fi_prg0_121196.u0211", 0x000000, 0x80000, CRC(adcb5dbc) SHA1(3831becd1e052d81dd00ee098ee630fe35164df8) ) + ROM_LOAD32_BYTE("raiden-fi_prg1_121196.u0212", 0x000001, 0x80000, CRC(60c5b92e) SHA1(ca67f97f9e7d8a21667dc59e7d390dff91179b08) ) + ROM_LOAD32_BYTE("raiden-fi_prg2_121196.u0210", 0x000002, 0x80000, CRC(44b86db5) SHA1(bb05c6d27af86084cd3e17a189826c836f229c8b) ) + ROM_LOAD32_BYTE("raiden-fi_prg3_121196.u029", 0x000003, 0x80000, CRC(e70727ce) SHA1(2e4e896d50cf086e682054cb2e9c223af04cd0cb) ) ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */ @@ -2786,7 +2786,7 @@ ROM_START( rdft ) ROM_LOAD32_BYTE("gd_8.216", 0x800000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) ROM_REGION( 0x100000, "soundflash1", 0 ) /* on SPI motherboard */ - ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) ) + ROM_LOAD("flash0_blank_region80.u1053", 0x000000, 0x100000, CRC(e2adaff5) SHA1(9297afaf78209724515d8f78de8cee7bc7cb796b) ) ROM_END ROM_START( rdftu ) @@ -2824,6 +2824,40 @@ ROM_START( rdftu ) ROM_END ROM_START( rdftj ) + ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ + ROM_LOAD32_BYTE("gd_1.211", 0x000000, 0x80000, CRC(f6b2cbdc) SHA1(040c4ff961c8be388c8279b06b777d528c2acc1b) ) + ROM_LOAD32_BYTE("gd_2.212", 0x000001, 0x80000, CRC(1982f812) SHA1(4f12fc3fd7f7a4beda4d29cc81e3a58d255e441f) ) + ROM_LOAD32_BYTE("gd_3.210", 0x000002, 0x80000, CRC(b0f59f44) SHA1(d44fe074ddab35cd0190535cd9fbd7f9e49312a4) ) + ROM_LOAD32_BYTE("gd_4.29", 0x000003, 0x80000, CRC(cd8705bd) SHA1(b19a1486d6b899a134d7b518863ddc8f07967e8b) ) + + ROM_REGION( 0x40000, "audiocpu", ROMREGION_ERASE00 ) /* 256K RAM, ROM from Z80 point-of-view */ + + ROM_REGION( 0x30000, "gfx1", ROMREGION_ERASEFF ) /* text layer roms */ + ROM_LOAD24_BYTE("gd_5.423", 0x000000, 0x10000, CRC(8f8d4e14) SHA1(06c803975767ae98f40ba7ac5764a5bc8baa3a30) ) + ROM_LOAD24_BYTE("gd_6.424", 0x000001, 0x10000, CRC(6ac64968) SHA1(ec395205c24c4f864a1f805bb0d4641562d4faa9) ) + ROM_LOAD24_BYTE("gd_7.48", 0x000002, 0x10000, CRC(4d87e1ea) SHA1(3230e9b643fad773e61ab8ce09c0cd7d4d0558e3) ) + + ROM_REGION( 0x600000, "gfx2", ROMREGION_ERASEFF ) /* background layer roms */ + ROM_LOAD24_WORD("gd_bg1-d.415", 0x000000, 0x200000, CRC(6a68054c) SHA1(5cbfc4ac90045f1401c2dda7a51936558c9de07e) ) + ROM_LOAD24_BYTE("gd_bg1-p.410", 0x000002, 0x100000, CRC(3400794a) SHA1(719808f7442bac612cefd7b7fffcd665e6337ad0) ) + ROM_LOAD24_WORD("gd_bg2-d.416", 0x300000, 0x200000, CRC(61cd2991) SHA1(bb608e3948bf9ea35b5e1615d2ba6858d029dcbe) ) + ROM_LOAD24_BYTE("gd_bg2-p.49", 0x300002, 0x100000, CRC(502d5799) SHA1(c3a0e1a4f5a7b35572ae1ff31315da4ed08aa2fe) ) + + ROM_REGION( 0xc00000, "gfx3", 0 ) /* sprites */ + ROM_LOAD("gd_obj-1.322", 0x000000, 0x400000, CRC(59d86c99) SHA1(d3c9241e7b51fe21f8351051b063f91dc69bf905) ) + ROM_LOAD("gd_obj-2.324", 0x400000, 0x400000, CRC(1ceb0b6f) SHA1(97225a9b3e7be18080aa52f6570af2cce8f25c06) ) + ROM_LOAD("gd_obj-3.323", 0x800000, 0x400000, CRC(36e93234) SHA1(51917a80b7da5c32a9434a1076fc2916d62e6a3e) ) + + ROM_REGION32_LE( 0xa00000, "sound01", ROMREGION_ERASE00 ) /* sound roms */ + ROM_LOAD32_WORD("gd_pcm.217", 0x000000, 0x100000, CRC(31253ad7) SHA1(c81c8d50f8f287f5cbfaec77b30d969b01ce11a9) ) + ROM_CONTINUE( 0x400000, 0x100000 ) + ROM_LOAD32_BYTE("gd_8.216", 0x800000, 0x080000, CRC(f88cb6e4) SHA1(fb35b41307b490d5d08e4b8a70f8ff4ce2ca8105) ) + + ROM_REGION( 0x100000, "soundflash1", 0 ) /* on SPI motherboard */ + ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) ) +ROM_END + +ROM_START( rdftja ) ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ ROM_LOAD32_BYTE("rf1.bin", 0x000000, 0x80000, CRC(46861b75) SHA1(079c589c490d49f7ec97a7e68c5b6e7e37872827) ) ROM_LOAD32_BYTE("rf2.bin", 0x000001, 0x80000, CRC(6388ed11) SHA1(aebbccfb0f704cdceb45ea71216275dd83880e15) ) @@ -2857,7 +2891,7 @@ ROM_START( rdftj ) ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) ) ROM_END -ROM_START( rdftja ) /* SXX2C ROM SUB4 cart */ +ROM_START( rdftjb ) /* SXX2C ROM SUB4 cart */ ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ ROM_LOAD32_BYTE("seibu1.u0211", 0x000000, 0x080000, CRC(b70afcc2) SHA1(70ac545a9fc30df310254997674878fbc2c2d718) ) // socket is silkscreened on pcb PRG0 ROM_LOAD32_BYTE("raiden-f_prg2.u0212", 0x000001, 0x080000, CRC(58ccb10c) SHA1(0cce4057bfada78121d9586574b98d46cdd7dd46) ) // socket is silkscreened on pcb PRG1 @@ -3201,7 +3235,7 @@ ROM_START( rdft2j ) /* SPI Cart, Japan */ ROM_LOAD("flash0_blank_region01.u1053", 0x000000, 0x100000, CRC(7ae7ab76) SHA1(a2b196f470bf64af94002fc4e2640fadad00418f) ) ROM_END -ROM_START( rdft2j2 ) /* SPI Cart, Japan */ +ROM_START( rdft2ja ) /* SPI Cart, Japan */ ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ ROM_LOAD32_BYTE("rf2.1", 0x000000, 0x80000, CRC(391d5057) SHA1(a1849142cbf7344ac1279781597e27b3b8ae6127) ) ROM_LOAD32_BYTE("rf2_2.bin", 0x000001, 0x80000, CRC(ec73a767) SHA1(83f3905afe49401793c0ea0193cb31d3ba1e1739) ) @@ -3276,7 +3310,7 @@ ROM_START( rdft2a ) /* SPI Cart, Asia (Metrotainment license); SPI PCB is marked ROM_LOAD("flash0_blank_region22.u1053", 0x000000, 0x100000, CRC(5fee8413) SHA1(6d6a62fa01293b4ba4b349a39820d024add6ea22) ) ROM_END -ROM_START( rdft2a2 ) /* SPI Cart, Asia (Dream Island license) */ +ROM_START( rdft2aa ) /* SPI Cart, Asia (Dream Island license) */ ROM_REGION32_LE( 0x200000, "maincpu", 0 ) /* i386 program */ ROM_LOAD32_BYTE("rf2_1.bin", 0x000000, 0x80000, CRC(72198410) SHA1(ca4bc858f6bf247a343b0fdae1d1a3cdabc4a3c3) ) ROM_LOAD32_BYTE("rf2_2.bin", 0x000001, 0x80000, CRC(ec73a767) SHA1(83f3905afe49401793c0ea0193cb31d3ba1e1739) ) @@ -3797,9 +3831,10 @@ GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, GAME( 1996, ejanhs, 0, ejanhs, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E-Jan High School (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) -GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1996, rdftja, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 3)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Germany)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftja, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1996, rdftjb, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 3)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1996, rdftu, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1996, rdftam, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Hong Kong)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1996, rdftadi, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) @@ -3811,9 +3846,9 @@ GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, GAME( 1997, rdft2, 0, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Germany)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1997, rdft2u, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1997, rdft2j, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1997, rdft2j2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2ja, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1997, rdft2a, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Hong Kong)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) -GAME( 1997, rdft2a2, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1997, rdft2aa, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1997, rdft2t, rdft2, spi, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1998, rfjet, 0, spi, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Germany)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4d58ebac83c..0f47d0ffd11 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -8521,12 +8521,13 @@ viprp1hk // (c) 1995 Seibu Kaihatsu (Metrotainment License) ejanhs // (c) 1996 Seibu Kaihatsu -rdft // (c) 1996 Seibu Kaihatsu +rdft // (c) 1996 Seibu Kaihatsu (Tuning License) rdftu // (c) 1996 Seibu Kaihatsu (Fabtek license) rdftau // (c) 1996 Seibu Kaihatsu rdftauge // (c) 1996 Seibu Kaihatsu (Tuning license and text display, but Australia region code) rdftj // (c) 1996 Seibu Kaihatsu rdftja // (c) 1996 Seibu Kaihatsu +rdftjb // (c) 1996 Seibu Kaihatsu rdftadi // (c) 1996 Seibu Kaihatsu (Dream Island license) rdftam // (c) 1996 Seibu Kaihatsu (Metrotainment license) rdftit // (c) 1996 Seibu Kaihatsu @@ -8535,9 +8536,9 @@ rdfts // (c) 1996 Seibu Kaihatsu (Explorer System Corp.) rdft2 // (c) 1997 Seibu Kaihatsu (Tuning License) rdft2a // (c) 1997 Seibu Kaihatsu (Metrotainment license) -rdft2a2 // (c) 1997 Seibu Kaihatsu (Dream Island license) +rdft2aa // (c) 1997 Seibu Kaihatsu (Dream Island license) rdft2j // (c) 1997 Seibu Kaihatsu -rdft2j2 // (c) 1997 Seibu Kaihatsu +rdft2ja // (c) 1997 Seibu Kaihatsu rdft2t // (c) 1997 Seibu Kaihatsu rdft2u // (c) 1997 Seibu Kaihatsu (Fabtek license) rdft2us // (c) 1997 Seibu Kaihatsu (Fabtek license) -- cgit v1.2.3-70-g09d2 From 1c5cd2e552ae7a4f4186bb11cf0ead033dae442b Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 19 Apr 2015 18:57:39 +0200 Subject: Fix crash in mame debugger caused by netlist. (nw) --- src/emu/machine/netlist.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index 83979cbb09b..643665caef6 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -537,9 +537,9 @@ ATTR_COLD offs_t netlist_mame_cpu_device_t::disasm_disassemble(char *buffer, off int relpc = pc - m_genPC; if (relpc >= 0 && relpc < netlist().queue().count()) { - // sprintf(buffer, "%04x %02d %s", pc, relpc, netlist().queue()[netlist().queue().count() - relpc - 1].object().name().cstr()); int dpc = netlist().queue().count() - relpc - 1; - sprintf(buffer, "%c %s @%10.7f", (relpc == 0) ? '*' : ' ', netlist().queue()[dpc].object()->name().cstr(), + // FIXME: 50 below fixes crash in mame-debugger. It's based on try on error. + snprintf(buffer, 50, "%c %s @%10.7f", (relpc == 0) ? '*' : ' ', netlist().queue()[dpc].object()->name().cstr(), netlist().queue()[dpc].exec_time().as_double()); } else -- cgit v1.2.3-70-g09d2 From 91a86a45e1a4321a5e0a66629b147ea24dcb89a7 Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 19 Apr 2015 19:23:51 +0200 Subject: Fix debug build. (nw) --- src/osd/sdl/sdlmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/osd/sdl/sdlmain.c b/src/osd/sdl/sdlmain.c index 3ed26882d81..c4c2e8a1d36 100644 --- a/src/osd/sdl/sdlmain.c +++ b/src/osd/sdl/sdlmain.c @@ -500,7 +500,7 @@ void sdl_osd_interface::init(running_machine &machine) options().set_value(OSDOPTION_SOUND, "none", OPTION_PRIORITY_MAXIMUM, error_string); options().set_value(OSDOPTION_VIDEO, "none", OPTION_PRIORITY_MAXIMUM, error_string); options().set_value(OPTION_SECONDS_TO_RUN, bench, OPTION_PRIORITY_MAXIMUM, error_string); - assert(!error_string); + assert(error_string.c_str()[0] == 0); } // Some driver options - must be before audio init! -- cgit v1.2.3-70-g09d2 From 07fb9f12facf911be2740427332f8af6e5129469 Mon Sep 17 00:00:00 2001 From: Luca Elia Date: Sun, 19 Apr 2015 19:31:18 +0200 Subject: Fix MT05679 (no whatsnew) --- src/mame/drivers/sigmab98.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c index d7b93f5a1dd..92951212b8b 100644 --- a/src/mame/drivers/sigmab98.c +++ b/src/mame/drivers/sigmab98.c @@ -1433,7 +1433,7 @@ WRITE8_MEMBER(sigmab98_state::itazuram_rombank_w) membank("sprbank1")->set_base(m_spriteram + 0x1000*4); // scratch break; - // used in test mode: + // used in test mode (code at 2cc4): // case 0x5c: membank("rombank")->set_base(rom + 0x400 + 0x0000); break; // 3800 IS RAM! (8000 bytes) case 0x5e: // 3800 IS RAM! (1404 bytes) @@ -1465,6 +1465,13 @@ WRITE8_MEMBER(sigmab98_state::itazuram_rombank_w) membank("sprbank1")->set_base(m_spriteram + 0x1000*4); // scratch break; + case 0x16: // 3800 IS ROM + membank("rombank0")->set_base(rom + 0xa800); + membank("rombank1")->set_base(rom + 0xb800); + membank("sprbank0")->set_base(m_spriteram + 0x1000*4); // scratch + membank("sprbank1")->set_base(m_spriteram + 0x1000*4); // scratch + break; + default: logerror("%s: unknown rom bank = %02x, reg = %02x\n", machine().describe_context(), data, m_reg); } -- cgit v1.2.3-70-g09d2 From 2ff982fef73071fea7438ad338cae04ac21139fc Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 19 Apr 2015 22:56:56 +0200 Subject: Added 9602 one-shot to netlist. (nw) --- nl_examples/9602_mstable.c | 51 +++++++++++++++++++++ src/emu/netlist/devices/net_lib.c | 1 + src/emu/netlist/devices/nld_74123.c | 90 +++++++++++++++++++++++++++++-------- src/emu/netlist/devices/nld_74123.h | 27 +++++++++++ 4 files changed, 150 insertions(+), 19 deletions(-) create mode 100644 nl_examples/9602_mstable.c (limited to 'src') diff --git a/nl_examples/9602_mstable.c b/nl_examples/9602_mstable.c new file mode 100644 index 00000000000..5db2df04d0e --- /dev/null +++ b/nl_examples/9602_mstable.c @@ -0,0 +1,51 @@ +/* + * 9602_mstable.c + * + */ + +#include "netlist/devices/net_lib.h" + +NETLIST_START(74123_mstable) + + /* + * Monoflog + * + */ + + /* Standard stuff */ + + SOLVER(Solver, 48000) + + ANALOG_INPUT(V5, 5) // 5V + + /* Wiring up the 74123 */ + + CLOCK(clk, 50) + TTL_9602_DIP(mf) + + RES(R, 10000) + CAP(C, 1e-6) + + NET_C(GND, mf.8) // + NET_C(V5, mf.16) // + + NET_C(C.1, mf.1) + NET_C(mf.1, GND) // Test - can be removed + NET_C(C.2, mf.2, R.2) + NET_C(R.1, V5) + + NET_C(mf.3, V5) // CLR + NET_C(mf.4, GND) // B + NET_C(mf.5, clk.Q) // A + + LOG(logC, C.2) + LOG(logQ, mf.6) //Q + LOG(logX, clk.Q) + + // avoid non connected inputs + + NET_C(mf.11, V5) + NET_C(mf.12, V5) + NET_C(mf.13, V5) + +NETLIST_END() diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index 8dc1d6760fb..4c8e22d685b 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -144,6 +144,7 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74107_dip, TTL_74107_DIP, "-") ENTRY(74123_dip, TTL_74123_DIP, "-") ENTRY(74153_dip, TTL_74153_DIP, "-") + ENTRY(9602_dip, TTL_9602_DIP, "-") ENTRY(9316_dip, TTL_9316_DIP, "-") ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2") ENTRY(NE555_dip, NE555_DIP, "-") diff --git a/src/emu/netlist/devices/nld_74123.c b/src/emu/netlist/devices/nld_74123.c index 1bf4b07d8ae..036df32fa81 100644 --- a/src/emu/netlist/devices/nld_74123.c +++ b/src/emu/netlist/devices/nld_74123.c @@ -10,6 +10,8 @@ NETLIB_START(74123) { + m_dev_type = 74123; + register_sub(m_RP, "RP"); register_sub(m_RN, "RN"); @@ -41,7 +43,13 @@ NETLIB_START(74123) NETLIB_UPDATE(74123) { - const netlist_sig_t m_trig = (INPLOGIC(m_A) ^ 1) & INPLOGIC(m_B) & INPLOGIC(m_CLRQ); + netlist_sig_t m_trig; + + if (m_dev_type == 74123) + m_trig = (INPLOGIC(m_A) ^ 1) & INPLOGIC(m_B) & INPLOGIC(m_CLRQ); + else + // 9602 + m_trig = (INPLOGIC(m_A) ^ 1) | INPLOGIC(m_B); if (!INPLOGIC(m_CLRQ)) { @@ -104,26 +112,28 @@ NETLIB_RESET(74123) NETLIB_START(74123_dip) { -#if 0 register_sub(m_1, "1"); register_sub(m_2, "2"); - register_sub(m_3, "3"); - - register_subalias("1", m_1.m_i[0]); - register_subalias("2", m_1.m_i[1]); - register_subalias("3", m_2.m_i[0]); - register_subalias("4", m_2.m_i[1]); - register_subalias("5", m_2.m_i[2]); - register_subalias("6", m_2.m_Q); - - register_subalias("8", m_3.m_Q); - register_subalias("9", m_3.m_i[0]); - register_subalias("10", m_3.m_i[1]); - register_subalias("11", m_3.m_i[2]); - - register_subalias("12", m_1.m_Q); - register_subalias("13", m_1.m_i[2]); -#endif + + register_subalias("1", m_1.m_A); + register_subalias("2", m_1.m_B); + register_subalias("3", m_1.m_CLRQ); + register_subalias("4", m_1.m_QQ); + register_subalias("5", m_2.m_Q); + register_subalias("6", m_2.m_RN.m_N); + register_subalias("7", m_2.m_RN.m_P); + register_subalias("8", m_1.m_RN.m_N); + connect(m_1.m_RN.m_N, m_2.m_RN.m_N); + + register_subalias("9", m_2.m_A); + register_subalias("10", m_2.m_B); + register_subalias("11", m_2.m_CLRQ); + register_subalias("12", m_2.m_QQ); + register_subalias("13", m_1.m_Q); + register_subalias("14", m_1.m_RN.m_N); + register_subalias("15", m_1.m_RN.m_P); + register_subalias("16", m_1.m_RP.m_P); + connect(m_1.m_RP.m_P, m_2.m_RP.m_P); } NETLIB_UPDATE(74123_dip) @@ -138,3 +148,45 @@ NETLIB_RESET(74123_dip) m_1.do_reset(); m_2.do_reset(); } + +NETLIB_START(9602_dip) +{ + register_sub(m_1, "1"); + register_sub(m_2, "2"); + + m_1.m_dev_type = 9602; + m_2.m_dev_type = 9602; + + register_subalias("1", m_1.m_RN.m_N); // C1 + register_subalias("2", m_1.m_RN.m_P); // RC1 + register_subalias("3", m_1.m_CLRQ); + register_subalias("4", m_1.m_B); + register_subalias("5", m_1.m_A); + register_subalias("6", m_1.m_Q); + register_subalias("7", m_1.m_QQ); + register_subalias("8", m_1.m_RN.m_N); + connect(m_1.m_RN.m_N, m_2.m_RN.m_N); + + register_subalias("9", m_2.m_QQ); + register_subalias("10", m_2.m_Q); + register_subalias("11", m_2.m_A); + register_subalias("12", m_2.m_B); + register_subalias("13", m_2.m_CLRQ); + register_subalias("14", m_2.m_RN.m_P); // RC2 + register_subalias("15", m_2.m_RN.m_N); // C2 + register_subalias("16", m_1.m_RP.m_P); + connect(m_1.m_RP.m_P, m_2.m_RP.m_P); +} + +NETLIB_UPDATE(9602_dip) +{ + /* only called during startup */ + m_1.update_dev(); + m_2.update_dev(); +} + +NETLIB_RESET(9602_dip) +{ + m_1.do_reset(); + m_2.do_reset(); +} diff --git a/src/emu/netlist/devices/nld_74123.h b/src/emu/netlist/devices/nld_74123.h index 25704e96211..f6ecb898bf8 100644 --- a/src/emu/netlist/devices/nld_74123.h +++ b/src/emu/netlist/devices/nld_74123.h @@ -18,6 +18,18 @@ * * Naming conventions follow Fairchild Semiconductor datasheet * + * DM9602: Dual Retriggerable, Resettable One Shots + * + * +--------------+ + * C1 |1 ++ 16| VCC + * RC1 |2 15| C2 + * CLR1 |3 14| RC2 + * B1 |4 9602 13| CLR2 + * A1 |5 12| B2 + * Q1 |6 11| A2 + * Q1Q |7 10| Q2 + * GND |8 9| Q2Q + * +--------------+ */ #ifndef NLD_74123_H_ @@ -50,6 +62,7 @@ public: netlist_param_double_t m_K; netlist_param_double_t m_RI; + int m_dev_type; ); #define TTL_74123_DIP(_name) \ @@ -62,5 +75,19 @@ NETLIB_DEVICE(74123_dip, ); +/* The 9602 is very similar to the 123. Input triggering is slightly different + * THe 9602 uses an OR gate instead of an AND gate. + */ + +#define TTL_9602_DIP(_name) \ + NET_REGISTER_DEV(9602_dip, _name) + +NETLIB_DEVICE(9602_dip, + + NETLIB_NAME(74123) m_1; + NETLIB_NAME(74123) m_2; + +); + #endif /* NLD_74123_H_ */ -- cgit v1.2.3-70-g09d2 From 67d69aa02d91189dad82646ef89e6f789481c475 Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 20 Apr 2015 00:55:19 +0200 Subject: Add 9312/DM9312 to netlist. [Couriersud] --- scripts/src/netlist.lua | 2 + src/emu/netlist/devices/net_lib.c | 2 + src/emu/netlist/devices/net_lib.h | 1 + src/emu/netlist/devices/nld_9312.c | 87 ++++++++++++++++++++++++++++++++++++++ src/emu/netlist/devices/nld_9312.h | 58 +++++++++++++++++++++++++ 5 files changed, 150 insertions(+) create mode 100644 src/emu/netlist/devices/nld_9312.c create mode 100644 src/emu/netlist/devices/nld_9312.h (limited to 'src') diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index be502f5ba5c..2db67d68526 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -83,6 +83,8 @@ files { MAME_DIR .. "src/emu/netlist/devices/nld_74153.h", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h", + MAME_DIR .. "src/emu/netlist/devices/nld_9312.c", + MAME_DIR .. "src/emu/netlist/devices/nld_9312.h", MAME_DIR .. "src/emu/netlist/devices/nld_9316.c", MAME_DIR .. "src/emu/netlist/devices/nld_9316.h", MAME_DIR .. "src/emu/netlist/devices/nld_ne555.c", diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index 4c8e22d685b..1ef800e524b 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -117,6 +117,7 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74123, TTL_74123, "-") ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") ENTRY(SN74LS629, SN74LS629, "CAP") + ENTRY(9312, TTL_9312, "-") ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") ENTRY(NE555, NE555, "-") ENTRY(r2r_dac, R2R_DAC, "+VIN,R,N") @@ -145,6 +146,7 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74123_dip, TTL_74123_DIP, "-") ENTRY(74153_dip, TTL_74153_DIP, "-") ENTRY(9602_dip, TTL_9602_DIP, "-") + ENTRY(9312_dip, TTL_9312_DIP, "-") ENTRY(9316_dip, TTL_9316_DIP, "-") ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2") ENTRY(NE555_dip, NE555_DIP, "-") diff --git a/src/emu/netlist/devices/net_lib.h b/src/emu/netlist/devices/net_lib.h index f3db97584fe..f66da6bb441 100644 --- a/src/emu/netlist/devices/net_lib.h +++ b/src/emu/netlist/devices/net_lib.h @@ -79,6 +79,7 @@ #include "nld_74123.h" #include "nld_74153.h" #include "nld_74ls629.h" +#include "nld_9312.h" #include "nld_9316.h" #include "nld_ne555.h" diff --git a/src/emu/netlist/devices/nld_9312.c b/src/emu/netlist/devices/nld_9312.c new file mode 100644 index 00000000000..6651848e3a9 --- /dev/null +++ b/src/emu/netlist/devices/nld_9312.c @@ -0,0 +1,87 @@ +/* + * nld_9312.c + * + */ + +/* + * +---+---+---+---++---+---+ + * | C | B | A | G || Y | YQ| + * +===+===+===+===++===+===+ + * | X | X | X | 1 || 0| 1 | + * | 0 | 0 | 0 | 0 || D0|D0Q| + * | 0 | 0 | 1 | 0 || D1|D1Q| + * | 0 | 1 | 0 | 0 || D2|D2Q| + * | 0 | 1 | 1 | 0 || D3|D3Q| + * | 1 | 0 | 0 | 0 || D4|D4Q| + * | 1 | 0 | 1 | 0 || D5|D5Q| + * | 1 | 1 | 0 | 0 || D6|D6Q| + * | 1 | 1 | 1 | 0 || D7|D7Q| + * +---+---+---+---++---+---+ +*/ +#include "nld_9312.h" + +//#if (USE_TRUTHTABLE) +nld_9312::truthtable_t nld_9312::m_ttbl; + +/* FIXME: Data changes are propagating faster than changing selects A,B,C + * Please refer to data sheet. + * This would require a state machine, thus we do not + * do this right now. + */ + +const char *nld_9312::m_desc[] = { + " C, B, A, G,D0,D1,D2,D3,D4,D5,D6,D7| Y,YQ", + " X, X, X, 1, X, X, X, X, X, X, X, X| 0, 1|33,19", + " 0, 0, 0, 0, 0, X, X, X, X, X, X, X| 0, 1|33,28", + " 0, 0, 0, 0, 1, X, X, X, X, X, X, X| 1, 0|33,28", + " 0, 0, 1, 0, X, 0, X, X, X, X, X, X| 0, 1|33,28", + " 0, 0, 1, 0, X, 1, X, X, X, X, X, X| 1, 0|33,28", + " 0, 1, 0, 0, X, X, 0, X, X, X, X, X| 0, 1|33,28", + " 0, 1, 0, 0, X, X, 1, X, X, X, X, X| 1, 0|33,28", + " 0, 1, 1, 0, X, X, X, 0, X, X, X, X| 0, 1|33,28", + " 0, 1, 1, 0, X, X, X, 1, X, X, X, X| 1, 0|33,28", + " 1, 0, 0, 0, X, X, X, X, 0, X, X, X| 0, 1|33,28", + " 1, 0, 0, 0, X, X, X, X, 1, X, X, X| 1, 0|33,28", + " 1, 0, 1, 0, X, X, X, X, X, 0, X, X| 0, 1|33,28", + " 1, 0, 1, 0, X, X, X, X, X, 1, X, X| 1, 0|33,28", + " 1, 1, 0, 0, X, X, X, X, X, X, 0, X| 0, 1|33,28", + " 1, 1, 0, 0, X, X, X, X, X, X, 1, X| 1, 0|33,28", + " 1, 1, 1, 0, X, X, X, X, X, X, X, 0| 0, 1|33,28", + " 1, 1, 1, 0, X, X, X, X, X, X, X, 1| 1, 0|33,28", + "" +}; +//#endif + + +NETLIB_START(9312_dip) +{ + register_sub(m_sub, "1"); + + register_subalias("13", m_sub.m_i[0]); + register_subalias("12", m_sub.m_i[1]); + register_subalias("11", m_sub.m_i[2]); + register_subalias("10", m_sub.m_i[3]); + + register_subalias("1", m_sub.m_i[4]); + register_subalias("2", m_sub.m_i[5]); + register_subalias("3", m_sub.m_i[6]); + register_subalias("4", m_sub.m_i[7]); + register_subalias("5", m_sub.m_i[8]); + register_subalias("6", m_sub.m_i[9]); + register_subalias("7", m_sub.m_i[10]); + register_subalias("9", m_sub.m_i[11]); + + register_subalias("15", m_sub.m_Q[0]); // Y + register_subalias("14", m_sub.m_Q[1]); // YQ +} + +NETLIB_UPDATE(9312_dip) +{ + /* only called during startup */ + m_sub.update_dev(); +} + +NETLIB_RESET(9312_dip) +{ + m_sub.do_reset(); +} diff --git a/src/emu/netlist/devices/nld_9312.h b/src/emu/netlist/devices/nld_9312.h new file mode 100644 index 00000000000..98fd0c7177d --- /dev/null +++ b/src/emu/netlist/devices/nld_9312.h @@ -0,0 +1,58 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_9312.h + * + * DM9312: One of Eight Line Data Selectors/Multiplexers + * + * +--------------+ + * D0 |1 ++ 16| VCC + * D1 |2 15| Y + * D2 |3 14| YQ + * D3 |4 9312 13| C + * D4 |5 12| B + * D5 |6 11| A + * D6 |7 10| G Strobe + * GND |8 9| D7 + * +--------------+ + * __ + * +---+---+---+---++---+---+ + * | C | B | A | G || Y | YQ| + * +===+===+===+===++===+===+ + * | X | X | X | 1 || 0| 1 | + * | 0 | 0 | 0 | 0 || D0|D0Q| + * | 0 | 0 | 1 | 0 || D1|D1Q| + * | 0 | 1 | 0 | 0 || D2|D2Q| + * | 0 | 1 | 1 | 0 || D3|D3Q| + * | 1 | 0 | 0 | 0 || D4|D4Q| + * | 1 | 0 | 1 | 0 || D5|D5Q| + * | 1 | 1 | 0 | 0 || D6|D6Q| + * | 1 | 1 | 1 | 0 || D7|D7Q| + * +---+---+---+---++---+---+ + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +#ifndef NLD_9312_H_ +#define NLD_9312_H_ + +#include "nld_signal.h" + +#define TTL_9312(_name) \ + NET_REGISTER_DEV(9312, _name) \ + +//#if (USE_TRUTHTABLE) +#include "nld_truthtable.h" +NETLIB_TRUTHTABLE(9312, 12, 2, 0); +//#endif + + +#define TTL_9312_DIP(_name) \ + NET_REGISTER_DEV(9312_dip, _name) + +NETLIB_DEVICE(9312_dip, + NETLIB_NAME(9312) m_sub; +); + +#endif /* NLD_9312_H_ */ -- cgit v1.2.3-70-g09d2 From 6b8eb847eabae746f3684f7efa001f7925c9c501 Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 20 Apr 2015 00:56:16 +0200 Subject: Document more work on breakout. Further additions to nl_dice_compat.h. (nw) --- nl_examples/breakout.c | 13 ++++++------- src/emu/netlist/nl_dice_compat.h | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/nl_examples/breakout.c b/nl_examples/breakout.c index a4b9ecb0efc..b7b95edd210 100644 --- a/nl_examples/breakout.c +++ b/nl_examples/breakout.c @@ -47,8 +47,7 @@ static AUDIO_DESC( breakout ) VIDEO_DESC_END #endif - -static Mono9602Desc n8_desc(K_OHM(33.0), U_FARAD(100.0), K_OHM(5.6), P_FARAD(0.0)); // No capacitor on 2nd 9602. +static Mono9602Desc n8_desc(K_OHM(33.0), U_FARAD(100.0), K_OHM(5.6), P_FARAD(0.01)); // No capacitor on 2nd 9602, assume very low internal capacitance static Mono9602Desc f3_desc(K_OHM(47.0), U_FARAD(1.0), K_OHM(47.0), U_FARAD(1.0)); static Mono9602Desc a7_desc(K_OHM(68.0), U_FARAD(1.0), K_OHM(22.0), U_FARAD(10.0)); @@ -85,8 +84,8 @@ CIRCUIT_LAYOUT( breakout ) CHIP("A4", 7408) CHIP("A5", 7400) CHIP("A6", 7474) - CHIP("A7", 9602, &a7_desc) - CHIP("A8", 9602, &a8_desc) + CHIP_9602_Mono(A7, &a7_desc) + CHIP_9602_Mono(A8, &a8_desc) CHIP("B2", 555_Astable, &b2_555_desc) CHIP("B3", 7402) @@ -104,7 +103,7 @@ CIRCUIT_LAYOUT( breakout ) CHIP("C6", 7486) CHIP("C7", 9316) CHIP("C8", 9316) - CHIP("C9", 555_Mono, &c9_555_desc) + CHIP_555_Mono(C9, &c9_555_desc) CHIP("D2", 7432) CHIP("D3", 7474) @@ -127,7 +126,7 @@ CIRCUIT_LAYOUT( breakout ) CHIP("F1", 9316) CHIP("F2", 7411) - CHIP("F3", 9602, &f3_desc) + CHIP_9602_Mono(F3, &f3_desc) CHIP("F4", 7474) CHIP("F5", 7474) CHIP("F6", 74193) @@ -191,7 +190,7 @@ CIRCUIT_LAYOUT( breakout ) CHIP("N5", 9312) CHIP("N6", 9310) CHIP("N7", 7408) //sometimes looks like H7 on schematic - CHIP("N8", 9602, &n8_desc) + CHIP_9602_Mono(N8, &n8_desc) CHIP("N9", 74192) //LM380 //speaker amplifier diff --git a/src/emu/netlist/nl_dice_compat.h b/src/emu/netlist/nl_dice_compat.h index 001170cd14b..917edad4cbb 100644 --- a/src/emu/netlist/nl_dice_compat.h +++ b/src/emu/netlist/nl_dice_compat.h @@ -46,6 +46,15 @@ public: Mono555Desc(nl_double res, nl_double cap) : r(res), c(cap) { } }; +struct Mono9602Desc +{ +public: + nl_double r1, c1, r2, c2; + + Mono9602Desc(nl_double res1, nl_double cap1, nl_double res2, nl_double cap2) + : r1(res1), c1(cap1), r2(res2), c2(cap2) { } +}; + struct SeriesRCDesc { public: @@ -66,6 +75,23 @@ public: NET_C(_name.8, V5) \ NET_CSTR(# _name ".1", "GND") +#define CHIP_9602_Mono(_name, _pdesc) \ + CHIP(# _name, 9602) \ + NET_C(VCC, _name.16) \ + NET_C(GND, _name.8) \ + RES(_name ## _R1, (_pdesc)->r1) \ + CAP(_name ## _C1, (_pdesc)->c1) \ + RES(_name ## _R2, (_pdesc)->r2) \ + CAP(_name ## _C2, (_pdesc)->c2) \ + NET_C(_name.1, _name ## _C1.1) \ + NET_C(_name.2, _name ## _C1.2) \ + NET_C(_name.2, _name ## _R1.2) \ + NET_C(VCC, _name ## _R1.1) \ + NET_C(_name.15, _name ## _C2.1) \ + NET_C(_name.14, _name ## _C2.2) \ + NET_C(_name.14, _name ## _R2.2) \ + NET_C(VCC, _name ## _R2.1) \ + #define CHIP_SERIES_RC(_name, _pdesc) \ RES(_name ## _R, (_pdesc)->r) \ CAP(_name ## _C, (_pdesc)->c) \ -- cgit v1.2.3-70-g09d2 From 157e88dc1ec648a7653c453e65b656c05ab1f6fc Mon Sep 17 00:00:00 2001 From: briantro Date: Sun, 19 Apr 2015 19:31:17 -0500 Subject: peplus.c: Correct some "U" locations for the superboard - NW --- src/mame/drivers/peplus.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c index edd2a909879..a0cc446a552 100644 --- a/src/mame/drivers/peplus.c +++ b/src/mame/drivers/peplus.c @@ -5658,10 +5658,10 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */ ROM_REGION( 0x020000, "gfx1", 0 ) - ROM_LOAD( "mro-cg2399.u72", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */ - ROM_LOAD( "mgo-cg2399.u73", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Also compatible with ACE$ Bonus Poker */ - ROM_LOAD( "mbo-cg2399.u74", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) ) - ROM_LOAD( "mxo-cg2399.u75", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) ) + ROM_LOAD( "mro-cg2399.u77", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */ + ROM_LOAD( "mgo-cg2399.u78", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Also compatible with ACE$ Bonus Poker */ + ROM_LOAD( "mbo-cg2399.u79", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) ) + ROM_LOAD( "mxo-cg2399.u80", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "capx2399.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2399 */ @@ -5684,10 +5684,10 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */ ROM_REGION( 0x020000, "gfx1", 0 ) - ROM_LOAD( "mro-cg2374.u72", 0x00000, 0x8000, CRC(ceeb714d) SHA1(6de908d04bcaa243195943affa9ad0d725de5c81) ) /* Custom Horseshoe Casino card backs */ - ROM_LOAD( "mgo-cg2374.u73", 0x08000, 0x8000, CRC(d0fabad5) SHA1(438ebe074fa3eaa3073ef042f481449f416d0665) ) - ROM_LOAD( "mbo-cg2374.u74", 0x10000, 0x8000, CRC(9a0fbc8d) SHA1(aa39f47cbeaf8218fd2d753c9a350e9eab5df5d3) ) - ROM_LOAD( "mxo-cg2374.u75", 0x18000, 0x8000, CRC(99814562) SHA1(2d8e132f4cc4edd06332c0327927219513b22832) ) + ROM_LOAD( "mro-cg2374.u77", 0x00000, 0x8000, CRC(ceeb714d) SHA1(6de908d04bcaa243195943affa9ad0d725de5c81) ) /* Custom Horseshoe Casino card backs */ + ROM_LOAD( "mgo-cg2374.u78", 0x08000, 0x8000, CRC(d0fabad5) SHA1(438ebe074fa3eaa3073ef042f481449f416d0665) ) + ROM_LOAD( "mbo-cg2374.u79", 0x10000, 0x8000, CRC(9a0fbc8d) SHA1(aa39f47cbeaf8218fd2d753c9a350e9eab5df5d3) ) + ROM_LOAD( "mxo-cg2374.u80", 0x18000, 0x8000, CRC(99814562) SHA1(2d8e132f4cc4edd06332c0327927219513b22832) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "capx2374.u43", 0x0000, 0x0200, CRC(f922e1b8) SHA1(4aa5291c59431c022dc0561a6e3b38209f60286a) ) @@ -5709,10 +5709,10 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus) ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */ ROM_REGION( 0x020000, "gfx1", 0 ) - ROM_LOAD( "mro-cg2389.u72", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* The Wild Wild West Casino card backs */ - ROM_LOAD( "mgo-cg2389.u73", 0x08000, 0x8000, CRC(87de1a4e) SHA1(4f8524eba297771d3292dd2fca9008546d0e3066) ) - ROM_LOAD( "mbo-cg2389.u74", 0x10000, 0x8000, CRC(7c248712) SHA1(4c2cfd7f46fa757438706095137ccf230c30f3a4) ) - ROM_LOAD( "mxo-cg2389.u75", 0x18000, 0x8000, CRC(4fdb7daf) SHA1(131d0a5c33f75f859522a4307c0e23273d5d4cb6) ) + ROM_LOAD( "mro-cg2389.u77", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* The Wild Wild West Casino card backs */ + ROM_LOAD( "mgo-cg2389.u78", 0x08000, 0x8000, CRC(87de1a4e) SHA1(4f8524eba297771d3292dd2fca9008546d0e3066) ) + ROM_LOAD( "mbo-cg2389.u79", 0x10000, 0x8000, CRC(7c248712) SHA1(4c2cfd7f46fa757438706095137ccf230c30f3a4) ) + ROM_LOAD( "mxo-cg2389.u80", 0x18000, 0x8000, CRC(4fdb7daf) SHA1(131d0a5c33f75f859522a4307c0e23273d5d4cb6) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "capx2389.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2389, but 2 PCBs had CAPX1321 */ @@ -7876,10 +7876,10 @@ SA$ - Sequential ACE$ pays the same as RF ROM_LOAD( "x002172p.u66", 0x00000, 0x10000, CRC(d4c44409) SHA1(8082b76a51fa131751b8c2c446cb29fb04f531dc) ) /* Ace$ Bonus Poker - 05/09/96 @ IGT L96-1119 */ ROM_REGION( 0x020000, "gfx1", 0 ) - ROM_LOAD( "mro-cg2399.u72", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */ - ROM_LOAD( "mgo-cg2399.u73", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Also compatible with ACE$ Bonus Poker */ - ROM_LOAD( "mbo-cg2399.u74", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) ) - ROM_LOAD( "mxo-cg2399.u75", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) ) + ROM_LOAD( "mro-cg2399.u77", 0x00000, 0x8000, CRC(0424f4ba) SHA1(c8b192a6f63c8c9937cb3923d27b9ba2c39823cd) ) /* Custom The Fun Ships card backs */ + ROM_LOAD( "mgo-cg2399.u78", 0x08000, 0x8000, CRC(5848a2fa) SHA1(4173a473016b7a776d2b59bf3ded0be35bd43721) ) /* Also compatible with ACE$ Bonus Poker */ + ROM_LOAD( "mbo-cg2399.u79", 0x10000, 0x8000, CRC(5c3e16f6) SHA1(a4aa457f239527bffa6472e0d6f9d836f796b326) ) + ROM_LOAD( "mxo-cg2399.u80", 0x18000, 0x8000, CRC(bd7669d5) SHA1(4343a9764fd563e2e1cdd8558f2f53f77006b159) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "capx2399.u43", 0x0000, 0x0200, NO_DUMP ) /* Should be CAPX2399 */ @@ -8487,10 +8487,10 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4K 4A SF RF (Bonus) ROM_LOAD( "x002377p.u66", 0x00000, 0x10000, CRC(541320d2) SHA1(670b17432e994fe1937091e5e96e1d58b9afbf29) ) /* Super Double Bonus Poker */ ROM_REGION( 0x020000, "gfx1", 0 ) - ROM_LOAD( "mro-cg2244.u72", 0x00000, 0x8000, CRC(25561458) SHA1(fe5d624e0e16956df589f3682bad9181bdc99956) ) /* */ - ROM_LOAD( "mgo-cg2244.u73", 0x08000, 0x8000, CRC(b2de0a7a) SHA1(34f0ef951560f6f71e14c822baa4ccb1028b5028) ) - ROM_LOAD( "mbo-cg2244.u74", 0x10000, 0x8000, CRC(d2c12418) SHA1(dfb1aebaac23ff6e2cf556f228dbdb7c272a1b30) ) - ROM_LOAD( "mxo-cg2244.u75", 0x18000, 0x8000, CRC(8dc10a99) SHA1(92edb31f44e52609ed1ba2a53577048d424c6238) ) + ROM_LOAD( "mro-cg2244.u77", 0x00000, 0x8000, CRC(25561458) SHA1(fe5d624e0e16956df589f3682bad9181bdc99956) ) /* */ + ROM_LOAD( "mgo-cg2244.u78", 0x08000, 0x8000, CRC(b2de0a7a) SHA1(34f0ef951560f6f71e14c822baa4ccb1028b5028) ) + ROM_LOAD( "mbo-cg2244.u79", 0x10000, 0x8000, CRC(d2c12418) SHA1(dfb1aebaac23ff6e2cf556f228dbdb7c272a1b30) ) + ROM_LOAD( "mxo-cg2244.u80", 0x18000, 0x8000, CRC(8dc10a99) SHA1(92edb31f44e52609ed1ba2a53577048d424c6238) ) ROM_REGION( 0x200, "proms", 0 ) ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) -- cgit v1.2.3-70-g09d2 From 8c2c7994ccaf13c5e2e8d14965ceccc4b4b0a048 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 20 Apr 2015 11:51:16 +1000 Subject: Fix OSX build and get rid of an astring while at it --- src/osd/modules/font/font_osx.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/osd/modules/font/font_osx.c b/src/osd/modules/font/font_osx.c index 753b339629b..3306b521f1d 100644 --- a/src/osd/modules/font/font_osx.c +++ b/src/osd/modules/font/font_osx.c @@ -10,7 +10,6 @@ #include -#include "astring.h" #include "corealloc.h" #include "fileio.h" @@ -35,26 +34,25 @@ private: CTFontRef m_font; }; -bool osd_font_osx::open(const char *font_path, const char *_name, int &height) +bool osd_font_osx::open(const char *font_path, const char *name, int &height) { m_font = NULL; - astring name(_name); - osd_printf_verbose("FONT NAME %s\n", _name); + osd_printf_verbose("FONT NAME %s\n", name); #if 0 - if (name == "default") + if (!strcmp(name, "default")) { name = "LucidaGrande"; } #endif - /* handle bdf fonts in the core */ - if (name.len() > 4) + + CFStringRef const font_name = CFStringCreateWithCString(NULL, name, kCFStringEncodingUTF8); + if (kCFNotFound != CFStringFind(font_name, CFSTR(".BDF"), kCFCompareCaseInsensitive | kCFCompareBackwards | kCFCompareAnchored | kCFCompareNonliteral).location) { - if (name.makeupper().substr(name.len() - 4, 4) == ".BDF") - return false; + // handle bdf fonts in the core + CFRelease(font_name); + return false; } - CTFontRef ct_font = NULL; - CFStringRef const font_name = CFStringCreateWithCString(NULL, name.c_str(), kCFStringEncodingUTF8); if (font_name != NULL) { CTFontDescriptorRef const font_descriptor = CTFontDescriptorCreateWithNameAndSize(font_name, 0.0); @@ -68,7 +66,7 @@ bool osd_font_osx::open(const char *font_path, const char *_name, int &height) if (!ct_font) { - osd_printf_verbose("Couldn't find/open font %s, using MAME default\n", name.c_str()); + osd_printf_verbose("Couldn't find/open font %s, using MAME default\n", name); return false; } -- cgit v1.2.3-70-g09d2 From ca0b1aaeaa6c88af377a709ff51696ad02aefc16 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 20 Apr 2015 08:49:04 +0200 Subject: fix a leak (nw) --- src/osd/windows/video.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src') diff --git a/src/osd/windows/video.c b/src/osd/windows/video.c index 3bfefee7270..ea9fa1b3a02 100644 --- a/src/osd/windows/video.c +++ b/src/osd/windows/video.c @@ -134,6 +134,8 @@ void win_monitor_info::refresh() char *temp = utf8_from_tstring(m_info.szDevice); if (temp) strncpy(m_name, temp, sizeof(m_name)); + + osd_free(temp); m_pos_size = RECT_to_osd_rect(m_info.rcMonitor); m_usuable_pos_size = RECT_to_osd_rect(m_info.rcWork); -- cgit v1.2.3-70-g09d2 From 0aebc8e54e2ad38ab6e1aec77f8cc43afc1cdda5 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Thu, 2 Apr 2015 19:53:45 +0200 Subject: romload: Replaced include; hfdc: Changed floppy device name --- src/emu/bus/ti99_peb/hfdc.c | 16 ++++++++-------- src/emu/romload.c | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/emu/bus/ti99_peb/hfdc.c index 983b53d2481..a8cab9594ce 100644 --- a/src/emu/bus/ti99_peb/hfdc.c +++ b/src/emu/bus/ti99_peb/hfdc.c @@ -852,10 +852,10 @@ void myarc_hfdc_device::device_config_complete() m_floppy_unit[i] = NULL; // Seems to be null when doing a "-listslots" - if (subdevice("0")!=NULL) m_floppy_unit[0] = static_cast(subdevice("0")->first_subdevice()); - if (subdevice("1")!=NULL) m_floppy_unit[1] = static_cast(subdevice("1")->first_subdevice()); - if (subdevice("2")!=NULL) m_floppy_unit[2] = static_cast(subdevice("2")->first_subdevice()); - if (subdevice("3")!=NULL) m_floppy_unit[3] = static_cast(subdevice("3")->first_subdevice()); + if (subdevice("f0")!=NULL) m_floppy_unit[0] = static_cast(subdevice("f0")->first_subdevice()); + if (subdevice("f1")!=NULL) m_floppy_unit[1] = static_cast(subdevice("f1")->first_subdevice()); + if (subdevice("f2")!=NULL) m_floppy_unit[2] = static_cast(subdevice("f2")->first_subdevice()); + if (subdevice("f3")!=NULL) m_floppy_unit[3] = static_cast(subdevice("f3")->first_subdevice()); } /* @@ -927,10 +927,10 @@ MACHINE_CONFIG_FRAGMENT( ti99_hfdc ) MCFG_HDC9234_DMA_IN_CALLBACK(READ8(myarc_hfdc_device, read_buffer)) MCFG_HDC9234_DMA_OUT_CALLBACK(WRITE8(myarc_hfdc_device, write_buffer)) - MCFG_FLOPPY_DRIVE_ADD("0", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("1", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("2", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("3", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f0", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f1", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f2", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f3", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) MCFG_DEVICE_ADD(CLOCK_TAG, MM58274C, 0) MCFG_MM58274C_MODE24(1) // 24 hour diff --git a/src/emu/romload.c b/src/emu/romload.c index 86ea4ebb70c..a6a0764c110 100644 --- a/src/emu/romload.c +++ b/src/emu/romload.c @@ -13,7 +13,7 @@ #include "emuopts.h" #include "drivenum.h" #include "png.h" -#include "harddisk.h" +#include "chd.h" #include "config.h" #include "ui/ui.h" -- cgit v1.2.3-70-g09d2 From 1ad65b58ff532505885794cc9ac7e9693deb57dc Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Sun, 19 Apr 2015 23:09:05 +0200 Subject: ti99: ST225 emulation --- src/emu/audit.c | 2 +- src/emu/bus/ti99_peb/hfdc.c | 270 ++++++++++++++++++++++++++++------------- src/emu/bus/ti99_peb/hfdc.h | 52 ++++++-- src/emu/bus/ti99_peb/peribox.c | 7 -- src/emu/imagedev/harddriv.c | 14 +++ src/emu/imagedev/harddriv.h | 2 + src/emu/machine/hdc9234.c | 111 ++++++++++++----- src/emu/machine/hdc9234.h | 10 ++ src/emu/machine/smc92x4.c | 2 +- src/emu/machine/smc92x4.h | 4 +- src/emu/machine/ti99_hd.c | 249 +++++++++++++++++++++++++++++++++---- src/emu/machine/ti99_hd.h | 76 ++++++++++-- 12 files changed, 627 insertions(+), 172 deletions(-) (limited to 'src') diff --git a/src/emu/audit.c b/src/emu/audit.c index 72bb77684d2..fe207522c02 100644 --- a/src/emu/audit.c +++ b/src/emu/audit.c @@ -11,7 +11,7 @@ #include "emu.h" #include "emuopts.h" #include "audit.h" -#include "harddisk.h" +#include "chd.h" #include "sound/samples.h" diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/emu/bus/ti99_peb/hfdc.c index a8cab9594ce..14c397872a2 100644 --- a/src/emu/bus/ti99_peb/hfdc.c +++ b/src/emu/bus/ti99_peb/hfdc.c @@ -74,12 +74,12 @@ #define CLK_ADDR 0x0fe0 #define RAM_ADDR 0x1000 -#define TRACE_EMU 0 +#define TRACE_EMU 1 #define TRACE_CRU 0 #define TRACE_COMP 0 #define TRACE_RAM 0 #define TRACE_ROM 0 -#define TRACE_LINES 0 +#define TRACE_LINES 1 #define TRACE_MOTOR 0 #define TRACE_DMA 0 #define TRACE_INT 0 @@ -499,12 +499,32 @@ void myarc_hfdc_device::device_timer(emu_timer &timer, device_timer_id id, int p */ void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int state) { - if (TRACE_LINES) if (state==1) logerror("%s: Index pulse\n", tag()); + if (TRACE_LINES) if (state==1) logerror("%s: Floppy index pulse\n", tag()); // m_status_latch = (state==ASSERT_LINE)? (m_status_latch | HDC_DS_INDEX) : (m_status_latch & ~HDC_DS_INDEX); set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); signal_drive_status(); } +/* + This is called back from the hard disk when an index hole is passing by. +*/ +void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, int state) +{ + /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD seek complete\n", tag()); + set_bits(m_status_latch, HDC_DS_SKCOM, (state==ASSERT_LINE)); + signal_drive_status(); +} + +/* + This is called back from the hard disk when seek_complete becomes asserted. +*/ +void myarc_hfdc_device::harddisk_skcom_callback(mfm_harddisk_device *harddisk, int state) +{ + /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD index pulse\n", tag()); + set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); + signal_drive_status(); +} + void myarc_hfdc_device::set_bits(UINT8& byte, int mask, bool set) { if (set) byte |= mask; @@ -512,18 +532,16 @@ void myarc_hfdc_device::set_bits(UINT8& byte, int mask, bool set) } /* - Calculate the logarithm. This is needed to determine the index of a drive. - Returns -1 for value=0 + Maps the set bit to an index. The rightmost 1 bit is significant. When no + bit is set, returns -1. */ -int myarc_hfdc_device::slog2(int value) +int myarc_hfdc_device::bit_to_index(int value) { - int i=-1; - while (value!=0) - { - value >>= 1; - i++; - } - return i; + if (value & 0x01) return 0; + if (value & 0x02) return 1; + if (value & 0x04) return 2; + if (value & 0x08) return 3; + return -1; } /* @@ -554,7 +572,19 @@ void myarc_hfdc_device::signal_drive_status() // Check for TRK00* if ((m_current_floppy != NULL) && (!m_current_floppy->trk00_r())) - reply |= 0x10; + reply |= HDC_DS_TRK00; + } + else + { + if ((m_output1_latch & 0xe0)!=0) + { + if (m_current_harddisk->ready_r()==ASSERT_LINE) + { + m_status_latch |= HDC_DS_READY; + set_bits(m_status_latch, HDC_DS_SKCOM, m_current_harddisk->seek_complete_r()==ASSERT_LINE); + set_bits(m_status_latch, HDC_DS_TRK00, m_current_harddisk->trk00_r()==ASSERT_LINE); + } + } } // If WDS is selected but not connected, WDS.ready* and WDS.seekComplete* are 1, so Ready=SeekComplete=0 @@ -598,27 +628,18 @@ WRITE8_MEMBER( myarc_hfdc_device::auxbus_out ) m_output1_latch = data; - if ((data & 0x10) != 0) - { - // Floppy selected - connect_floppy_unit(slog2(data & 0x0f)); - } + if ((data & 0x10) != 0) connect_floppy_unit(bit_to_index(data & 0x0f)); // Floppy selected else { - index = slog2((data>>4) & 0x0f); - if (index == -1) - { - if (TRACE_LINES) logerror("%s: Unselect all HD drives\n", tag()); - connect_floppy_unit(index); - } - else - { - // HD selected - if (TRACE_LINES) logerror("%s: Select hard disk WDS%d\n", tag(), index); - // if (index>=0) m_hdc9234->connect_hard_drive(m_harddisk_unit[index-1]); - } - if (m_current_harddisk==NULL) + index = bit_to_index((data>>4) & 0x0f); + + if (index > 0) connect_harddisk_unit(index-1); // HD selected; index >= 1 + else { + disconnect_floppy_drives(); + disconnect_hard_drives(); + + // Turn off READY and SEEK COMPLETE set_bits(m_status_latch, HDC_DS_READY | HDC_DS_SKCOM, false); } } @@ -643,6 +664,13 @@ WRITE8_MEMBER( myarc_hfdc_device::auxbus_out ) m_current_floppy->dir_w((data & 0x20)==0); m_current_floppy->stp_w((data & 0x10)==0); } + + if (m_current_harddisk != NULL) + { + // Dir = 0 -> outward + m_current_harddisk->direction_in_w((data & 0x20)? ASSERT_LINE : CLEAR_LINE); + m_current_harddisk->step_w((data & 0x10)? ASSERT_LINE : CLEAR_LINE); + } // We are pushing the drive status after OUTPUT2 signal_drive_status(); @@ -659,52 +687,74 @@ enum void myarc_hfdc_device::connect_floppy_unit(int index) { // Check if we have a new floppy - if (index>=0) + if (m_floppy_unit[index] != m_current_floppy) { - if (m_floppy_unit[index] != m_current_floppy) - { - if (TRACE_LINES) logerror("%s: Select floppy drive DSK%d\n", tag(), index+1); - if (m_current_floppy != NULL) - { - // Disconnect old drive from index line - if (TRACE_LINES) logerror("%s: Disconnect previous index callback DSK%d\n", tag(), index+1); - m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb()); - } - // Connect new drive - m_current_floppy = m_floppy_unit[index]; - - // We don't use the READY line of floppy drives. - // READY is asserted when DSKx = 1 - // The controller fetches the state with the auxbus access - if (TRACE_LINES) logerror("%s: Connect index callback DSK%d\n", tag(), index+1); - if (m_current_floppy != NULL) - m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(myarc_hfdc_device::floppy_index_callback), this)); - else - logerror("%s: Connection to DSK%d failed because no drive is connected\n", tag(), index+1); - m_hdc9234->connect_floppy_drive(m_floppy_unit[index]); - } + disconnect_floppy_drives(); + if (TRACE_LINES) logerror("%s: Select floppy drive DSK%d\n", tag(), index+1); + + // Connect new drive + m_current_floppy = m_floppy_unit[index]; + + // We don't use the READY line of floppy drives. + // READY is asserted when DSKx = 1 + // The controller fetches the state with the auxbus access + if (TRACE_LINES) logerror("%s: Connect index callback DSK%d\n", tag(), index+1); + if (m_current_floppy != NULL) + m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(myarc_hfdc_device::floppy_index_callback), this)); + else + logerror("%s: Connection to DSK%d failed because no drive is connected\n", tag(), index+1); + m_hdc9234->connect_floppy_drive(m_floppy_unit[index]); } - else + + // We can only run a floppy or a harddisk at a time, not both + disconnect_hard_drives(); +} + +void myarc_hfdc_device::connect_harddisk_unit(int index) +{ + if (m_harddisk_unit[index] != m_current_harddisk) { - if (TRACE_LINES) logerror("%s: Unselect all floppy drives\n", tag()); - // Disconnect current floppy - if (m_current_floppy != NULL) + disconnect_hard_drives(); + if (TRACE_LINES) logerror("%s: Select hard disk WDS%d\n", tag(), index+1); + + // Connect new drive + m_current_harddisk = m_harddisk_unit[index]; + + if (TRACE_LINES) logerror("%s: Connect index callback WDS%d\n", tag(), index+1); + if (m_current_harddisk != NULL) { - m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb()); - m_current_floppy = NULL; + m_current_harddisk->setup_index_pulse_cb(mfm_harddisk_device::index_pulse_cb(FUNC(myarc_hfdc_device::harddisk_index_callback), this)); + m_current_harddisk->setup_seek_complete_cb(mfm_harddisk_device::seek_complete_cb(FUNC(myarc_hfdc_device::harddisk_skcom_callback), this)); } + else + logerror("%s: Connection to WDS%d failed because no drive is connected\n", tag(), index+1); + m_hdc9234->connect_hard_drive(m_current_harddisk); } - // The drive status is supposed to be sampled after OUTPUT2 - // signal_drive_status(); + + // We can only run a floppy or a harddisk at a time, not both + disconnect_floppy_drives(); } -void myarc_hfdc_device::connect_harddisk_unit(int index) +void myarc_hfdc_device::disconnect_floppy_drives() { -// if (index < 0) -// { + if (TRACE_LINES) logerror("%s: Unselect floppy drives\n", tag()); + // Disconnect current floppy + if (m_current_floppy != NULL) + { + m_current_floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb()); + m_current_floppy = NULL; + } +} + +void myarc_hfdc_device::disconnect_hard_drives() +{ + if (TRACE_LINES) logerror("%s: Unselect hard drives\n", tag()); + if (m_current_harddisk != NULL) + { + m_current_harddisk->setup_index_pulse_cb(mfm_harddisk_device::index_pulse_cb()); + m_current_harddisk->setup_seek_complete_cb(mfm_harddisk_device::seek_complete_cb()); m_current_harddisk = NULL; -// } - // signal_drive_status(); + } } /* @@ -836,26 +886,45 @@ void myarc_hfdc_device::device_reset() for (int i=0; i < 4; i++) { if (m_floppy_unit[i] != NULL) - logerror("%s: Connector %d with %s\n", tag(), i, m_floppy_unit[i]->name()); + logerror("%s: FD connector %d with %s\n", tag(), i+1, m_floppy_unit[i]->name()); + else + logerror("%s: FD connector %d has no floppy attached\n", tag(), i+1); + } + + for (int i=0; i < 3; i++) + { + if (m_harddisk_unit[i] != NULL) + logerror("%s: HD connector %d with %s\n", tag(), i+1, m_harddisk_unit[i]->name()); else - logerror("%s: Connector %d has no floppy attached\n", tag(), i); + logerror("%s: HD connector %d has no drive attached\n", tag(), i+1); } // Disconnect all units - connect_floppy_unit(-1); - connect_harddisk_unit(-1); + disconnect_floppy_drives(); + disconnect_hard_drives(); } void myarc_hfdc_device::device_config_complete() { - for (int i=0; i < 4; i++) + for (int i=0; i < 3; i++) + { m_floppy_unit[i] = NULL; - + m_harddisk_unit[i] = NULL; + } + m_floppy_unit[3] = NULL; + // Seems to be null when doing a "-listslots" - if (subdevice("f0")!=NULL) m_floppy_unit[0] = static_cast(subdevice("f0")->first_subdevice()); - if (subdevice("f1")!=NULL) m_floppy_unit[1] = static_cast(subdevice("f1")->first_subdevice()); - if (subdevice("f2")!=NULL) m_floppy_unit[2] = static_cast(subdevice("f2")->first_subdevice()); - if (subdevice("f3")!=NULL) m_floppy_unit[3] = static_cast(subdevice("f3")->first_subdevice()); + if (subdevice("f1")!=NULL) + { + m_floppy_unit[0] = static_cast(subdevice("f1"))->get_device(); + m_floppy_unit[1] = static_cast(subdevice("f2"))->get_device(); + m_floppy_unit[2] = static_cast(subdevice("f3"))->get_device(); + m_floppy_unit[3] = static_cast(subdevice("f4"))->get_device(); + + m_harddisk_unit[0] = static_cast(subdevice("h1"))->get_device(); + m_harddisk_unit[1] = static_cast(subdevice("h2"))->get_device(); + m_harddisk_unit[2] = static_cast(subdevice("h3"))->get_device(); + } } /* @@ -918,6 +987,11 @@ static SLOT_INTERFACE_START( hfdc_floppies ) SLOT_INTERFACE( "35hd", FLOPPY_35_HD ) // 80 tracks 1.4 MiB SLOT_INTERFACE_END +static SLOT_INTERFACE_START( hfdc_harddisks ) + SLOT_INTERFACE( "generic", MFM_HD_GENERIC ) // Generic high-level emulation +// SLOT_INTERFACE( "seagatemfm", MFM_HD_SEAGATE ) // Seagate ST-225 and others +SLOT_INTERFACE_END + MACHINE_CONFIG_FRAGMENT( ti99_hfdc ) MCFG_DEVICE_ADD(FDC_TAG, HDC9234, 0) MCFG_HDC9234_INTRQ_CALLBACK(WRITELINE(myarc_hfdc_device, intrq_w)) @@ -927,11 +1001,16 @@ MACHINE_CONFIG_FRAGMENT( ti99_hfdc ) MCFG_HDC9234_DMA_IN_CALLBACK(READ8(myarc_hfdc_device, read_buffer)) MCFG_HDC9234_DMA_OUT_CALLBACK(WRITE8(myarc_hfdc_device, write_buffer)) - MCFG_FLOPPY_DRIVE_ADD("f0", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("f1", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("f2", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f2", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("f3", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("f4", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats) + // NB: Hard disks don't go without image (other than floppy drives) + MCFG_MFM_HARDDISK_ADD("h1", hfdc_harddisks, NULL) + MCFG_MFM_HARDDISK_ADD("h2", hfdc_harddisks, NULL) + MCFG_MFM_HARDDISK_ADD("h3", hfdc_harddisks, NULL) + MCFG_DEVICE_ADD(CLOCK_TAG, MM58274C, 0) MCFG_MM58274C_MODE24(1) // 24 hour MCFG_MM58274C_DAY1(0) // sunday @@ -962,6 +1041,27 @@ ioport_constructor myarc_hfdc_device::device_input_ports() const const device_type TI99_HFDC = &device_creator; +mfm_harddisk_connector::mfm_harddisk_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock): + device_t(mconfig, MFM_HD_CONNECTOR, "MFM hard disk connector", tag, owner, clock, "mfm_hd_connector", __FILE__), + device_slot_interface(mconfig, *this) +{ +} + +mfm_harddisk_connector::~mfm_harddisk_connector() +{ +} + +mfm_harddisk_device *mfm_harddisk_connector::get_device() +{ + return dynamic_cast(get_card_device()); +} + +void mfm_harddisk_connector::device_start() +{ +} + +const device_type MFM_HD_CONNECTOR = &device_creator; + // ========================================================================= /* @@ -1252,7 +1352,7 @@ READ8_MEMBER( myarc_hfdc_legacy_device::auxbus_in ) { UINT8 state; index = slog2((m_output1_latch>>4) & 0x0f)-1; - mfm_harddisk_device *hd = m_harddisk_unit[index]; + mfm_harddisk_legacy_device *hd = m_harddisk_unit[index]; state = hd->get_status(); if (state & MFMHD_TRACK00) reply |= DS_TRK00; @@ -1373,6 +1473,8 @@ MACHINE_CONFIG_FRAGMENT( ti99_hfdc_legacy ) MCFG_DEVICE_ADD(CLOCK_TAG, MM58274C, 0) MCFG_MM58274C_MODE24(1) // 24 hour MCFG_MM58274C_DAY1(0) // sunday + + MCFG_MFMHD_3_DRIVES_ADD() // add hard disks MACHINE_CONFIG_END ROM_START( ti99_hfdc_legacy ) @@ -1461,9 +1563,9 @@ void myarc_hfdc_legacy_device::device_reset() m_floppy_unit[2] = static_cast(m_slot->get_drive(FLOPPY_2)); m_floppy_unit[3] = static_cast(m_slot->get_drive(FLOPPY_3)); - m_harddisk_unit[0] = static_cast(m_slot->get_drive(MFMHD_0)); - m_harddisk_unit[1] = static_cast(m_slot->get_drive(MFMHD_1)); - m_harddisk_unit[2] = static_cast(m_slot->get_drive(MFMHD_2)); + m_harddisk_unit[0] = static_cast(subdevice(MFMHD_0)); + m_harddisk_unit[1] = static_cast(subdevice(MFMHD_1)); + m_harddisk_unit[2] = static_cast(subdevice(MFMHD_2)); if (ioport("HFDCDIP")->read()&0x55) ti99_set_80_track_drives(TRUE); diff --git a/src/emu/bus/ti99_peb/hfdc.h b/src/emu/bus/ti99_peb/hfdc.h index cea2344f917..5ba2d816be1 100644 --- a/src/emu/bus/ti99_peb/hfdc.h +++ b/src/emu/bus/ti99_peb/hfdc.h @@ -18,11 +18,12 @@ #define __HFDC__ #define HFDC_MAX_FLOPPY 4 -#define HFDC_MAX_HARD 4 +#define HFDC_MAX_HARD 3 #include "imagedev/floppy.h" #include "machine/mm58274c.h" #include "machine/hdc9234.h" +#include "machine/ti99_hd.h" extern const device_type TI99_HFDC; @@ -49,11 +50,13 @@ public: DECLARE_FLOPPY_FORMATS( floppy_formats ); +protected: + void device_config_complete(); + private: void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); void device_start(); void device_reset(); - void device_config_complete(); const rom_entry *device_rom_region() const; machine_config_constructor device_mconfig_additions() const; @@ -63,18 +66,24 @@ private: void debug_read(offs_t offset, UINT8* value); void debug_write(offs_t offset, UINT8 data); - // Callback for the index hole + // Callbacks for the index hole and seek complete void floppy_index_callback(floppy_image_device *floppy, int state); - + void harddisk_index_callback(mfm_harddisk_device *harddisk, int state); + void harddisk_skcom_callback(mfm_harddisk_device *harddisk, int state); + // Operate the floppy motors void set_floppy_motors_running(bool run); - // Connect or disconnect floppy drives + // Connect floppy drives void connect_floppy_unit(int index); - // Connect or disconnect harddisk drives + // Connect harddisk drives void connect_harddisk_unit(int index); + // Disconnect drives + void disconnect_floppy_drives(); + void disconnect_hard_drives(); + // Pushes the drive status to the HDC void signal_drive_status(); @@ -90,11 +99,14 @@ private: // Link to the attached floppy drives floppy_image_device* m_floppy_unit[4]; + // Link to the attached hard disks + mfm_harddisk_device* m_harddisk_unit[3]; + // Currently selected floppy drive floppy_image_device* m_current_floppy; // Currently selected hard drive - void* m_current_harddisk; + mfm_harddisk_device* m_current_harddisk; // True: Access to DIP switch settings, false: access to line states bool m_see_switches; @@ -159,8 +171,8 @@ private: // Signal motor_on. When TRUE, makes all drives turning. line_state m_MOTOR_ON; - // Calculates a simple version of a binary logarithm - int slog2(int value); + // Calculates the index from the bit + int bit_to_index(int value); // Utility function to set or unset bits in a byte void set_bits(UINT8& byte, int mask, bool set); @@ -170,6 +182,26 @@ private: int m_readyflags; }; +/* Connector for a MFM hard disk. See also floppy.c */ +class mfm_harddisk_connector : public device_t, + public device_slot_interface +{ +public: + mfm_harddisk_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + ~mfm_harddisk_connector(); + + mfm_harddisk_device *get_device(); + +protected: + void device_start(); +}; + +extern const device_type MFM_HD_CONNECTOR; + +#define MCFG_MFM_HARDDISK_ADD(_tag, _slot_intf, _def_slot) \ + MCFG_DEVICE_ADD(_tag, MFM_HD_CONNECTOR, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false); + // ========================================================================= /* @@ -250,7 +282,7 @@ private: legacy_floppy_image_device* m_floppy_unit[HFDC_MAX_FLOPPY]; /* Connected harddisk drives. */ - mfm_harddisk_device* m_harddisk_unit[HFDC_MAX_HARD]; + mfm_harddisk_legacy_device* m_harddisk_unit[HFDC_MAX_HARD]; /* DMA address latch */ UINT32 m_dma_address; diff --git a/src/emu/bus/ti99_peb/peribox.c b/src/emu/bus/ti99_peb/peribox.c index bcbc77b178c..8584cc1b189 100644 --- a/src/emu/bus/ti99_peb/peribox.c +++ b/src/emu/bus/ti99_peb/peribox.c @@ -467,8 +467,6 @@ MACHINE_CONFIG_FRAGMENT( peribox_device ) MCFG_DEVICE_ADD(FLOPPY_3, LEGACY_FLOPPY, 0) MCFG_DEVICE_CONFIG(ti99_4_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(peribox_device, indexhole)) - - MCFG_MFMHD_3_DRIVES_ADD() MACHINE_CONFIG_END machine_config_constructor peribox_device::device_mconfig_additions() const @@ -536,7 +534,6 @@ MACHINE_CONFIG_FRAGMENT( peribox_gen_device ) MCFG_DEVICE_ADD(FLOPPY_3, LEGACY_FLOPPY, 0) MCFG_DEVICE_CONFIG(ti99_4_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(peribox_device, indexhole)) - MCFG_MFMHD_3_DRIVES_ADD() MACHINE_CONFIG_END machine_config_constructor peribox_gen_device::device_mconfig_additions() const @@ -589,7 +586,6 @@ MACHINE_CONFIG_FRAGMENT( peribox_998_device ) MCFG_DEVICE_ADD(FLOPPY_3, LEGACY_FLOPPY, 0) MCFG_DEVICE_CONFIG(ti99_4_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(peribox_device, indexhole)) - MCFG_MFMHD_3_DRIVES_ADD() MACHINE_CONFIG_END machine_config_constructor peribox_998_device::device_mconfig_additions() const @@ -643,7 +639,6 @@ MACHINE_CONFIG_FRAGMENT( peribox_sg_device ) MCFG_DEVICE_ADD(FLOPPY_3, LEGACY_FLOPPY, 0) MCFG_DEVICE_CONFIG(ti99_4_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(peribox_device, indexhole)) - MCFG_MFMHD_3_DRIVES_ADD() MACHINE_CONFIG_END machine_config_constructor peribox_sg_device::device_mconfig_additions() const @@ -651,7 +646,6 @@ machine_config_constructor peribox_sg_device::device_mconfig_additions() const return MACHINE_CONFIG_NAME( peribox_sg_device ); } - /**************************************************************************** Another variant of the box; used for the TI with EVPC. The EVPC is obviously required. @@ -684,7 +678,6 @@ MACHINE_CONFIG_FRAGMENT( peribox_ev_device ) MCFG_DEVICE_ADD(FLOPPY_3, LEGACY_FLOPPY, 0) MCFG_DEVICE_CONFIG(ti99_4_floppy_interface) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(peribox_device, indexhole)) - MCFG_MFMHD_3_DRIVES_ADD() MACHINE_CONFIG_END machine_config_constructor peribox_ev_device::device_mconfig_additions() const diff --git a/src/emu/imagedev/harddriv.c b/src/emu/imagedev/harddriv.c index 1f61bc6b5a9..48fa65500df 100644 --- a/src/emu/imagedev/harddriv.c +++ b/src/emu/imagedev/harddriv.c @@ -47,6 +47,20 @@ harddisk_image_device::harddisk_image_device(const machine_config &mconfig, cons { } +//------------------------------------------------- +// harddisk_image_device - constructor for subclasses +//------------------------------------------------- +harddisk_image_device::harddisk_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_image_interface(mconfig, *this), + m_chd(NULL), + m_hard_disk_handle(NULL), + m_device_image_load(device_image_load_delegate()), + m_device_image_unload(device_image_func_delegate()), + m_interface(NULL) +{ +} + //------------------------------------------------- // harddisk_image_device - destructor //------------------------------------------------- diff --git a/src/emu/imagedev/harddriv.h b/src/emu/imagedev/harddriv.h index 6ec48d327fb..84c2a37e1ff 100644 --- a/src/emu/imagedev/harddriv.h +++ b/src/emu/imagedev/harddriv.h @@ -51,6 +51,8 @@ public: chd_file *get_chd_file(); protected: + harddisk_image_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + // device-level overrides virtual void device_config_complete(); virtual void device_start(); diff --git a/src/emu/machine/hdc9234.c b/src/emu/machine/hdc9234.c index 6267e184ad7..d6b8dd05f3c 100644 --- a/src/emu/machine/hdc9234.c +++ b/src/emu/machine/hdc9234.c @@ -24,37 +24,37 @@ #include "hdc9234.h" // Per-command debugging -#define TRACE_SELECT 0 -#define TRACE_STEP 0 -#define TRACE_RESTORE 0 -#define TRACE_SUBSTATES 0 -#define TRACE_READ 0 -#define TRACE_WRITE 0 -#define TRACE_READREG 0 -#define TRACE_SETREG 0 -#define TRACE_SETPTR 0 -#define TRACE_FORMAT 0 -#define TRACE_READTRACK 0 +#define TRACE_SELECT 1 +#define TRACE_STEP 1 +#define TRACE_RESTORE 1 +#define TRACE_SUBSTATES 1 +#define TRACE_READ 1 +#define TRACE_WRITE 1 +#define TRACE_READREG 1 +#define TRACE_SETREG 1 +#define TRACE_SETPTR 1 +#define TRACE_FORMAT 1 +#define TRACE_READTRACK 1 // Common states -#define TRACE_READID 0 -#define TRACE_VERIFY 0 -#define TRACE_TRANSFER 0 +#define TRACE_READID 1 +#define TRACE_VERIFY 1 +#define TRACE_TRANSFER 1 // Live states debugging -#define TRACE_LIVE 0 -#define TRACE_SHIFT 0 -#define TRACE_SYNC 0 +#define TRACE_LIVE 1 +#define TRACE_SHIFT 1 +#define TRACE_SYNC 1 // Misc debugging #define TRACE_DELAY 0 -#define TRACE_INT 0 -#define TRACE_LINES 0 -#define TRACE_INDEX 0 -#define TRACE_DMA 0 -#define TRACE_DONE 0 -#define TRACE_FAIL 0 -#define TRACE_AUXBUS 0 +#define TRACE_INT 1 +#define TRACE_LINES 1 +#define TRACE_INDEX 1 +#define TRACE_DMA 1 +#define TRACE_DONE 1 +#define TRACE_FAIL 1 +#define TRACE_AUXBUS 1 #define TRACE_DETAIL 0 @@ -239,8 +239,8 @@ enum enum { GEN_TIMER = 1, - COM_TIMER, - LIVE_TIMER + COM_TIMER /*, + LIVE_TIMER */ }; /* @@ -1027,6 +1027,7 @@ void hdc9234_device::drive_deselect() { if (TRACE_SELECT) logerror("%s: DESELECT command\n", tag()); m_selected_drive_number = NODRIVE; + m_output1 = 0x00; set_command_done(TC_SUCCESS); } @@ -1066,7 +1067,7 @@ void hdc9234_device::restore_drive() // Track 0 has not been reached yet if ((m_register_r[DRIVE_STATUS] & HDC_DS_READY)==0) { - if (TRACE_RESTORE) logerror("%s: restore command: drive not ready\n", tag()); + if (TRACE_RESTORE) logerror("%s: restore command: Drive not ready\n", tag()); // Does not look like a success, but this takes into account // that if a drive is not connected we do not want an error message cont = SUCCESS; @@ -1081,6 +1082,7 @@ void hdc9234_device::restore_drive() // When we have buffered steps, the seek limit will be reached // before TRK00 is asserted. In that case we have to wait for // SEEK_COMPLETE. We also wait as soon as TRK00 is asserted. + if (TRACE_RESTORE) logerror("%s: restore using buffered steps\n", tag()); wait_line(SEEKCOMP_LINE, ASSERT_LINE, SEEK_COMPLETE, false); cont = WAIT; } @@ -1809,7 +1811,8 @@ void hdc9234_device::live_start(int state) void hdc9234_device::live_run() { - live_run_until(attotime::never); + if (using_floppy()) live_run_until(attotime::never); + else live_run_hd_until(attotime::never); } /* @@ -1817,6 +1820,8 @@ void hdc9234_device::live_run() the requested data are read. limit: if unlimited (attotime::never), run up to the end of the track and wait there otherwise, used to replay the read/write operation up to the point where the event happened + + THIS IS THE FLOPPY-ONLY LIVE_RUN */ void hdc9234_device::live_run_until(attotime limit) { @@ -2622,6 +2627,40 @@ void hdc9234_device::live_run_until(attotime limit) m_last_live_state = UNDEF; } +/* + The main method of the live state machine. We stay in this method until + the requested data are read. + limit: if unlimited (attotime::never), run up to the end of the track and wait there + otherwise, used to replay the read/write operation up to the point where the event happened + + THIS IS THE HARDDISK-ONLY LIVE_RUN +*/ +void hdc9234_device::live_run_hd_until(attotime limit) +{ + int slot = 0; + logerror("%s: live_run_hd\n", tag()); + + if (m_live_state.state == IDLE || m_live_state.next_state != -1) + return; + + if (TRACE_LIVE) + { + if (limit == attotime::never) + logerror("%s: [%s] live_run_hd, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).cstr(), m_live_state.state, fm_mode()? "FM":"MFM"); + else + logerror("%s: [%s] live_run_hd until %s, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).cstr(), tts(limit).cstr(), m_live_state.state, fm_mode()? "FM":"MFM"); + } + while (true) + { + switch (m_live_state.state) + { + case SEARCH_IDAM: + break; + } + return; + } +} + /* Synchronize the live position on the track with the real time. Results in a new checkpoint and a live position at machine time or behind. @@ -3269,7 +3308,7 @@ void hdc9234_device::auxbus_out() m_output2 = (m_output2 & 0xb0) | desired_head(); if (m_reduced_write_current) m_output2 |= OUT2_REDWRT; - if (TRACE_AUXBUS) logerror("%s: Setting OUTPUT2 to %02x\n", tag(), m_output2); + if (TRACE_AUXBUS) logerror("%s: [%s] Setting OUTPUT1=%02x, OUTPUT2=%02x\n", tag(), ttsn().cstr(), m_output1, m_output2); if (m_output1 != m_output1_old || m_output2 != m_output2_old) { @@ -3337,6 +3376,14 @@ void hdc9234_device::connect_floppy_drive(floppy_image_device* floppy) m_floppy = floppy; } +/* + Connect the current hard drive. +*/ +void hdc9234_device::connect_hard_drive(mfm_harddisk_device* harddisk) +{ + m_harddisk = harddisk; +} + /* Clock divider. This input line actually belongs to the data separator which is a separate circuit. Maybe we will take it out of this implementation @@ -3363,9 +3410,9 @@ void hdc9234_device::device_timer(emu_timer &timer, device_timer_id id, int para case COM_TIMER: process_command(); break; - case LIVE_TIMER: + /* case LIVE_TIMER: live_run(); - break; + break; */ } } @@ -3393,7 +3440,7 @@ void hdc9234_device::device_start() // allocate timers m_timer = timer_alloc(GEN_TIMER); m_cmd_timer = timer_alloc(COM_TIMER); - m_live_timer = timer_alloc(LIVE_TIMER); + // m_live_timer = timer_alloc(LIVE_TIMER); m_live_state.state = IDLE; } diff --git a/src/emu/machine/hdc9234.h b/src/emu/machine/hdc9234.h index cd96fdc7db2..d140ae62e46 100644 --- a/src/emu/machine/hdc9234.h +++ b/src/emu/machine/hdc9234.h @@ -10,6 +10,7 @@ #include "emu.h" #include "imagedev/floppy.h" #include "fdc_pll.h" +#include "ti99_hd.h" extern const device_type HDC9234; @@ -109,6 +110,9 @@ public: // is changed outside of the controller, and by this way we let it know. void connect_floppy_drive(floppy_image_device *floppy); + // Used to reconfigure the drive connections. See connect_floppy_drive. + void connect_hard_drive(mfm_harddisk_device *harddisk); + protected: void device_start(); void device_reset(); @@ -134,6 +138,9 @@ private: // Currently connected floppy floppy_image_device* m_floppy; + // Currently connected harddisk + mfm_harddisk_device* m_harddisk; + // internal register OUTPUT1 UINT8 m_output1, m_output1_old; @@ -220,6 +227,9 @@ private: // Analyses the track until the given time void live_run_until(attotime limit); + + // Same for hard disks + void live_run_hd_until(attotime limit); // Live run until next index pulse void live_run(); diff --git a/src/emu/machine/smc92x4.c b/src/emu/machine/smc92x4.c index a6581dd6baf..e6091ef14f9 100644 --- a/src/emu/machine/smc92x4.c +++ b/src/emu/machine/smc92x4.c @@ -1991,7 +1991,7 @@ void smc92x4_device::connect_floppy_drive(legacy_floppy_image_device *drive) else LOG("smc92x4: Connect drive %s\n", drive->tag()); } } -void smc92x4_device::connect_hard_drive(mfm_harddisk_device *drive) +void smc92x4_device::connect_hard_drive(mfm_harddisk_legacy_device *drive) { m_harddisk = drive; if (VERBOSE>3) diff --git a/src/emu/machine/smc92x4.h b/src/emu/machine/smc92x4.h index 5140929b151..defe39100ee 100644 --- a/src/emu/machine/smc92x4.h +++ b/src/emu/machine/smc92x4.h @@ -99,7 +99,7 @@ public: // Used to reconfigure the drive connections. Drive selection is done // using the select lines and maybe also the user-programmable outputs. void connect_floppy_drive(legacy_floppy_image_device *drive); - void connect_hard_drive(mfm_harddisk_device *drive); + void connect_hard_drive(mfm_harddisk_legacy_device *drive); void reset(); @@ -223,7 +223,7 @@ private: // We expect the embedding board to replace the drive according to the // select lines. legacy_floppy_image_device *m_drive; - mfm_harddisk_device *m_harddisk; + mfm_harddisk_legacy_device *m_harddisk; }; #endif diff --git a/src/emu/machine/ti99_hd.c b/src/emu/machine/ti99_hd.c index 77d37ca07de..90cb6701079 100644 --- a/src/emu/machine/ti99_hd.c +++ b/src/emu/machine/ti99_hd.c @@ -2,23 +2,21 @@ // copyright-holders:Michael Zapf /************************************************************************* - Hard disk support - - This device wraps the plain image device as that device does not allow - for internal states (like head position) - The plain device is a subdevice ("drive") of this device, so we - get names like "mfmhd0:drive" + Hard disk emulation Michael Zapf April 2010 February 2012: Rewritten as class + April 2015: Rewritten with deeper emulation detail + References: + [1] ST225 OEM Manual, Seagate + **************************************************************************/ #include "emu.h" #include "formats/imageutl.h" #include "harddisk.h" -#include "smc92x4.h" #include "ti99_hd.h" @@ -33,8 +31,211 @@ #define GAP4 340 #define SYNC 13 -mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) -: device_t(mconfig, TI99_MFMHD, "MFM Harddisk", tag, owner, clock, "mfm_harddisk", __FILE__) +enum +{ + INDEX_TM = 0, + SPINUP_TM, + SEEK_TM +}; + +enum +{ + STEP_COLLECT = 0, + STEP_MOVING, + STEP_SETTLE +}; + +mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) + : harddisk_image_device(mconfig, type, name, tag, owner, clock, shortname, source), + device_slot_card_interface(mconfig, *this) +{ +} + +void mfm_harddisk_device::device_start() +{ + m_index_timer = timer_alloc(INDEX_TM); + m_spinup_timer = timer_alloc(SPINUP_TM); + m_seek_timer = timer_alloc(SEEK_TM); + + // MFM drives have a revolution rate of 3600 rpm (i.e. 60/sec) + m_index_timer->adjust(attotime::from_hz(60), 0, attotime::from_hz(60)); + + // Spinup may take up to 24 seconds + m_spinup_timer->adjust(attotime::from_msec(8000)); + + m_current_cylinder = 10; // for test purpose +} + +void mfm_harddisk_device::device_reset() +{ + m_autotruncation = false; + m_ready = false; + m_seek_complete = true; + m_seek_inward = false; + m_track_delta = 0; + m_step_line = CLEAR_LINE; +} + +void mfm_harddisk_device::setup_index_pulse_cb(index_pulse_cb cb) +{ + m_index_pulse_cb = cb; +} + +void mfm_harddisk_device::setup_seek_complete_cb(seek_complete_cb cb) +{ + m_seek_complete_cb = cb; +} + +void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch (id) + { + case INDEX_TM: + /* Simple index hole handling. We assume that there is only a short pulse. */ + if (!m_index_pulse_cb.isnull()) + { + m_index_pulse_cb(this, ASSERT_LINE); + m_index_pulse_cb(this, CLEAR_LINE); + } + break; + case SPINUP_TM: + m_ready = true; + logerror("%s: Spinup complete, drive is ready\n", tag()); + break; + case SEEK_TM: + switch (m_step_phase) + { + case STEP_COLLECT: + // Collect timer has expired; start moving head + head_move(); + break; + case STEP_MOVING: + // Head has reached final position + // Check whether we have a new delta + if (m_track_delta == 0) + { + // Start the settle timer + m_step_phase = STEP_SETTLE; + m_seek_timer->adjust(attotime::from_usec(16800)); + } + break; + case STEP_SETTLE: + // Do we have new step pulses? + if (m_track_delta != 0) head_move(); + else + { + // Seek completed + m_seek_complete = true; + m_seek_complete_cb(this, ASSERT_LINE); + m_step_phase = STEP_COLLECT; + } + break; + } + } +} + +void mfm_harddisk_device::head_move() +{ + int disttime = m_track_delta*200; + if (disttime < 0) disttime = -disttime; + m_step_phase = STEP_MOVING; + m_seek_timer->adjust(attotime::from_usec(disttime)); + // We pretend that we already arrived + // TODO: Check auto truncation? + m_current_cylinder += m_track_delta; + if (m_current_cylinder < 0) m_current_cylinder = 0; + if (m_current_cylinder > 670) m_current_cylinder = 670; + m_track_delta = 0; +} + +void mfm_harddisk_device::direction_in_w(line_state line) +{ + m_seek_inward = (line == ASSERT_LINE); + logerror("%s: Setting seek direction %s\n", tag(), m_seek_inward? "inward" : "outward"); +} + +/* + According to the specs [1]: + + "4.3.1 BUFFERED SEEK: To minimize access time, pulses may be issued at an + accelerated rate and buffered in a counter. Initiation of a seek starts + immediately after the first pulse is received. Head motion occurs during + pulse accumulation, and the seek is completed following receipt of all pulses." + + "8.1.3 SEEKING: Upon receiving a Step pulse, the MPU (microprocessor unit) + pauses for 250 usec to allow for additional pulses before executing the seek + operation. Every incoming pulse resets the 250 usec timer. The seek will + not begin until the last pulse is received." + + WTF? Oh come on, Seagate, be consistent at least in a single document. + + ================================ + + Step behaviour: + During all waiting times, further step_w invocations increase the counter + + - Leading edge increments the counter c and sets the timer to 250us (mode=collect) + - When the timer expires (mode=collect): + (1)- Calculate the stepping time: time = c*200us; save the counter + - Start the timer (mode=move) + - When the timer expires (mode=move) + - Add the track delta to the current track position + - Subtract the delta from the current counter + - When the counter is not zero (pulses arrived in the meantime), go to (1) + - When the counter is zero, set the timer to 16.8 ms (mode=settle) + - When the timer expires (mode=settle) + - When the counter is not zero, go to (1) + - When the counter is zero, signal seek_complete; done + + Step timing: + per track = 20 ms max, full seek: 150 ms max (615 tracks); both including settling time + We assume t(1) = 17; t(615)=140 + t(i) = s+d*i + s=(615*t(1)-t(615))/614 + d=t(1)-s + s=16800 us, d=200 us +*/ + +void mfm_harddisk_device::step_w(line_state line) +{ + // Leading edge + if (line == ASSERT_LINE && m_step_line == CLEAR_LINE) + { + if (m_seek_complete) + { + m_step_phase = STEP_COLLECT; + m_seek_complete = false; + m_seek_complete_cb(this, CLEAR_LINE); + } + + logerror("%s: Got seek pulse; distance %d, direction %s\n", tag(), m_track_delta, m_seek_inward? "inward" : "outward"); + // Counter will be adjusted according to the direction (+-1) + m_track_delta += (m_seek_inward)? +1 : -1; + if (m_track_delta < 0 || m_track_delta > 670) + { + logerror("%s: Excessive step pulses - doing auto-truncation\n", tag()); + m_autotruncation = true; + } + m_seek_timer->adjust(attotime::from_usec(250)); + } + m_step_line = line; +} + +mfm_hd_generic_device::mfm_hd_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) +: mfm_harddisk_device(mconfig, MFM_HD_GENERIC, "Generic MFM hard disk (byte level)", tag, owner, clock, "mfm_harddisk", __FILE__) +{ +} + +const device_type MFM_HD_GENERIC = &device_creator; + +// =========================================================================== +// Legacy implementation +// =========================================================================== + +#include "smc92x4.h" + +mfm_harddisk_legacy_device::mfm_harddisk_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) +: device_t(mconfig, TI99_MFMHD_LEG, "MFM Harddisk LEGACY", tag, owner, clock, "mfm_harddisk_leg", __FILE__) { } @@ -43,7 +244,7 @@ mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, const ch define idents beyond cylinder 1023, but formatting programs seem to continue with 0xfd for cylinders between 1024 and 2047. */ -UINT8 mfm_harddisk_device::cylinder_to_ident(int cylinder) +UINT8 mfm_harddisk_legacy_device::cylinder_to_ident(int cylinder) { if (cylinder < 256) return 0xfe; if (cylinder < 512) return 0xff; @@ -55,7 +256,7 @@ UINT8 mfm_harddisk_device::cylinder_to_ident(int cylinder) /* Returns the linear sector number, given the CHS data. */ -bool mfm_harddisk_device::harddisk_chs_to_lba(hard_disk_file *hdfile, int cylinder, int head, int sector, UINT32 *lba) +bool mfm_harddisk_legacy_device::harddisk_chs_to_lba(hard_disk_file *hdfile, int cylinder, int head, int sector, UINT32 *lba) { const hard_disk_info *info; @@ -77,7 +278,7 @@ bool mfm_harddisk_device::harddisk_chs_to_lba(hard_disk_file *hdfile, int cylind } /* Accessor functions */ -void mfm_harddisk_device::read_sector(int cylinder, int head, int sector, UINT8 *buf) +void mfm_harddisk_legacy_device::read_sector(int cylinder, int head, int sector, UINT8 *buf) { UINT32 lba; if (VERBOSE>5) LOG("ti99_hd: read_sector(%d, %d, %d)\n", cylinder, head, sector); @@ -109,7 +310,7 @@ void mfm_harddisk_device::read_sector(int cylinder, int head, int sector, UINT8 m_status |= MFMHD_READY; } -void mfm_harddisk_device::write_sector(int cylinder, int head, int sector, UINT8 *buf) +void mfm_harddisk_legacy_device::write_sector(int cylinder, int head, int sector, UINT8 *buf) { UINT32 lba; if (VERBOSE>5) LOG("ti99_hd: write_sector(%d, %d, %d)\n", cylinder, head, sector); @@ -142,7 +343,7 @@ void mfm_harddisk_device::write_sector(int cylinder, int head, int sector, UINT8 Searches a block containing number * byte, starting at the given position. Returns the position of the first byte of the block. */ -int mfm_harddisk_device::find_block(const UINT8 *buffer, int start, int stop, UINT8 byte, size_t number) +int mfm_harddisk_legacy_device::find_block(const UINT8 *buffer, int start, int stop, UINT8 byte, size_t number) { int i = start; size_t current = number; @@ -165,7 +366,7 @@ int mfm_harddisk_device::find_block(const UINT8 *buffer, int start, int stop, UI return TI99HD_BLOCKNOTFOUND; } -int mfm_harddisk_device::get_track_length() +int mfm_harddisk_legacy_device::get_track_length() { int count; int size; @@ -187,7 +388,7 @@ int mfm_harddisk_device::get_track_length() WARNING: This function is untested! We need to create a suitable application program for the TI which makes use of it. */ -void mfm_harddisk_device::read_track(int head, UINT8 *trackdata) +void mfm_harddisk_legacy_device::read_track(int head, UINT8 *trackdata) { /* We assume an interleave of 3 for 32 sectors. */ int step = 3; @@ -291,7 +492,7 @@ void mfm_harddisk_device::read_track(int head, UINT8 *trackdata) Writes a track to the image. We need to isolate the sector contents. This is basically done in the same way as in the SDF format in ti99_dsk. */ -void mfm_harddisk_device::write_track(int head, UINT8 *track_image, int data_count) +void mfm_harddisk_legacy_device::write_track(int head, UINT8 *track_image, int data_count) { int current_pos = 0; bool found; @@ -401,7 +602,7 @@ void mfm_harddisk_device::write_track(int head, UINT8 *track_image, int data_cou } } -UINT8 mfm_harddisk_device::get_status() +UINT8 mfm_harddisk_legacy_device::get_status() { UINT8 status = 0; hard_disk_file *file = m_drive->get_hard_disk_file(); @@ -422,7 +623,7 @@ UINT8 mfm_harddisk_device::get_status() return status; } -void mfm_harddisk_device::seek(int direction) +void mfm_harddisk_legacy_device::seek(int direction) { const hard_disk_info *info; hard_disk_file *file = m_drive->get_hard_disk_file(); @@ -449,7 +650,7 @@ void mfm_harddisk_device::seek(int direction) m_seeking = false; } -void mfm_harddisk_device::get_next_id(int head, chrn_id_hd *id) +void mfm_harddisk_legacy_device::get_next_id(int head, chrn_id_hd *id) { const hard_disk_info *info; hard_disk_file *file; @@ -479,13 +680,13 @@ void mfm_harddisk_device::get_next_id(int head, chrn_id_hd *id) id->flags = 0; } -void mfm_harddisk_device::device_start() +void mfm_harddisk_legacy_device::device_start() { m_current_cylinder = 0; m_current_head = 0; } -void mfm_harddisk_device::device_reset() +void mfm_harddisk_legacy_device::device_reset() { m_drive = static_cast(subdevice("drive")); m_seeking = false; @@ -497,9 +698,9 @@ MACHINE_CONFIG_FRAGMENT( mfmhd ) MCFG_HARDDISK_ADD("drive") MACHINE_CONFIG_END -machine_config_constructor mfm_harddisk_device::device_mconfig_additions() const +machine_config_constructor mfm_harddisk_legacy_device::device_mconfig_additions() const { return MACHINE_CONFIG_NAME( mfmhd ); } -const device_type TI99_MFMHD = &device_creator; +const device_type TI99_MFMHD_LEG = &device_creator; diff --git a/src/emu/machine/ti99_hd.h b/src/emu/machine/ti99_hd.h index e3175e4723f..1090168e49f 100644 --- a/src/emu/machine/ti99_hd.h +++ b/src/emu/machine/ti99_hd.h @@ -17,11 +17,65 @@ #include "emu.h" #include "imagedev/harddriv.h" +class mfm_harddisk_device : public harddisk_image_device, + public device_slot_card_interface +{ +public: + mfm_harddisk_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + + typedef delegate index_pulse_cb; + typedef delegate seek_complete_cb; + + void setup_index_pulse_cb(index_pulse_cb cb); + void setup_seek_complete_cb(seek_complete_cb cb); + + // Active low lines. We're using ASSERT=0 / CLEAR=1 + line_state ready_r() { return m_ready? ASSERT_LINE : CLEAR_LINE; } + line_state seek_complete_r() { return m_seek_complete? ASSERT_LINE : CLEAR_LINE; } ; + line_state trk00_r() { return m_current_cylinder==0? ASSERT_LINE : CLEAR_LINE; } + + // Step + void step_w(line_state line); + void direction_in_w(line_state line); + +protected: + void device_start(); + void device_reset(); + emu_timer *m_index_timer, *m_spinup_timer, *m_seek_timer; + index_pulse_cb m_index_pulse_cb; + seek_complete_cb m_seek_complete_cb; + void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + +private: + bool m_ready; + int m_current_cylinder; + int m_track_delta; + int m_step_phase; + bool m_seek_complete; + bool m_seek_inward; + bool m_seeking; + bool m_autotruncation; + line_state m_step_line; // keep the last state + + void head_move(); +}; + +class mfm_hd_generic_device : public mfm_harddisk_device +{ +public: + mfm_hd_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); +}; + +extern const device_type MFM_HD_GENERIC; + +// =========================================================================== +// Legacy implementation +// =========================================================================== #define MFMHD_0 "mfmhd0" #define MFMHD_1 "mfmhd1" #define MFMHD_2 "mfmhd2" -extern const device_type TI99_MFMHD; +extern const device_type TI99_MFMHD_LEG; /* Needed to adapt to higher cylinder numbers. Floppies do not have such @@ -37,10 +91,10 @@ struct chrn_id_hd unsigned long flags; }; -class mfm_harddisk_device : public device_t +class mfm_harddisk_legacy_device : public device_t { public: - mfm_harddisk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + mfm_harddisk_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); void read_sector(int cylinder, int head, int sector, UINT8 *buf); void write_sector(int cylinder, int head, int sector, UINT8 *buf); @@ -52,9 +106,9 @@ public: int get_track_length(); protected: - virtual void device_start(); - virtual void device_reset(); - virtual machine_config_constructor device_mconfig_additions() const; + void device_start(); + void device_reset(); + machine_config_constructor device_mconfig_additions() const; private: int find_block(const UINT8 *buffer, int start, int stop, UINT8 byte, size_t number); @@ -70,10 +124,10 @@ private: harddisk_image_device *m_drive; }; -class ide_harddisk_device : public device_t +class ide_harddisk_legacy_device : public device_t { public: - ide_harddisk_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + ide_harddisk_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); protected: virtual void device_start() { }; virtual void device_reset() { }; @@ -81,8 +135,8 @@ protected: }; #define MCFG_MFMHD_3_DRIVES_ADD() \ - MCFG_DEVICE_ADD(MFMHD_0, TI99_MFMHD, 0) \ - MCFG_DEVICE_ADD(MFMHD_1, TI99_MFMHD, 0) \ - MCFG_DEVICE_ADD(MFMHD_2, TI99_MFMHD, 0) + MCFG_DEVICE_ADD(MFMHD_0, TI99_MFMHD_LEG, 0) \ + MCFG_DEVICE_ADD(MFMHD_1, TI99_MFMHD_LEG, 0) \ + MCFG_DEVICE_ADD(MFMHD_2, TI99_MFMHD_LEG, 0) #endif -- cgit v1.2.3-70-g09d2 From 81915bfadcb3b1e119357832d45403e9936aabba Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 20 Apr 2015 01:24:07 +0200 Subject: ti99: fixes for c_str and segfault --- src/emu/bus/ti99_peb/hfdc.c | 1 + src/emu/machine/hdc9234.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/emu/bus/ti99_peb/hfdc.c index 14c397872a2..7a995a3be39 100644 --- a/src/emu/bus/ti99_peb/hfdc.c +++ b/src/emu/bus/ti99_peb/hfdc.c @@ -846,6 +846,7 @@ void myarc_hfdc_device::device_start() m_motor_on_timer = timer_alloc(MOTOR_TIMER); // The HFDC does not use READY; it has on-board RAM for DMA m_current_floppy = NULL; + m_current_harddisk = NULL; } void myarc_hfdc_device::device_reset() diff --git a/src/emu/machine/hdc9234.c b/src/emu/machine/hdc9234.c index d6b8dd05f3c..20316fa0a8b 100644 --- a/src/emu/machine/hdc9234.c +++ b/src/emu/machine/hdc9234.c @@ -2646,9 +2646,9 @@ void hdc9234_device::live_run_hd_until(attotime limit) if (TRACE_LIVE) { if (limit == attotime::never) - logerror("%s: [%s] live_run_hd, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).cstr(), m_live_state.state, fm_mode()? "FM":"MFM"); + logerror("%s: [%s] live_run_hd, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).c_str(), m_live_state.state, fm_mode()? "FM":"MFM"); else - logerror("%s: [%s] live_run_hd until %s, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).cstr(), tts(limit).cstr(), m_live_state.state, fm_mode()? "FM":"MFM"); + logerror("%s: [%s] live_run_hd until %s, live_state=%d, mode=%s\n", tag(), tts(m_live_state.time).c_str(), tts(limit).c_str(), m_live_state.state, fm_mode()? "FM":"MFM"); } while (true) { @@ -3308,7 +3308,7 @@ void hdc9234_device::auxbus_out() m_output2 = (m_output2 & 0xb0) | desired_head(); if (m_reduced_write_current) m_output2 |= OUT2_REDWRT; - if (TRACE_AUXBUS) logerror("%s: [%s] Setting OUTPUT1=%02x, OUTPUT2=%02x\n", tag(), ttsn().cstr(), m_output1, m_output2); + if (TRACE_AUXBUS) logerror("%s: [%s] Setting OUTPUT1=%02x, OUTPUT2=%02x\n", tag(), ttsn().c_str(), m_output1, m_output2); if (m_output1 != m_output1_old || m_output2 != m_output2_old) { -- cgit v1.2.3-70-g09d2 From 73ad0b31692fe676d411787e9456d50f9332f2db Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 20 Apr 2015 12:53:53 +0200 Subject: (MESS) ti99: MFM hard disk emulation WIP (nw) --- src/emu/bus/ti99_peb/hfdc.c | 8 ++++---- src/emu/machine/ti99_hd.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/emu/bus/ti99_peb/hfdc.c index 7a995a3be39..6d778d3c5e1 100644 --- a/src/emu/bus/ti99_peb/hfdc.c +++ b/src/emu/bus/ti99_peb/hfdc.c @@ -510,8 +510,8 @@ void myarc_hfdc_device::floppy_index_callback(floppy_image_device *floppy, int s */ void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, int state) { - /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD seek complete\n", tag()); - set_bits(m_status_latch, HDC_DS_SKCOM, (state==ASSERT_LINE)); + /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD index pulse\n", tag()); + set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); signal_drive_status(); } @@ -520,8 +520,8 @@ void myarc_hfdc_device::harddisk_index_callback(mfm_harddisk_device *harddisk, i */ void myarc_hfdc_device::harddisk_skcom_callback(mfm_harddisk_device *harddisk, int state) { - /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD index pulse\n", tag()); - set_bits(m_status_latch, HDC_DS_INDEX, (state==ASSERT_LINE)); + /* if (TRACE_LINES) */ if (state==1) logerror("%s: HD seek complete\n", tag()); + set_bits(m_status_latch, HDC_DS_SKCOM, (state==ASSERT_LINE)); signal_drive_status(); } diff --git a/src/emu/machine/ti99_hd.c b/src/emu/machine/ti99_hd.c index 90cb6701079..87946c42990 100644 --- a/src/emu/machine/ti99_hd.c +++ b/src/emu/machine/ti99_hd.c @@ -117,6 +117,7 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int // Start the settle timer m_step_phase = STEP_SETTLE; m_seek_timer->adjust(attotime::from_usec(16800)); + logerror("%s: Arrived at target track %d, settling ...\n", tag(), m_current_cylinder); } break; case STEP_SETTLE: @@ -125,6 +126,7 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int else { // Seek completed + logerror("%s: Settling done at cylinder %d, seek complete\n", tag(), m_current_cylinder); m_seek_complete = true; m_seek_complete_cb(this, ASSERT_LINE); m_step_phase = STEP_COLLECT; @@ -136,8 +138,11 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int void mfm_harddisk_device::head_move() { - int disttime = m_track_delta*200; - if (disttime < 0) disttime = -disttime; + int steps = m_track_delta; + if (steps < 0) steps = -steps; + logerror("%s: Moving head by %d step(s) %s\n", tag(), steps, (m_track_delta<0)? "outward" : "inward"); + + int disttime = steps*200; m_step_phase = STEP_MOVING; m_seek_timer->adjust(attotime::from_usec(disttime)); // We pretend that we already arrived @@ -208,10 +213,10 @@ void mfm_harddisk_device::step_w(line_state line) m_seek_complete_cb(this, CLEAR_LINE); } - logerror("%s: Got seek pulse; distance %d, direction %s\n", tag(), m_track_delta, m_seek_inward? "inward" : "outward"); // Counter will be adjusted according to the direction (+-1) m_track_delta += (m_seek_inward)? +1 : -1; - if (m_track_delta < 0 || m_track_delta > 670) + logerror("%s: Got seek pulse; track delta %d\n", tag(), m_track_delta); + if (m_track_delta < -670 || m_track_delta > 670) { logerror("%s: Excessive step pulses - doing auto-truncation\n", tag()); m_autotruncation = true; -- cgit v1.2.3-70-g09d2 From 79cfcf76dc89c6d4068d806f5c9aa41f487b6777 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 20 Apr 2015 16:02:37 +0200 Subject: hdc9234: Make CLANG happier. (nw) --- src/emu/machine/hdc9234.c | 4 ++-- src/emu/machine/hdc9234.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/emu/machine/hdc9234.c b/src/emu/machine/hdc9234.c index 20316fa0a8b..be924040fde 100644 --- a/src/emu/machine/hdc9234.c +++ b/src/emu/machine/hdc9234.c @@ -2637,9 +2637,9 @@ void hdc9234_device::live_run_until(attotime limit) */ void hdc9234_device::live_run_hd_until(attotime limit) { - int slot = 0; +// int slot = 0; logerror("%s: live_run_hd\n", tag()); - + if (m_live_state.state == IDLE || m_live_state.next_state != -1) return; diff --git a/src/emu/machine/hdc9234.h b/src/emu/machine/hdc9234.h index d140ae62e46..e4efd35ad3e 100644 --- a/src/emu/machine/hdc9234.h +++ b/src/emu/machine/hdc9234.h @@ -168,7 +168,7 @@ private: // Timers to delay execution/completion of commands */ emu_timer *m_timer; emu_timer *m_cmd_timer; - emu_timer *m_live_timer; + // emu_timer *m_live_timer; // Timer callback void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); -- cgit v1.2.3-70-g09d2 From 769a1cd2e84544c26077b39c151e7bbc02597d06 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 20 Apr 2015 19:09:18 +0200 Subject: vroulet.c: enabled save state support (nw) --- src/mame/drivers/vroulet.c | 48 ++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c index 3e9a6d3c607..24dc5bd0c6d 100644 --- a/src/mame/drivers/vroulet.c +++ b/src/mame/drivers/vroulet.c @@ -46,38 +46,44 @@ class vroulet_state : public driver_device public: vroulet_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_colorram(*this, "colorram"), - m_ball(*this, "ball"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_generic_paletteram_8(*this, "paletteram") { } + m_generic_paletteram_8(*this, "paletteram"), + m_videoram(*this, "videoram"), + m_colorram(*this, "colorram"), + m_ball(*this, "ball") { } + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + required_shared_ptr m_generic_paletteram_8; required_shared_ptr m_videoram; required_shared_ptr m_colorram; required_shared_ptr m_ball; + tilemap_t *m_bg_tilemap; - DECLARE_WRITE8_MEMBER(vroulet_paletteram_w); - DECLARE_WRITE8_MEMBER(vroulet_videoram_w); - DECLARE_WRITE8_MEMBER(vroulet_colorram_w); + + DECLARE_WRITE8_MEMBER(paletteram_w); + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(colorram_w); DECLARE_WRITE8_MEMBER(ppi8255_a_w); DECLARE_WRITE8_MEMBER(ppi8255_b_w); DECLARE_WRITE8_MEMBER(ppi8255_c_w); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + virtual void video_start(); - UINT32 screen_update_vroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; - required_shared_ptr m_generic_paletteram_8; + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; /* video */ -WRITE8_MEMBER(vroulet_state::vroulet_paletteram_w) +WRITE8_MEMBER(vroulet_state::paletteram_w) { /* paletteram_xxxxBBBBGGGGRRRR_byte_be_w @@ -97,13 +103,13 @@ WRITE8_MEMBER(vroulet_state::vroulet_paletteram_w) } } -WRITE8_MEMBER(vroulet_state::vroulet_videoram_w) +WRITE8_MEMBER(vroulet_state::videoram_w) { m_videoram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); } -WRITE8_MEMBER(vroulet_state::vroulet_colorram_w) +WRITE8_MEMBER(vroulet_state::colorram_w) { m_colorram[offset] = data; m_bg_tilemap->mark_tile_dirty(offset); @@ -124,7 +130,7 @@ void vroulet_state::video_start() 8, 8, 32, 32); } -UINT32 vroulet_state::screen_update_vroulet(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 vroulet_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, 0x320, 1, 0, 0, @@ -138,10 +144,10 @@ static ADDRESS_MAP_START( vroulet_map, AS_PROGRAM, 8, vroulet_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x8000, 0x8000) AM_NOP - AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(vroulet_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(vroulet_colorram_w) AM_SHARE("colorram") + AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") AM_RANGE(0xa000, 0xa001) AM_RAM AM_SHARE("ball") - AM_RANGE(0xb000, 0xb0ff) AM_WRITE(vroulet_paletteram_w) AM_SHARE("paletteram") + AM_RANGE(0xb000, 0xb0ff) AM_WRITE(paletteram_w) AM_SHARE("paletteram") AM_RANGE(0xc000, 0xc000) AM_NOP ADDRESS_MAP_END @@ -283,7 +289,7 @@ static MACHINE_CONFIG_START( vroulet, vroulet_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(vroulet_state, screen_update_vroulet) + MCFG_SCREEN_UPDATE_DRIVER(vroulet_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", vroulet) @@ -313,4 +319,4 @@ ROM_END /* Game Driver */ -GAME( 1989, vroulet, 0, vroulet, vroulet, driver_device, 0, ROT90, "World Game", "Vegas Roulette", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS ) +GAME( 1989, vroulet, 0, vroulet, vroulet, driver_device, 0, ROT90, "World Game", "Vegas Roulette", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE ) -- cgit v1.2.3-70-g09d2 From f5c99f48709ef9a934ee984766d2294efa794f37 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 20 Apr 2015 19:19:23 +0200 Subject: some state_save_register_item removal (nw) --- src/emu/cpu/psx/rcnt.c | 8 +++--- src/mame/audio/segasnd.c | 64 +++++++++++++++++++++++------------------------ src/mame/audio/tiamc1.c | 18 ++++++------- src/mame/machine/konppc.c | 24 +++++++++--------- src/mess/audio/lynx.c | 26 +++++++++---------- src/mess/machine/lynx.c | 10 ++++---- 6 files changed, 75 insertions(+), 75 deletions(-) (limited to 'src') diff --git a/src/emu/cpu/psx/rcnt.c b/src/emu/cpu/psx/rcnt.c index cfe0f17c345..fe2bb9143ad 100644 --- a/src/emu/cpu/psx/rcnt.c +++ b/src/emu/cpu/psx/rcnt.c @@ -58,10 +58,10 @@ void psxrcnt_device::device_start() for( n = 0; n < 3; n++ ) { root_counter[ n ].timer = timer_alloc(n); - state_save_register_item( machine(), "psxroot", NULL, n, root_counter[ n ].n_count ); - state_save_register_item( machine(), "psxroot", NULL, n, root_counter[ n ].n_mode ); - state_save_register_item( machine(), "psxroot", NULL, n, root_counter[ n ].n_target ); - state_save_register_item( machine(), "psxroot", NULL, n, root_counter[ n ].n_start ); + save_item(NAME(root_counter[ n ].n_count), n); + save_item(NAME(root_counter[ n ].n_mode), n); + save_item(NAME(root_counter[ n ].n_target), n); + save_item(NAME(root_counter[ n ].n_start), n); root_counter[ n ].n_count = 0; root_counter[ n ].n_mode = 0; root_counter[ n ].n_target = 0; diff --git a/src/mame/audio/segasnd.c b/src/mame/audio/segasnd.c index bf24e91bbe5..181e600347d 100644 --- a/src/mame/audio/segasnd.c +++ b/src/mame/audio/segasnd.c @@ -316,11 +316,11 @@ void usb_sound_device::device_start() configure_filter(&m_final_filter, 100e3, 4.7e-6); /* register for save states */ - state_save_register_item(machine(), "usb", NULL, 0, m_in_latch); - state_save_register_item(machine(), "usb", NULL, 0, m_out_latch); - state_save_register_item(machine(), "usb", NULL, 0, m_last_p2_value); - state_save_register_item(machine(), "usb", NULL, 0, m_work_ram_bank); - state_save_register_item(machine(), "usb", NULL, 0, m_t1_clock); + save_item(NAME(m_in_latch)); + save_item(NAME(m_out_latch)); + save_item(NAME(m_last_p2_value)); + save_item(NAME(m_work_ram_bank)); + save_item(NAME(m_t1_clock)); for (tgroup = 0; tgroup < 3; tgroup++) { @@ -328,36 +328,36 @@ void usb_sound_device::device_start() for (tchan = 0; tchan < 3; tchan++) { timer8253_channel *channel = &group->chan[tchan]; - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->holding); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->latchmode); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->latchtoggle); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->clockmode); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->bcdmode); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->output); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->lastgate); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->gate); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->subcount); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->count); - state_save_register_item(machine(), "usb", NULL, tgroup * 3 + tchan, channel->remain); + save_item(NAME(channel->holding), tgroup * 3 + tchan); + save_item(NAME(channel->latchmode), tgroup * 3 + tchan); + save_item(NAME(channel->latchtoggle), tgroup * 3 + tchan); + save_item(NAME(channel->clockmode), tgroup * 3 + tchan); + save_item(NAME(channel->bcdmode), tgroup * 3 + tchan); + save_item(NAME(channel->output), tgroup * 3 + tchan); + save_item(NAME(channel->lastgate), tgroup * 3 + tchan); + save_item(NAME(channel->gate), tgroup * 3 + tchan); + save_item(NAME(channel->subcount), tgroup * 3 + tchan); + save_item(NAME(channel->count), tgroup * 3 + tchan); + save_item(NAME(channel->remain), tgroup * 3 + tchan); } - state_save_register_item_array(machine(), "usb", NULL, tgroup, group->env); - state_save_register_item(machine(), "usb", NULL, tgroup, group->chan_filter[0].capval); - state_save_register_item(machine(), "usb", NULL, tgroup, group->chan_filter[1].capval); - state_save_register_item(machine(), "usb", NULL, tgroup, group->gate1.capval); - state_save_register_item(machine(), "usb", NULL, tgroup, group->gate2.capval); - state_save_register_item(machine(), "usb", NULL, tgroup, group->config); + save_item(NAME(group->env), tgroup); + save_item(NAME(group->chan_filter[0].capval), tgroup); + save_item(NAME(group->chan_filter[1].capval), tgroup); + save_item(NAME(group->gate1.capval), tgroup); + save_item(NAME(group->gate2.capval), tgroup); + save_item(NAME(group->config), tgroup); } - state_save_register_item_array(machine(), "usb", NULL, 0, m_timer_mode); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_shift); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_state); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_subcount); - state_save_register_item(machine(), "usb", NULL, 0, m_final_filter.capval); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_filters[0].capval); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_filters[1].capval); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_filters[2].capval); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_filters[3].capval); - state_save_register_item(machine(), "usb", NULL, 0, m_noise_filters[4].capval); + save_item(NAME(m_timer_mode)); + save_item(NAME(m_noise_shift)); + save_item(NAME(m_noise_state)); + save_item(NAME(m_noise_subcount)); + save_item(NAME(m_final_filter.capval)); + save_item(NAME(m_noise_filters[0].capval)); + save_item(NAME(m_noise_filters[1].capval)); + save_item(NAME(m_noise_filters[2].capval)); + save_item(NAME(m_noise_filters[3].capval)); + save_item(NAME(m_noise_filters[4].capval)); } //------------------------------------------------- diff --git a/src/mame/audio/tiamc1.c b/src/mame/audio/tiamc1.c index f88f9636ac0..5cca16190dc 100644 --- a/src/mame/audio/tiamc1.c +++ b/src/mame/audio/tiamc1.c @@ -85,15 +85,15 @@ void tiamc1_sound_device::device_start() for (j = 0; j < 3; j++) { - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].count); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].cnval); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].bcdMode); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].cntMode); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].valMode); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].gate); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].output); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].loadCnt); - state_save_register_item(machine(), "channel", NULL, i * 3 + j, t->channel[j].enable); + save_item(NAME(t->channel[j].count), i * 3 + j); + save_item(NAME(t->channel[j].cnval), i * 3 + j); + save_item(NAME(t->channel[j].bcdMode), i * 3 + j); + save_item(NAME(t->channel[j].cntMode), i * 3 + j); + save_item(NAME(t->channel[j].valMode), i * 3 + j); + save_item(NAME(t->channel[j].gate), i * 3 + j); + save_item(NAME(t->channel[j].output), i * 3 + j); + save_item(NAME(t->channel[j].loadCnt), i * 3 + j); + save_item(NAME(t->channel[j].enable), i * 3 + j); } } diff --git a/src/mame/machine/konppc.c b/src/mame/machine/konppc.c index dd631ad6401..9855ac9f928 100644 --- a/src/mame/machine/konppc.c +++ b/src/mame/machine/konppc.c @@ -44,18 +44,18 @@ void konppc_device::device_start() nwk_fifo[i] = auto_alloc_array(machine(), UINT32, 0x800); nwk_ram[i] = auto_alloc_array(machine(), UINT32, 0x2000); - state_save_register_item_array(machine(), "konppc", NULL, i, dsp_comm_ppc[i]); - state_save_register_item_array(machine(), "konppc", NULL, i, dsp_comm_sharc[i]); - state_save_register_item(machine(), "konppc", NULL, i, dsp_shared_ram_bank[i]); - state_save_register_item_pointer(machine(), "konppc", NULL, i, dsp_shared_ram[i], DSP_BANK_SIZE * 2 / sizeof(dsp_shared_ram[i][0])); - state_save_register_item(machine(), "konppc", NULL, i, dsp_state[i]); - state_save_register_item(machine(), "konppc", NULL, i, nwk_device_sel[i]); - state_save_register_item(machine(), "konppc", NULL, i, nwk_fifo_read_ptr[i]); - state_save_register_item(machine(), "konppc", NULL, i, nwk_fifo_write_ptr[i]); - state_save_register_item_pointer(machine(), "konppc", NULL, i, nwk_fifo[i], 0x800); - state_save_register_item_pointer(machine(), "konppc", NULL, i, nwk_ram[i], 0x2000); - } - state_save_register_item(machine(), "konppc", NULL, 0, cgboard_id); + save_item(NAME(dsp_comm_ppc[i]), i); + save_item(NAME(dsp_comm_sharc[i]), i); + save_item(NAME(dsp_shared_ram_bank[i]), i); + save_pointer(NAME(dsp_shared_ram[i]), DSP_BANK_SIZE * 2 / sizeof(dsp_shared_ram[i][0]), i); + save_item(NAME(dsp_state[i]), i); + save_item(NAME(nwk_device_sel[i]), i); + save_item(NAME(nwk_fifo_read_ptr[i]), i); + save_item(NAME(nwk_fifo_write_ptr[i]), i); + save_pointer(NAME(nwk_fifo[i]), 0x800, i); + save_pointer(NAME(nwk_ram[i]), 0x2000, i); + } + save_item(NAME(cgboard_id)); if (cgboard_type == CGBOARD_TYPE_NWKTR) { diff --git a/src/mess/audio/lynx.c b/src/mess/audio/lynx.c index 6a3d0e624dc..2db121308c0 100644 --- a/src/mess/audio/lynx.c +++ b/src/mess/audio/lynx.c @@ -139,19 +139,19 @@ void lynx_sound_device::register_save() save_item(NAME(m_master_enable)); for (int chan = 0; chan < LYNX_AUDIO_CHANNELS; chan++) { - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.volume); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.feedback); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.output); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.shifter); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.bakup); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.control1); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.counter); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].reg.control2); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].attenuation); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].mask); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].shifter); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].ticks); - state_save_register_item(machine(), "Lynx sound", NULL, chan, m_audio[chan].count); + save_item(NAME(m_audio[chan].reg.volume), chan); + save_item(NAME(m_audio[chan].reg.feedback), chan); + save_item(NAME(m_audio[chan].reg.output), chan); + save_item(NAME(m_audio[chan].reg.shifter), chan); + save_item(NAME(m_audio[chan].reg.bakup), chan); + save_item(NAME(m_audio[chan].reg.control1), chan); + save_item(NAME(m_audio[chan].reg.counter), chan); + save_item(NAME(m_audio[chan].reg.control2), chan); + save_item(NAME(m_audio[chan].attenuation), chan); + save_item(NAME(m_audio[chan].mask), chan); + save_item(NAME(m_audio[chan].shifter), chan); + save_item(NAME(m_audio[chan].ticks), chan); + save_item(NAME(m_audio[chan].count), chan); } } diff --git a/src/mess/machine/lynx.c b/src/mess/machine/lynx.c index f2864ef3ed6..df70f47f6d3 100644 --- a/src/mess/machine/lynx.c +++ b/src/mess/machine/lynx.c @@ -1381,11 +1381,11 @@ void lynx_state::lynx_timer_init(int which) memset(&m_timer[which], 0, sizeof(LYNX_TIMER)); m_timer[which].timer = timer_alloc(TIMER_SHOT); - state_save_register_item(machine(), "Lynx", NULL, which, m_timer[which].bakup); - state_save_register_item(machine(), "Lynx", NULL, which, m_timer[which].cntrl1); - state_save_register_item(machine(), "Lynx", NULL, which, m_timer[which].cntrl2); - state_save_register_item(machine(), "Lynx", NULL, which, m_timer[which].counter); - state_save_register_item(machine(), "Lynx", NULL, which, m_timer[which].timer_active); + save_item(NAME(m_timer[which].bakup), which); + save_item(NAME(m_timer[which].cntrl1), which); + save_item(NAME(m_timer[which].cntrl2), which); + save_item(NAME(m_timer[which].counter), which); + save_item(NAME(m_timer[which].timer_active), which); } void lynx_state::lynx_timer_signal_irq(int which) -- cgit v1.2.3-70-g09d2 From 0f5ca811c149a9bfcbf33d53c1a9f47ac9bd458f Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 20 Apr 2015 20:43:44 +0300 Subject: clang fix. (nw) --- src/emu/machine/ti99_hd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/emu/machine/ti99_hd.h b/src/emu/machine/ti99_hd.h index 1090168e49f..b31f5420fb3 100644 --- a/src/emu/machine/ti99_hd.h +++ b/src/emu/machine/ti99_hd.h @@ -53,7 +53,7 @@ private: int m_step_phase; bool m_seek_complete; bool m_seek_inward; - bool m_seeking; + //bool m_seeking; bool m_autotruncation; line_state m_step_line; // keep the last state -- cgit v1.2.3-70-g09d2 From 126fcf2e93ee7460711e3b4d02c6a1b910fc952d Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 20 Apr 2015 21:46:03 +0300 Subject: (MESS) c8050: Added note about format error. (nw) --- src/emu/bus/ieee488/c8050fdc.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/emu/bus/ieee488/c8050fdc.c b/src/emu/bus/ieee488/c8050fdc.c index cb0a077548f..b45a1c5810f 100644 --- a/src/emu/bus/ieee488/c8050fdc.c +++ b/src/emu/bus/ieee488/c8050fdc.c @@ -14,6 +14,7 @@ TODO: - write protect + - 75,format speed error,01,00,0 */ -- cgit v1.2.3-70-g09d2 From 643d5fafe72493305f12d24db1af38ec37ad9fff Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 20 Apr 2015 22:34:31 +0300 Subject: (MESS) Added sector image format for the Commodore 8280 8" floppy drive. [Curt Coder] --- scripts/src/lib.lua | 2 ++ src/emu/bus/ieee488/c8280.c | 58 ++++++++++++++++++------------------- src/emu/bus/ieee488/c8280.h | 6 ++-- src/lib/formats/c8280_dsk.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ src/lib/formats/c8280_dsk.h | 30 ++++++++++++++++++++ src/lib/formats/flopimg.h | 1 + 6 files changed, 133 insertions(+), 33 deletions(-) create mode 100644 src/lib/formats/c8280_dsk.c create mode 100644 src/lib/formats/c8280_dsk.h (limited to 'src') diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua index 557e9e7316c..96ab4c3cad2 100644 --- a/scripts/src/lib.lua +++ b/scripts/src/lib.lua @@ -157,6 +157,8 @@ project "formats" MAME_DIR .. "src/lib/formats/bw2_dsk.h", MAME_DIR .. "src/lib/formats/bw12_dsk.c", MAME_DIR .. "src/lib/formats/bw12_dsk.h", + MAME_DIR .. "src/lib/formats/c8280_dsk.c", + MAME_DIR .. "src/lib/formats/c8280_dsk.h", MAME_DIR .. "src/lib/formats/cbm_crt.c", MAME_DIR .. "src/lib/formats/cbm_crt.h", MAME_DIR .. "src/lib/formats/cbm_tap.c", diff --git a/src/emu/bus/ieee488/c8280.c b/src/emu/bus/ieee488/c8280.c index 0bbd0d6c438..8787fb99487 100644 --- a/src/emu/bus/ieee488/c8280.c +++ b/src/emu/bus/ieee488/c8280.c @@ -9,16 +9,6 @@ **********************************************************************/ -/* - - TODO: - - - format - - wd1772: track description 80x4e 12x00 3xf6 fc 50x4e 12x00 3xf5 fe 2x00 2x01 f7 22x4e 12x00 3xf5 fb 256xaa f7 54x4e - -*/ - #include "c8280.h" @@ -159,6 +149,7 @@ WRITE8_MEMBER( c8280_device::dio_w ) m_bus->dio_w(this, data); } + //------------------------------------------------- // riot6532 1 //------------------------------------------------- @@ -291,6 +282,10 @@ static SLOT_INTERFACE_START( c8280_floppies ) SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD ) SLOT_INTERFACE_END +FLOPPY_FORMATS_MEMBER( c8280_device::floppy_formats ) + FLOPPY_C8280_FORMAT +FLOPPY_FORMATS_END + //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( c8280 ) @@ -314,11 +309,11 @@ static MACHINE_CONFIG_FRAGMENT( c8280 ) MCFG_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/8) MCFG_CPU_PROGRAM_MAP(c8280_fdc_mem) - MCFG_FD1797x_ADD(WD1797_TAG, XTAL_12MHz/6) // clock? + MCFG_FD1797x_ADD(WD1797_TAG, XTAL_12MHz/6) MCFG_WD_FDC_INTRQ_CALLBACK(INPUTLINE(M6502_FDC_TAG, M6502_IRQ_LINE)) MCFG_WD_FDC_DRQ_CALLBACK(INPUTLINE(M6502_FDC_TAG, M6502_SET_OVERFLOW)) - MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG":0", c8280_floppies, "8dsdd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG":1", c8280_floppies, "8dsdd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":0", c8280_floppies, "8dsdd", c8280_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(WD1797_TAG ":1", c8280_floppies, "8dsdd", c8280_device::floppy_formats) MACHINE_CONFIG_END @@ -390,20 +385,20 @@ inline void c8280_device::update_ieee_signals() // c8280_device - constructor //------------------------------------------------- -c8280_device::c8280_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, C8280, "C8280", tag, owner, clock, "c8280", __FILE__), - device_ieee488_interface(mconfig, *this), - m_maincpu(*this, M6502_DOS_TAG), - m_fdccpu(*this, M6502_FDC_TAG), - m_riot0(*this, M6532_0_TAG), - m_riot1(*this, M6532_1_TAG), - m_fdc(*this, WD1797_TAG), - m_floppy0(*this, WD1797_TAG":0"), - m_floppy1(*this, WD1797_TAG":1"), - m_address(*this, "ADDRESS"), - m_rfdo(1), - m_daco(1), - m_atna(1) +c8280_device::c8280_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, C8280, "C8280", tag, owner, clock, "c8280", __FILE__), + device_ieee488_interface(mconfig, *this), + m_maincpu(*this, M6502_DOS_TAG), + m_fdccpu(*this, M6502_FDC_TAG), + m_riot0(*this, M6532_0_TAG), + m_riot1(*this, M6532_1_TAG), + m_fdc(*this, WD1797_TAG), + m_floppy0(*this, WD1797_TAG ":0"), + m_floppy1(*this, WD1797_TAG ":1"), + m_address(*this, "ADDRESS"), + m_rfdo(1), + m_daco(1), + m_atna(1) { } @@ -418,6 +413,7 @@ void c8280_device::device_start() save_item(NAME(m_rfdo)); save_item(NAME(m_daco)); save_item(NAME(m_atna)); + save_item(NAME(m_ifc)); save_item(NAME(m_fk5)); } @@ -481,12 +477,12 @@ READ8_MEMBER( c8280_device::fk5_r ) bit description - 0 DS1 - 1 DS2 - 2 _DDEN + 0 + 1 + 2 3 DCHG 4 TSID - 5 MOTOR ENABLE + 5 6 0 7 0 diff --git a/src/emu/bus/ieee488/c8280.h b/src/emu/bus/ieee488/c8280.h index 947d382dc7f..917d6bbf1e2 100644 --- a/src/emu/bus/ieee488/c8280.h +++ b/src/emu/bus/ieee488/c8280.h @@ -14,10 +14,10 @@ #ifndef __C8280__ #define __C8280__ - #include "emu.h" #include "ieee488.h" #include "cpu/m6502/m6502.h" +#include "formats/c8280_dsk.h" #include "machine/6532riot.h" #include "machine/wd_fdc.h" @@ -30,7 +30,7 @@ // ======================> c8280_device class c8280_device : public device_t, - public device_ieee488_interface + public device_ieee488_interface { public: // construction/destruction @@ -51,6 +51,8 @@ public: DECLARE_READ8_MEMBER( fk5_r ); DECLARE_WRITE8_MEMBER( fk5_w ); + DECLARE_FLOPPY_FORMATS( floppy_formats ); + protected: // device-level overrides virtual void device_start(); diff --git a/src/lib/formats/c8280_dsk.c b/src/lib/formats/c8280_dsk.c new file mode 100644 index 00000000000..b6a25dcc924 --- /dev/null +++ b/src/lib/formats/c8280_dsk.c @@ -0,0 +1,69 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c8280_dsk.c + + Commodore 8280 disk image format + +*********************************************************************/ + +#include "formats/c8280_dsk.h" + +c8280_format::c8280_format() : wd177x_format(formats) +{ +} + +const char *c8280_format::name() const +{ + return "c8280"; +} + +const char *c8280_format::description() const +{ + return "Commodore 8280 disk image"; +} + +const char *c8280_format::extensions() const +{ + return "dsk"; +} + +const c8280_format::format c8280_format::formats[] = { + // 80x4e 12x00 3xf6 fc + // 50x4e 12x00 3xf5 fe 2x00 01 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 02 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 03 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 04 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 05 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 06 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 07 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 08 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 09 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0a 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0b 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0c 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0d 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0e 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 0f 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 10 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 11 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 12 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 13 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 14 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 15 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 16 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 17 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 18 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 19 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 54x4e 12x00 3xf5 fe 2x00 1a 01 f7 22x4e 12x00 3xf5 fb 256xaa f7 + // 653x4e + { + floppy_image::FF_8, floppy_image::DSDD, floppy_image::MFM, + 1200, 26, 77, 2, 256, {}, 1, {}, 50, 22, 54 + }, + + {} +}; + +const floppy_format_type FLOPPY_C8280_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/c8280_dsk.h b/src/lib/formats/c8280_dsk.h new file mode 100644 index 00000000000..eed34f5d846 --- /dev/null +++ b/src/lib/formats/c8280_dsk.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c8280_dsk.h + + Commodore 8280 disk image format + +*********************************************************************/ + +#ifndef C8280_DSK_H_ +#define C8280_DSK_H_ + +#include "wd177x_dsk.h" + +class c8280_format : public wd177x_format { +public: + c8280_format(); + + virtual const char *name() const; + virtual const char *description() const; + virtual const char *extensions() const; + +private: + static const format formats[]; +}; + +extern const floppy_format_type FLOPPY_C8280_FORMAT; + +#endif diff --git a/src/lib/formats/flopimg.h b/src/lib/formats/flopimg.h index 23cc0ec5cef..c06788c4e13 100644 --- a/src/lib/formats/flopimg.h +++ b/src/lib/formats/flopimg.h @@ -471,6 +471,7 @@ protected: C1541 tr 18-24 3.50 300 3500 C1541 tr 25-30 3.75 300 3750 C1541 tr 31+ 4.00 300 4000 + 8" DD 1 360 1200 5.25" SD 4 300 4000 5.25" DD 2 300 2000 5.25" HD 1 360 1200 -- cgit v1.2.3-70-g09d2 From 500a31ad5729f28b56d2928d81496b112f376805 Mon Sep 17 00:00:00 2001 From: "U-demo\\test" Date: Mon, 20 Apr 2015 15:40:55 -0600 Subject: Minor cleanup for iteagle. Attempt to fix LFB pipelined pixel write in voodoo and fix fogmode lookup --- src/emu/video/vooddefs.h | 28 ++++++++++++++++++----- src/emu/video/voodoo.c | 7 +++++- src/mame/drivers/iteagle.c | 55 ++++++++++++++++++++++++++-------------------- 3 files changed, 59 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/emu/video/vooddefs.h b/src/emu/video/vooddefs.h index 819c285f290..094b6f0eb32 100644 --- a/src/emu/video/vooddefs.h +++ b/src/emu/video/vooddefs.h @@ -3086,13 +3086,28 @@ do else \ { \ int exp = count_leading_zeros(temp); \ + temp &=0x7fff0000; \ wfloat = ((exp << 12) | ((~temp >> (19 - exp)) & 0xfff)) + 1; \ } \ + } \ + /* add the bias for fog selection*/ \ + if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \ + { \ + wfloat += (INT16)(VV)->reg[zaColor].u; \ + CLAMP(wfloat, 0, 0xffff); \ } \ \ /* compute depth value (W or Z) for this pixel */ \ if (FBZMODE_WBUFFER_SELECT(FBZMODE) == 0) \ + { \ CLAMPED_Z(ITERZ, FBZCOLORPATH, depthval); \ + /* add the bias */ \ + if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \ + { \ + depthval += (INT16)(VV)->reg[zaColor].u; \ + CLAMP(depthval, 0, 0xffff); \ + } \ + } \ else if (FBZMODE_DEPTH_FLOAT_SELECT(FBZMODE) == 0) \ depthval = wfloat; \ else \ @@ -3107,17 +3122,18 @@ do else \ { \ int exp = count_leading_zeros(temp); \ + temp &=0x7fff0000; \ depthval = ((exp << 12) | ((~temp >> (19 - exp)) & 0xfff)) + 1; \ } \ } \ + /* add the bias */ \ + if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \ + { \ + depthval += (INT16)(VV)->reg[zaColor].u; \ + CLAMP(depthval, 0, 0xffff); \ + } \ } \ \ - /* add the bias */ \ - if (FBZMODE_ENABLE_DEPTH_BIAS(FBZMODE)) \ - { \ - depthval += (INT16)(VV)->reg[zaColor].u; \ - CLAMP(depthval, 0, 0xffff); \ - } \ \ /* handle depth buffer testing */ \ if (FBZMODE_ENABLE_DEPTHBUF(FBZMODE)) \ diff --git a/src/emu/video/voodoo.c b/src/emu/video/voodoo.c index d84fef0261f..a29bb711570 100644 --- a/src/emu/video/voodoo.c +++ b/src/emu/video/voodoo.c @@ -3248,7 +3248,12 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask, if (mask & 0x0f) { stats_block *stats = &v->fbi.lfb_stats; - INT64 iterw = sw[pix] << (30-16); + INT64 iterw; + if (LFBMODE_WRITE_W_SELECT(v->reg[lfbMode].u)) { + iterw = (UINT32) (v->reg[zaColor].u & 0xffff) << 16; + } else { + iterw = (UINT32) sw[pix] << 16; + } INT32 iterz = sw[pix] << 12; rgb_union color; diff --git a/src/mame/drivers/iteagle.c b/src/mame/drivers/iteagle.c index 83e4f614793..714bf0d0c8c 100644 --- a/src/mame/drivers/iteagle.c +++ b/src/mame/drivers/iteagle.c @@ -177,78 +177,78 @@ static INPUT_PORTS_START( iteagle ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Right" ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Fly By" ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Backspin" ) - PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0xfe00, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0xfe00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW ) PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_DIPNAME( 0x00f0, 0x00, "SW51" ) + PORT_DIPNAME( 0x0010, 0x00, "SW51-1" ) PORT_DIPSETTING(0x00, "Normal" ) PORT_DIPSETTING(0x10, "Operator Mode" ) + PORT_DIPNAME( 0x0020, 0x00, "SW51-2" ) + PORT_DIPSETTING(0x00, "On" ) + PORT_DIPSETTING(0x20, "Off" ) + PORT_DIPNAME( 0x00c0, 0x00, "SW51-34" ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BILL1 ) - PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x3000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_DIPNAME( 0xC000, 0xC000, "Voltage" ) PORT_DIPSETTING(0xC000, "OK" ) PORT_DIPSETTING(0x8000, "Low" ) PORT_DIPSETTING(0x4000, "High" ) PORT_DIPSETTING(0x0000, "Not Detected" ) - PORT_START("TRACKX1") - PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1) - - PORT_START("TRACKY1") - PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1) - PORT_START("VERSION") PORT_DIPNAME( 0x0F00, 0x0000, "GAME" ) PORT_DIPNAME( 0x00F0, 0x0000, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0000, "MINOR" ) + PORT_DIPNAME( 0x000F, 0x0000, "SIMM" ) INPUT_PORTS_END -static INPUT_PORTS_START( gtfore05 ) +static INPUT_PORTS_START( gtfore02 ) PORT_INCLUDE(iteagle) + PORT_START("TRACKX1") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1) + + PORT_START("TRACKY1") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1) + PORT_MODIFY("VERSION") PORT_DIPNAME( 0x0F00, 0x0400, "GAME" ) - PORT_DIPNAME( 0x00F0, 0x0050, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0001, "MINOR" ) + PORT_DIPNAME( 0x00F0, 0x0030, "MAJOR" ) INPUT_PORTS_END static INPUT_PORTS_START( gtfore04 ) - PORT_INCLUDE(iteagle) + PORT_INCLUDE(gtfore02) PORT_MODIFY("VERSION") PORT_DIPNAME( 0x0F00, 0x0400, "GAME" ) PORT_DIPNAME( 0x00F0, 0x0040, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0000, "MINOR" ) INPUT_PORTS_END -static INPUT_PORTS_START( gtfore02 ) - PORT_INCLUDE(iteagle) +static INPUT_PORTS_START( gtfore05 ) + PORT_INCLUDE(gtfore02) PORT_MODIFY("VERSION") PORT_DIPNAME( 0x0F00, 0x0400, "GAME" ) - PORT_DIPNAME( 0x00F0, 0x0030, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0000, "MINOR" ) + PORT_DIPNAME( 0x00F0, 0x0050, "MAJOR" ) INPUT_PORTS_END static INPUT_PORTS_START( gtfore06 ) - PORT_INCLUDE(iteagle) + PORT_INCLUDE(gtfore02) PORT_MODIFY("VERSION") PORT_DIPNAME( 0x0F00, 0x0400, "GAME" ) PORT_DIPNAME( 0x00F0, 0x0060, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0000, "MINOR" ) INPUT_PORTS_END @@ -258,7 +258,14 @@ static INPUT_PORTS_START( carnking ) PORT_MODIFY("VERSION") PORT_DIPNAME( 0x0F00, 0x0600, "GAME" ) PORT_DIPNAME( 0x00F0, 0x0030, "MAJOR" ) - PORT_DIPNAME( 0x000F, 0x0002, "MINOR" ) + + PORT_START("TRACKX1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + //PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_PLAYER(1) + + PORT_START("TRACKY1") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + //PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(1) PORT_PLAYER(1) INPUT_PORTS_END -- cgit v1.2.3-70-g09d2 From c61b2d707db454a02429bae1e4de259fe3f47e21 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 20 Apr 2015 23:50:27 +0200 Subject: (MESS)New games added or promoted to working ----------------- Coleco Galaxian [hap, Kevin Horton, Olivier Galibert] Bambino Soccer [hap, Kevin Horton] Bambino Safari [hap, Kevin Horton] Epoch Invader From Space [hap, Kevin Horton] Epoch Football [hap, Kevin Horton] Epoch Galaxy II [hap, Kevin Horton] Tomy Cosmic Combat [hap, Kevin Horton] Gakken Heiankyo Alien [hap, Kevin Horton, Rik] Gakken Dig Dug [hap, Kevin Horton, Rik] Added as Not-working: -------------------- Gakken Crazy Kong [hap, Kevin Horton, Rik] --- src/mess/drivers/hh_hmcs40.c | 538 ++++++++++++++++++++++++++---- src/mess/drivers/hh_pic16.c | 3 +- src/mess/drivers/hh_tms1k.c | 2 +- src/mess/drivers/hh_ucom4.c | 764 +++++++++++++++++++++++++++++++++++++++++-- src/mess/mess.lst | 11 +- 5 files changed, 1233 insertions(+), 85 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mess/drivers/hh_hmcs40.c index ab3874d78e3..80d770bb839 100644 --- a/src/mess/drivers/hh_hmcs40.c +++ b/src/mess/drivers/hh_hmcs40.c @@ -10,20 +10,23 @@ serial device etc. ---------------------------------------------------------------- @07 HD38750A 1979, Bambino Knock-Em Out Boxing (ET-06B) - @08 HD38750A 1979, Bambino Basketball (ET-05) + @08 HD38750A 1979, Bambino Dribble Away Basketball (ET-05) @45 HD38750A 1981, VTech Invaders *58 HD38750A 1982, Ludotronic(Hanzawa) Grand Prix Turbo *62 HD38750A 1982, Actronics(Hanzawa) Pack'n Maze - *04 HD38800A 1980, Gakken Heiankyo Alien + @04 HD38800A 1980, Gakken Heiankyo Alien @25 HD38800A 1981, Coleco Alien Attack @27 HD38800A 1981, Bandai Packri Monster + *31 HD38800A 1981, Entex Select-a-Game cartridge: Space Invader 2 (have dump) *41 HD38800A 1982, Gakken Puck Monster *51 HD38800A 1981, Actronics(Hanzawa) Twinvader @70 HD38800A 1982, Coleco Galaxian @73 HD38800A 1982, Bandai(Mattel) Star Hawk @77 HD38800A 1982, Bandai Frisky Tom + @88 HD38800A 1984, Tomy Tron (THN-02) + @01 HD38800B 1982, Gakken Crazy Kong @23 HD38800B 1982, Tomy Kingman (THF-01II) *24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man *29 HD38800B 1984, Tomy Portable 6000 Bombman @@ -41,11 +44,24 @@ @45 HD38820A 1982, Coleco Donkey Kong @49 HD38820A 1983, Bandai Zackman @61 HD38820A 1983, Coleco Ms. Pac-Man + @69 HD38820A 1983, Gakken Dig Dug @70 HD38820A 1983, Parker Brothers Q*Bert - @88 HD38820A 1984, Tomy Tron (THN-02) (* denotes not yet emulated by MESS, @ denotes it's in this driver) + + TODO: + - cdkong discrete sound (simple volume decay, simulated for now) + - cgalaxn discrete sound (alien attacking sound effect) + - vinvader locks up at boot + - gckong random lockups (tap the jump button repeatedly): mcu stack overflow, + works ok if stack levels is increased, 38800 B rev. has more stack levels? + - epacman booting the game in demo mode, pacman should go straight to the + upper-left power pill: mcu cycle/interrupt timing related + - Though very uncommon when compared to games with LED/lamp display, + some games may manipulate VFD plate brightness by strobing it longer, + eg. cgalaxn when the player ship explodes. + ***************************************************************************/ #include "emu.h" @@ -291,7 +307,7 @@ INPUT_CHANGED_MEMBER(hh_hmcs40_state::single_interrupt_line) /*************************************************************************** - Bambino Basketball - Dribble Away (manufactured in Japan) + Bambino Dribble Away Basketball (manufactured in Japan) * PCBs are labeled Emix Corp. ET-05 * Hitachi HD38750A08 MCU * green VFD display Emix-106, with bezel overlay @@ -501,14 +517,14 @@ static INPUT_PORTS_START( bmboxing ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.4") // port D - PORT_CONFNAME( 0x01, 0x00, "Players" ) - PORT_CONFSETTING( 0x00, "1" ) - PORT_CONFSETTING( 0x01, "2" ) - PORT_CONFNAME( 0x02, 0x00, "Skill Level" ) - PORT_CONFSETTING( 0x00, "1" ) - PORT_CONFSETTING( 0x02, "2" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x0001, 0x0000, "Players" ) + PORT_CONFSETTING( 0x0000, "1" ) + PORT_CONFSETTING( 0x0001, "2" ) + PORT_CONFNAME( 0x0002, 0x0000, "Skill Level" ) + PORT_CONFSETTING( 0x0000, "1" ) + PORT_CONFSETTING( 0x0002, "2" ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_START ) + PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static MACHINE_CONFIG_START( bmboxing, bmboxing_state ) @@ -722,7 +738,7 @@ WRITE16_MEMBER(packmon_state::grid_w) READ16_MEMBER(packmon_state::input_r) { // D5: multiplexed inputs - return read_inputs(5); + return read_inputs(5) & 0x20; } @@ -773,10 +789,10 @@ MACHINE_CONFIG_END /*************************************************************************** - Bandai(Mattel) Star Hawk (manufactured in Japan) + Bandai/Mattel Star Hawk (manufactured in Japan) * PCBs are labeled Kaken, PT-317B * Hitachi HD38800A73 MCU - * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + * cyan/red VFD display Futaba DM-41ZK, with partial color overlay + bezel Kaken was a subsidiary of Bandai. The original Japanese release is unknown, was it canceled and only released in the USA? @@ -908,7 +924,7 @@ MACHINE_CONFIG_END /*************************************************************************** Bandai Zackman "The Pit, FL Exploration of Space" (manufactured in Japan) - * Hitachi HD38820A49 MCU + * Hitachi QFP HD38820A49 MCU * cyan/red/yellow VFD display Futaba DM-53Z 3E, with color overlay NOTE!: MESS external artwork is recommended @@ -1057,7 +1073,7 @@ WRITE8_MEMBER(alnattck_state::plate_w) m_plate = (m_plate & ~(0xf << shift)) | (data << shift); // update display - UINT32 plate = BITSWAP16(m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000); + UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,16,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15); display_matrix(20, 10, plate, m_grid); } @@ -1079,14 +1095,14 @@ WRITE16_MEMBER(alnattck_state::grid_w) READ16_MEMBER(alnattck_state::input_r) { // D5: multiplexed inputs - return read_inputs(7); + return read_inputs(7) & 0x20; } // config static INPUT_PORTS_START( alnattck ) - PORT_START("IN.0") // D5 D7 + PORT_START("IN.0") // D7 line D5 PORT_CONFNAME( 0x20, 0x00, "Skill Level" ) PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x20, "2" ) @@ -1104,10 +1120,10 @@ static INPUT_PORTS_START( alnattck ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_START("IN.5") // D12 line D5 - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Move") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Move") PORT_START("IN.6") // D13 line D5 - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Fire") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Fire") INPUT_PORTS_END static MACHINE_CONFIG_START( alnattck, alnattck_state ) @@ -1140,7 +1156,7 @@ MACHINE_CONFIG_END Coleco Donkey Kong (manufactured in Taiwan) * PCB label Coleco Rev C 75790 DK - * Hitachi HD38820A45 MCU + * Hitachi QFP HD38820A45 MCU * cyan/red VFD display Futaba DM-47ZK 2K, with color overlay NOTE!: MESS external artwork is recommended @@ -1213,15 +1229,15 @@ WRITE16_MEMBER(cdkong_state::grid_w) // config static INPUT_PORTS_START( cdkong ) - PORT_START("IN.0") // port D + PORT_START("IN.0") // INT0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) + + PORT_START("IN.1") // port D PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) - - PORT_START("IN.1") // INT0 - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) + PORT_BIT( 0x7ff8, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -1246,7 +1262,7 @@ static MACHINE_CONFIG_START( cdkong, cdkong_state ) MCFG_HMCS40_WRITE_R_CB(5, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(6, WRITE8(cdkong_state, plate_w)) MCFG_HMCS40_WRITE_D_CB(WRITE16(cdkong_state, grid_w)) - MCFG_HMCS40_READ_D_CB(IOPORT("IN.0")) + MCFG_HMCS40_READ_D_CB(IOPORT("IN.1")) MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) @@ -1289,9 +1305,11 @@ public: { } void prepare_display(); - DECLARE_WRITE16_MEMBER(plate_w); DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE16_MEMBER(plate_w); DECLARE_READ8_MEMBER(input_r); + + DECLARE_INPUT_CHANGED_MEMBER(player_switch); }; // handlers @@ -1299,23 +1317,11 @@ public: void cgalaxn_state::prepare_display() { UINT16 grid = BITSWAP16(m_grid,15,14,13,12,1,2,0,11,10,9,8,7,6,5,4,3); - UINT16 plate = BITSWAP16(m_plate,15,14,5,4,3,2,1,0,7,11,12,9,8,10,6,13); - display_matrix(14, 12, plate, grid); + UINT16 plate = BITSWAP16(m_plate,15,14,6,5,4,3,2,1,7,8,9,10,11,0,12,13); + display_matrix(15, 12, plate, grid); } WRITE8_MEMBER(cgalaxn_state::grid_w) -{ - // D0: speaker out - m_speaker->level_w(data & 1); - - // D1: speaker on? - - // D2-D15: vfd matrix plate - m_plate = data >> 2 & 0x3fff; - prepare_display(); -} - -WRITE16_MEMBER(cgalaxn_state::plate_w) { // R10,R11: input mux if (offset == HMCS40_PORT_R1X) @@ -1327,6 +1333,18 @@ WRITE16_MEMBER(cgalaxn_state::plate_w) prepare_display(); } +WRITE16_MEMBER(cgalaxn_state::plate_w) +{ + // D0: speaker out + m_speaker->level_w(data & 1); + + // D1: start alien attack whine sound effect (edge triggered) + + // D2-D15: vfd matrix plate + m_plate = (m_plate & 0x4000) | (data >> 2 & 0x3fff); + prepare_display(); +} + READ8_MEMBER(cgalaxn_state::input_r) { // R0x: multiplexed inputs @@ -1344,7 +1362,7 @@ static INPUT_PORTS_START( cgalaxn ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_START("IN.1") // R11 port R0x - PORT_CONFNAME( 0x01, 0x01, "Players" ) + PORT_CONFNAME( 0x01, 0x01, "Players" ) PORT_CHANGED_MEMBER(DEVICE_SELF, cgalaxn_state, player_switch, NULL) PORT_CONFSETTING( 0x01, "1" ) PORT_CONFSETTING( 0x00, "2" ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_UNUSED ) @@ -1356,6 +1374,13 @@ static INPUT_PORTS_START( cgalaxn ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1) INPUT_PORTS_END +INPUT_CHANGED_MEMBER(cgalaxn_state::player_switch) +{ + // 2-player switch directly enables plate 14 + m_plate = (m_plate & 0x3fff) | (newval ? 0 : 0x4000); +} + + static MACHINE_CONFIG_START( cgalaxn, cgalaxn_state ) /* basic machine hardware */ @@ -1385,7 +1410,7 @@ MACHINE_CONFIG_END Coleco Pac-Man (manufactured in Taiwan) * PCB label Coleco 75690 - * Hitachi HD38820A28/29 MCU + * Hitachi QFP HD38820A28/29 MCU * cyan/red VFD display Futaba DM-34Z 2A, with color overlay known releases: @@ -1506,7 +1531,7 @@ MACHINE_CONFIG_END Coleco Ms. Pac-Man (manufactured in Taiwan) * PCB label Coleco 911171 - * Hitachi HD38820A61 MCU + * Hitachi QFP HD38820A61 MCU * cyan/red VFD display Futaba DM-60Z 3I, with color overlay Select game mode on start: @@ -1557,7 +1582,7 @@ WRITE16_MEMBER(cmspacmn_state::grid_w) // D5-D15: vfd matrix grid m_grid = data >> 5 & 0x7ff; - // D0,D1: plate 11+17,6+22 (update display there) + // D0,D1: more plates (update display there) plate_w(space, 6 + HMCS40_PORT_R1X, data & 3); } @@ -1621,7 +1646,8 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Galaxian 2 (manufactured in Japan) - * Hitachi HD38820A13 MCU + * PCB labels ENTEX GALAXIAN PB-118/116/097 80-210137/135/114 + * Hitachi QFP HD38820A13 MCU * cyan/red/green VFD display Futaba DM-20 NOTE!: MESS external artwork is recommended @@ -1688,7 +1714,7 @@ static INPUT_PORTS_START( egalaxn2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " PORT_START("IN.1") // D2 port R0x - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY // " @@ -1742,8 +1768,9 @@ MACHINE_CONFIG_END /*************************************************************************** Entex Pac Man 2 (manufactured in Japan) - * Hitachi HD38820A23 MCU - * cyan/red VFD display Futaba DM-28Z 1G + * PCB labels ENTEX PAC-MAN PB-093/094 80-210149/50/51 + * Hitachi QFP HD38820A23 MCU + * cyan/red VFD display Futaba DM-28Z 1G(cyan Pac-Man) or DM-28 1K(orange Pac-Man) 2 VFD revisions are known, the difference is Pac-Man's color: cyan or red. @@ -1821,10 +1848,374 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Gakken Heiankyo Alien (manufactured in Japan) + * Hitachi HD38800A04 MCU + * cyan/red VFD display Futaba DM-11Z 1H + + known releases: + - Japan: Heiankyo Alien + - USA: Earth Invaders, published by CGL + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class ghalien_state : public hh_hmcs40_state +{ +public: + ghalien_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_hmcs40_state(mconfig, type, tag) + { } + + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE16_MEMBER(grid_w); + DECLARE_READ16_MEMBER(input_r); +}; + +// handlers + +WRITE8_MEMBER(ghalien_state::plate_w) +{ + // R0x-R3x(,D10-D13): vfd matrix plate + int shift = offset * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // update display + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9); + UINT32 plate = BITSWAP24(m_plate,23,22,21,20,14,12,10,8,9,13,15,2,0,1,3,11,7,5,4,6,19,17,16,18); + display_matrix(20, 10, plate, grid); +} + +WRITE16_MEMBER(ghalien_state::grid_w) +{ + // D14: speaker out + m_speaker->level_w(data >> 14 & 1); + + // D0-D6: input mux + m_inp_mux = data & 0x7f; + + // D0-D9: vfd matrix grid + m_grid = data & 0x3ff; + + // D10-D13: more plates (update display there) + plate_w(space, 4, data >> 10 & 0xf); +} + +READ16_MEMBER(ghalien_state::input_r) +{ + // D15: multiplexed inputs + return read_inputs(7) & 0x8000; +} + + +// config + +static INPUT_PORTS_START( ghalien ) + PORT_START("IN.0") // D0 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way + + PORT_START("IN.1") // D1 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + + PORT_START("IN.2") // D2 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // " + + PORT_START("IN.3") // D3 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " + + PORT_START("IN.4") // D4 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Dig") + + PORT_START("IN.5") // D5 line D15 + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Bury") + + PORT_START("IN.6") // D6 line D15 + PORT_CONFNAME( 0x8000, 0x0000, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x0000, "Amateur" ) + PORT_CONFSETTING( 0x8000, "Professional" ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( ghalien, ghalien_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation + MCFG_HMCS40_WRITE_R_CB(0, WRITE8(ghalien_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(1, WRITE8(ghalien_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(2, WRITE8(ghalien_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(3, WRITE8(ghalien_state, plate_w)) + MCFG_HMCS40_WRITE_D_CB(WRITE16(ghalien_state, grid_w)) + MCFG_HMCS40_READ_D_CB(READ16(ghalien_state, input_r)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Gakken Crazy Kong (manufactured in Japan) + * PCB label ZENY 5603601 + * Hitachi HD38800B01 MCU + * cyan/red/blue VFD display Futaba DM-54Z 2H, with bezel overlay + + known releases: + - Japan: Crazy Kong + - USA: Super Kong, published by CGL + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class gckong_state : public hh_hmcs40_state +{ +public: + gckong_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_hmcs40_state(mconfig, type, tag) + { } + + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE16_MEMBER(grid_w); + + void update_int1(); + DECLARE_INPUT_CHANGED_MEMBER(input_changed); +}; + +// handlers + +WRITE8_MEMBER(gckong_state::plate_w) +{ + // R0x-R3x(,D0,D1): vfd matrix plate + int shift = offset * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // update display + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10); + UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0); + display_matrix(32, 11, plate, grid); +} + +WRITE16_MEMBER(gckong_state::grid_w) +{ + // D2: speaker out + m_speaker->level_w(data >> 2 & 1); + + // D5-D8: input mux + UINT8 inp_mux = data >> 5 & 0xf; + if (inp_mux != m_inp_mux) + { + m_inp_mux = inp_mux; + update_int1(); + } + + // D5-D15: vfd matrix grid + m_grid = data >> 5 & 0x7ff; + + // D0,D1: more plates (update display there) + plate_w(space, 4, data & 3); +} + +void gckong_state::update_int1() +{ + // INT1 on multiplexed inputs + set_interrupt(1, read_inputs(4)); +} + + +// config + +static INPUT_PORTS_START( gckong ) + PORT_START("IN.0") // D5 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL) + + PORT_START("IN.1") // D6 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL) + + PORT_START("IN.2") // D7 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL) + + PORT_START("IN.3") // D8 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gckong_state, input_changed, NULL) + + PORT_START("IN.4") // INT0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) + + PORT_START("IN.5") // port D + PORT_CONFNAME( 0x0010, 0x0000, "Skill Level" ) + PORT_CONFSETTING( 0x0000, "A" ) + PORT_CONFSETTING( 0x0010, "B" ) + PORT_BIT( 0xffef, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +INPUT_CHANGED_MEMBER(gckong_state::input_changed) +{ + update_int1(); +} + + +static MACHINE_CONFIG_START( gckong, gckong_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation + MCFG_HMCS40_WRITE_R_CB(0, WRITE8(gckong_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(1, WRITE8(gckong_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(2, WRITE8(gckong_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(3, WRITE8(gckong_state, plate_w)) + MCFG_HMCS40_WRITE_D_CB(WRITE16(gckong_state, grid_w)) + MCFG_HMCS40_READ_D_CB(IOPORT("IN.5")) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Gakken Dig Dug (manufactured in Japan) + * PCB label Gakken DIG-DAG KS-004283(A/B) + * Hitachi QFP HD38820A69 MCU + * cyan/red/green VFD display Futaba DM-69Z 3F, with color overlay + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class gdigdug_state : public hh_hmcs40_state +{ +public: + gdigdug_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_hmcs40_state(mconfig, type, tag) + { } + + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE16_MEMBER(grid_w); + + void update_int1(); + DECLARE_INPUT_CHANGED_MEMBER(input_changed); +}; + +// handlers + +WRITE8_MEMBER(gdigdug_state::plate_w) +{ + // R0x-R6x(,D0-D3): vfd matrix plate + int shift = offset * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // update display + UINT32 plate = BITSWAP32(m_plate,30,31,0,1,2,3,4,5,6,7,20,21,22,27,26,25,28,29,24,23,15,14,13,12,8,9,10,11,19,18,17,16); + display_matrix(32, 9, plate, m_grid); +} + +WRITE16_MEMBER(gdigdug_state::grid_w) +{ + // D6: speaker out + m_speaker->level_w(data >> 6 & 1); + + // D11-D15: input mux + UINT8 inp_mux = data >> 11 & 0x1f; + if (inp_mux != m_inp_mux) + { + m_inp_mux = inp_mux; + update_int1(); + } + + // D7-D15: vfd matrix grid + m_grid = data >> 7 & 0x1ff; + + // D0-D3: more plates (update display there) + plate_w(space, 7, data & 0xf); +} + +void gdigdug_state::update_int1() +{ + // INT1 on multiplexed inputs + set_interrupt(1, read_inputs(5)); +} + + +// config + +static INPUT_PORTS_START( gdigdug ) + PORT_START("IN.0") // D11 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL) + + PORT_START("IN.1") // D12 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL) + + PORT_START("IN.2") // D13 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL) + + PORT_START("IN.3") // D14 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL) + + PORT_START("IN.4") // D15 INT1 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, gdigdug_state, input_changed, NULL) + + PORT_START("IN.5") // INT0 + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) +INPUT_PORTS_END + +INPUT_CHANGED_MEMBER(gdigdug_state::input_changed) +{ + update_int1(); +} + + +static MACHINE_CONFIG_START( gdigdug, gdigdug_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation + MCFG_HMCS40_WRITE_R_CB(0, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(1, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(2, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(3, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(4, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(5, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_R_CB(6, WRITE8(gdigdug_state, plate_w)) + MCFG_HMCS40_WRITE_D_CB(WRITE16(gdigdug_state, grid_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Parker Brothers Q*Bert - * Hitachi HD38820A70 MCU + * PCB label 13662 REV-4 + * Hitachi QFP HD38820A70 MCU * cyan/red/green/darkgreen VFD display Itron CP5137 NOTE!: MESS external artwork is recommended @@ -2211,11 +2602,11 @@ static INPUT_PORTS_START( vinvader ) PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN.1") // port D - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_CONFNAME( 0x08, 0x00, "Skill Level") - PORT_CONFSETTING( 0x00, "1" ) - PORT_CONFSETTING( 0x08, "2" ) - PORT_BIT( 0x05, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_CONFNAME( 0x0002, 0x0000, "Skill Level") + PORT_CONFSETTING( 0x0000, "1" ) + PORT_CONFSETTING( 0x0002, "2" ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0xfff5, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static MACHINE_CONFIG_START( vinvader, vinvader_state ) @@ -2278,6 +2669,13 @@ ROM_START( packmon ) ROM_END +ROM_START( msthawk ) + ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) ) + ROM_CONTINUE( 0x1e80, 0x0100 ) +ROM_END + + ROM_START( zackman ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) ) @@ -2340,9 +2738,23 @@ ROM_START( epacman2 ) ROM_END -ROM_START( msthawk ) +ROM_START( ghalien ) ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) - ROM_LOAD( "hd38800a73", 0x0000, 0x1000, CRC(a4f9a523) SHA1(465f06b02e2e7d2277218fd447830725790a816c) ) + ROM_LOAD( "hd38800a04", 0x0000, 0x1000, CRC(019c3328) SHA1(9f1029c5c479f78350952c4f18747341ba5ea7a0) ) + ROM_CONTINUE( 0x1e80, 0x0100 ) +ROM_END + + +ROM_START( gckong ) + ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hd38800b01", 0x0000, 0x1000, CRC(d5a2cca3) SHA1(37bb5784383daab672ed1e0e2362c7a40d8d9b3f) ) + ROM_CONTINUE( 0x1e80, 0x0100 ) +ROM_END + + +ROM_START( gdigdug ) + ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hd38820a69", 0x0000, 0x1000, CRC(501165a9) SHA1(8a15d00c4aa66e870cadde33148426463560d2e6) ) ROM_CONTINUE( 0x1e80, 0x0100 ) ROM_END @@ -2377,7 +2789,7 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ -CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Basketball - Dribble Away", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Dribble Away Basketball", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) @@ -2387,7 +2799,7 @@ CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Banda CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND ) -CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) +CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND ) CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) @@ -2395,6 +2807,10 @@ CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Colec CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1981, epacman2, 0, 0, epacman2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakken", "Heiankyo Alien (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) +CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) + CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) diff --git a/src/mess/drivers/hh_pic16.c b/src/mess/drivers/hh_pic16.c index 29bebc43685..091d1827741 100644 --- a/src/mess/drivers/hh_pic16.c +++ b/src/mess/drivers/hh_pic16.c @@ -9,6 +9,7 @@ serial device etc. ----------------------------------------------------------- @036 1655A 1979, Ideal Maniac + *061 1655A 1980, Lakeside Le Boom (have dump) *110 1650A 1979, Tiger Rocket Pinball *192 1650 19??, (a phone dialer, have dump) *255 1655 19??, (a talking clock, have dump) @@ -147,7 +148,7 @@ void hh_pic16_state::display_update() int state = active_state[y] >> x & 1; char buf1[0x10]; // lampyx char buf2[0x10]; // y.x - + if (x == m_display_maxx) { // always-on if selected diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c index a51dba8addd..30c0a4baf50 100644 --- a/src/mess/drivers/hh_tms1k.c +++ b/src/mess/drivers/hh_tms1k.c @@ -54,7 +54,7 @@ *MP7324 TMS1400? 1985, Coleco Talking Teacher MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c @MP7334 TMS1400 1981, Coleco Total Control 4 - *MP7573 ? 1981, Entex Select-a-Game cartridge: Football (? note: 40-pin, VFD-capable) + *MP7573 ? 1981, Entex Select-a-Game cartridge: Football 4 (? note: 40-pin, VFD-capable) inconsistent: diff --git a/src/mess/drivers/hh_ucom4.c b/src/mess/drivers/hh_ucom4.c index 76b8c35e285..265a657ed65 100644 --- a/src/mess/drivers/hh_ucom4.c +++ b/src/mess/drivers/hh_ucom4.c @@ -2,7 +2,19 @@ // copyright-holders:hap, Kevin Horton /*************************************************************************** - NEC uCOM4 MCU tabletops/handhelds or other simple devices. + NEC uCOM4 MCU tabletops/handhelds or other simple devices, + most of them are VFD electronic games/toys. + + Commonly used VFD(vacuum fluorescent display) are by NEC or Futaba. + + NEC FIP9AM20T (example, Epoch Astro Command) + grcss + + FIP = fluorescent indicator panel + g = number of grids + A = revision of the VFD + M = custom display + 20 = unique display part number known chips: @@ -10,16 +22,19 @@ serial device etc. ---------------------------------------------------------------- @017 uPD552C 1979, Bambino UFO Master-Blaster Station (ET-02) - @031 uPD553C 1979, Bambino Superstar Football (ET-03) - *042 uPD552C 1979, Tomy Space Attack + @042 uPD552C 1980, Tomy Cosmic Combat (TN-??) + @043 uPD552C 1979, Bambino Kick The Goal Soccer (ET-10) + *044 uPD552C 1979, Bambino Lucky Puck Ice Hockey (ET-08) @048 uPD552C 1980, Tomy Tennis (TN-04) + @049 uPD552C 1981, Bambino Safari (ET-11) + @054 uPD552C 1980, Epoch Invader From Space + + @031 uPD553C 1979, Bambino Superstar Football (ET-03) @049 uPD553C 1979, Mego Mini-Vid Break Free - @055 uPD553C 1980, Bambino Laser Fight (ET-12) - *085 uPD650C 1980, Roland TR-808 + @055 uPD553C 1980, Bambino Space Laser Fight (ET-12) + @080 uPD553C 1980, Epoch Electronic Football *102 uPD553C 1981, Bandai Block Out - *127 uPD650C 198? Sony OA-S1100 Typecorder (subcpu, have dump) - *128 uPD650C 1982, Roland TR-606 - 133 uPD650C 1982, Roland TB-303 -> tb303.c + @153 uPD553C 1981, Epoch Galaxy II @160 uPD553C 1982, Tomy Pac Man (TN-08) @170 uPD553C 1982, Bandai Crazy Climber @192 uPD553C 1982, Tomy Scramble (TN-10) @@ -28,6 +43,11 @@ @209 uPD553C 1982, Tomy Caveman (TN-12) @258 uPD553C 1984, Tomy Alien Chase (TN-16) + *085 uPD650C 1980, Roland TR-808 + *127 uPD650C 198? Sony OA-S1100 Typecorder (subcpu, have dump) + *128 uPD650C 1982, Roland TR-606 + 133 uPD650C 1982, Roland TB-303 -> tb303.c + (* denotes not yet emulated by MESS, @ denotes it's in this driver) ***************************************************************************/ @@ -245,7 +265,7 @@ UINT8 hh_ucom4_state::read_inputs(int columns) This is Bambino's first game, it is not known if ET-01 exists. Emix Corp. wasn't initially a toy company, the first release was through Tomy. Emix - created the Bambino brand afterwards. The manual claims it to be the first + created the Bambino brand afterwards. It is claimed to be the first computerized VFD game (true, unless TI's Speak & Spell is considered a game?) known releases: @@ -357,7 +377,9 @@ MACHINE_CONFIG_END Bambino Superstar Football (manufactured in Japan) * PCB label Emix Corp. ET-03 * NEC uCOM-43 MCU, labeled D553C 031 - * cyan VFD display Emix-102 + * cyan VFD display Emix-102, with bezel + + The game was rereleased in 1982 as Classic Football, with an improved VFD. Press the Kick button to start the game, an automatic sequence follows. Then choose a formation(A,B,C) and either pass the ball, and/or start @@ -424,6 +446,17 @@ READ8_MEMBER(ssfball_state::input_b_r) // config +/* physical button layout and labels is like this: + + [A] [B] [C] [PASS] [KICK/ + ^FORMATION^ DISPLAY] + + [^] + [<>] + (game lvl sw) [v] + 1<---OFF--->2 +*/ + static INPUT_PORTS_START( ssfball ) PORT_START("IN.0") // F3 port B3 PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) @@ -431,7 +464,7 @@ static INPUT_PORTS_START( ssfball ) PORT_START("IN.1") // G3 port B3 PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_CONFNAME( 0x08, 0x00, "Skill Level" ) + PORT_CONFNAME( 0x08, 0x00, "Game Level" ) PORT_CONFSETTING( 0x00, "1" ) PORT_CONFSETTING( 0x08, "2" ) @@ -439,12 +472,12 @@ static INPUT_PORTS_START( ssfball ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Kick/Display") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("Formation C") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("Formation B") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) // multiplexed, handled in ssfball_input_b_r + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) // multiplexed, handled in input_b_r PORT_START("IN.3") // port A - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_LEFT) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Left/Right") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_UP) PORT_NAME("Up") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Down") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Ball-carrier Left/Right") PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Ball-carrier Up") PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Ball-carrier Down") PORT_16WAY // " PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Pass") INPUT_PORTS_END @@ -481,12 +514,247 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Bambino Kick The Goal Soccer + * PCB label Emix Corp. ET-10/08 (PCB is for 2 possible games) + * NEC uCOM-44 MCU, labeled D552C 043 + * cyan VFD display Emix-105, with bezel overlay + + Press the Display button twice to start the game. Action won't start until + player 1 presses one of the directional keys. In 2-player mode, player 2 + controls the goalkeeper, defensive players are still controlled by the CPU. + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class bmsoccer_state : public hh_ucom4_state +{ +public: + bmsoccer_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_READ8_MEMBER(input_a_r); +}; + +// handlers + +void bmsoccer_state::prepare_display() +{ + UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,11,7,3,12,17,13,18,16,14,15,8,4,0,9,5,1,10,6,2); + display_matrix(16, 9, plate, m_grid); +} + +WRITE8_MEMBER(bmsoccer_state::grid_w) +{ + // C01: input mux + if (offset == NEC_UCOM4_PORTC) + m_inp_mux = data & 3; + + // C,D(,E3): vfd matrix grid + int shift = (offset - NEC_UCOM4_PORTC) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(bmsoccer_state::plate_w) +{ + // G3: speaker out + if (offset == NEC_UCOM4_PORTG) + m_speaker->level_w(data >> 3 & 1); + + // E012,F012,G012,H,I: vfd matrix plate + int shift = (offset - NEC_UCOM4_PORTE) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // E3: grid 8 + if (offset == NEC_UCOM4_PORTE) + grid_w(space, offset, data >> 3 & 1); + else + prepare_display(); +} + +READ8_MEMBER(bmsoccer_state::input_a_r) +{ + // port A: multiplexed inputs + return read_inputs(2); +} + + +// config + +static INPUT_PORTS_START( bmsoccer ) + PORT_START("IN.0") // C0 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Ball-carrier Right") PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Ball-carrier Down") PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Ball-carrier Left") PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Ball-carrier Up") PORT_16WAY // " + + PORT_START("IN.1") // C1 port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_NAME("Goalkeeper Left") PORT_16WAY // " + note: swap buttons if viewed from the same angle as player 1 + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_NAME("Goalkeeper Right") PORT_16WAY // " + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.2") // port B + PORT_CONFNAME( 0x01, 0x00, "Skill Level" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x01, "2" ) + PORT_CONFNAME( 0x02, 0x00, "Players" ) + PORT_CONFSETTING( 0x00, "1" ) + PORT_CONFSETTING( 0x02, "2" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Display/Banana Shoot") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Shoot") +INPUT_PORTS_END + +static MACHINE_CONFIG_START( bmsoccer, bmsoccer_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation + MCFG_UCOM4_READ_A_CB(READ8(bmsoccer_state, input_a_r)) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.2")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(bmsoccer_state, grid_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(bmsoccer_state, grid_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(bmsoccer_state, plate_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(bmsoccer_state, plate_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(bmsoccer_state, plate_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(bmsoccer_state, plate_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(bmsoccer_state, plate_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Bambino Safari (manufactured in Japan) + * PCB label Emix Corp. ET-11 + * NEC uCOM-44 MCU, labeled EMIX D552C 049 + * cyan VFD display Emix-108 + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class bmsafari_state : public hh_ucom4_state +{ +public: + bmsafari_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); + DECLARE_WRITE8_MEMBER(speaker_w); +}; + +// handlers + +void bmsafari_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,0,1,2,3,4,5,6,7,8); + UINT16 plate = BITSWAP16(m_plate,15,14,13,12,11,7,10,2,9,5,8,4,0,1,6,3); + display_matrix(10, 9, plate, grid); +} + +WRITE8_MEMBER(bmsafari_state::grid_w) +{ + // C,D(,E3): vfd matrix grid + int shift = (offset - NEC_UCOM4_PORTC) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(bmsafari_state::plate_w) +{ + // E012,H,I: vfd matrix plate + int shift = (offset == NEC_UCOM4_PORTE) ? 8 : (offset - NEC_UCOM4_PORTH) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + + // E3: grid 0 + if (offset == NEC_UCOM4_PORTE) + grid_w(space, offset, data >> 3 & 1); + else + prepare_display(); +} + +WRITE8_MEMBER(bmsafari_state::speaker_w) +{ + // G0: speaker out + m_speaker->level_w(data & 1); +} + + +// config + +static INPUT_PORTS_START( bmsafari ) + PORT_START("IN.0") // port A + PORT_CONFNAME( 0x07, 0x04, "Skill Level" ) + PORT_CONFSETTING( 0x04, "1" ) + PORT_CONFSETTING( 0x02, "2" ) + PORT_CONFSETTING( 0x01, "3" ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + + PORT_START("IN.1") // port B + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY // " +INPUT_PORTS_END + +static MACHINE_CONFIG_START( bmsafari, bmsafari_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(bmsafari_state, grid_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(bmsafari_state, grid_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(bmsafari_state, plate_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(bmsafari_state, speaker_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(bmsafari_state, plate_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(bmsafari_state, plate_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Bambino Space Laser Fight (manufactured in Japan) * PCB label Emix Corp. ET-12 * NEC uCOM-43 MCU, labeled D553C 055 - * cyan VFD display Emix-104, with color overlay (blue or green overlay, depending on region) + * cyan VFD display Emix-104, with blue or green color overlay + + This is basically a revamp of their earlier Boxing game (ET-06), case and + buttons are exactly the same. NOTE!: MESS external artwork is recommended @@ -732,12 +1000,327 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Epoch Invader From Space (manufactured in Japan) + * PCB labels 36010(A/B) + * NEC uCOM-44 MCU, labeled D552C 054 + * cyan VFD display NEC FIP9AM18T tube no. 0D, with color overlay + + known releases: + - USA: Invader From Space + - UK: Invader From Space, published by Grandstand + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class invspace_state : public hh_ucom4_state +{ +public: + invspace_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); +}; + +// handlers + +void invspace_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,8,9,7,6,5,4,3,2,1,0); + UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,9,14,13,8,15,11,10,7,11,3,2,6,10,1,5,9,0,4,8); + display_matrix(19, 9, plate, grid); +} + +WRITE8_MEMBER(invspace_state::grid_w) +{ + // I0: speaker out + if (offset == NEC_UCOM4_PORTI) + m_speaker->level_w(data & 1); + + // C,D,I1: vfd matrix grid + int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(invspace_state::plate_w) +{ + // E,F,G,H123: vfd matrix plate + int shift = (offset - NEC_UCOM4_PORTE) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + + +// config + +static INPUT_PORTS_START( invspace ) + PORT_START("IN.0") // port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") // port B + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( invspace, invspace_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D552, XTAL_400kHz) + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(invspace_state, grid_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(invspace_state, grid_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(invspace_state, plate_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(invspace_state, plate_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(invspace_state, plate_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(invspace_state, plate_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(invspace_state, grid_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Epoch Electronic Football (manufactured in Japan) + * PCB labels 36020(A/B/C) + * NEC uCOM-43 MCU, labeled D553C 080 + * cyan VFD display NEC FIP10AM15T tube no. 0F, with bezel overlay + + known releases: + - USA: Electronic Football (aka Pro-Bowl Football) + - Japan: American Football + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class efball_state : public hh_ucom4_state +{ +public: + efball_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); +}; + +// handlers + +void efball_state::prepare_display() +{ + UINT16 plate = BITSWAP16(m_plate,15,14,13,12,11,4,3,0,2,1,6,10,9,5,8,7); + display_matrix(11, 10, plate, m_grid); +} + +WRITE8_MEMBER(efball_state::grid_w) +{ + // H2: speaker out + if (offset == NEC_UCOM4_PORTH) + m_speaker->level_w(data >> 2 & 1); + + // F,G,H01: vfd matrix grid + int shift = (offset - NEC_UCOM4_PORTF) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(efball_state::plate_w) +{ + // D,E,I: vfd matrix plate + int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTD) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + + +// config + +static INPUT_PORTS_START( efball ) + PORT_START("IN.0") // port A + PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) + PORT_CONFSETTING( 0x00, "Amateur" ) + PORT_CONFSETTING( 0x01, "Professional" ) + PORT_CONFNAME( 0x02, 0x02, "Players" ) + PORT_CONFSETTING( 0x02, "1" ) + PORT_CONFSETTING( 0x00, "2" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Down Field") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Score/Time") + + PORT_START("IN.1") // port B + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY // separate directional buttons, hence 16way + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Pass") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Kick") + + PORT_START("IN.2") // port C + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY // " + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_NAME("P2 Return") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Left/Right") PORT_16WAY // " +INPUT_PORTS_END + +static MACHINE_CONFIG_START( efball, efball_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) + MCFG_UCOM4_READ_C_CB(IOPORT("IN.2")) + MCFG_UCOM4_WRITE_D_CB(WRITE8(efball_state, plate_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(efball_state, plate_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(efball_state, grid_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(efball_state, grid_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(efball_state, grid_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(efball_state, plate_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + +/*************************************************************************** + + Epoch Galaxy II (manufactured in Japan) + * PCB labels 19096/96062 + * NEC uCOM-43 MCU, labeled D553C 153 + * cyan/red VFD display NEC FIP10xM20T, with color overlay. x = multiple VFD + revisions exist, with different graphics: rev B no. 1-8, rev. D no. 2-21. + + known releases: + - USA: Galaxy II + - Japan: Astro Wars + - UK: Astro Wars, published by Grandstand + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class galaxy2_state : public hh_ucom4_state +{ +public: + galaxy2_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); +}; + +// handlers + +void galaxy2_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,0,1,2,3,4,5,6,7,8,9); + UINT16 plate = BITSWAP16(m_plate,15,3,2,6,1,5,4,0,11,10,7,12,14,13,8,9); + display_matrix(15, 10, plate, grid); +} + +WRITE8_MEMBER(galaxy2_state::grid_w) +{ + // E3: speaker out + if (offset == NEC_UCOM4_PORTE) + m_speaker->level_w(data >> 3 & 1); + + // C,D,E01: vfd matrix grid + int shift = (offset - NEC_UCOM4_PORTC) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(galaxy2_state::plate_w) +{ + // F,G,H,I: vfd matrix plate + int shift = (offset - NEC_UCOM4_PORTF) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + + +// config + +static INPUT_PORTS_START( galaxy2 ) + PORT_START("IN.0") // port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN.1") // port B + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SELECT ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START ) + PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static MACHINE_CONFIG_START( galaxy2, galaxy2_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D553, XTAL_400kHz) + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_READ_B_CB(IOPORT("IN.1")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(galaxy2_state, grid_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(galaxy2_state, grid_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(galaxy2_state, grid_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(galaxy2_state, plate_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(galaxy2_state, plate_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(galaxy2_state, plate_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(galaxy2_state, plate_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Epoch Astro Command (manufactured in Japan) - * PCB label 96111 + * PCB labels 96111/96112 * NEC uCOM-43 MCU, labeled D553C 202 - * cyan/red VFD display NEC FIP9AM20T no. 42-42, with color overlay (FIP=fluorescent indicator panel) + * cyan/red VFD display NEC FIP9AM20T no. 42-42, with color overlay + bezel known releases: - Japan: Astro Command @@ -1043,6 +1626,103 @@ MACHINE_CONFIG_END +/*************************************************************************** + + Tomy(tronic) Cosmic Combat (manufactured in Japan) + * PCBs are labeled 2E1019-E01 + * NEC uCOM-44 MCU, labeled D552C 042 + * cyan VFD display NEC FIP32AM18Y tube no. 0E, with color overlay + + known releases: + - USA: Cosmic Combat + - Japan: Space Attack + + NOTE!: MESS external artwork is recommended + +***************************************************************************/ + +class tccombat_state : public hh_ucom4_state +{ +public: + tccombat_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag) + { } + + void prepare_display(); + DECLARE_WRITE8_MEMBER(grid_w); + DECLARE_WRITE8_MEMBER(plate_w); +}; + +// handlers + +void tccombat_state::prepare_display() +{ + UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,3,2,1,0,7,6,5,4); + UINT32 plate = BITSWAP24(m_plate,23,22,21,20,11,15,3,10,14,2,9,13,1,0,12,8,15,1,5,0,3,7,2,6); + display_matrix(20, 9, plate, grid); +} + +WRITE8_MEMBER(tccombat_state::grid_w) +{ + // I1: speaker out + if (offset == NEC_UCOM4_PORTI) + m_speaker->level_w(data >> 1 & 1); + + // C,D,I0: vfd matrix grid + int shift = (offset == NEC_UCOM4_PORTI) ? 8 : (offset - NEC_UCOM4_PORTC) * 4; + m_grid = (m_grid & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + +WRITE8_MEMBER(tccombat_state::plate_w) +{ + // E,F123,G,H: vfd matrix plate + int shift = (offset - NEC_UCOM4_PORTE) * 4; + m_plate = (m_plate & ~(0xf << shift)) | (data << shift); + prepare_display(); +} + + +// config + +static INPUT_PORTS_START( tccombat ) + PORT_START("IN.0") // port A + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_CONFNAME( 0x02, 0x02, "Skill Level" ) + PORT_CONFSETTING( 0x02, "1" ) + PORT_CONFSETTING( 0x00, "2" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY +INPUT_PORTS_END + +static MACHINE_CONFIG_START( tccombat, tccombat_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D552, 400000) // approximation + MCFG_UCOM4_READ_A_CB(IOPORT("IN.0")) + MCFG_UCOM4_WRITE_C_CB(WRITE8(tccombat_state, grid_w)) + MCFG_UCOM4_WRITE_D_CB(WRITE8(tccombat_state, grid_w)) + MCFG_UCOM4_WRITE_E_CB(WRITE8(tccombat_state, plate_w)) + MCFG_UCOM4_WRITE_F_CB(WRITE8(tccombat_state, plate_w)) + MCFG_UCOM4_WRITE_G_CB(WRITE8(tccombat_state, plate_w)) + MCFG_UCOM4_WRITE_H_CB(WRITE8(tccombat_state, plate_w)) + MCFG_UCOM4_WRITE_I_CB(WRITE8(tccombat_state, grid_w)) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_hh_ucom4_test) + + /* no video! */ + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + + + + + /*************************************************************************** Tomy(tronic) Tennis (manufactured in Japan) @@ -1377,8 +2057,8 @@ static INPUT_PORTS_START( tmscramb ) PORT_BIT( 0x0e, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_START("IN.1") // port B - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_2WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_2WAY PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -1568,7 +2248,7 @@ WRITE8_MEMBER(alnchase_state::output_w) READ8_MEMBER(alnchase_state::input_r) { - // A: buttons + // A: multiplexed buttons return read_inputs(2); } @@ -1659,6 +2339,18 @@ ROM_START( ssfball ) ROM_END +ROM_START( bmsoccer ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "d552c-043", 0x0000, 0x0400, CRC(10c2a4ea) SHA1(6ebca7d406e22ff7a8cd529579b55a700da487b4) ) +ROM_END + + +ROM_START( bmsafari ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "d552c-049", 0x0000, 0x0400, CRC(82fa3cbe) SHA1(019e7ec784e977eba09997fc46af253054fb222c) ) +ROM_END + + ROM_START( splasfgt ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "d553c-055", 0x0000, 0x0800, CRC(eb471fbd) SHA1(f06cfe567bf6f9ed4dcdc88acdcfad50cd370a02) ) @@ -1671,6 +2363,24 @@ ROM_START( bcclimbr ) ROM_END +ROM_START( invspace ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) ) +ROM_END + + +ROM_START( efball ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "d553c-080", 0x0000, 0x0800, CRC(54c1027f) SHA1(6cc98074dae9361fa8c0ed6501b6a57ad325ccbd) ) +ROM_END + + +ROM_START( galaxy2 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "d553c-153.s01", 0x0000, 0x0800, CRC(70d552b3) SHA1(72d50647701cb4bf85ea947a149a317aaec0f52c) ) +ROM_END + + ROM_START( astrocmd ) ROM_REGION( 0x0800, "maincpu", 0 ) ROM_LOAD( "d553c-202.s01", 0x0000, 0x0800, CRC(b4b34883) SHA1(6246d561c2df1f2124575d2ca671ef85b1819edd) ) @@ -1689,6 +2399,12 @@ ROM_START( mvbfree ) ROM_END +ROM_START( tccombat ) + ROM_REGION( 0x0400, "maincpu", 0 ) + ROM_LOAD( "d552c-042", 0x0000, 0x0400, CRC(d7b5cfeb) SHA1(a267be8e43b7740758eb0881b655b1cc8aec43da) ) +ROM_END + + ROM_START( tmtennis ) ROM_REGION( 0x0400, "maincpu", 0 ) ROM_LOAD( "d552c-048", 0x0000, 0x0400, CRC(78702003) SHA1(4d427d4dbeed901770c682338867f58c7b54eee3) ) @@ -1723,15 +2439,21 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, driver_device, 0, "Bambino", "Kick The Goal Soccer", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, driver_device, 0, "Bambino", "Safari (Bambino)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) +CONS( 1980, tccombat, 0, 0, tccombat, tccombat, driver_device, 0, "Tomy", "Cosmic Combat", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index c46cbaa8b3f..6ac7f808949 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2186,7 +2186,7 @@ bambball // Bambino bmboxing // Bambino bfriskyt // Bandai packmon // Bandai -msthawk // Bandai(Mattel) +msthawk // Bandai/Mattel zackman // Bandai alnattck // Coleco cdkong // Coleco @@ -2196,6 +2196,9 @@ cpacmanr1 // Coleco (rev 1) cmspacmn // Coleco egalaxn2 // Entex epacman2 // Entex +ghalien // Gakken +gckong // Gakken +gdigdug // Gakken pbqbert // Parker Brothers mvbfree // Mego kingman // Tomy @@ -2231,10 +2234,16 @@ mbdtower // Milton Bradley ufombs // Bambino ssfball // Bambino +bmsoccer // Bambino +bmsafari // Bambino splasfgt // Bambino bcclimbr // Bandai +invspace // Epoch +efball // Epoch +galaxy2 // Epoch astrocmd // Epoch edracula // Epoch +tccombat // Tomy tmpacman // Tomy tmtennis // Tomy tmscramb // Tomy -- cgit v1.2.3-70-g09d2 From eb7b5c027e36dd61990a5e962c814c82ff69ccc5 Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 20 Apr 2015 23:57:44 +0200 Subject: Fix repetitive monitor updates. By design, MAME has an issue setting aspect correctly on monitor resolution changes. This needs to be addressed separately. [Couriersud] --- src/osd/sdl/video.c | 2 -- src/osd/sdl/video.h | 11 ++++++----- src/osd/windows/video.c | 4 ++-- src/osd/windows/video.h | 11 ++++++----- src/osd/windows/window.c | 11 +++++++++++ 5 files changed, 25 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/osd/sdl/video.c b/src/osd/sdl/video.c index 71d4f779f67..3d8f6c095bb 100644 --- a/src/osd/sdl/video.c +++ b/src/osd/sdl/video.c @@ -285,8 +285,6 @@ void sdl_monitor_info::refresh() float osd_monitor_info::aspect() { - // refresh the monitor information and compute the aspect - refresh(); // FIXME: returning 0 looks odd, video_config is bad if (video_config.keepaspect) { diff --git a/src/osd/sdl/video.h b/src/osd/sdl/video.h index 862988fe6ac..e79442bdd3c 100644 --- a/src/osd/sdl/video.h +++ b/src/osd/sdl/video.h @@ -115,17 +115,19 @@ public: virtual ~osd_monitor_info() { } + virtual void refresh() = 0; + const void *oshandle() { return m_handle; } - const osd_rect &position_size() { refresh(); return m_pos_size; } - const osd_rect &usuable_position_size() { refresh(); return m_usuable_pos_size; } + const osd_rect &position_size() { return m_pos_size; } + const osd_rect &usuable_position_size() { return m_usuable_pos_size; } - const char *devicename() { refresh(); return m_name[0] ? m_name : "UNKNOWN"; } + const char *devicename() { return m_name[0] ? m_name : "UNKNOWN"; } float aspect(); void set_aspect(const float a) { m_aspect = a; } - bool is_primary() { refresh(); return m_is_primary; } + bool is_primary() { return m_is_primary; } osd_monitor_info * next() { return m_next; } // pointer to next monitor in list @@ -135,7 +137,6 @@ public: // FIXME: should be private! osd_monitor_info *m_next; // pointer to next monitor in list protected: - virtual void refresh() = 0; osd_rect m_pos_size; osd_rect m_usuable_pos_size; bool m_is_primary; diff --git a/src/osd/windows/video.c b/src/osd/windows/video.c index ea9fa1b3a02..d87348aa9de 100644 --- a/src/osd/windows/video.c +++ b/src/osd/windows/video.c @@ -113,6 +113,7 @@ void windows_osd_interface::video_exit() win_monitor_info::win_monitor_info(const HMONITOR handle, const char *monitor_device, float aspect) : osd_monitor_info(&m_handle, monitor_device, aspect), m_handle(handle) { + refresh(); } win_monitor_info::~win_monitor_info() @@ -138,6 +139,7 @@ void win_monitor_info::refresh() osd_free(temp); m_pos_size = RECT_to_osd_rect(m_info.rcMonitor); + printf("%d %d\n", m_pos_size.width(), m_pos_size.height()); m_usuable_pos_size = RECT_to_osd_rect(m_info.rcWork); m_is_primary = ((m_info.dwFlags & MONITORINFOF_PRIMARY) != 0); (void)result; // to silence gcc 4.6 @@ -151,8 +153,6 @@ void win_monitor_info::refresh() float osd_monitor_info::aspect() { - // refresh the monitor information and compute the aspect - refresh(); // FIXME: returning 0 looks odd, video_config is bad if (video_config.keepaspect) { diff --git a/src/osd/windows/video.h b/src/osd/windows/video.h index 87ce0d8527c..23ff05a7371 100644 --- a/src/osd/windows/video.h +++ b/src/osd/windows/video.h @@ -110,17 +110,19 @@ public: virtual ~osd_monitor_info() { } + virtual void refresh() = 0; + const void *oshandle() { return m_handle; } - const osd_rect &position_size() { refresh(); return m_pos_size; } - const osd_rect &usuable_position_size() { refresh(); return m_usuable_pos_size; } + const osd_rect &position_size() { return m_pos_size; } + const osd_rect &usuable_position_size() { return m_usuable_pos_size; } - const char *devicename() { refresh(); return m_name[0] ? m_name : "UNKNOWN"; } + const char *devicename() { return m_name[0] ? m_name : "UNKNOWN"; } float aspect(); void set_aspect(const float a) { m_aspect = a; } - bool is_primary() { refresh(); return m_is_primary; } + bool is_primary() { return m_is_primary; } osd_monitor_info * next() { return m_next; } // pointer to next monitor in list @@ -130,7 +132,6 @@ public: // FIXME: should be private! osd_monitor_info *m_next; // pointer to next monitor in list protected: - virtual void refresh() = 0; osd_rect m_pos_size; osd_rect m_usuable_pos_size; bool m_is_primary; diff --git a/src/osd/windows/window.c b/src/osd/windows/window.c index 52db665fae8..6ca2e6bb420 100644 --- a/src/osd/windows/window.c +++ b/src/osd/windows/window.c @@ -1447,6 +1447,17 @@ LRESULT CALLBACK win_window_info::video_window_proc(HWND wnd, UINT message, WPAR window->maximize_window(); break; + // maximum size set + case WM_DISPLAYCHANGE: + /* FIXME: The current codebase has an issue with setting aspect + * ratios correctly after display change. set_aspect should + * be set_forced_aspect and on a refresh this forced aspect should + * be preserved if set. If not, the standard aspect calculation + * should be used. + */ + window->m_monitor->refresh(); + break; + // set focus: if we're not the primary window, switch back // commented out ATM because this prevents us from resizing secondary windows // case WM_SETFOCUS: -- cgit v1.2.3-70-g09d2 From 5225dd461e83d9dfa788248011e4b7892c73623e Mon Sep 17 00:00:00 2001 From: briantro Date: Mon, 20 Apr 2015 19:02:42 -0500 Subject: new Fighter's History clone New Clone Added ------------------------------------ Fighter's History (US ver 42-06, DE-0395-1 PCB) [Fabrice Arzeno, The Dumping Union] --- src/mame/drivers/deco32.c | 45 ++++++++++++++++++++++++++++++++++++++++----- src/mame/mame.lst | 3 ++- 2 files changed, 42 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c index 859ccc328bb..e1cbc84b339 100644 --- a/src/mame/drivers/deco32.c +++ b/src/mame/drivers/deco32.c @@ -2922,8 +2922,8 @@ ROM_END ROM_START( fghthistu ) /* DE-0395-1 PCB */ ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */ - ROM_LOAD32_WORD( "le-00.1f", 0x000000, 0x80000, CRC(a5c410eb) SHA1(e2b0cb2351782e1155ecc4029010beb7326fd874) ) /* Version 42-05, US */ - ROM_LOAD32_WORD( "le-01.2f", 0x000002, 0x80000, CRC(7e148aa2) SHA1(b21e16604c4d29611f91d629deb9f041eaf41e9b) ) + ROM_LOAD32_WORD( "le00-1.1f", 0x000000, 0x80000, CRC(fccacafb) SHA1(b7236a90a09dbd5870a16aa4e4eac5ab5c098418) ) /* Version 42-06, US */ + ROM_LOAD32_WORD( "le01-1.2f", 0x000002, 0x80000, CRC(06a3c326) SHA1(3d8842fb69def93fc544e89fd0e56ada416157dc) ) ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ ROM_LOAD( "le02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) ) @@ -2954,7 +2954,41 @@ ROM_START( fghthistu ) /* DE-0395-1 PCB */ ROM_LOAD( "ve-01a.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */ ROM_END -ROM_START( fghthistua ) /* DE-0380-2 PCB */ +ROM_START( fghthistua ) /* DE-0395-1 PCB */ + ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */ + ROM_LOAD32_WORD( "le00.1f", 0x000000, 0x80000, CRC(a5c410eb) SHA1(e2b0cb2351782e1155ecc4029010beb7326fd874) ) /* Version 42-05, US */ + ROM_LOAD32_WORD( "le01.2f", 0x000002, 0x80000, CRC(7e148aa2) SHA1(b21e16604c4d29611f91d629deb9f041eaf41e9b) ) + + ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */ + ROM_LOAD( "le02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) ) + + ROM_REGION( 0x100000, "gfx1", 0 ) + ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */ + + ROM_REGION( 0x100000, "gfx2", 0 ) + ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */ + + ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */ + ROM_LOAD16_BYTE( "mbf02-16.16d", 0x000001, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) ) + ROM_LOAD16_BYTE( "mbf04-16.18d", 0x000000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) ) + ROM_LOAD16_BYTE( "mbf03-16.17d", 0x400001, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) ) + ROM_LOAD16_BYTE( "mbf05-16.19d", 0x400000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) ) + + ROM_REGION(0x80000, "oki1", 0 ) + ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) ) + + ROM_REGION(0x80000, "oki2", 0 ) + ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) ) + + ROM_REGION(512, "proms", 0 ) + ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */ + + ROM_REGION( 0x0400, "plds", 0 ) + ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */ + ROM_LOAD( "ve-01a.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */ +ROM_END + +ROM_START( fghthistub ) /* DE-0380-2 PCB */ ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */ ROM_LOAD32_WORD( "kz00-1.1f", 0x000000, 0x80000, CRC(3a3dd15c) SHA1(689b51adf73402b12191a75061b8e709468c91bc) ) /* Version 42-03, US */ ROM_LOAD32_WORD( "kz01-1.2f", 0x000002, 0x80000, CRC(86796cd6) SHA1(c397c07d7a1d03ba96ccb2fe7a0ad25b8331e945) ) @@ -3749,8 +3783,9 @@ GAME( 1991, captavenua, captaven, captaven, captaven, deco32_state, captaven, GAME( 1991, captavenj, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", 0 ) GAME( 1993, fghthist, 0, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", 0 ) -GAME( 1993, fghthistu, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", 0 ) -GAME( 1993, fghthistua, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", 0 ) +GAME( 1993, fghthistu, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", 0 ) +GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", 0 ) +GAME( 1993, fghthistub, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", 0 ) GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", 0 ) GAME( 1993, fghthistja, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", 0 ) GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", 0 ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0f47d0ffd11..db6f740823c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -6113,8 +6113,9 @@ ragtimea // MBD (c) 1992 (Japan) dblewing // MBE (c) 1993 Mitchell fghthist // MBF (c) 1993 Data East Corporation (World) DE-0380-2 PCB fghthistu // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB +fghthistua // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB fghthistj // MBF (c) 1993 Data East Corporation (Japan) DE-0395-1 PCB -fghthistua // MBF (c) 1993 Data East Corporation (US) DE-0380-2 PCB +fghthistub // MBF (c) 1993 Data East Corporation (US) DE-0380-2 PCB fghthistja // MBF (c) 1993 Data East Corporation (Japan) DE-0380-2 PCB fghthistjb // MBF (c) 1993 Data East Corporation (Japan) DE-0380-1 PCB hvysmsh // MBG (c) 1993 Data East Corporation (World) -- cgit v1.2.3-70-g09d2 From 2e160757d22740815156a463773e83afb4601a82 Mon Sep 17 00:00:00 2001 From: briantro Date: Mon, 20 Apr 2015 20:21:09 -0500 Subject: jaguar.c: Minor doc update - NW --- src/mame/drivers/jaguar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/jaguar.c b/src/mame/drivers/jaguar.c index c3ae33ec374..00dfeba82db 100644 --- a/src/mame/drivers/jaguar.c +++ b/src/mame/drivers/jaguar.c @@ -2175,7 +2175,7 @@ ROM_END ROM_START( maxforce ) /* R3000 based, labeled as "Maximum Force 5-23-97 v1.05" */ ROM_REGION( 0x200000, "maincpu", 0 ) /* 2MB for IDT 79R3041 code */ ROM_LOAD32_BYTE( "maxf_105.hh", 0x00000, 0x80000, CRC(ec7f8167) SHA1(0cf057bfb1f30c2c9621d3ed25021e7ba7bdd46e) ) /* Usually found with "light grey" labels */ - ROM_LOAD32_BYTE( "maxf_105.hl", 0x00001, 0x80000, CRC(3172611c) SHA1(00f14f871b737c66c20f95743740d964d0be3f24) ) + ROM_LOAD32_BYTE( "maxf_105.hl", 0x00001, 0x80000, CRC(3172611c) SHA1(00f14f871b737c66c20f95743740d964d0be3f24) ) /* Also found labeled as "MAXIMUM FORCE EE FIX PROG" */ ROM_LOAD32_BYTE( "maxf_105.lh", 0x00002, 0x80000, CRC(84d49423) SHA1(88d9a6724f1118f2bbef5dfa27accc2b65c5ba1d) ) ROM_LOAD32_BYTE( "maxf_105.ll", 0x00003, 0x80000, CRC(16d0768d) SHA1(665a6d7602a7f2f5b1f332b0220b1533143d56b1) ) -- cgit v1.2.3-70-g09d2 From be04a1d8edf9e49f10399f3a6b89066b60a83678 Mon Sep 17 00:00:00 2001 From: Lord-Nightmare Date: Tue, 21 Apr 2015 00:39:59 -0400 Subject: add mb electronic battleship (1977) to tms1000 list (n/w) --- src/mess/drivers/hh_tms1k.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mess/drivers/hh_tms1k.c b/src/mess/drivers/hh_tms1k.c index 30c0a4baf50..0c72e8bfc40 100644 --- a/src/mess/drivers/hh_tms1k.c +++ b/src/mess/drivers/hh_tms1k.c @@ -25,7 +25,8 @@ *MP2105 TMS1370 1979, Gakken Poker, Entex Electronic Poker *MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000 *MP2788 ? 1980, Bandai Flight Time (? note: VFD-capable) - @MP3226 TMS1000 1978, Milton Bradley Simon + *MP3208 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750A or B) + @MP3226 TMS1000 1978, Milton Bradley Simon (model 4850) *MP3301 TMS1000 1979, Milton Bradley Big Trak *MP3320A TMS1000 1979, Coleco Head to Head Basketball MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c -- cgit v1.2.3-70-g09d2 From edd9d41c040fa836b29ccb4d851507f83accdf69 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 21 Apr 2015 09:18:03 +0300 Subject: (MESS) victor9k: Added writing to sector dump disk images. [Curt Coder] --- src/lib/formats/flopimg.c | 65 ++++++++++++++++++++++++++++++++++++++++ src/lib/formats/flopimg.h | 2 ++ src/lib/formats/victor9k_dsk.c | 67 +++++++++++++++++++++++++++++++++++++++--- src/lib/formats/victor9k_dsk.h | 15 ++++++---- 4 files changed, 140 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c index cc7e00d0ed4..4588d717c00 100644 --- a/src/lib/formats/flopimg.c +++ b/src/lib/formats/flopimg.c @@ -2890,3 +2890,68 @@ void floppy_image_format_t::extract_sectors_from_bitstream_gcr5(const UINT8 *bit } } } + +void floppy_image_format_t::extract_sectors_from_bitstream_victor_gcr5(const UINT8 *bitstream, int track_size, desc_xs *sectors, UINT8 *sectdata, int sectdata_size) +{ + memset(sectors, 0, 256*sizeof(desc_xs)); + + // Don't bother if it's just too small + if(track_size < 100) + return; + + // Start by detecting all id and data blocks + int hblk[100], dblk[100]; + int hblk_count = 0, dblk_count = 0; + + // Precharge the shift register to detect over-the-index stuff + UINT16 shift_reg = 0; + for(int i=0; i<16; i++) + if(sbit_r(bitstream, track_size-16+i)) + shift_reg |= 0x8000 >> i; + + // Scan the bitstream for sync marks and follow them to check for blocks + bool sync = false; + for(int i=0; i; diff --git a/src/lib/formats/victor9k_dsk.h b/src/lib/formats/victor9k_dsk.h index 22f43fa7e3b..1564f1474f7 100644 --- a/src/lib/formats/victor9k_dsk.h +++ b/src/lib/formats/victor9k_dsk.h @@ -31,13 +31,10 @@ public: virtual const char *description() const; virtual const char *extensions() const; - int find_size(io_generic *io, UINT32 form_factor); virtual int identify(io_generic *io, UINT32 form_factor); - void log_boot_sector(UINT8 *data); - floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count); - void build_sector_description(const format &f, UINT8 *sectdata, UINT32 sect_offs, desc_s *sectors, int sector_count) const; virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image); - virtual bool supports_save() const; + virtual bool save(io_generic *io, floppy_image *image); + virtual bool supports_save() const { return true; } static int get_rpm(int head, int track); @@ -48,6 +45,14 @@ protected: static const int sectors_per_track[2][80]; static const int speed_zone[2][80]; static const int rpm[9]; + + int find_size(io_generic *io, UINT32 form_factor); + void log_boot_sector(UINT8 *data); + floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count); + void build_sector_description(const format &f, UINT8 *sectdata, UINT32 sect_offs, desc_s *sectors, int sector_count) const; + int get_image_offset(const format &f, int head, int track); + int compute_track_size(const format &f, int head, int track); + void extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head, int sector_count); }; extern const floppy_format_type FLOPPY_VICTOR_9000_FORMAT; -- cgit v1.2.3-70-g09d2 From 045c22645236c28466980ebb31613971ce778afb Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 21 Apr 2015 09:06:07 +0100 Subject: hng64: not a good place to use std:vector (nw) (test new install/PC) (nw) --- src/mame/includes/hng64.h | 4 +++- src/mame/video/hng64.c | 1 + src/mame/video/hng64_3d.c | 13 ++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/mame/includes/hng64.h b/src/mame/includes/hng64.h index 2dce852e5a0..fdf341c1f0c 100644 --- a/src/mame/includes/hng64.h +++ b/src/mame/includes/hng64.h @@ -323,7 +323,7 @@ public: void setLighting(const UINT16* packet); void set3dFlags(const UINT16* packet); void setCameraProjectionMatrix(const UINT16* packet); - void recoverPolygonBlock(const UINT16* packet, std::vector &polys, int* numPolys); + void recoverPolygonBlock(const UINT16* packet, int* numPolys); void hng64_mark_all_tiles_dirty(int tilemap); void hng64_mark_tile_dirty(int tilemap, int tile_index); @@ -389,4 +389,6 @@ public: DECLARE_READ16_MEMBER(sound_comms_r); DECLARE_WRITE16_MEMBER(sound_comms_w); UINT16 main_latch[2],sound_latch[2]; + + std::vector polys;//(1024*5); }; diff --git a/src/mame/video/hng64.c b/src/mame/video/hng64.c index 9f7028d11de..0a93b093cf6 100644 --- a/src/mame/video/hng64.c +++ b/src/mame/video/hng64.c @@ -1274,6 +1274,7 @@ void hng64_state::video_start() m_dl = auto_alloc_array(machine(), UINT16, 0x200/2); + polys.resize(1024*5); m_texturerom = memregion("textures")->base(); m_vertsrom = (UINT16*)memregion("verts")->base(); diff --git a/src/mame/video/hng64_3d.c b/src/mame/video/hng64_3d.c index 9f4d1d2fefc..ab05fd53a33 100644 --- a/src/mame/video/hng64_3d.c +++ b/src/mame/video/hng64_3d.c @@ -48,7 +48,7 @@ WRITE32_MEMBER(hng64_state::dl_upload_w) // this is written after the game uploads 16 packets, each 32 bytes long (2x 16 words?) // we're assuming it to be a 'send to 3d hardware' trigger. // this can be called multiple times per frame (at least 2, as long as it gets the expected interrupt / status flags) - +g_profiler.start(PROFILER_USER1); for(int packetStart=0;packetStart<0x200;packetStart+=32) { // Send it off to the 3d subsystem. @@ -56,6 +56,7 @@ WRITE32_MEMBER(hng64_state::dl_upload_w) } machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(0x200*8), timer_expired_delegate(FUNC(hng64_state::hng64_3dfifo_processed),this)); +g_profiler.stop(); } TIMER_CALLBACK_MEMBER(hng64_state::hng64_3dfifo_processed ) @@ -284,7 +285,7 @@ void hng64_state::setCameraProjectionMatrix(const UINT16* packet) // Operation 0100 // Polygon rasterization. -void hng64_state::recoverPolygonBlock(const UINT16* packet, std::vector &polys, int* numPolys) +void hng64_state::recoverPolygonBlock(const UINT16* packet, int* numPolys) { /*////////////// // PACKET FORMAT @@ -863,9 +864,7 @@ void hng64_state::recoverPolygonBlock(const UINT16* packet, std::vector polys(1024*5); //printf("packet type : %04x %04x|%04x %04x|%04x %04x|%04x %04x | %04x %04x %04x %04x %04x %04x %04x %04x\n", packet[0],packet[1],packet[2],packet[3],packet[4],packet[5],packet[6],packet[7], packet[8], packet[9], packet[10], packet[11], packet[12], packet[13], packet[14], packet[15]); @@ -899,7 +898,7 @@ void hng64_state::hng64_command3d(const UINT16* packet) if (packet[2] == 0x0003 && packet[3] == 0x8f37 && m_mcu_type == SHOOT_MCU) break; - recoverPolygonBlock( packet, polys, &numPolys); + recoverPolygonBlock( packet, &numPolys); break; case 0x0102: // Geometry with only translation @@ -919,7 +918,7 @@ void hng64_state::hng64_command3d(const UINT16* packet) miniPacket[7] = 0x7fff; miniPacket[11] = 0x7fff; miniPacket[15] = 0x7fff; - recoverPolygonBlock( miniPacket, polys, &numPolys); + recoverPolygonBlock( miniPacket, &numPolys); memset(miniPacket, 0, sizeof(UINT16)*16); for (int i = 0; i < 7; i++) miniPacket[i] = packet[i+8]; @@ -927,7 +926,7 @@ void hng64_state::hng64_command3d(const UINT16* packet) miniPacket[7] = 0x7fff; miniPacket[11] = 0x7fff; miniPacket[15] = 0x7fff; - recoverPolygonBlock( miniPacket, polys, &numPolys); + recoverPolygonBlock( miniPacket, &numPolys); break; case 0x1000: // Unknown: Some sort of global flags? -- cgit v1.2.3-70-g09d2 From 30523ddcd0a4f40cea928c68b4834cc3fb990f67 Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Tue, 21 Apr 2015 15:15:30 +0200 Subject: (MESS) ti99: Forgotten null check. (nw) --- src/emu/bus/ti99_peb/hfdc.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/emu/bus/ti99_peb/hfdc.c index 6d778d3c5e1..42bec79a255 100644 --- a/src/emu/bus/ti99_peb/hfdc.c +++ b/src/emu/bus/ti99_peb/hfdc.c @@ -578,16 +578,20 @@ void myarc_hfdc_device::signal_drive_status() { if ((m_output1_latch & 0xe0)!=0) { - if (m_current_harddisk->ready_r()==ASSERT_LINE) + if (m_current_harddisk != NULL) { - m_status_latch |= HDC_DS_READY; - set_bits(m_status_latch, HDC_DS_SKCOM, m_current_harddisk->seek_complete_r()==ASSERT_LINE); - set_bits(m_status_latch, HDC_DS_TRK00, m_current_harddisk->trk00_r()==ASSERT_LINE); + if (m_current_harddisk->ready_r()==ASSERT_LINE) + { + m_status_latch |= HDC_DS_READY; + set_bits(m_status_latch, HDC_DS_SKCOM, m_current_harddisk->seek_complete_r()==ASSERT_LINE); + set_bits(m_status_latch, HDC_DS_TRK00, m_current_harddisk->trk00_r()==ASSERT_LINE); + } } + // If WDS is selected but not connected, WDS.ready* and WDS.seekComplete* are 1, so Ready=SeekComplete=0 + else set_bits(m_status_latch, HDC_DS_READY | HDC_DS_SKCOM, false); } } - // If WDS is selected but not connected, WDS.ready* and WDS.seekComplete* are 1, so Ready=SeekComplete=0 reply |= m_status_latch; m_hdc9234->auxbus_in(reply); -- cgit v1.2.3-70-g09d2 From 5626fde448e67a6e3214b9dfb8987fd7d4ad5230 Mon Sep 17 00:00:00 2001 From: Andrew Gardner Date: Tue, 21 Apr 2015 17:01:19 +0200 Subject: Switched sf.c to use configured_entries for banks (nw) --- src/mame/drivers/sf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mame/drivers/sf.c b/src/mame/drivers/sf.c index 02c9afee1d1..64bde80393b 100644 --- a/src/mame/drivers/sf.c +++ b/src/mame/drivers/sf.c @@ -140,7 +140,7 @@ WRITE8_MEMBER(sf_state::soundcmd_w) WRITE8_MEMBER(sf_state::sound2_bank_w) { - membank("bank1")->set_base(memregion("audio2")->base() + 0x8000 * (data + 1)); + membank("bank1")->set_entry(data); } WRITE8_MEMBER(sf_state::msm1_5205_w) @@ -518,6 +518,8 @@ void sf_state::machine_start() save_item(NAME(m_sf_active)); save_item(NAME(m_bgscroll)); save_item(NAME(m_fgscroll)); + + membank("bank1")->configure_entries(0, 256, memregion("audio2")->base() + 0x8000, 0x8000); } void sf_state::machine_reset() -- cgit v1.2.3-70-g09d2 From 20f21fb9253ea472a10ccd2308a98eadf16711af Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Tue, 21 Apr 2015 14:52:55 -0400 Subject: Fix for dkongjr dips - fixes MT#5916 http://mametesters.org/view.php?id=5916 --- src/mame/drivers/dkong.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c index 52dca8d880f..d3d19d933dd 100644 --- a/src/mame/drivers/dkong.c +++ b/src/mame/drivers/dkong.c @@ -1171,7 +1171,14 @@ static INPUT_PORTS_START( dkongjr ) PORT_INCLUDE( dkong_in0_4 ) PORT_INCLUDE( dkong_in1_4 ) PORT_INCLUDE( dkong_in2 ) + PORT_INCLUDE( dkong_dsw0 ) + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:!3,!4" ) + PORT_DIPSETTING( 0x00, "10000" ) + PORT_DIPSETTING( 0x04, "15000" ) + PORT_DIPSETTING( 0x08, "20000" ) + PORT_DIPSETTING( 0x0c, "25000" ) #if DEBUG_DISC_SOUND PORT_START("TST") /* TST */ -- cgit v1.2.3-70-g09d2 From 0e5436c325525c8b454f8219819efcb57603d579 Mon Sep 17 00:00:00 2001 From: couriersud Date: Tue, 21 Apr 2015 21:22:53 +0200 Subject: Make sure monitor refresh is called when switchres is used (SDL). Remove a printf. (nw) --- src/osd/sdl/window.c | 1 + src/osd/windows/video.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/osd/sdl/window.c b/src/osd/sdl/window.c index d44742c80f6..ffd7874c64d 100644 --- a/src/osd/sdl/window.c +++ b/src/osd/sdl/window.c @@ -1268,6 +1268,7 @@ OSDWORK_CALLBACK( sdl_window_info::complete_create_wt ) SDL_WM_SetCaption(window->m_title, "SDLMAME"); #endif + window->monitor()->refresh(); // initialize the drawing backend if (window->renderer().create()) return (void *) &result[1]; diff --git a/src/osd/windows/video.c b/src/osd/windows/video.c index d87348aa9de..e52d09c7374 100644 --- a/src/osd/windows/video.c +++ b/src/osd/windows/video.c @@ -139,7 +139,6 @@ void win_monitor_info::refresh() osd_free(temp); m_pos_size = RECT_to_osd_rect(m_info.rcMonitor); - printf("%d %d\n", m_pos_size.width(), m_pos_size.height()); m_usuable_pos_size = RECT_to_osd_rect(m_info.rcWork); m_is_primary = ((m_info.dwFlags & MONITORINFOF_PRIMARY) != 0); (void)result; // to silence gcc 4.6 -- cgit v1.2.3-70-g09d2 From e7967e81b9ceb5a730814dafa33f5a02607faaf7 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 21 Apr 2015 22:25:44 +0300 Subject: (MESS) c4040: Added own sector dump disk format since it's different from what the 1541 uses. [Curt Coder] --- scripts/src/lib.lua | 2 + src/emu/bus/ieee488/c2040.c | 131 ++++++++++++++++++++++++++++++----------- src/emu/bus/ieee488/c2040.h | 3 + src/emu/bus/ieee488/c2040fdc.h | 1 + src/lib/formats/c4040_dsk.c | 91 ++++++++++++++++++++++++++++ src/lib/formats/c4040_dsk.h | 38 ++++++++++++ src/lib/formats/d64_dsk.c | 3 +- src/lib/formats/d64_dsk.h | 1 + 8 files changed, 233 insertions(+), 37 deletions(-) create mode 100644 src/lib/formats/c4040_dsk.c create mode 100644 src/lib/formats/c4040_dsk.h (limited to 'src') diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua index 96ab4c3cad2..e3dc7c6064a 100644 --- a/scripts/src/lib.lua +++ b/scripts/src/lib.lua @@ -157,6 +157,8 @@ project "formats" MAME_DIR .. "src/lib/formats/bw2_dsk.h", MAME_DIR .. "src/lib/formats/bw12_dsk.c", MAME_DIR .. "src/lib/formats/bw12_dsk.h", + MAME_DIR .. "src/lib/formats/c4040_dsk.c", + MAME_DIR .. "src/lib/formats/c4040_dsk.h", MAME_DIR .. "src/lib/formats/c8280_dsk.c", MAME_DIR .. "src/lib/formats/c8280_dsk.h", MAME_DIR .. "src/lib/formats/cbm_crt.c", diff --git a/src/emu/bus/ieee488/c2040.c b/src/emu/bus/ieee488/c2040.c index d12be0795a3..bb012afa92a 100644 --- a/src/emu/bus/ieee488/c2040.c +++ b/src/emu/bus/ieee488/c2040.c @@ -9,6 +9,34 @@ **********************************************************************/ +/* + + 2040/3040 disk initialization + ----------------------------- + You need to initialize each diskette before trying to access it + or you will get a DISK ID MISMATCH error upon disk commands. + On the 4040 this is done automatically by the DOS. + + open 15,8,15:print 15,"i":close 15 + + List directory + -------------- + directory / diR + + Format disk + ----------- + header "label,id",d0,i01 + + Load file + --------- + dload "name" / dL"name + + Save file + --------- + dsave "name" / dS"name + +*/ + /* TODO: @@ -53,19 +81,14 @@ const device_type C4040 = &device_creator; // ROM( c2040 ) //------------------------------------------------- -ROM_START( c2040 ) // schematic 320806 +ROM_START( c2040 ) // schematic 320806, DOS 1.0 ROM_REGION( 0x3000, M6502_TAG, 0 ) ROM_DEFAULT_BIOS("dos12") - ROM_SYSTEM_BIOS( 0, "dos10", "DOS 1.0" ) - ROMX_LOAD( "901468-xx.ul1", 0x1000, 0x1000, NO_DUMP, ROM_BIOS(1) ) - ROMX_LOAD( "901468-xx.uh1", 0x2000, 0x1000, NO_DUMP, ROM_BIOS(1) ) - ROM_SYSTEM_BIOS( 1, "dos12", "DOS 1.2" ) - ROMX_LOAD( "901468-06.ul1", 0x1000, 0x1000, CRC(25b5eed5) SHA1(4d9658f2e6ff3276e5c6e224611a66ce44b16fc7), ROM_BIOS(2) ) - ROMX_LOAD( "901468-07.uh1", 0x2000, 0x1000, CRC(9b09ae83) SHA1(6a51c7954938439ca8342fc295bda050c06e1791), ROM_BIOS(2) ) + ROM_LOAD( "901468-xx.ul1", 0x1000, 0x1000, NO_DUMP ) + ROM_LOAD( "901468-xx.uh1", 0x2000, 0x1000, NO_DUMP ) ROM_REGION( 0x400, M6504_TAG, 0 ) - ROMX_LOAD( "901466-01.uk3", 0x000, 0x400, CRC(9d1e25ce) SHA1(d539858f839f96393f218307df7394362a84a26a), ROM_BIOS(1) ) - ROMX_LOAD( "901466-02.uk3", 0x000, 0x400, CRC(9d1e25ce) SHA1(d539858f839f96393f218307df7394362a84a26a), ROM_BIOS(2) ) + ROM_LOAD( "901466-01.uk3", 0x000, 0x400, CRC(9d1e25ce) SHA1(d539858f839f96393f218307df7394362a84a26a) ) ROM_REGION( 0x800, "gcr", 0) ROM_LOAD( "901467.uk6", 0x000, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) @@ -82,6 +105,33 @@ const rom_entry *c2040_device::device_rom_region() const } +//------------------------------------------------- +// ROM( c3040 ) +//------------------------------------------------- + +ROM_START( c3040 ) // schematic 320806, DOS 1.2 + ROM_REGION( 0x3000, M6502_TAG, 0 ) + ROM_LOAD( "901468-06.ul1", 0x1000, 0x1000, CRC(25b5eed5) SHA1(4d9658f2e6ff3276e5c6e224611a66ce44b16fc7) ) + ROM_LOAD( "901468-07.uh1", 0x2000, 0x1000, CRC(9b09ae83) SHA1(6a51c7954938439ca8342fc295bda050c06e1791) ) + + ROM_REGION( 0x400, M6504_TAG, 0 ) + ROM_LOAD( "901466-02.uk3", 0x000, 0x400, CRC(9d1e25ce) SHA1(d539858f839f96393f218307df7394362a84a26a) ) + + ROM_REGION( 0x800, "gcr", 0) + ROM_LOAD( "901467.uk6", 0x000, 0x800, CRC(a23337eb) SHA1(97df576397608455616331f8e837cb3404363fa2) ) +ROM_END + + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const rom_entry *c3040_device::device_rom_region() const +{ + return ROM_NAME( c3040 ); +} + + //------------------------------------------------- // ROM( c4040 ) //------------------------------------------------- @@ -434,9 +484,18 @@ SLOT_INTERFACE_END //------------------------------------------------- FLOPPY_FORMATS_MEMBER( c2040_device::floppy_formats ) - FLOPPY_D64_FORMAT, - FLOPPY_G64_FORMAT, - FLOPPY_D67_FORMAT + FLOPPY_D67_FORMAT, + FLOPPY_G64_FORMAT +FLOPPY_FORMATS_END + + +//------------------------------------------------- +// FLOPPY_FORMATS( floppy_formats ) +//------------------------------------------------- + +FLOPPY_FORMATS_MEMBER( c4040_device::floppy_formats ) + FLOPPY_C4040_FORMAT, + FLOPPY_G64_FORMAT FLOPPY_FORMATS_END @@ -532,8 +591,8 @@ static MACHINE_CONFIG_FRAGMENT( c4040 ) MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1)) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c2040_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c2040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c4040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c4040_device::floppy_formats) MACHINE_CONFIG_END @@ -605,24 +664,24 @@ inline void c2040_device::update_ieee_signals() // c2040_device - constructor //------------------------------------------------- -c2040_device::c2040_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) - : device_t(mconfig, type, name, tag, owner, clock, shortname, source), - device_ieee488_interface(mconfig, *this), - m_maincpu(*this, M6502_TAG), - m_fdccpu(*this, M6504_TAG), - m_riot0(*this, M6532_0_TAG), - m_riot1(*this, M6532_1_TAG), - m_miot(*this, M6530_TAG), - m_via(*this, M6522_TAG), - m_floppy0(*this, FDC_TAG":0:525ssqd"), - m_floppy1(*this, FDC_TAG":1:525ssqd"), - m_fdc(*this, FDC_TAG), - m_gcr(*this, "gcr"), - m_address(*this, "ADDRESS"), - m_rfdo(1), - m_daco(1), - m_atna(1), - m_miot_irq(CLEAR_LINE) +c2040_device::c2040_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_ieee488_interface(mconfig, *this), + m_maincpu(*this, M6502_TAG), + m_fdccpu(*this, M6504_TAG), + m_riot0(*this, M6532_0_TAG), + m_riot1(*this, M6532_1_TAG), + m_miot(*this, M6530_TAG), + m_via(*this, M6522_TAG), + m_floppy0(*this, FDC_TAG":0:525ssqd"), + m_floppy1(*this, FDC_TAG":1:525ssqd"), + m_fdc(*this, FDC_TAG), + m_gcr(*this, "gcr"), + m_address(*this, "ADDRESS"), + m_rfdo(1), + m_daco(1), + m_atna(1), + m_miot_irq(CLEAR_LINE) { } @@ -652,16 +711,16 @@ c2040_device::c2040_device(const machine_config &mconfig, const char *tag, devic // c3040_device - constructor //------------------------------------------------- -c3040_device::c3040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : c2040_device(mconfig, C3040, "C3040", tag, owner, clock, "c3040", __FILE__) { } +c3040_device::c3040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + c2040_device(mconfig, C3040, "C3040", tag, owner, clock, "c3040", __FILE__) { } //------------------------------------------------- // c4040_device - constructor //------------------------------------------------- -c4040_device::c4040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : c2040_device(mconfig, C4040, "C4040", tag, owner, clock, "c4040", __FILE__) { } +c4040_device::c4040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + c2040_device(mconfig, C4040, "C4040", tag, owner, clock, "c4040", __FILE__) { } //------------------------------------------------- diff --git a/src/emu/bus/ieee488/c2040.h b/src/emu/bus/ieee488/c2040.h index c99731d27d9..020a436a9ac 100644 --- a/src/emu/bus/ieee488/c2040.h +++ b/src/emu/bus/ieee488/c2040.h @@ -107,6 +107,9 @@ class c3040_device : public c2040_device public: // construction/destruction c3040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual const rom_entry *device_rom_region() const; }; diff --git a/src/emu/bus/ieee488/c2040fdc.h b/src/emu/bus/ieee488/c2040fdc.h index d64d2de7c01..31b3c38affa 100644 --- a/src/emu/bus/ieee488/c2040fdc.h +++ b/src/emu/bus/ieee488/c2040fdc.h @@ -15,6 +15,7 @@ #define __C2040_FLOPPY__ #include "emu.h" +#include "formats/c4040_dsk.h" #include "formats/d64_dsk.h" #include "formats/d67_dsk.h" #include "formats/g64_dsk.h" diff --git a/src/lib/formats/c4040_dsk.c b/src/lib/formats/c4040_dsk.c new file mode 100644 index 00000000000..da3ac905693 --- /dev/null +++ b/src/lib/formats/c4040_dsk.c @@ -0,0 +1,91 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c4040_dsk.c + + Commodore 4040 sector disk image format + +*********************************************************************/ + +#include + +#include "formats/c4040_dsk.h" + +c4040_format::c4040_format() : d64_format(file_formats) +{ +} + +const char *c4040_format::name() const +{ + return "c4040"; +} + +const char *c4040_format::description() const +{ + return "Commodore 4040 disk image"; +} + +const char *c4040_format::extensions() const +{ + return "d64"; +} + +const c4040_format::format c4040_format::file_formats[] = { + { // c4040, dos 2, 35 tracks, head 48 tpi, stepper 96 tpi + floppy_image::FF_525, floppy_image::SSSD, 683, 35, 1, 256, 9, 8 + }, + {} +}; + +const int c4040_format::c4040_gap2[] = +{ + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, // 1-17 + 19, 19, 19, 19, 19, 19, 19, // 18-24 + 15, 15, 15, 15, 15, 15, // 25-30 + 12, 12, 12, 12, 12 // 31-35 +}; + +floppy_image_format_t::desc_e* c4040_format::get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2) +{ + static floppy_image_format_t::desc_e desc[] = { + /* 00 */ { SECTOR_LOOP_START, 0, -1 }, + /* 01 */ { RAWBYTE, 0xff, 5 }, + /* 02 */ { GCR5, 0x08, 1 }, + /* 03 */ { CRC, 1 }, + /* 04 */ { CRC_CBM_START, 1 }, + /* 05 */ { SECTOR_ID_GCR5 }, + /* 06 */ { TRACK_ID_DOS2_GCR5 }, + /* 07 */ { GCR5, id2, 1 }, + /* 08 */ { GCR5, id1, 1 }, + /* 09 */ { CRC_END, 1 }, + /* 10 */ { GCR5, 0x00, f.gap_1 }, + /* 11 */ { RAWBYTE, 0xff, 5 }, + /* 12 */ { GCR5, 0x07, 1 }, + /* 13 */ { CRC_CBM_START, 2 }, + /* 14 */ { SECTOR_DATA_GCR5, -1 }, + /* 15 */ { CRC_END, 2 }, + /* 16 */ { CRC, 2 }, + /* 17 */ { GCR5, 0x00, gap_2 }, + /* 18 */ { SECTOR_LOOP_END }, + /* 19 */ { GCR5, 0x00, 0 }, + /* 20 */ { RAWBITS, 0x14a, 0 }, + /* 21 */ { END } + }; + + desc[17].p2 = gap_2; // TODO why?!? + + current_size = 40 + (1+1+4)*10 + f.gap_1*10 + 40 + (1+f.sector_base_size+1)*10 + gap_2*10; + + current_size *= sector_count; + return desc; +} + +void c4040_format::fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size) +{ + desc[19].p2 = remaining_size / 10; + desc[20].p2 = remaining_size % 10; + desc[20].p1 >>= remaining_size & 0x01; +} + +const floppy_format_type FLOPPY_C4040_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/c4040_dsk.h b/src/lib/formats/c4040_dsk.h new file mode 100644 index 00000000000..231b961c765 --- /dev/null +++ b/src/lib/formats/c4040_dsk.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c4040_dsk.h + + Commodore 4040 sector disk image format + +*********************************************************************/ + +#ifndef C4040_DSK_H_ +#define C4040_DSK_H_ + +#include "d64_dsk.h" + +class c4040_format : public d64_format { +public: + c4040_format(); + + virtual const char *name() const; + virtual const char *description() const; + virtual const char *extensions() const; + +protected: + virtual floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2); + virtual int get_gap2(const format &f, int head, int track) { return c4040_gap2[track]; } + virtual void fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size); + + static const format file_formats[]; + + static const int c4040_gap2[]; +}; + +extern const floppy_format_type FLOPPY_C4040_FORMAT; + + + +#endif diff --git a/src/lib/formats/d64_dsk.c b/src/lib/formats/d64_dsk.c index e5ffc9d15d9..4de63b34bc8 100644 --- a/src/lib/formats/d64_dsk.c +++ b/src/lib/formats/d64_dsk.c @@ -239,8 +239,9 @@ bool d64_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) int physical_track = this->get_physical_track(f, head, track); int sector_count = this->get_sectors_per_track(f, track); int track_size = sector_count*f.sector_base_size; + int gap2 = this->get_gap2(f, head, track); - floppy_image_format_t::desc_e *desc = this->get_sector_desc(f, current_size, sector_count, id1, id2, f.gap_2); + floppy_image_format_t::desc_e *desc = this->get_sector_desc(f, current_size, sector_count, id1, id2, gap2); int remaining_size = total_size - current_size; if(remaining_size < 0) diff --git a/src/lib/formats/d64_dsk.h b/src/lib/formats/d64_dsk.h index 9d6add2817e..558d4ebf1c2 100644 --- a/src/lib/formats/d64_dsk.h +++ b/src/lib/formats/d64_dsk.h @@ -66,6 +66,7 @@ protected: void get_disk_id(const format &f, io_generic *io, UINT8 &id1, UINT8 &id2); virtual int get_image_offset(const format &f, int head, int track); int compute_track_size(const format &f, int track); + virtual int get_gap2(const format &f, int head, int track) { return f.gap_2; } virtual floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2); void build_sector_description(const format &f, UINT8 *sectdata, UINT32 sect_offs, UINT32 error_offs, desc_s *sectors, int sector_count) const; virtual void fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size); -- cgit v1.2.3-70-g09d2 From 0d7860c6753dcaf6cc98c8395f4b4a915500c4d5 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 18 Apr 2015 10:45:08 +0200 Subject: ui: avoid infinite loop when word-wrapping This commit fixes an infinite loop in draw_text_full(), happening when there is not enough space to draw even a single a char before trying to word-wrap. Signed-off-by: Luca Bruno --- src/emu/ui/ui.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/emu/ui/ui.c b/src/emu/ui/ui.c index 7daee1fe5d1..8c43d20181c 100644 --- a/src/emu/ui/ui.c +++ b/src/emu/ui/ui.c @@ -694,6 +694,9 @@ void ui_manager::draw_text_full(render_container *container, const char *origs, break; curwidth -= get_font()->char_width(lineheight, aspect, schar); + // if back to 0, there is no space to draw even a single char + if (curwidth <= 0) + break; } } -- cgit v1.2.3-70-g09d2 From d1436e698aeb269e6f024bae5d78307d5258b00b Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 18 Apr 2015 10:48:31 +0200 Subject: luaengine: accept any LUA number type as coordinate This commit fixes a type confusion bug in all draw_*() API methods. When decimal (ie. subpixels) values were passed by user scripts, they were incorrectly casted from float to plain integers, resulting in incorrect graphical artifacts. As this may happen quite often within scripts manipulating numerical values in LUA, we now also accept decimal values as coordinates. Signed-off-by: Luca Bruno --- src/emu/luaengine.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/emu/luaengine.c b/src/emu/luaengine.c index 12be9947cae..98a0f1a86c9 100644 --- a/src/emu/luaengine.c +++ b/src/emu/luaengine.c @@ -642,10 +642,10 @@ int lua_engine::lua_screen::l_draw_box(lua_State *L) int sc_width = sc->visible_area().width(); int sc_height = sc->visible_area().height(); float x1, y1, x2, y2; - x1 = MIN(MAX(0, lua_tointeger(L, 2)), sc_width-1) / static_cast(sc_width); - y1 = MIN(MAX(0, lua_tointeger(L, 3)), sc_height-1) / static_cast(sc_height); - x2 = MIN(MAX(0, lua_tointeger(L, 4)), sc_width-1) / static_cast(sc_width); - y2 = MIN(MAX(0, lua_tointeger(L, 5)), sc_height-1) / static_cast(sc_height); + x1 = MIN(MAX(0, lua_tonumber(L, 2)), sc_width-1) / static_cast(sc_width); + y1 = MIN(MAX(0, lua_tonumber(L, 3)), sc_height-1) / static_cast(sc_height); + x2 = MIN(MAX(0, lua_tonumber(L, 4)), sc_width-1) / static_cast(sc_width); + y2 = MIN(MAX(0, lua_tonumber(L, 5)), sc_height-1) / static_cast(sc_height); UINT32 bgcolor = lua_tounsigned(L, 6); UINT32 fgcolor = lua_tounsigned(L, 7); @@ -680,10 +680,10 @@ int lua_engine::lua_screen::l_draw_line(lua_State *L) int sc_width = sc->visible_area().width(); int sc_height = sc->visible_area().height(); float x1, y1, x2, y2; - x1 = MIN(MAX(0, lua_tointeger(L, 2)), sc_width-1) / static_cast(sc_width); - y1 = MIN(MAX(0, lua_tointeger(L, 3)), sc_height-1) / static_cast(sc_height); - x2 = MIN(MAX(0, lua_tointeger(L, 4)), sc_width-1) / static_cast(sc_width); - y2 = MIN(MAX(0, lua_tointeger(L, 5)), sc_height-1) / static_cast(sc_height); + x1 = MIN(MAX(0, lua_tonumber(L, 2)), sc_width-1) / static_cast(sc_width); + y1 = MIN(MAX(0, lua_tonumber(L, 3)), sc_height-1) / static_cast(sc_height); + x2 = MIN(MAX(0, lua_tonumber(L, 4)), sc_width-1) / static_cast(sc_width); + y2 = MIN(MAX(0, lua_tonumber(L, 5)), sc_height-1) / static_cast(sc_height); UINT32 color = lua_tounsigned(L, 6); // draw the line @@ -711,8 +711,8 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L) // retrieve all parameters int sc_width = sc->visible_area().width(); int sc_height = sc->visible_area().height(); - float x = MIN(MAX(0, lua_tointeger(L, 2)), sc_width-1) / static_cast(sc_width); - float y = MIN(MAX(0, lua_tointeger(L, 3)), sc_height-1) / static_cast(sc_height); + float x = MIN(MAX(0, lua_tonumber(L, 2)), sc_width-1) / static_cast(sc_width); + float y = MIN(MAX(0, lua_tonumber(L, 3)), sc_height-1) / static_cast(sc_height); const char *msg = luaL_checkstring(L,4); // TODO: add optional parameters (colors, etc.) -- cgit v1.2.3-70-g09d2 From a70514fc32a89cfeca9226891a04063cb74790f4 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Mon, 20 Apr 2015 17:08:42 +0200 Subject: luaengine: optional text color for to draw_text() draw_text() now accepts an optional fourth parameter to specify text color, in ARGB format. Signed-off-by: Luca Bruno --- src/emu/luaengine.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/emu/luaengine.c b/src/emu/luaengine.c index 98a0f1a86c9..9084a97dc46 100644 --- a/src/emu/luaengine.c +++ b/src/emu/luaengine.c @@ -707,6 +707,7 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L) luaL_argcheck(L, lua_isnumber(L, 2), 2, "x (integer) expected"); luaL_argcheck(L, lua_isnumber(L, 3), 3, "y (integer) expected"); luaL_argcheck(L, lua_isstring(L, 4), 4, "message (string) expected"); + luaL_argcheck(L, lua_isinteger(L, 5) || lua_isnone(L, 5), 5, "optional argument: text color, integer expected (default: 0xffffffff)"); // retrieve all parameters int sc_width = sc->visible_area().width(); @@ -714,13 +715,16 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L) float x = MIN(MAX(0, lua_tonumber(L, 2)), sc_width-1) / static_cast(sc_width); float y = MIN(MAX(0, lua_tonumber(L, 3)), sc_height-1) / static_cast(sc_height); const char *msg = luaL_checkstring(L,4); - // TODO: add optional parameters (colors, etc.) + rgb_t textcolor = UI_TEXT_COLOR; + if (!lua_isnone(L, 5)) { + textcolor = rgb_t(lua_tounsigned(L, 5)); + } // draw the text render_container &rc = sc->container(); ui_manager &ui = sc->machine().ui(); ui.draw_text_full(&rc, msg, x, y , (1.0f - x), - JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR, + JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, textcolor, UI_TEXT_BG_COLOR, NULL, NULL); return 0; -- cgit v1.2.3-70-g09d2 From 2dc5e399ed3fc2a1622277195da5d8ec5bc8eef2 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Tue, 21 Apr 2015 15:52:26 -0400 Subject: Adjust pepper2 bonus lives DIPs - fixes MT#5922 http://mametesters.org/view.php?id=5922 --- src/mame/drivers/exidy.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/exidy.c b/src/mame/drivers/exidy.c index 29a9ec6f2a3..dee3157159f 100644 --- a/src/mame/drivers/exidy.c +++ b/src/mame/drivers/exidy.c @@ -639,16 +639,16 @@ static INPUT_PORTS_START( pepper2 ) PORT_START("DSW") PORT_BIT ( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2,3") - PORT_DIPSETTING( 0x06, "40000" ) - PORT_DIPSETTING( 0x04, "50000" ) - PORT_DIPSETTING( 0x02, "60000" ) - PORT_DIPSETTING( 0x00, "70000" ) - PORT_DIPNAME( 0x60, 0x40, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:6,7") + PORT_DIPSETTING( 0x06, "40000 and 80000" ) + PORT_DIPSETTING( 0x04, "50000 and 100000" ) + PORT_DIPSETTING( 0x02, "70000 and 140000" ) // 1st Edition manual lists 60000 + PORT_DIPSETTING( 0x00, "90000 and 180000" ) // 1st Edition manual lists 70000 + PORT_DIPNAME( 0x60, 0x40, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:6,7") PORT_DIPSETTING( 0x60, "2" ) PORT_DIPSETTING( 0x40, "3" ) PORT_DIPSETTING( 0x20, "4" ) PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x98, 0x98, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5,8") + PORT_DIPNAME( 0x98, 0x98, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:4,5,8") PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, "Coin A 2C/1C Coin B 1C/3C" ) PORT_DIPSETTING( 0x98, DEF_STR( 1C_1C ) ) -- cgit v1.2.3-70-g09d2 From 67d09b16e9c3bfdbbbd5badebb34ce1dd2aba01a Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 21 Apr 2015 23:52:22 +0300 Subject: (MESS) c3040: Disk format WIP. (nw) --- scripts/src/lib.lua | 4 +- src/emu/bus/ieee488/c2040.c | 66 ++++++++++++++++++++++++++- src/emu/bus/ieee488/c2040.h | 3 ++ src/emu/bus/ieee488/c2040fdc.h | 2 +- src/lib/formats/c3040_dsk.c | 101 +++++++++++++++++++++++++++++++++++++++++ src/lib/formats/c3040_dsk.h | 40 ++++++++++++++++ src/lib/formats/c4040_dsk.c | 4 +- src/lib/formats/d64_dsk.c | 2 +- src/lib/formats/d67_dsk.c | 56 ----------------------- src/lib/formats/d67_dsk.h | 36 --------------- 10 files changed, 215 insertions(+), 99 deletions(-) create mode 100644 src/lib/formats/c3040_dsk.c create mode 100644 src/lib/formats/c3040_dsk.h delete mode 100644 src/lib/formats/d67_dsk.c delete mode 100644 src/lib/formats/d67_dsk.h (limited to 'src') diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua index e3dc7c6064a..5f809256072 100644 --- a/scripts/src/lib.lua +++ b/scripts/src/lib.lua @@ -157,6 +157,8 @@ project "formats" MAME_DIR .. "src/lib/formats/bw2_dsk.h", MAME_DIR .. "src/lib/formats/bw12_dsk.c", MAME_DIR .. "src/lib/formats/bw12_dsk.h", + MAME_DIR .. "src/lib/formats/c3040_dsk.c", + MAME_DIR .. "src/lib/formats/c3040_dsk.h", MAME_DIR .. "src/lib/formats/c4040_dsk.c", MAME_DIR .. "src/lib/formats/c4040_dsk.h", MAME_DIR .. "src/lib/formats/c8280_dsk.c", @@ -187,8 +189,6 @@ project "formats" MAME_DIR .. "src/lib/formats/csw_cas.h", MAME_DIR .. "src/lib/formats/d64_dsk.c", MAME_DIR .. "src/lib/formats/d64_dsk.h", - MAME_DIR .. "src/lib/formats/d67_dsk.c", - MAME_DIR .. "src/lib/formats/d67_dsk.h", MAME_DIR .. "src/lib/formats/d71_dsk.c", MAME_DIR .. "src/lib/formats/d71_dsk.h", MAME_DIR .. "src/lib/formats/d80_dsk.c", diff --git a/src/emu/bus/ieee488/c2040.c b/src/emu/bus/ieee488/c2040.c index bb012afa92a..4eb7c265660 100644 --- a/src/emu/bus/ieee488/c2040.c +++ b/src/emu/bus/ieee488/c2040.c @@ -484,7 +484,17 @@ SLOT_INTERFACE_END //------------------------------------------------- FLOPPY_FORMATS_MEMBER( c2040_device::floppy_formats ) - FLOPPY_D67_FORMAT, + FLOPPY_C3040_FORMAT, + FLOPPY_G64_FORMAT +FLOPPY_FORMATS_END + + +//------------------------------------------------- +// FLOPPY_FORMATS( floppy_formats ) +//------------------------------------------------- + +FLOPPY_FORMATS_MEMBER( c3040_device::floppy_formats ) + FLOPPY_C3040_FORMAT, FLOPPY_G64_FORMAT FLOPPY_FORMATS_END @@ -553,6 +563,60 @@ machine_config_constructor c2040_device::device_mconfig_additions() const } +//------------------------------------------------- +// MACHINE_CONFIG_FRAGMENT( c3040 ) +//------------------------------------------------- + +static MACHINE_CONFIG_FRAGMENT( c3040 ) + // DOS + MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16) + MCFG_CPU_PROGRAM_MAP(c2040_main_mem) + + MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_16MHz/16) + MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, dio_r)) + MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, dio_w)) + + MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_16MHz/16) + MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, riot1_pa_r)) + MCFG_RIOT6532_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w)) + MCFG_RIOT6532_IN_PB_CB(READ8(c2040_device, riot1_pb_r)) + MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w)) + MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0)) + + // controller + MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_16MHz/16) + MCFG_CPU_PROGRAM_MAP(c2040_fdc_mem) + + MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL_16MHz/16) + MCFG_VIA6522_READPA_HANDLER(DEVREAD8(FDC_TAG, c2040_fdc_t, read)) + MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(c2040_device, via_pb_w)) + MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, mode_sel_w)) + MCFG_VIA6522_CB2_HANDLER(DEVWRITELINE(FDC_TAG, c2040_fdc_t, rw_sel_w)) + + MCFG_DEVICE_ADD(M6530_TAG, MOS6530, XTAL_16MHz/16) + MCFG_MOS6530_OUT_PA_CB(DEVWRITE8(FDC_TAG, c2040_fdc_t, write)) + MCFG_MOS6530_IN_PB_CB(READ8(c2040_device, miot_pb_r)) + MCFG_MOS6530_OUT_PB_CB(WRITE8(c2040_device, miot_pb_w)) + + MCFG_DEVICE_ADD(FDC_TAG, C2040_FDC, XTAL_16MHz) + MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) + MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1)) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c3040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c3040_device::floppy_formats) +MACHINE_CONFIG_END + + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor c3040_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( c3040 ); +} + + //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( c4040 ) //------------------------------------------------- diff --git a/src/emu/bus/ieee488/c2040.h b/src/emu/bus/ieee488/c2040.h index 020a436a9ac..2664a2ffdd8 100644 --- a/src/emu/bus/ieee488/c2040.h +++ b/src/emu/bus/ieee488/c2040.h @@ -110,6 +110,9 @@ public: // optional information overrides virtual const rom_entry *device_rom_region() const; + virtual machine_config_constructor device_mconfig_additions() const; + + DECLARE_FLOPPY_FORMATS( floppy_formats ); }; diff --git a/src/emu/bus/ieee488/c2040fdc.h b/src/emu/bus/ieee488/c2040fdc.h index 31b3c38affa..382c540d4e4 100644 --- a/src/emu/bus/ieee488/c2040fdc.h +++ b/src/emu/bus/ieee488/c2040fdc.h @@ -15,9 +15,9 @@ #define __C2040_FLOPPY__ #include "emu.h" +#include "formats/c3040_dsk.h" #include "formats/c4040_dsk.h" #include "formats/d64_dsk.h" -#include "formats/d67_dsk.h" #include "formats/g64_dsk.h" #include "imagedev/floppy.h" diff --git a/src/lib/formats/c3040_dsk.c b/src/lib/formats/c3040_dsk.c new file mode 100644 index 00000000000..dd1d3ee5817 --- /dev/null +++ b/src/lib/formats/c3040_dsk.c @@ -0,0 +1,101 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c3040_dsk.c + + Commodore 3040 sector disk image format + +*********************************************************************/ + +#include + +#include "formats/c3040_dsk.h" + +c3040_format::c3040_format() : d64_format(file_formats) +{ +} + +const char *c3040_format::name() const +{ + return "c3040"; +} + +const char *c3040_format::description() const +{ + return "Commodore 3040 disk image"; +} + +const char *c3040_format::extensions() const +{ + return "d67"; +} + +const c3040_format::format c3040_format::file_formats[] = { + { // d67, dos 1, 35 tracks, head 48 tpi, stepper 96 tpi + floppy_image::FF_525, floppy_image::SSSD, 690, 35, 1, 256, 9, 8 + }, + {} +}; + +const int c3040_format::c3040_sectors_per_track[] = +{ + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, // 1-17 + 20, 20, 20, 20, 20, 20, 20, // 18-24 + 18, 18, 18, 18, 18, 18, // 25-30 + 17, 17, 17, 17, 17, // 31-35 + 17, 17, 17, 17, 17, // 36-40 + 17, 17 // 41-42 +}; + +const int c3040_format::c3040_gap2[] = +{ + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, // 1-17 + 8, 8, 8, 8, 8, 8, 8, // 18-24 + 15, 15, 15, 15, 15, 15, // 25-30 + 12, 12, 12, 12, 12 // 31-35 +}; + +floppy_image_format_t::desc_e* c3040_format::get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2) +{ + static floppy_image_format_t::desc_e desc[] = { + /* 00 */ { SECTOR_LOOP_START, 0, -1 }, + /* 01 */ { SYNC_GCR5, 2 }, + /* 02 */ { GCR5, 0x08, 1 }, + /* 03 */ { CRC, 1 }, + /* 04 */ { CRC_CBM_START, 1 }, + /* 05 */ { SECTOR_ID_GCR5 }, + /* 06 */ { TRACK_ID_DOS2_GCR5 }, + /* 07 */ { GCR5, id2, 1 }, + /* 08 */ { GCR5, id1, 1 }, + /* 09 */ { CRC_END, 1 }, + /* 10 */ { GCR5, 0x00, f.gap_1 }, + /* 11 */ { SYNC_GCR5, 2 }, + /* 12 */ { GCR5, 0x07, 1 }, + /* 13 */ { CRC_CBM_START, 2 }, + /* 14 */ { SECTOR_DATA_GCR5, -1 }, + /* 15 */ { CRC_END, 2 }, + /* 16 */ { CRC, 2 }, + /* 17 */ { GCR5, 0x00, gap_2 }, + /* 18 */ { SECTOR_LOOP_END }, + /* 19 */ { GCR5, 0x00, 0 }, + /* 20 */ { RAWBITS, 0x14a, 0 }, + /* 21 */ { END } + }; + + desc[17].p2 = gap_2; // TODO why?!? + + current_size = 20 + (1+1+4)*10 + f.gap_1*10 + 20 + (1+f.sector_base_size+1)*10 + gap_2*10; + + current_size *= sector_count; + return desc; +} + +void c3040_format::fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size) +{ + desc[19].p2 = remaining_size / 10; + desc[20].p2 = remaining_size % 10; + desc[20].p1 >>= remaining_size & 0x01; +} + +const floppy_format_type FLOPPY_C3040_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/c3040_dsk.h b/src/lib/formats/c3040_dsk.h new file mode 100644 index 00000000000..cbf320273a8 --- /dev/null +++ b/src/lib/formats/c3040_dsk.h @@ -0,0 +1,40 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************* + + formats/c3040_dsk.h + + Commodore 3040 sector disk image format + +*********************************************************************/ + +#ifndef C3040_DSK_H_ +#define C3040_DSK_H_ + +#include "d64_dsk.h" + +class c3040_format : public d64_format { +public: + c3040_format(); + + virtual const char *name() const; + virtual const char *description() const; + virtual const char *extensions() const; + +protected: + virtual int get_sectors_per_track(const format &f, int track) { return c3040_sectors_per_track[track]; } + virtual floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int sector_count, UINT8 id1, UINT8 id2, int gap_2); + virtual int get_gap2(const format &f, int head, int track) { return c3040_gap2[track]; } + virtual void fix_end_gap(floppy_image_format_t::desc_e* desc, int remaining_size); + + static const format file_formats[]; + + static const int c3040_gap2[]; + static const int c3040_sectors_per_track[]; +}; + +extern const floppy_format_type FLOPPY_C3040_FORMAT; + + + +#endif diff --git a/src/lib/formats/c4040_dsk.c b/src/lib/formats/c4040_dsk.c index da3ac905693..4def7e0c581 100644 --- a/src/lib/formats/c4040_dsk.c +++ b/src/lib/formats/c4040_dsk.c @@ -50,7 +50,7 @@ floppy_image_format_t::desc_e* c4040_format::get_sector_desc(const format &f, in { static floppy_image_format_t::desc_e desc[] = { /* 00 */ { SECTOR_LOOP_START, 0, -1 }, - /* 01 */ { RAWBYTE, 0xff, 5 }, + /* 01 */ { SYNC_GCR5, 4 }, /* 02 */ { GCR5, 0x08, 1 }, /* 03 */ { CRC, 1 }, /* 04 */ { CRC_CBM_START, 1 }, @@ -60,7 +60,7 @@ floppy_image_format_t::desc_e* c4040_format::get_sector_desc(const format &f, in /* 08 */ { GCR5, id1, 1 }, /* 09 */ { CRC_END, 1 }, /* 10 */ { GCR5, 0x00, f.gap_1 }, - /* 11 */ { RAWBYTE, 0xff, 5 }, + /* 11 */ { SYNC_GCR5, 4 }, /* 12 */ { GCR5, 0x07, 1 }, /* 13 */ { CRC_CBM_START, 2 }, /* 14 */ { SECTOR_DATA_GCR5, -1 }, diff --git a/src/lib/formats/d64_dsk.c b/src/lib/formats/d64_dsk.c index 4de63b34bc8..531ce441b99 100644 --- a/src/lib/formats/d64_dsk.c +++ b/src/lib/formats/d64_dsk.c @@ -272,7 +272,7 @@ bool d64_format::save(io_generic *io, floppy_image *image) for(int track=0; track < f.track_count; track++) { int sector_count = this->get_sectors_per_track(f, track); int track_size = compute_track_size(f, track); - UINT8 sectdata[40*256]; + UINT8 sectdata[40*256] = { 0 }; desc_s sectors[40]; int offset = get_image_offset(f, head, track); diff --git a/src/lib/formats/d67_dsk.c b/src/lib/formats/d67_dsk.c deleted file mode 100644 index b512e55b694..00000000000 --- a/src/lib/formats/d67_dsk.c +++ /dev/null @@ -1,56 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Curt Coder -/********************************************************************* - - formats/d67_dsk.c - - Commodore 2040 sector disk image format - -*********************************************************************/ - -#include - -#include "formats/d67_dsk.h" - -d67_format::d67_format() : d64_format(file_formats) -{ -} - -const char *d67_format::name() const -{ - return "d67"; -} - -const char *d67_format::description() const -{ - return "Commodore 2040 disk image"; -} - -const char *d67_format::extensions() const -{ - return "d67"; -} - -const d67_format::format d67_format::file_formats[] = { - { // d67, dos 1, 35 tracks, head 48 tpi, stepper 96 tpi - floppy_image::FF_525, floppy_image::SSSD, 690, 35, 1, 256, 9, 8 - }, - {} -}; - -const int d67_format::d67_sectors_per_track[] = -{ - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, // 1-17 - 20, 20, 20, 20, 20, 20, 20, // 18-24 - 18, 18, 18, 18, 18, 18, // 25-30 - 17, 17, 17, 17, 17, // 31-35 - 17, 17, 17, 17, 17, // 36-40 - 17, 17 // 41-42 -}; - -int d67_format::get_sectors_per_track(const format &f, int track) -{ - return d67_sectors_per_track[track]; -} - -const floppy_format_type FLOPPY_D67_FORMAT = &floppy_image_format_creator; diff --git a/src/lib/formats/d67_dsk.h b/src/lib/formats/d67_dsk.h deleted file mode 100644 index c28c1a4d37f..00000000000 --- a/src/lib/formats/d67_dsk.h +++ /dev/null @@ -1,36 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Curt Coder -/********************************************************************* - - formats/d67_dsk.h - - Commodore 2040 sector disk image format - -*********************************************************************/ - -#ifndef D67_DSK_H_ -#define D67_DSK_H_ - -#include "d64_dsk.h" - -class d67_format : public d64_format { -public: - d67_format(); - - virtual const char *name() const; - virtual const char *description() const; - virtual const char *extensions() const; - -protected: - virtual int get_sectors_per_track(const format &f, int track); - - static const format file_formats[]; - - static const int d67_sectors_per_track[]; -}; - -extern const floppy_format_type FLOPPY_D67_FORMAT; - - - -#endif -- cgit v1.2.3-70-g09d2 From 134dc41d49d0a4376990db0b6feb1a547f6db398 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 21 Apr 2015 23:27:56 +0200 Subject: nw --- src/mess/drivers/advision.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mess/drivers/advision.c b/src/mess/drivers/advision.c index 5ecef4b6934..f943c7d172f 100644 --- a/src/mess/drivers/advision.c +++ b/src/mess/drivers/advision.c @@ -113,5 +113,5 @@ ROM_END /* Game Driver */ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -CONS( 1982, advision, 0, 0, advision, advision, driver_device, 0, "Entex Industries Inc", "Adventure Vision", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +CONS( 1982, advision, 0, 0, advision, advision, driver_device, 0, "Entex", "Adventure Vision", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) -- cgit v1.2.3-70-g09d2 From f265e64b9b61cc4c8213c4ac56f141c66daee156 Mon Sep 17 00:00:00 2001 From: briantro Date: Tue, 21 Apr 2015 16:43:15 -0500 Subject: new Boogie Wings clone New Clone Added ------------------------------------ Boogie Wings (USA v1.7, 92.12.14) [Fabrice Arzeno, The Dumping Union] --- src/mame/drivers/boogwing.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 9 +++++---- 2 files changed, 50 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c index b6e7b0f6ae4..d01e6f31d26 100644 --- a/src/mame/drivers/boogwing.c +++ b/src/mame/drivers/boogwing.c @@ -448,6 +448,50 @@ ROM_START( boogwing ) /* VER 1.5 EUR 92.12.07 */ ROM_LOAD( "kj-00.15n", 0x000000, 0x00400, CRC(add4d50b) SHA1(080e5a8192a146d5141aef5c8d9996ddf8cd3ab4) ) ROM_END +ROM_START( boogwingu ) /* VER 1.7 USA 92.12.14 */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* DE102 code (encrypted) */ + ROM_LOAD16_BYTE( "kl_00.2b", 0x000000, 0x040000, CRC(4dc14798) SHA1(f991edf8e308087ed7222b3b4e3bc959980f8f66) ) + ROM_LOAD16_BYTE( "kl_02.2e", 0x000001, 0x040000, CRC(3bb3b0a0) SHA1(ba892ea52b6bb8d110050efdaa5effd8447c1b2a) ) + ROM_LOAD16_BYTE( "kl_01.4b", 0x080000, 0x040000, CRC(d109ba13) SHA1(93fcda71e260ba94141e2d4d6b248f2cb8530b61) ) + ROM_LOAD16_BYTE( "kl_03.4e", 0x080001, 0x040000, CRC(fef2a176) SHA1(b0505466237fe17b6aaa7eea47e309cd679208d1) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "kl06.18p", 0x00000, 0x10000, CRC(3e8bc4e1) SHA1(7e4c357afefa47b8f101727e06485eb9ebae635d) ) /* same as other sets but labeled KL */ + + ROM_REGION( 0x20000, "tiles1", 0 ) /* Tiles 1 */ + ROM_LOAD16_BYTE( "kl05.9e", 0x00000, 0x010000, CRC(d10aef95) SHA1(a611a35ab312caee19c31da079c647679d31673d) ) /* same as other sets but labeled KL */ + ROM_LOAD16_BYTE( "kl04.8e", 0x00001, 0x010000, CRC(329323a8) SHA1(e2ec7b059301c0a2e052dfc683e044c808ad9b33) ) /* same as other sets but labeled KL */ + + ROM_REGION( 0x300000, "tiles2", 0 ) /* Tiles 2 */ + ROM_LOAD( "mbd-01.9b", 0x000000, 0x100000, CRC(d7de4f4b) SHA1(4747f8795e277ed8106667b6f68e1176d95db684) ) + ROM_LOAD( "mbd-00.8b", 0x100000, 0x100000, CRC(adb20ba9) SHA1(2ffa1dd19a438a4d2f5743b1050a8037183a3e7d) ) + /* 0x100000 bytes expanded from mbd-02.10e copied here later */ + + ROM_REGION( 0x200000, "tiles3", 0 ) /* Tiles 3 */ + ROM_LOAD( "mbd-03.13b", 0x000000, 0x100000, CRC(cf798f2c) SHA1(f484a22679d6a4d4b0dcac820de3f1a37cbc478f) ) + ROM_LOAD( "mbd-04.14b", 0x100000, 0x100000, CRC(d9764d0b) SHA1(74d6f09d65d073606a6e10556cedf740aa50ff08) ) + + ROM_REGION( 0x400000, "sprites1", 0 ) /* Sprites 1 */ + ROM_LOAD16_BYTE( "mbd-05.16b", 0x000001, 0x200000, CRC(1768c66a) SHA1(06bf3bb187c65db9dcce959a43a7231e2ac45c17) ) + ROM_LOAD16_BYTE( "mbd-06.17b", 0x000000, 0x200000, CRC(7750847a) SHA1(358266ed68a9816094e7aab0905d958284c8ce98) ) + + ROM_REGION( 0x400000, "sprites2", 0 ) /* Sprites 2 */ + ROM_LOAD16_BYTE( "mbd-07.18b", 0x000001, 0x200000, CRC(241faac1) SHA1(588be0cf2647c1d185a99c987a5a20ab7ad8dea8) ) + ROM_LOAD16_BYTE( "mbd-08.19b", 0x000000, 0x200000, CRC(f13b1e56) SHA1(f8f5e8c4e6c159f076d4e6505bd901ade5c6a0ca) ) + + ROM_REGION( 0x0100000, "gfx6", 0 ) /* 1bpp graphics */ + ROM_LOAD16_BYTE( "mbd-02.10e", 0x000000, 0x080000, CRC(b25aa721) SHA1(efe800759080bd1dac2da93bd79062a48c5da2b2) ) + + ROM_REGION( 0x80000, "oki1", 0 ) /* Oki samples 1 */ + ROM_LOAD( "mbd-10.17p", 0x000000, 0x080000, CRC(f159f76a) SHA1(0b1ea69fecdd151e2b1fa96a21eade492499691d) ) + + ROM_REGION( 0x80000, "oki2", 0 ) /* Oki samples 1 */ + ROM_LOAD( "mbd-09.16p", 0x000000, 0x080000, CRC(f44f2f87) SHA1(d941520bdfc9e6d88c45462bc1f697c18f33498e) ) + + ROM_REGION( 0x000400, "proms", 0 ) /* Priority (not used) */ + ROM_LOAD( "kj-00.15n", 0x000000, 0x00400, CRC(add4d50b) SHA1(080e5a8192a146d5141aef5c8d9996ddf8cd3ab4) ) +ROM_END + ROM_START( boogwinga ) /* VER 1.5 ASA 92.12.07 */ ROM_REGION( 0x100000, "maincpu", 0 ) /* DE102 code (encrypted) */ ROM_LOAD16_BYTE( "km_00-2.2b", 0x000000, 0x040000, CRC(71ab71c6) SHA1(00bfd71dd9ae5f12c574ab0ecc07d85898930c4b) ) @@ -594,6 +638,7 @@ DRIVER_INIT_MEMBER(boogwing_state,boogwing) } GAME( 1992, boogwing, 0, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Euro v1.5, 92.12.07)", GAME_SUPPORTS_SAVE ) +GAME( 1992, boogwingu,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (USA v1.7, 92.12.14)", GAME_SUPPORTS_SAVE ) GAME( 1992, boogwinga,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Asia v1.5, 92.12.07)", GAME_SUPPORTS_SAVE ) GAME( 1992, ragtime, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.5, 92.12.07)", GAME_SUPPORTS_SAVE ) GAME( 1992, ragtimea, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.3, 92.11.26)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index db6f740823c..a4e8e110ffc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -6106,10 +6106,11 @@ pktgaldxb // bootleg // MBA ?? // MBB ?? // MBC ?? -boogwing // MBD (c) 1992 (Euro) -boogwinga // MBD (c) 1992 (Asia) -ragtime // MBD (c) 1992 (Japan) -ragtimea // MBD (c) 1992 (Japan) +boogwing // MBD (c) 1992 (Euro, v1.5) +boogwingu // MBD (c) 1992 (USA, v1.7) +boogwinga // MBD (c) 1992 (Asia, v1.5) +ragtime // MBD (c) 1992 (Japan, v1.5) +ragtimea // MBD (c) 1992 (Japan, v1.3) dblewing // MBE (c) 1993 Mitchell fghthist // MBF (c) 1993 Data East Corporation (World) DE-0380-2 PCB fghthistu // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB -- cgit v1.2.3-70-g09d2 From 45f1173d37bba8414a1531c3928f6dc919a81c50 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 21 Apr 2015 23:02:22 +0100 Subject: new clones Amuse (Version 30.08A) [PokeMAME} Scramble (Centromatic S.A.) Spanish Bootleg [Manuel Giron] Double Dragon II (Japan) [caius] (NOT WORKING, incomplete dump) --- src/mame/drivers/ddragon.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/mame/drivers/galaxian.c | 25 +++++++++++++++++++++++++ src/mame/drivers/gei.c | 33 +++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 +++ 4 files changed, 102 insertions(+) (limited to 'src') diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c index 07fb8c73f9d..4a43c2b766d 100644 --- a/src/mame/drivers/ddragon.c +++ b/src/mame/drivers/ddragon.c @@ -1674,6 +1674,44 @@ ROM_START( ddragon2 ) ROM_LOAD( "prom.16", 0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) ) /* sprite timing (same as ddragon) */ ROM_END +// came from a dead board, 2 of the program roms were failing +// if you attempt to use ROMs from another set it fails on Game Over due to code which should be different at 0x1800 in ic63 +ROM_START( ddragon2j ) + ROM_REGION( 0x30000, "maincpu", 0 ) + ROM_LOAD( "26a9-0_j.ic38", 0x08000, 0x8000, CRC(5e4fcdff) SHA1(78bf79a0b4f248c3355fef40448c76eb028f9163) ) + ROM_LOAD( "26aa-0_j.ic52", 0x10000, 0x8000, CRC(bfb4ee04) SHA1(3692bbdef7d5b7cc3eb76362945b91b4a0f6ad4b) ) + ROM_LOAD( "26ab-0.ic53", 0x18000, 0x8000, NO_DUMP) // proper dump might match other sets + ROM_LOAD( "26ac-0_j.ic63", 0x20000, 0x8000, NO_DUMP) // should be different + + ROM_REGION( 0x10000, "sub", 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */ + ROM_LOAD( "26ae-0.bin", 0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) ) + + ROM_REGION( 0x10000, "soundcpu", 0 ) /* music CPU, 64kb */ + ROM_LOAD( "26ad-0.ic41", 0x00000, 0x8000, CRC(3788af3b) SHA1(7f8833b01522553c767c470a9c27d24e638f37b9) ) // why is this different, label was the same + + ROM_REGION( 0x10000, "gfx1", 0 ) + ROM_LOAD( "26a8-0e.19", 0x00000, 0x10000, CRC(4e80cd36) SHA1(dcae0709f27f32effb359f6b943f61b102749f2a) ) /* chars */ + + ROM_REGION( 0xc0000, "gfx2", 0 ) + ROM_LOAD( "26j0-0.bin", 0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) ) /* sprites */ + ROM_LOAD( "26j1-0.bin", 0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) ) + ROM_LOAD( "26af-0.bin", 0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) ) + ROM_LOAD( "26j2-0.bin", 0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) ) + ROM_LOAD( "26j3-0.bin", 0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) ) + ROM_LOAD( "26a10-0.bin", 0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) + ROM_LOAD( "26j4-0.bin", 0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) ) /* tiles */ + ROM_LOAD( "26j5-0.bin", 0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) ) + + ROM_REGION( 0x40000, "oki", 0 ) /* adpcm samples */ + ROM_LOAD( "26j6-0.bin", 0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) ) + ROM_LOAD( "26j7-0.bin", 0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) ) + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "prom.16", 0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) ) /* sprite timing (same as ddragon) */ +ROM_END + ROM_START( ddragon2u ) ROM_REGION( 0x30000, "maincpu", 0 ) ROM_LOAD( "26a9-04.bin", 0x08000, 0x8000, CRC(f2cfc649) SHA1(d3f1e0bae02472914a940222e4f600170a91736d) ) @@ -2101,8 +2139,10 @@ GAME( 1987, ddragonb, ddragon, ddragonb, ddragon, ddragon_state, ddragon, GAME( 1987, ddragonba, ddragon, ddragonba, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg with M6803)", GAME_SUPPORTS_SAVE ) GAME( 1987, ddragon6809, ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 1)", GAME_NOT_WORKING ) GAME( 1987, ddragon6809a,ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 2)", GAME_NOT_WORKING ) + GAME( 1988, ddragon2, 0, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)", GAME_SUPPORTS_SAVE ) GAME( 1988, ddragon2u, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)", GAME_SUPPORTS_SAVE ) +GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // bad dump /* these were conversions of double dragon */ GAME( 1991, tstrike, 0, darktowr, tstrike, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Thunder Strike (set 1)", GAME_SUPPORTS_SAVE ) // same manufacturer as The Game Room? @@ -2113,5 +2153,6 @@ GAME( 1992, darktowr, 0, darktowr, darktowr, ddragon_state, darktowr, ROT /* these run on their own board, but are basically the same game. Toffy even has 'dangerous dungeons' text in it */ GAME( 1993, toffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Toffy", GAME_SUPPORTS_SAVE ) + GAME( 1994, stoffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Super Toffy", GAME_SUPPORTS_SAVE ) GAME( 1994, stoffyu, stoffy, toffy, toffy, ddragon_state, toffy, ROT0, "Midas (Unico license)", "Super Toffy (Unico license)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index 8975398f84c..e6fd3ef28c6 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -9901,6 +9901,30 @@ ROM_START( scrambp ) ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) ROM_END +// mostly the same as the scrambp set above, complete dump +ROM_START( scramce ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "es1.2c", 0x0000, 0x0800, CRC(726fb19e) SHA1(4d6d8cf1bb711ab1f13cefc56ba7273f2496d037) ) // only unique rom + ROM_LOAD( "es2.2e", 0x0800, 0x0800, CRC(66ebc070) SHA1(ada52d7880185d1ac3a39c94896d5127ea05b14a) ) + ROM_LOAD( "es3.2f", 0x1000, 0x0800, CRC(317548fd) SHA1(687c309d476cd5fc830d90e9e6293d1dcab96df7) ) + ROM_LOAD( "es4.2h", 0x1800, 0x0800, CRC(dd380a22) SHA1(125e713a58cc5f2c1e38f67dad29f8c985ce5a8b) ) + ROM_LOAD( "es5.2j", 0x2000, 0x0800, CRC(fa4f1a70) SHA1(9d797eaab0f19a2ed003f782716719c9d752bd56) ) + ROM_LOAD( "es6.2l", 0x2800, 0x0800, CRC(9fd96374) SHA1(c8456dd8a012353a023a2d3fa5d508e49c36ace8) ) + ROM_LOAD( "es7.2m", 0x3000, 0x0800, CRC(88ac07a0) SHA1(c57061db5984b472039356bf84a050b5b66e3813) ) + ROM_LOAD( "es8.2p", 0x3800, 0x0800, CRC(d20088ee) SHA1(4b2deb64f1185780e5b6d1527ed5f691591b9ea0) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "11.5c", 0x0000, 0x0800, CRC(be037cf6) SHA1(f28e5ead496e70beaada24775aa58bd5d75f2d25) ) + ROM_LOAD( "12.5d", 0x0800, 0x0800, CRC(de7912da) SHA1(8558b4eff5d7e63029b325edef9914feda5834c3) ) + ROM_LOAD( "13.5e", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "9.5f", 0x0000, 0x0800, CRC(4708845b) SHA1(a8b1ad19a95a9d35050a2ab7194cc96fc5afcdc9) ) + ROM_LOAD( "10.5h", 0x0800, 0x0800, CRC(11fd2887) SHA1(69844e48bb4d372cac7ae83c953df573c7ecbb7f) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "prom7051.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) +ROM_END ROM_START( scrampt ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -10918,6 +10942,7 @@ GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, scram GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", GAME_SUPPORTS_SAVE ) GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Karateko)", "Scramble (Karateko, French bootleg)", GAME_SUPPORTS_SAVE ) GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", GAME_SUPPORTS_SAVE ) // similar to the Karateko set above +GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", GAME_SUPPORTS_SAVE ) // similar to above GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", GAME_SUPPORTS_SAVE ) // ^^ GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c index ab9d4ffb254..83178101eb9 100644 --- a/src/mame/drivers/gei.c +++ b/src/mame/drivers/gei.c @@ -1473,6 +1473,7 @@ ROM_START( gs4002a ) ROM_LOAD( "slot_9-24-84.5", 0x16000, 0x2000, CRC(25d8c504) SHA1(2d52b66e8a1f06f486015440668bd924a123dad0) ) ROM_END + /* Greyhound Poker board... @@ -1568,6 +1569,36 @@ ROM_START( amuse1 ) /* V30.08 Rom board UMV8-B */ ROM_LOAD( "beatthespread_am2p_3-16-84",0x18000, 0x4000, CRC(40997230) SHA1(49e92a9f371a9839c94aa923aa5883284dae9dc2) ) ROM_END +/* + +Rom board is "GEI, inc UVM-8B" with a date code of "8339" + +Contains 1 AM2732A eprom, 5 HN4827128G eproms, 1 MMI PAL16R4CN, 1 7474N + +Battery (3V litium battery) backed up HM6117P-4 + +Roms labeled as: + +HCON M108 9/30 at spot C (AM2732A-DC) +CONT M108 9/26 at spot 1 (HN4827128G-25) +POKR M108 9/26 at spot 2 (HN4827128G-30) +BLJK M108 9/26 at spot 3 (HN4827128G-25) +BONE M108 9/26 at spot 4 (HN4827128G-30) +SLOT M108 9/26 at spot 5 (HN4827128G-30) + +*/ + +ROM_START( amuse1a ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD( "cont m108 9_26.1", 0x00000, 0x4000, CRC(122d235b) SHA1(5647e7f50cc4c18d98e8f0517ca2f0dacf57cae7) ) + ROM_LOAD( "hcon m108 9_30.c", 0x05800, 0x1000, CRC(5beb3d8b) SHA1(40a9458444f6a8e763a0374ab74e745500f4bf8a) ) + /* Banked roms */ + ROM_LOAD( "pokr m108 9_26.2", 0x10000, 0x4000, CRC(eafa1e22) SHA1(714b82ce2034c88b79d45a691dd71c975f91078c) ) + ROM_LOAD( "bljk m108 9_26.3", 0x14000, 0x4000, CRC(c31a8b89) SHA1(487a3be9b5f3db3388de03ebc5f4a3f1572df19b) ) + ROM_LOAD( "bone m108 9_26.4", 0x18000, 0x4000, CRC(40307a55) SHA1(3b276aa3ee6e8b25d1840d131db8d5dca34fe856) ) + ROM_LOAD( "slot m108 9_26.5", 0x1c000, 0x4000, CRC(fbcc8942) SHA1(fc9ff6db84906edb1dfa2b0235d5cfe9d0a637ab) ) +ROM_END + ROM_START( suprpokr ) /* Super Poker Version 10.19S BOBC. Rom board UMV-7C */ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) @@ -1935,6 +1966,7 @@ GAME( 1982, gs4002a, gs4002, gselect, gselect, driver_device, 0, ROT0 GAME( 1982, amuse, 0, amuse, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1982, amuse1, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) +GAME( 1983, amuse1a, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1984, gepoker, 0, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1984, gepoker1, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) @@ -1985,3 +2017,4 @@ GAME( 1992, sexappl, 0, findout, sexappl, driver_device, 0, ROT0 GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a4e8e110ffc..1516774d7fc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -323,6 +323,7 @@ scrambler // bootleg explorer // bootleg strfbomb // bootleg scrambp // bootleg (Billport S.A.) +scramce // bootleg (Centromatic S.A.) scrampt // bootleg (Petaco S.A.) scramrf // bootleg (Recreativos Franco) atlantis // (c) 1981 Comsoft @@ -7918,6 +7919,7 @@ vballb // bootleg (of US set) vball2pjb // bootleg (of Japan set) ddragon2 // TA-0026 (c) 1988 (World) ddragon2u // TA-0026 (c) 1988 (US) +ddragon2j // TA-0026 (c) 1988 (Japan) toffy // (c) 1993 Midas stoffy // (c) 1994 Midas stoffyu // (c) 1994 Midas + Unico @@ -10354,6 +10356,7 @@ jokpokerc // (c) 1983 Greyhound Electronics superbwl // (c) 1982 Greyhound Electronics amuse // (c) 1982 Greyhound Electronics amuse1 // (c) 1982 Greyhound Electronics +amuse1a // (c) 1983 Greyhound Electronics gs4002 // (c) 1982 G.E.I. gs4002a // (c) 1982 G.E.I. gepoker // (c) 1984 Greyhound Electronics -- cgit v1.2.3-70-g09d2 From 490b86bae814959bde9dd5ab82e78f6c36aaaed9 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 21 Apr 2015 23:40:43 +0100 Subject: skeleton SP, gotta start somewhere (nw) (plenty more sets can be added, some probably need making into CHDs as a few games used CF cards) --- scripts/target/mame/mame.lua | 1 + src/mame/drivers/segasp.c | 174 +++++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 2 + 3 files changed, 177 insertions(+) create mode 100644 src/mame/drivers/segasp.c (limited to 'src') diff --git a/scripts/target/mame/mame.lua b/scripts/target/mame/mame.lua index ed4f2eda6f8..aae9fb93b13 100644 --- a/scripts/target/mame/mame.lua +++ b/scripts/target/mame/mame.lua @@ -2427,6 +2427,7 @@ files { MAME_DIR .. "src/mame/machine/model3.c", MAME_DIR .. "src/mame/drivers/monacogp.c", MAME_DIR .. "src/mame/drivers/naomi.c", + MAME_DIR .. "src/mame/drivers/segasp.c", MAME_DIR .. "src/mame/machine/dc.c", MAME_DIR .. "src/mame/video/powervr2.c", MAME_DIR .. "src/mame/machine/naomi.c", diff --git a/src/mame/drivers/segasp.c b/src/mame/drivers/segasp.c new file mode 100644 index 00000000000..12bd0fdc359 --- /dev/null +++ b/src/mame/drivers/segasp.c @@ -0,0 +1,174 @@ +/* + +Sega System SP (Spider) +skeleton driver + +this is another 'Naomi-like' system + +todo: make this actually readable, we don't support unicode source files +convert CF card based sets to CHD? + + Title PCB ID REV CF ID Dumped Region PIC MAIN BD Serial +Battle Police ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +??????????? +Beetle DASH!! ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +??DASH!! +Bingo Galaxy ???-????? no ???-????-???? AAFE-01E10924916, AAFE-01D67304905, Medal +????????? +Bingo Parade ???-????? no ???-????-???? AAFE-xxxxxxxxxxx, Medal +??????? +Brick People / Block People 834-14881 ROM ALL 253-5508-0558 AAFE-01F67905202, AAFE-01F68275202 +???????? +Dinosaur King 834-14493-01 D ROM US 253-5508-0408 AAFE-01D1132xxxx, AAFE-01D15924816 +????? +Dinosaur King - Operation: Dinosaur Rescue 837-14434-91 MDA-C0021? ROM US/EXP 253-5508-0408 AAFE-01A30164715, AAFE-01B92094811 +- 834-14662-01 +Dinosaur King 2 ???-????? no 253-5508-0408 AAFE-xxxxxxxxxxx +?????2007 +Dinosaur King 2 Ver 2.5 834-14792-02 F MDA-C0047 CF EXP 253-5508-0408 AAFE-01D73384904 +????? 2008 +Disney: Magical Dream Dance on Stage ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +Disney??????? ?? ???????? +Future Police Patrol Chase ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +??????????? +Issyouni Turbo Drive ???-????? no ???-????-???? AAFE-01E91305101 +???????????? +Issyouni Wan Wan ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +????????? +King of Beetle: Battle Terminal ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +????????? ???????????? +Love & Berry Ver 1.003 834-14661-02 ROM EXP 253-5508-0446 AAFE-01D84934906 +?????????and??? +Love & Berry Ver 2.000 834-14661-02 ROM EXP 253-5508-0446 AAFE-01D8493xxxx +?????????and??? +Love & Berry 3 EXP Ver 1.002 834-14661-01 MDA-C0042 CF US/EXP 253-5508-0446 AAFE-01D64704904 +?????????and??? +Marine & Marine ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +- +Mirage World ???-????? no ???-????-???? AAFE-xxxxxxxxxxx, Medal +????????? +Monopoly: The Medal ???-????? no ???-????-???? AAFE-xxxxxxxxxxx, Medal +?????·?·??? +Monopoly: The Medal 2nd Edition ???-????? no ???-????-???? AAFE-xxxxxxxxxxx, Medal +?????·?·??? +Mushiking 2K6 2ND ???-????? no ???-????-???? AAFE-xxxxxxxxxxx + +Mushiking 2K7 1ST ???-????? no ???-????-???? AAFE-xxxxxxxxxxx + +Tetris Giant / Tetris Dekaris 834-14970 G MDA-C0076 CF ALL 253-5508-0604 AAFE-01G03025212 +????·???? +Tetris Giant / Tetris Dekaris Ver.2.000 834-14970 G ROM ALL 253-5508-0604 AAFE-xxxxxxxxxxx +????·???? +Thomas: The Tank Engine ???-????? no ???-????-???? AAFE-xxxxxxxxxxx +- + +REV PCB IC6s Flash AU1500 +D 171-8278D 315-6370 8x 128Mbit AMD +F 171-8278F 315-6416 8x 512Mbit AMD +G 171-8278G 315-6416 2x 512Mbit RMI + +*/ + +#include "emu.h" +#include "cpu/sh4/sh4.h" +#include "debugger.h" + + +class segasp_state : public driver_device +{ +public: + segasp_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { + + } + + virtual void video_start(); + UINT32 screen_update_segasp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + required_device m_maincpu; +protected: +}; + + +void segasp_state::video_start() +{ +} + +UINT32 segasp_state::screen_update_segasp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + + +static ADDRESS_MAP_START( main_map, AS_PROGRAM, 64, segasp_state ) + AM_RANGE(0x00000000, 0x001fffff) AM_MIRROR(0xa2000000) AM_ROM AM_REGION("maincpu", 0) // BIOS +ADDRESS_MAP_END + +static INPUT_PORTS_START( segasp ) +INPUT_PORTS_END + +#define SP_CPU_CLOCK 200000000 + +static MACHINE_CONFIG_START( segasp, segasp_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", SH4LE, SP_CPU_CLOCK) + MCFG_SH4_MD0(1) + MCFG_SH4_MD1(0) + MCFG_SH4_MD2(1) + MCFG_SH4_MD3(0) + MCFG_SH4_MD4(0) + MCFG_SH4_MD5(1) + MCFG_SH4_MD6(0) + MCFG_SH4_MD7(1) + MCFG_SH4_MD8(0) + MCFG_SH4_CLOCK(SP_CPU_CLOCK) + MCFG_CPU_PROGRAM_MAP(main_map) + + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(640, 480) + MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) + MCFG_SCREEN_UPDATE_DRIVER(segasp_state, screen_update_segasp) + + MCFG_PALETTE_ADD("palette", 0x1000) +MACHINE_CONFIG_END + +#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ + ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1)) /* Note '+1' */ + +#define SEGASP_BIOS \ + ROM_REGION( 0x200000, "maincpu", 0) \ + ROM_SYSTEM_BIOS( 0, "bios0", "bios0" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-24236a.ic50", 0x000000, 0x200000, CRC(ca7df0de) SHA1(504c74d5fc96c53ef9f7753e9e37fb8b39cb628c) ) \ + ROM_SYSTEM_BIOS( 1, "bios1", "bios1" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-24328.ic50", 0x000000, 0x200000, CRC(25f2ef00) SHA1(e58dec9f171e52b3ded213b3fcd9a0de8a438076) ) \ + ROM_SYSTEM_BIOS( 2, "bios2", "bios2" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-24328a.ic50", 0x000000, 0x200000, CRC(03ec3805) SHA1(a8fbaea826ca257be0b2b86952f247254929e046) ) \ + + +ROM_START( segasp ) + SEGASP_BIOS +ROM_END + +ROM_START( brickppl ) + SEGASP_BIOS + + ROM_REGION( 0x10000000, "rom", ROMREGION_ERASE) + ROM_LOAD( "ic62", 0x0000000, 0x4000000, CRC(d79afdb6) SHA1(328e535980624d9173164b756ebbdc1ca4cb6f18) ) + ROM_LOAD( "ic63", 0x4000000, 0x4000000, CRC(4f3c0937) SHA1(72d68b66c57ff539b8058f80f1a15ffa44095460) ) + ROM_LOAD( "ic64", 0x8000000, 0x4000000, CRC(383e90d9) SHA1(eeca4b1bd0cd1fed7b85f045d71e0c7258d4350b) ) + ROM_LOAD( "ic65", 0xc000000, 0x4000000, CRC(4c29b5ac) SHA1(9e6a79ad2d2498eed5b2590c8764222e7d6c0229) ) +ROM_END + + +#define GAME_FLAGS (GAME_NO_SOUND|GAME_NOT_WORKING) + +GAME( 200?, segasp, 0, segasp, segasp, driver_device, 0, ROT0, "Sega", "Sega System SP (Spider) BIOS", GAME_FLAGS | GAME_IS_BIOS_ROOT ) + +GAME( 200?, brickppl,segasp, segasp, segasp, driver_device, 0, ROT0, "Sega", "Brick People / Block People", GAME_FLAGS ) + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 1516774d7fc..913e7da4d73 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -5525,6 +5525,7 @@ starhrpr // 2009.07.27 Star Horse Progress Returns (satellite) // 2009.?? Project Cerberus (planned to be released in 2009) // NAOMI based (System SP) +segasp // 2004.10 Oshare Majo Love and Berry / Fashionable Witch Love and Berry // 2005.09 Kodai Ouja Kyouryuu King / Ancient Ruler Dinosaur King // 2007.06 Issyo ni Wanwan @@ -5534,6 +5535,7 @@ starhrpr // 2009.07.27 Star Horse Progress Returns (satellite) // 2008.02 Marine Marine Ver.2 // 2008.04 Issyo ni Wanwan Waiwai Puppy // 2008.07 Issyo ni Turbo Drive +brickppl // NAOMI 2 naomi2 // 2001.?? Naomi 2 BIOS -- cgit v1.2.3-70-g09d2 From 7fa10acca6551257163e1afd601059fed9333169 Mon Sep 17 00:00:00 2001 From: couriersud Date: Wed, 22 Apr 2015 00:45:21 +0200 Subject: Added 74192, 9316, 9310 and 74193 devices to netlist. Added breakout (wip) netlist as well, but still have to implement three more devices until work can really start. [Couriersud] --- nl_examples/breakout.c | 16 +- scripts/src/netlist.lua | 6 + scripts/target/mame/mame.lua | 1 + src/emu/netlist/devices/net_lib.c | 7 + src/emu/netlist/devices/net_lib.h | 3 + src/emu/netlist/devices/nld_74192.c | 133 +++ src/emu/netlist/devices/nld_74192.h | 64 ++ src/emu/netlist/devices/nld_74193.c | 133 +++ src/emu/netlist/devices/nld_74193.h | 61 ++ src/emu/netlist/devices/nld_9310.c | 228 +++++ src/emu/netlist/devices/nld_9310.h | 104 +++ src/emu/netlist/devices/nld_9316.c | 12 +- src/emu/netlist/devices/nld_legacy.c | 36 + src/emu/netlist/devices/nld_legacy.h | 15 + src/emu/netlist/nl_dice_compat.h | 47 ++ src/mame/drivers/nl_breakout.c | 1546 ++++++++++++++++++++++++++++++++++ src/mame/drivers/nl_pong.c | 1 + 17 files changed, 2402 insertions(+), 11 deletions(-) create mode 100644 src/emu/netlist/devices/nld_74192.c create mode 100644 src/emu/netlist/devices/nld_74192.h create mode 100644 src/emu/netlist/devices/nld_74193.c create mode 100644 src/emu/netlist/devices/nld_74193.h create mode 100644 src/emu/netlist/devices/nld_9310.c create mode 100644 src/emu/netlist/devices/nld_9310.h create mode 100644 src/mame/drivers/nl_breakout.c (limited to 'src') diff --git a/nl_examples/breakout.c b/nl_examples/breakout.c index b7b95edd210..2c8d9f3ccae 100644 --- a/nl_examples/breakout.c +++ b/nl_examples/breakout.c @@ -1,3 +1,6 @@ + +#define NETLIST_DEVELOPMENT 1 + #include "netlist/nl_dice_compat.h" #include "netlist/devices/net_lib.h" #include "netlist/analog/nld_twoterm.h" @@ -75,9 +78,9 @@ CIRCUIT_LAYOUT( breakout ) //CHIP("Y1", CLOCK_14_318_MHZ) //Y1 - CHIP("C32", CAPACITOR, &c32_desc) - CHIP("C36", CAPACITOR, &c36_desc) - CHIP("C37", CAPACITOR, &c37_desc) + CHIP_CAPACITOR(C32, &c32_desc) + CHIP_CAPACITOR(C36, &c36_desc) + CHIP_CAPACITOR(C37, &c37_desc) CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc) CHIP("A3", 7474) @@ -87,7 +90,7 @@ CIRCUIT_LAYOUT( breakout ) CHIP_9602_Mono(A7, &a7_desc) CHIP_9602_Mono(A8, &a8_desc) - CHIP("B2", 555_Astable, &b2_555_desc) + CHIP_555_Astable(B2, &b2_555_desc) CHIP("B3", 7402) CHIP("B4", 9316) CHIP("B5", 74193) @@ -203,7 +206,7 @@ CIRCUIT_LAYOUT( breakout ) CHIP("PAD1", PADDLE1_HORIZONTAL_INPUT, &pad1_desc) PADDLE_CONNECTION("PAD1", "C9") - CHIP("LATCH", LATCH) + CHIP_LATCH(LATCH) CHIP("COIN1", COIN_INPUT) //CHIP("COIN2", COIN_INPUT) @@ -1454,6 +1457,5 @@ CIRCUIT_LAYOUT( breakout ) CONNECTION("LOG1", 16, "L3", 6)*/ //N #endif - CIRCUIT_LAYOUT_END -}; +CIRCUIT_LAYOUT_END diff --git a/scripts/src/netlist.lua b/scripts/src/netlist.lua index 2db67d68526..4aebef1f091 100644 --- a/scripts/src/netlist.lua +++ b/scripts/src/netlist.lua @@ -81,8 +81,14 @@ files { MAME_DIR .. "src/emu/netlist/devices/nld_74123.h", MAME_DIR .. "src/emu/netlist/devices/nld_74153.c", MAME_DIR .. "src/emu/netlist/devices/nld_74153.h", + MAME_DIR .. "src/emu/netlist/devices/nld_74192.c", + MAME_DIR .. "src/emu/netlist/devices/nld_74192.h", + MAME_DIR .. "src/emu/netlist/devices/nld_74193.c", + MAME_DIR .. "src/emu/netlist/devices/nld_74193.h", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.c", MAME_DIR .. "src/emu/netlist/devices/nld_74ls629.h", + MAME_DIR .. "src/emu/netlist/devices/nld_9310.c", + MAME_DIR .. "src/emu/netlist/devices/nld_9310.h", MAME_DIR .. "src/emu/netlist/devices/nld_9312.c", MAME_DIR .. "src/emu/netlist/devices/nld_9312.h", MAME_DIR .. "src/emu/netlist/devices/nld_9316.c", diff --git a/scripts/target/mame/mame.lua b/scripts/target/mame/mame.lua index ed4f2eda6f8..8bcd7db4ffe 100644 --- a/scripts/target/mame/mame.lua +++ b/scripts/target/mame/mame.lua @@ -980,6 +980,7 @@ files { MAME_DIR .. "src/mame/drivers/pong.c", MAME_DIR .. "src/mame/drivers/nl_pong.c", MAME_DIR .. "src/mame/drivers/nl_pongd.c", + MAME_DIR .. "src/mame/drivers/nl_breakout.c", MAME_DIR .. "src/mame/drivers/poolshrk.c", MAME_DIR .. "src/mame/audio/poolshrk.c", MAME_DIR .. "src/mame/video/poolshrk.c", diff --git a/src/emu/netlist/devices/net_lib.c b/src/emu/netlist/devices/net_lib.c index 1ef800e524b..1483f2d40cb 100644 --- a/src/emu/netlist/devices/net_lib.c +++ b/src/emu/netlist/devices/net_lib.c @@ -91,6 +91,7 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(gnd, GND, "-") ENTRY(switch2, SWITCH2, "-") ENTRY(nicRSFF, NETDEV_RSFF, "+S,R") + ENTRY(nicDelay, NETDEV_DELAY, "-") ENTRY(4020, CD_4020, "+IP,RESET,VDD,VSS") //ENTRY(4066, CD_4066, "+A,B") ENTRY(7400, TTL_7400_NAND, "+A,B") @@ -116,7 +117,10 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74107A, TTL_74107A, "+CLK,J,K,CLRQ") ENTRY(74123, TTL_74123, "-") ENTRY(74153, TTL_74153, "+C0,C1,C2,C3,A,B,G") + ENTRY(74192, TTL_74192, "-") + ENTRY(74193, TTL_74193, "-") ENTRY(SN74LS629, SN74LS629, "CAP") + ENTRY(9310, TTL_9310, "-") ENTRY(9312, TTL_9312, "-") ENTRY(9316, TTL_9316, "+CLK,ENP,ENT,CLRQ,LOADQ,A,B,C,D") ENTRY(NE555, NE555, "-") @@ -145,7 +149,10 @@ void nl_initialize_factory(netlist_factory_t &factory) ENTRY(74107_dip, TTL_74107_DIP, "-") ENTRY(74123_dip, TTL_74123_DIP, "-") ENTRY(74153_dip, TTL_74153_DIP, "-") + ENTRY(74192_dip, TTL_74192_DIP, "-") + ENTRY(74193_dip, TTL_74193_DIP, "-") ENTRY(9602_dip, TTL_9602_DIP, "-") + ENTRY(9310_dip, TTL_9310_DIP, "-") ENTRY(9312_dip, TTL_9312_DIP, "-") ENTRY(9316_dip, TTL_9316_DIP, "-") ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2") diff --git a/src/emu/netlist/devices/net_lib.h b/src/emu/netlist/devices/net_lib.h index f66da6bb441..bc8db7201a2 100644 --- a/src/emu/netlist/devices/net_lib.h +++ b/src/emu/netlist/devices/net_lib.h @@ -78,7 +78,10 @@ #include "nld_74107.h" #include "nld_74123.h" #include "nld_74153.h" +#include "nld_74192.h" +#include "nld_74193.h" #include "nld_74ls629.h" +#include "nld_9310.h" #include "nld_9312.h" #include "nld_9316.h" diff --git a/src/emu/netlist/devices/nld_74192.c b/src/emu/netlist/devices/nld_74192.c new file mode 100644 index 00000000000..b1665cf2173 --- /dev/null +++ b/src/emu/netlist/devices/nld_74192.c @@ -0,0 +1,133 @@ +/* + * nld_74192.c + * + */ + +#define MAXCNT 9 + +#include "nld_74192.h" + +NETLIB_START(74192) +{ + register_input("A", m_A); + register_input("B", m_B); + register_input("C", m_C); + register_input("D", m_D); + register_input("CLEAR", m_CLEAR); + register_input("LOADQ", m_LOADQ); + register_input("CU", m_CU); + register_input("CD", m_CD); + + register_output("QA", m_Q[0]); + register_output("QB", m_Q[1]); + register_output("QC", m_Q[2]); + register_output("QD", m_Q[3]); + register_output("BORROWQ", m_BORROWQ); + register_output("CARRYQ", m_CARRYQ); + + save(NLNAME(m_cnt)); + save(NLNAME(m_last_CU)); + save(NLNAME(m_last_CD)); + +} + +NETLIB_RESET(74192) +{ + m_cnt = 0; + m_last_CU = 0; + m_last_CD = 0; +} + +// FIXME: Timing +static const netlist_time delay[4] = +{ + NLTIME_FROM_NS(18), + NLTIME_FROM_NS(36) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(54) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(72) - NLTIME_FROM_NS(18)}; + +NETLIB_UPDATE(74192) +{ + int tCarry = 1; + int tBorrow = 1; + if (INPLOGIC(m_CLEAR)) + { + m_cnt = 0; + } + else if (!INPLOGIC(m_LOADQ)) + { + m_cnt = (INPLOGIC(m_D) << 3) | (INPLOGIC(m_C) << 2) + | (INPLOGIC(m_B) << 1) | (INPLOGIC(m_D) << 0); + } + else + { + if (INPLOGIC(m_CD) && !m_last_CU && INPLOGIC(m_CU)) + { + m_cnt++; + if (m_cnt > MAXCNT) + m_cnt = 0; + } + else if (INPLOGIC(m_CD) && m_last_CU && !INPLOGIC(m_CU)) + { + if (m_cnt == MAXCNT) + tCarry = 0; + } + if (INPLOGIC(m_CU) && !m_last_CD && INPLOGIC(m_CD)) + { + if (m_cnt > 0) + m_cnt--; + else + m_cnt = MAXCNT; + } + else if (INPLOGIC(m_CU) && m_last_CD && !INPLOGIC(m_CD)) + { + if (m_cnt == 0) + tBorrow = 0; + } + } + + m_last_CD = INPLOGIC(m_CD); + m_last_CU = INPLOGIC(m_CU); + + for (int i=0; i<4; i++) + OUTLOGIC(m_Q[i], (m_cnt >> i) & 1, delay[i]); + + OUTLOGIC(m_BORROWQ, tBorrow, NLTIME_FROM_NS(20)); //FIXME + OUTLOGIC(m_CARRYQ, tCarry, NLTIME_FROM_NS(20)); //FIXME +} + +NETLIB_FUNC_VOID(74192, update_outputs, (void)) +{ +} + +NETLIB_START(74192_dip) +{ + NETLIB_NAME(74192)::start(); + + register_subalias("1", m_B); + register_subalias("2", m_Q[1]); + register_subalias("3", m_Q[0]); + register_subalias("4", m_CD); + register_subalias("5", m_CU); + register_subalias("6", m_Q[2]); + register_subalias("7", m_Q[3]); + + register_subalias("9", m_D); + register_subalias("10", m_C); + register_subalias("11", m_LOADQ); + register_subalias("12", m_CARRYQ); + register_subalias("13", m_BORROWQ); + register_subalias("14", m_CLEAR); + register_subalias("15", m_A); + +} + +NETLIB_UPDATE(74192_dip) +{ + NETLIB_NAME(74192)::update(); +} + +NETLIB_RESET(74192_dip) +{ + NETLIB_NAME(74192)::reset(); +} diff --git a/src/emu/netlist/devices/nld_74192.h b/src/emu/netlist/devices/nld_74192.h new file mode 100644 index 00000000000..017d51f558b --- /dev/null +++ b/src/emu/netlist/devices/nld_74192.h @@ -0,0 +1,64 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_74192.h + * + * DM74192: Synchronous 4-Bit Binary Counter with Dual Clock + * Decade counter + * + * FIXME: This should be merged with the 74193 which counts to 16 + * + * +--------------+ + * B |1 ++ 16| VCC + * QB |2 15| A + * QA |3 14| CLEAR + * CD |4 74192 13| BORROWQ + * CU |5 12| CARRYQ + * QC |6 11| LOADQ + * QD |7 10| C + * GND |8 9| D + * +--------------+ + * + * CD: Count up + * CU: Count down + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +#ifndef NLD_74192_H_ +#define NLD_74192_H_ + +#include "../nl_base.h" + +#define TTL_74192(_name) \ + NET_REGISTER_DEV(74192, _name) + +#define TTL_74192_DIP(_name) \ + NET_REGISTER_DEV(74192_dip, _name) + +NETLIB_DEVICE(74192, + ATTR_HOT void update_outputs(); + + netlist_ttl_input_t m_A; + netlist_ttl_input_t m_B; + netlist_ttl_input_t m_C; + netlist_ttl_input_t m_D; + netlist_ttl_input_t m_CLEAR; + netlist_ttl_input_t m_LOADQ; + netlist_ttl_input_t m_CU; + netlist_ttl_input_t m_CD; + + netlist_state_t m_cnt; + netlist_state_t m_last_CU; + netlist_state_t m_last_CD; + + netlist_ttl_output_t m_Q[4]; + netlist_ttl_output_t m_BORROWQ; + netlist_ttl_output_t m_CARRYQ; +); + +NETLIB_DEVICE_DERIVED(74192_dip, 74192, +); + +#endif /* NLD_74192_H_ */ diff --git a/src/emu/netlist/devices/nld_74193.c b/src/emu/netlist/devices/nld_74193.c new file mode 100644 index 00000000000..abe3238585a --- /dev/null +++ b/src/emu/netlist/devices/nld_74193.c @@ -0,0 +1,133 @@ +/* + * nld_74193.c + * + */ + +#define MAXCNT 15 + +#include "nld_74193.h" + +NETLIB_START(74193) +{ + register_input("A", m_A); + register_input("B", m_B); + register_input("C", m_C); + register_input("D", m_D); + register_input("CLEAR", m_CLEAR); + register_input("LOADQ", m_LOADQ); + register_input("CU", m_CU); + register_input("CD", m_CD); + + register_output("QA", m_Q[0]); + register_output("QB", m_Q[1]); + register_output("QC", m_Q[2]); + register_output("QD", m_Q[3]); + register_output("BORROWQ", m_BORROWQ); + register_output("CARRYQ", m_CARRYQ); + + save(NLNAME(m_cnt)); + save(NLNAME(m_last_CU)); + save(NLNAME(m_last_CD)); + +} + +NETLIB_RESET(74193) +{ + m_cnt = 0; + m_last_CU = 0; + m_last_CD = 0; +} + +// FIXME: Timing +static const netlist_time delay[4] = +{ + NLTIME_FROM_NS(18), + NLTIME_FROM_NS(36) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(54) - NLTIME_FROM_NS(18), + NLTIME_FROM_NS(72) - NLTIME_FROM_NS(18)}; + +NETLIB_UPDATE(74193) +{ + int tCarry = 1; + int tBorrow = 1; + if (INPLOGIC(m_CLEAR)) + { + m_cnt = 0; + } + else if (!INPLOGIC(m_LOADQ)) + { + m_cnt = (INPLOGIC(m_D) << 3) | (INPLOGIC(m_C) << 2) + | (INPLOGIC(m_B) << 1) | (INPLOGIC(m_D) << 0); + } + else + { + if (INPLOGIC(m_CD) && !m_last_CU && INPLOGIC(m_CU)) + { + m_cnt++; + if (m_cnt > MAXCNT) + m_cnt = 0; + } + else if (INPLOGIC(m_CD) && m_last_CU && !INPLOGIC(m_CU)) + { + if (m_cnt == MAXCNT) + tCarry = 0; + } + if (INPLOGIC(m_CU) && !m_last_CD && INPLOGIC(m_CD)) + { + if (m_cnt > 0) + m_cnt--; + else + m_cnt = MAXCNT; + } + else if (INPLOGIC(m_CU) && m_last_CD && !INPLOGIC(m_CD)) + { + if (m_cnt == 0) + tBorrow = 0; + } + } + + m_last_CD = INPLOGIC(m_CD); + m_last_CU = INPLOGIC(m_CU); + + for (int i=0; i<4; i++) + OUTLOGIC(m_Q[i], (m_cnt >> i) & 1, delay[i]); + + OUTLOGIC(m_BORROWQ, tBorrow, NLTIME_FROM_NS(20)); //FIXME + OUTLOGIC(m_CARRYQ, tCarry, NLTIME_FROM_NS(20)); //FIXME +} + +NETLIB_FUNC_VOID(74193, update_outputs, (void)) +{ +} + +NETLIB_START(74193_dip) +{ + NETLIB_NAME(74193)::start(); + + register_subalias("1", m_B); + register_subalias("2", m_Q[1]); + register_subalias("3", m_Q[0]); + register_subalias("4", m_CD); + register_subalias("5", m_CU); + register_subalias("6", m_Q[2]); + register_subalias("7", m_Q[3]); + + register_subalias("9", m_D); + register_subalias("10", m_C); + register_subalias("11", m_LOADQ); + register_subalias("12", m_CARRYQ); + register_subalias("13", m_BORROWQ); + register_subalias("14", m_CLEAR); + register_subalias("15", m_A); + +} + +NETLIB_UPDATE(74193_dip) +{ + NETLIB_NAME(74193)::update(); +} + +NETLIB_RESET(74193_dip) +{ + NETLIB_NAME(74193)::reset(); +} diff --git a/src/emu/netlist/devices/nld_74193.h b/src/emu/netlist/devices/nld_74193.h new file mode 100644 index 00000000000..92d97c1f6fb --- /dev/null +++ b/src/emu/netlist/devices/nld_74193.h @@ -0,0 +1,61 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_74193.h + * + * DM74193: Synchronous 4-Bit Binary Counter with Dual Clock + * + * +--------------+ + * B |1 ++ 16| VCC + * QB |2 15| A + * QA |3 14| CLEAR + * CD |4 74193 13| BORROWQ + * CU |5 12| CARRYQ + * QC |6 11| LOADQ + * QD |7 10| C + * GND |8 9| D + * +--------------+ + * + * CD: Count up + * CU: Count down + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +#ifndef NLD_74193_H_ +#define NLD_74193_H_ + +#include "../nl_base.h" + +#define TTL_74193(_name) \ + NET_REGISTER_DEV(74193, _name) + +#define TTL_74193_DIP(_name) \ + NET_REGISTER_DEV(74193_dip, _name) + +NETLIB_DEVICE(74193, + ATTR_HOT void update_outputs(); + + netlist_ttl_input_t m_A; + netlist_ttl_input_t m_B; + netlist_ttl_input_t m_C; + netlist_ttl_input_t m_D; + netlist_ttl_input_t m_CLEAR; + netlist_ttl_input_t m_LOADQ; + netlist_ttl_input_t m_CU; + netlist_ttl_input_t m_CD; + + netlist_state_t m_cnt; + netlist_state_t m_last_CU; + netlist_state_t m_last_CD; + + netlist_ttl_output_t m_Q[4]; + netlist_ttl_output_t m_BORROWQ; + netlist_ttl_output_t m_CARRYQ; +); + +NETLIB_DEVICE_DERIVED(74193_dip, 74193, +); + +#endif /* NLD_74193_H_ */ diff --git a/src/emu/netlist/devices/nld_9310.c b/src/emu/netlist/devices/nld_9310.c new file mode 100644 index 00000000000..f6d35ac92e6 --- /dev/null +++ b/src/emu/netlist/devices/nld_9310.c @@ -0,0 +1,228 @@ +/* + * nld_9310.c + * + */ + +#include "nld_9310.h" + +#define MAXCNT 9 + +NETLIB_START(9310) +{ + register_sub(subABCD, "subABCD"); + sub.m_ABCD = &subABCD; + register_sub(sub, "sub"); + + register_subalias("CLK", sub.m_CLK); + + register_input("ENP", m_ENP); + register_input("ENT", m_ENT); + register_input("CLRQ", m_CLRQ); + register_input("LOADQ", m_LOADQ); + + register_subalias("A", subABCD.m_A); + register_subalias("B", subABCD.m_B); + register_subalias("C", subABCD.m_C); + register_subalias("D", subABCD.m_D); + + register_subalias("QA", sub.m_QA); + register_subalias("QB", sub.m_QB); + register_subalias("QC", sub.m_QC); + register_subalias("QD", sub.m_QD); + register_subalias("RC", sub.m_RC); + +} + +NETLIB_RESET(9310) +{ + sub.do_reset(); + subABCD.do_reset(); +} + +NETLIB_START(9310_subABCD) +{ + register_input("A", m_A); + register_input("B", m_B); + register_input("C", m_C); + register_input("D", m_D); + +} + +NETLIB_RESET(9310_subABCD) +{ + m_A.inactivate(); + m_B.inactivate(); + m_C.inactivate(); + m_D.inactivate(); +} + +ATTR_HOT inline UINT8 NETLIB_NAME(9310_subABCD::read_ABCD)() +{ + return (INPLOGIC_PASSIVE(m_D) << 3) | (INPLOGIC_PASSIVE(m_C) << 2) | (INPLOGIC_PASSIVE(m_B) << 1) | (INPLOGIC_PASSIVE(m_A) << 0); +} + +NETLIB_UPDATE(9310_subABCD) +{ +} + +NETLIB_START(9310_sub) +{ + register_input("CLK", m_CLK); + + register_output("QA", m_QA); + register_output("QB", m_QB); + register_output("QC", m_QC); + register_output("QD", m_QD); + register_output("RC", m_RC); + + save(NLNAME(m_cnt.ref())); + save(NLNAME(m_loadq.ref())); + save(NLNAME(m_ent.ref())); +} + +NETLIB_RESET(9310_sub) +{ + m_CLK.set_state(netlist_input_t::STATE_INP_LH); + m_cnt = 0; + m_loadq = 1; + m_ent = 1; +} + +NETLIB_UPDATE(9310_sub) +{ + UINT8 cnt = m_cnt; + if (m_loadq) + { + cnt++; + if (cnt > MAXCNT) + cnt = 0; + update_outputs(cnt); + OUTLOGIC(m_RC, m_ent & (cnt == MAXCNT), NLTIME_FROM_NS(20)); +#if 0 + if (cnt == 0x0f) + OUTLOGIC(m_RC, m_ent, NLTIME_FROM_NS(20)); + else if (cnt == 0) + OUTLOGIC(m_RC, 0, NLTIME_FROM_NS(20)); +#endif + } + else + { + cnt = m_ABCD.get()->read_ABCD(); + update_outputs_all(cnt); + OUTLOGIC(m_RC, m_ent & (cnt == MAXCNT), NLTIME_FROM_NS(20)); + } + m_cnt = cnt; +} + +NETLIB_UPDATE(9310) +{ + sub.m_loadq = INPLOGIC(m_LOADQ); + sub.m_ent = INPLOGIC(m_ENT); + const netlist_sig_t clrq = INPLOGIC(m_CLRQ); + + if ((!sub.m_loadq || (sub.m_ent & INPLOGIC(m_ENP))) && clrq) + { + sub.m_CLK.activate_lh(); + } + else + { + UINT8 cnt = sub.m_cnt; + sub.m_CLK.inactivate(); + if (!clrq && (cnt>0)) + { + cnt = 0; + sub.update_outputs(cnt); + //OUTLOGIC(sub.m_RC, 0, NLTIME_FROM_NS(20)); + sub.m_cnt = cnt; + //return; + } + } + OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(20)); +} + +inline NETLIB_FUNC_VOID(9310_sub, update_outputs_all, (const UINT8 cnt)) +{ + const netlist_time out_delay = NLTIME_FROM_NS(20); + OUTLOGIC(m_QA, (cnt >> 0) & 1, out_delay); + OUTLOGIC(m_QB, (cnt >> 1) & 1, out_delay); + OUTLOGIC(m_QC, (cnt >> 2) & 1, out_delay); + OUTLOGIC(m_QD, (cnt >> 3) & 1, out_delay); +} + +inline NETLIB_FUNC_VOID(9310_sub, update_outputs, (const UINT8 cnt)) +{ + const netlist_time out_delay = NLTIME_FROM_NS(20); +#if 1 +// for (int i=0; i<4; i++) +// OUTLOGIC(m_Q[i], (cnt >> i) & 1, delay[i]); + OUTLOGIC(m_QA, (cnt >> 0) & 1, out_delay); + OUTLOGIC(m_QB, (cnt >> 1) & 1, out_delay); + OUTLOGIC(m_QC, (cnt >> 2) & 1, out_delay); + OUTLOGIC(m_QD, (cnt >> 3) & 1, out_delay); +#else + if ((cnt & 1) == 1) + OUTLOGIC(m_QA, 1, out_delay); + else + { + OUTLOGIC(m_QA, 0, out_delay); + switch (cnt) + { + case 0x00: + OUTLOGIC(m_QB, 0, out_delay); + OUTLOGIC(m_QC, 0, out_delay); + OUTLOGIC(m_QD, 0, out_delay); + break; + case 0x02: + case 0x06: + case 0x0A: + case 0x0E: + OUTLOGIC(m_QB, 1, out_delay); + break; + case 0x04: + case 0x0C: + OUTLOGIC(m_QB, 0, out_delay); + OUTLOGIC(m_QC, 1, out_delay); + break; + case 0x08: + OUTLOGIC(m_QB, 0, out_delay); + OUTLOGIC(m_QC, 0, out_delay); + OUTLOGIC(m_QD, 1, out_delay); + break; + } + + } +#endif +} + +NETLIB_START(9310_dip) +{ + NETLIB_NAME(9310)::start(); + + register_subalias("1", m_CLRQ); + register_subalias("2", sub.m_CLK); + register_subalias("3", subABCD.m_A); + register_subalias("4", subABCD.m_B); + register_subalias("5", subABCD.m_C); + register_subalias("6", subABCD.m_D); + register_subalias("7", m_ENP); + // register_subalias("8", ); --> GND + + register_subalias("9", m_LOADQ); + register_subalias("10", m_ENT); + register_subalias("11", sub.m_QD); + register_subalias("12", sub.m_QC); + register_subalias("13", sub.m_QB); + register_subalias("14", sub.m_QA); + register_subalias("15", sub.m_RC); + // register_subalias("16", ); --> VCC +} + +NETLIB_UPDATE(9310_dip) +{ + NETLIB_NAME(9310)::update(); +} + +NETLIB_RESET(9310_dip) +{ + NETLIB_NAME(9310)::reset(); +} diff --git a/src/emu/netlist/devices/nld_9310.h b/src/emu/netlist/devices/nld_9310.h new file mode 100644 index 00000000000..ce83b1e1a69 --- /dev/null +++ b/src/emu/netlist/devices/nld_9310.h @@ -0,0 +1,104 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * nld_9310.h + * + * DM9310: Synchronous 4-Bit Counters + * + * FIXME: This should be merged with the 9316. The only difference is MAXCNT! + * + * +--------------+ + * CLEAR |1 ++ 16| VCC + * CLOCK |2 15| RC (Ripple Carry) + * A |3 14| QA + * B |4 9310 13| QB + * C |5 12| QC + * D |6 11| QD + * Enable P |7 10| Enable T + * GND |8 9| LOAD + * +--------------+ + * + * Counter Sequence + * + * +-------++----+----+----+----+----+ + * | COUNT || QD | QC | QB | QA | RC | + * +=======++====+====+====+====+====+ + * | 0 || 0 | 0 | 0 | 0 | 0 | + * | 1 || 0 | 0 | 0 | 1 | 0 | + * | 2 || 0 | 0 | 1 | 0 | 0 | + * | 3 || 0 | 0 | 1 | 1 | 0 | + * | 4 || 0 | 1 | 0 | 0 | 0 | + * | 5 || 0 | 1 | 0 | 1 | 0 | + * | 6 || 0 | 1 | 1 | 0 | 0 | + * | 7 || 0 | 1 | 1 | 1 | 0 | + * | 8 || 1 | 0 | 0 | 0 | 0 | + * | 9 || 1 | 0 | 0 | 1 | 0 | + * +-------++----+----+----+----+----+ + * + * Reset count function: Please refer to + * National Semiconductor datasheet (timing diagramm) + * + * Naming conventions follow National Semiconductor datasheet + * + */ + +#ifndef NLD_9310_H_ +#define NLD_9310_H_ + +#include "../nl_base.h" + +#define TTL_9310(_name, _CLK, _ENP, _ENT, _CLRQ, _LOADQ, _A, _B, _C, _D) \ + NET_REGISTER_DEV(9310, _name) \ + NET_CONNECT(_name, CLK, _CLK) \ + NET_CONNECT(_name, ENP, _ENP) \ + NET_CONNECT(_name, ENT, _ENT) \ + NET_CONNECT(_name, CLRQ, _CLRQ) \ + NET_CONNECT(_name, LOADQ,_LOADQ) \ + NET_CONNECT(_name, A, _A) \ + NET_CONNECT(_name, B, _B) \ + NET_CONNECT(_name, C, _C) \ + NET_CONNECT(_name, D, _D) + +#define TTL_9310_DIP(_name) \ + NET_REGISTER_DEV(9310_dip, _name) + +NETLIB_SUBDEVICE(9310_subABCD, + netlist_ttl_input_t m_A; + netlist_ttl_input_t m_B; + netlist_ttl_input_t m_C; + netlist_ttl_input_t m_D; + + ATTR_HOT inline UINT8 read_ABCD(); +); + +NETLIB_SUBDEVICE(9310_sub, + ATTR_HOT void update_outputs_all(const UINT8 cnt); + ATTR_HOT void update_outputs(const UINT8 cnt); + + netlist_ttl_input_t m_CLK; + + netlist_state_t m_cnt; + netlist_state_t m_ABCD; + netlist_state_t m_loadq; + netlist_state_t m_ent; + + netlist_ttl_output_t m_QA; + netlist_ttl_output_t m_QB; + netlist_ttl_output_t m_QC; + netlist_ttl_output_t m_QD; + netlist_ttl_output_t m_RC; +); + +NETLIB_DEVICE(9310, + NETLIB_NAME(9310_sub) sub; + NETLIB_NAME(9310_subABCD) subABCD; + netlist_ttl_input_t m_ENP; + netlist_ttl_input_t m_ENT; + netlist_ttl_input_t m_CLRQ; + netlist_ttl_input_t m_LOADQ; +); + +NETLIB_DEVICE_DERIVED(9310_dip, 9310, +); + +#endif /* NLD_9310_H_ */ diff --git a/src/emu/netlist/devices/nld_9316.c b/src/emu/netlist/devices/nld_9316.c index 017ee599f26..d339bbc083c 100644 --- a/src/emu/netlist/devices/nld_9316.c +++ b/src/emu/netlist/devices/nld_9316.c @@ -5,6 +5,8 @@ #include "nld_9316.h" +#define MAXCNT 15 + NETLIB_START(9316) { register_sub(subABCD, "subABCD"); @@ -91,9 +93,11 @@ NETLIB_UPDATE(9316_sub) UINT8 cnt = m_cnt; if (m_loadq) { - cnt = ( cnt + 1) & 0x0f; + cnt++; + if (cnt > MAXCNT) + cnt = 0; update_outputs(cnt); - OUTLOGIC(m_RC, m_ent & (cnt == 0x0f), NLTIME_FROM_NS(20)); + OUTLOGIC(m_RC, m_ent & (cnt == MAXCNT), NLTIME_FROM_NS(20)); #if 0 if (cnt == 0x0f) OUTLOGIC(m_RC, m_ent, NLTIME_FROM_NS(20)); @@ -105,7 +109,7 @@ NETLIB_UPDATE(9316_sub) { cnt = m_ABCD.get()->read_ABCD(); update_outputs_all(cnt); - OUTLOGIC(m_RC, m_ent & (cnt == 0x0f), NLTIME_FROM_NS(20)); + OUTLOGIC(m_RC, m_ent & (cnt == MAXCNT), NLTIME_FROM_NS(20)); } m_cnt = cnt; } @@ -133,7 +137,7 @@ NETLIB_UPDATE(9316) //return; } } - OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == 0x0f), NLTIME_FROM_NS(20)); + OUTLOGIC(sub.m_RC, sub.m_ent & (sub.m_cnt == MAXCNT), NLTIME_FROM_NS(20)); } inline NETLIB_FUNC_VOID(9316_sub, update_outputs_all, (const UINT8 cnt)) diff --git a/src/emu/netlist/devices/nld_legacy.c b/src/emu/netlist/devices/nld_legacy.c index e73aff6530b..6ac685fcda8 100644 --- a/src/emu/netlist/devices/nld_legacy.c +++ b/src/emu/netlist/devices/nld_legacy.c @@ -33,3 +33,39 @@ NETLIB_UPDATE(nicRSFF) OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(20)); } } + +NETLIB_START(nicDelay) +{ + register_input("1", m_I); + register_output("2", m_Q); + + register_param("L_TO_H", m_L_to_H, 10); + register_param("H_TO_L", m_H_to_L, 10); + + save(NLNAME(m_last)); + +} + +NETLIB_RESET(nicDelay) +{ + m_Q.initial(0); +} + +NETLIB_UPDATE_PARAM(nicDelay) +{ + +} + +NETLIB_UPDATE(nicDelay) +{ + if (INPLOGIC(m_I) && !m_last) + { + // L_to_H + OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(m_L_to_H.Value())); + } + else if (!INPLOGIC(m_I) && m_last) + { + OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(m_H_to_L.Value())); + } + m_last = INPLOGIC(m_I); +} diff --git a/src/emu/netlist/devices/nld_legacy.h b/src/emu/netlist/devices/nld_legacy.h index 3ea50f601fd..f9e085bf65f 100644 --- a/src/emu/netlist/devices/nld_legacy.h +++ b/src/emu/netlist/devices/nld_legacy.h @@ -22,6 +22,9 @@ #define NETDEV_RSFF(_name) \ NET_REGISTER_DEV(nicRSFF, _name) +#define NETDEV_DELAY(_name) \ + NET_REGISTER_DEV(nicDelay, _name) + // ---------------------------------------------------------------------------------------- // Devices ... // ---------------------------------------------------------------------------------------- @@ -35,4 +38,16 @@ NETLIB_DEVICE(nicRSFF, ); +NETLIB_DEVICE_WITH_PARAMS(nicDelay, + netlist_ttl_input_t m_I; + + netlist_ttl_output_t m_Q; + + netlist_param_int_t m_L_to_H; + netlist_param_int_t m_H_to_L; + + netlist_state_t m_last; +); + + #endif /* NLD_LEGACY_H_ */ diff --git a/src/emu/netlist/nl_dice_compat.h b/src/emu/netlist/nl_dice_compat.h index 917edad4cbb..9ce20d121ef 100644 --- a/src/emu/netlist/nl_dice_compat.h +++ b/src/emu/netlist/nl_dice_compat.h @@ -35,8 +35,12 @@ #define CIRCUIT_LAYOUT_END NETLIST_END() +#define OHM(x) (x) #define K_OHM(x) ((x) * 1000.0) +#define M_OHM(x) ((x) * 1.0e6) #define U_FARAD(x) ((x) * 1.0e-6) +#define N_FARAD(x) ((x) * 1.0e-9) +#define P_FARAD(x) ((x) * 1.0e-12) struct Mono555Desc { @@ -46,6 +50,14 @@ public: Mono555Desc(nl_double res, nl_double cap) : r(res), c(cap) { } }; +struct Astable555Desc +{ +public: + nl_double r1, r2, c; + + Astable555Desc(nl_double res1, nl_double res2, nl_double cap) : r1(res1), r2(res2), c(cap) { } +}; + struct Mono9602Desc { public: @@ -63,6 +75,12 @@ public: SeriesRCDesc(nl_double res, nl_double cap) : r(res), c(cap) { } }; +struct CapacitorDesc : public SeriesRCDesc +{ +public: + CapacitorDesc(nl_double cap) : SeriesRCDesc(0.0, cap) { } +}; + #define CHIP_555_Mono(_name, _pdesc) \ CHIP(# _name, NE555) \ NET_C(_name.6, _name.7) \ @@ -75,6 +93,21 @@ public: NET_C(_name.8, V5) \ NET_CSTR(# _name ".1", "GND") +#define CHIP_555_Astable(_name, _pdesc) \ + CHIP(# _name, NE555) \ + NET_C(_name.6, _name.2) \ + RES(_name ## _R1, (_pdesc)->r1) \ + RES(_name ## _R2, (_pdesc)->r2) \ + CAP(_name ## _C, (_pdesc)->c) \ + NET_C(_name.7, _name ## _R1.1) \ + NET_C(_name.7, _name ## _R2.1) \ + NET_C(_name.6, _name ## _R2.2) \ + NET_C(_name.6, _name ## _C.1) \ + NET_C(_name ## _R1.2, V5) \ + NET_CSTR(# _name "_C.2", "GND") \ + NET_C(_name.8, V5) \ + NET_CSTR(# _name ".1", "GND") + #define CHIP_9602_Mono(_name, _pdesc) \ CHIP(# _name, 9602) \ NET_C(VCC, _name.16) \ @@ -118,6 +151,20 @@ public: ALIAS(_name.2, _name.S) \ ALIAS(_name.3, _name.QQ) +/* FIXME: Alternative implementation using capacitor. + * This is a transitional implementation + */ + +inline int CAPACITOR_tc(const double c, const double r) +{ + static const double TIME_CONSTANT = -log((3.4 - 2.0) / 3.4); + return (int) (TIME_CONSTANT * (130.0 + r) * c * 1e9); +} + +#define CHIP_CAPACITOR(_name, _pdesc) \ + NETDEV_DELAY(_name) \ + NETDEV_PARAMI(_name, L_TO_H, CAPACITOR_tc((_pdesc)->c, (_pdesc)->r)) \ + NETDEV_PARAMI(_name, H_TO_HL, CAPACITOR_tc((_pdesc)->c, (_pdesc)->r)) \ #endif /* NL_DICE_COMPAT_H_ */ diff --git a/src/mame/drivers/nl_breakout.c b/src/mame/drivers/nl_breakout.c new file mode 100644 index 00000000000..be56fd611f4 --- /dev/null +++ b/src/mame/drivers/nl_breakout.c @@ -0,0 +1,1546 @@ +// license:MAME,GPL-2.0+ +// copyright-holders:DICE Team,couriersud +/* + * Changelog: + * - Added discrete paddle potentiometers (couriersud) + * - Changes made to run in MAME (couriersud) + * - Original version imported from DICE + * + * TODO: + * - implement trimmers + * + * The MAME team has asked for and received written confirmation from the + * author of DICE to use, modify and redistribute code under + * a dual licensing scheme: + * + * * The licensing terms of MAME apply to this piece of code for the MAME + * project and derivative works, as defined by the MAME license. You + * may opt to make modifications, improvements or derivative works under + * that same conditions, and the MAME project may opt to keep + * modifications, improvements or derivatives under their terms exclusively. + * + * - Alternatively you can choose to apply the terms of the "GPL" (see + * below) to this - and only this - piece of code or your derivative works. + * Note that in no case your choice can have any impact on any other + * source code of the MAME project, or binary, or executable, be it closely + * or losely related to this piece of code. + * + * - GPL (GNU General Public License) + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * - DICE itself is licensed under version 3 of the GNU General Public License. + * Under no circumstances the exemptions listed above shall apply to any + * other code of DICE not contained in this file. + * + * The following is an extract from the DICE readme. + * + * ---------------------------------------------------------------------------- + * + * DICE is a Discrete Integrated Circuit Emulator. It emulates computer systems + * that lack any type of CPU, consisting only of discrete logic components. + * + * Project Page: http://sourceforge.net/projects/dice/ + * Email: dice.emulator@gmail.com + * + * License + * + * Copyright (C) 2008-2013 DICE Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + */ + +// identify unknown devices in IDE + +#if 0 +#define NETLIST_DEVELOPMENT 1 + +#include "netlist/nl_dice_compat.h" +#include "netlist/devices/net_lib.h" +#include "netlist/analog/nld_twoterm.h" + +//2 555 timers +static Astable555Desc b2_555_desc(OHM(560.0), M_OHM(1.8), U_FARAD(0.1)); + +static Mono555Desc c9_555_desc(OHM(47.0), U_FARAD(1.0)); // R33, C21 + +//check these values +//static Paddle1HorizontalDesc pad1_desc(15047.0, 47.0, &c9_555_desc); + +static CapacitorDesc c32_desc(U_FARAD(0.1)); +static CapacitorDesc c36_desc(N_FARAD(1.0)); //0.001uF = 1nF +static CapacitorDesc c37_desc(P_FARAD(330.0)); + +#if 0 +static BufferDesc pad_en_buf_desc(DELAY_NS(15.0), DELAY_NS(15.0)); // Prevents 12ns glitch on PAD_EN_n signal from resetting C9. TODO: is this accurate? +#endif + +#if 0 +static VIDEO_DESC( breakout ) + VIDEO_RESISTANCE(1, K_OHM(0.0)) + VIDEO_RESISTANCE(2, K_OHM(3.9)) + VIDEO_RESISTANCE(3, K_OHM(3.9)) + VIDEO_RESISTANCE(4, K_OHM(3.9)) + VIDEO_RESISTANCE(5, K_OHM(3.9)) + VIDEO_RESISTANCE(6, K_OHM(3.9)) + //VIDEO_RESISTANCE(Video::HBLANK_PIN, K_OHM(0.0)) + VIDEO_ORIENTATION(ROTATE_90) + VIDEO_CONTRAST(4.0) + + // Values guessed based on screenshots. TODO: Make more accurate + // X, Y, W, H, R, G, B + VIDEO_OVERLAY( 15.570e-6, 0.0, 1.911e-6, -1.0, 0.80, 0.15, 0.05 ) // Red Bricks + VIDEO_OVERLAY( 17.481e-6, 0.0, 1.956e-6, -1.0, 0.95, 0.65, 0.05 ) // Amber Bricks + VIDEO_OVERLAY( 19.437e-6, 0.0, 1.956e-6, -1.0, 0.05, 0.65, 0.25 ) // Green Bricks + VIDEO_OVERLAY( 21.393e-6, 0.0, 1.955e-6, -1.0, 0.95, 0.95, 0.20 ) // Yellow Bricks + VIDEO_OVERLAY( 51.345e-6, 0.0, 1.956e-6, -1.0, 0.05, 0.65, 0.95 ) // Blue Paddle + + // TODO: Different overlays for cocktail cabinet +VIDEO_DESC_END + +static AUDIO_DESC( breakout ) + AUDIO_RESISTANCE(1, K_OHM(47.0)) + AUDIO_RESISTANCE(2, K_OHM(47.0)) + AUDIO_RESISTANCE(3, K_OHM(47.0)) + AUDIO_RESISTANCE(4, K_OHM(47.0)) + AUDIO_GAIN(3.0) +VIDEO_DESC_END +#endif + +static Mono9602Desc n8_desc(K_OHM(33.0), U_FARAD(100.0), K_OHM(5.6), P_FARAD(0.01)); // No capacitor on 2nd 9602, assume very low internal capacitance +static Mono9602Desc f3_desc(K_OHM(47.0), U_FARAD(1.0), K_OHM(47.0), U_FARAD(1.0)); + +static Mono9602Desc a7_desc(K_OHM(68.0), U_FARAD(1.0), K_OHM(22.0), U_FARAD(10.0)); +static Mono9602Desc a8_desc(K_OHM(27.0), U_FARAD(1.0), K_OHM(27.0), U_FARAD(1.0)); + +#if 0 +static Dipswitch53137Desc dipswitch1_desc("bonus_credit", "Bonus Credit", 3, "None", "100", "200", "300", "400", "500", "600", "700", "800"); +#endif + +//static DipswitchDesc dipswitch2_desc("cabinet_type", "Cabinet Type", 0, "Normal", "Cocktail"); +//static DipswitchDesc dipswitch3_desc("coinage", "Coinage", 0, "1 Coin / 1 Credit", "1 Coin / 2 Credits"); +//static DipswitchDesc dipswitch4_desc("ball_count", "Ball Count", 0, "3", "5"); + +CIRCUIT_LAYOUT( breakout ) +#if 0 + CHIP("S1", 53137, &dipswitch1_desc) + CHIP("S2", DIPSWITCH, &dipswitch2_desc) + CHIP("S3", DIPSWITCH, &dipswitch3_desc) + CHIP("S4", DIPSWITCH, &dipswitch4_desc) +#endif + SOLVER(Solver, 48000) + PARAM(Solver.ACCURACY, 1e-7) // works and is sufficient + //CHIP("CLOCK", CLOCK_14_318_MHZ) + MAINCLOCK(Y1, 14318000.0) + + ANALOG_INPUT(V5, 5) +#define VCC "V5", Q +#define GND "GND", Q + + //CHIP("Y1", CLOCK_14_318_MHZ) //Y1 + + CHIP_CAPACITOR(C32, &c32_desc) + CHIP_CAPACITOR(C36, &c36_desc) + CHIP_CAPACITOR(C37, &c37_desc) +#if 0 + CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc) +#endif + CHIP("A3", 7474) + CHIP("A4", 7408) + CHIP("A5", 7400) + CHIP("A6", 7474) + CHIP_9602_Mono(A7, &a7_desc) + CHIP_9602_Mono(A8, &a8_desc) + + CHIP_555_Astable(B2, &b2_555_desc) + CHIP("B3", 7402) + CHIP("B4", 9316) + CHIP("B5", 74193) + CHIP("B6", 7400) + CHIP("B7", 9316) + CHIP("B8", 9316) + CHIP("B9", 7408) + + CHIP("C2", 7400) + CHIP("C3", 7400) + CHIP("C4", 7486) + CHIP("C5", 7404) + CHIP("C6", 7486) + CHIP("C7", 9316) + CHIP("C8", 9316) + CHIP_555_Mono(C9, &c9_555_desc) + + CHIP("D2", 7432) + CHIP("D3", 7474) + CHIP("D4", 9316) + CHIP("D5", 7474) + CHIP("D6", 7408) + CHIP("D7", 7411) + CHIP("D8", 7400) +// CHIP("D9", 4016) //quad bilateral switch + + CHIP("E1", 7404) + CHIP("E2", 7486) + CHIP("E3", 7402) + CHIP("E4", 7432) + CHIP("E5", 7408) + CHIP("E6", 7474) + CHIP("E7", 7402) + CHIP("E8", 7474) + CHIP("E9", 7404) + + CHIP("F1", 9316) + CHIP("F2", 7411) + CHIP_9602_Mono(F3, &f3_desc) + CHIP("F4", 7474) + CHIP("F5", 7474) + CHIP("F6", 74193) + CHIP("F7", 74279) + CHIP("F8", 7474) + CHIP("F9", 7404) + + CHIP("H1", 7437) + CHIP("H2", 7408) + CHIP("H3", 7427) + CHIP("H4", 7400) + CHIP("H5", 9312) + CHIP("H6", 9310) + CHIP("H7", 7408) //sometimes looks like N7 on schematic + CHIP("H8", 7474) + CHIP("H9", 7474) + + CHIP("J1", 74175) + CHIP("J2", 7404) + CHIP("J3", 7402) + CHIP("J4", 9312) + CHIP("J5", 7448) + CHIP("J6", 9310) + CHIP("J7", 7420) + CHIP("J8", 74279) + CHIP("J9", 7410) + + CHIP("K1", 9316) + CHIP("K2", 7486) + CHIP("K3", 7430) + CHIP("K4", 7408) + CHIP("K5", 9312) + CHIP("K6", 9310) + CHIP("K7", 7486) + CHIP("K8", 7474) //TODO: one more than bom? + CHIP("K9", 74107) + + CHIP("L1", 9316) + CHIP("L2", 7486) + CHIP("L3", 82S16) //RAM + CHIP("L4", 7411) + CHIP("L5", 9312) + CHIP("L6", 9310) + CHIP("L7", 7486) + CHIP("L8", 74193) + CHIP("L9", 7400) //TODO: 1 more chip than on bom? + + CHIP("M1", 9316) + CHIP("M2", 7483) + CHIP("M3", 7486) + CHIP("M4", 7410) + CHIP("M5", 9312) + CHIP("M6", 9310) + CHIP("M8", 7427) + CHIP("M9", 7404) + + CHIP("N1", 9316) + CHIP("N2", 7483) + CHIP("N3", 7486) + CHIP("N4", 7411) + CHIP("N5", 9312) + CHIP("N6", 9310) + CHIP("N7", 7408) //sometimes looks like H7 on schematic + CHIP_9602_Mono(N8, &n8_desc) + CHIP("N9", 74192) + + //LM380 //speaker amplifier + //LM323 //regulator + +// CHIP("CREDIT_LIGHT1", LAMP) +// CHIP("CREDIT_LIGHT2", LAMP) +// CHIP("SERVE_LIGHT", LAMP) + +#if 0 + CHIP("PAD1", PADDLE1_HORIZONTAL_INPUT, &pad1_desc) + PADDLE_CONNECTION("PAD1", "C9") +#endif + + CHIP_LATCH(LATCH) + //CHIP("COIN1", COIN_INPUT) + CHIP_INPUT_ACTIVE_LOW(COIN1) + + //CHIP("COIN2", COIN_INPUT) + + //CHIP("START", START_INPUT) + CHIP_INPUT_ACTIVE_HIGH(START) + + //CHIP("SERVE", BUTTONS1_INPUT) + CHIP_INPUT_ACTIVE_LOW(SERVE) // Active low? + + + //TODO: coin2 and start 2 +#if 0 + VIDEO(breakout) + AUDIO(breakout) +#endif + +#ifdef DEBUG + CHIP("LOG1", VCD_LOG, &vcd_log_desc) +#endif + + //HSYNC and VSYNC + #define H1_d "L1", 14 + #define H2_d "L1", 13 + #define H4_d "L1", 12 + #define H8_d "L1", 11 + #define H8_n "J2", 2 + #define H16_d "K1", 14 + #define H16_n "J2", 6 + #define H32_d "K1", 13 + #define H32_n "J2", 4 + #define H64_d "K1", 12 + #define H128_d "K1", 11 + + #define V1_d "M1", 14 + #define V2_d "M1", 13 + #define V4_d "M1", 12 + #define V8_d "M1", 11 + #define V16_d "N1", 14 + #define V16_n "J2", 10 + #define V32_d "N1", 13 + #define V64_d "N1", 12 + #define V64I "H7", 11 + #define V64_n "M9", 10 + #define V128_d "N1", 11 + + #define H1 "L2", 8 + #define H2 "L2", 11 + #define H4 "L2", 3 + #define H8 "L2", 6 + #define H16 "K2", 8 + #define H32 "K2", 11 + #define H64 "K2", 3 + #define H128 "K2", 6 + + //#define V1 + #define V2 "M3", 3 + #define V4 "M3", 6 + #define V8 "M3", 11 + #define V16 "N3", 8 + #define V32 "N3", 3 + #define V64 "N3", 6 + #define V128 "N3", 11 + + #define HSYNC "J1", 2 + #define HSYNC_n "J1", 3 + #define VSYNC "J1", 7 + #define VSYNC_n "J1", 6 + #define PSYNC "J1", 11 + #define PSYNC_n "J1", 10 + #define BSYNC "J1", 15 + #define BSYNC_n "J1", 14 + + #define BALL "D7", 6 + #define BALL_DISPLAY "A4", 6 + #define PLAYFIELD "H4", 3 + #define SCORE "D3", 5 + #define VERT_TRIG_n "H1", 8 + + #define DICECLOCK "H1", 11 + #define SCLOCK "K1", 15 + #define CKBH "F1", 13 + + #define PAD_n "K3", 8 + #define PAD_EN_n "C2", 8 + + //#define P VCC + #define P "V5", Q + + #define COIN "L9", 6 + #define COIN1_n "F8", 5 + #define COIN2_n "H9", 5 + #define CREDIT_1_OR_2 "L9", 3 + #define CREDIT_1_OR_2_n "F9", 8 + #define CREDIT2 "F9", 6 + #define CREDIT2_n "M8", 8 + #define CR_START1 "E8", 5 + #define CR_START1_n "E8", 6 //Schematic shows E8.6 as positive CR_START1, but this can't be right? + #define CR_START2 "E8", 9 + #define CR_START2_n "E8", 8 + #define CSW1 "F9", 12 + #define CSW2 "F9", 2 + + #define P2_CONDITIONAL "H1", 3 + #define P2_CONDITIONAL_dash "H7", 8 + #define PLAYER_2 "B4", 14 + #define PLAYER_2_n "M9", 8 + + #define START_GAME "D8", 6 + #define START_GAME1_n "M9", 4 + #define START_GAME_n "M9", 6 + + #define BG1_n "K8", 9 + #define BG1 "K8", 8 + #define BG2_n "K8", 5 + #define BG2 "K8", 6 + + #define FREE_GAME_TONE "N7", 3 + #define BONUS_COIN "L9", 11 + + //#define Q "E9", 6 + #define LAT_Q "E9", 6 + #define Q_n "LATCH", 3 + #define SBD_n "D2", 11 + + #define PLAY_CP "D2", 8 + #define PLGM2_n "F7", 7 + #define VB_HIT_n "A5", 6 + + #define SERVE_n "SERVE", 1 + #define SERVE_WAIT "A3", 9 + #define SERVE_WAIT_n "A3", 8 + + #define BRICK_DISPLAY "E3", 1 + #define BRICK_HIT "E6", 5 + #define BRICK_HIT_n "E6", 6 + + //#define EGL "A4", 3 + #define EGL "C37" , 2 + #define EGL_n "C5", 2 + + #define RAM_PLAYER1 "E7", 4 + #define A1 "H6", 14 + #define B1 "H6", 13 + #define C1 "H6", 12 + #define D1 "H6", 11 + #define E1 "J6", 14 + #define F1 "J6", 13 + #define G1 "J6", 12 + #define H01 "J6", 11 + #define I1 "K6", 14 + #define J1 "K6", 13 + #define K1 "K6", 12 + #define L1 "K6", 11 + #define A2 "N6", 14 + #define B2 "N6", 13 + #define C2 "N6", 12 + #define D2 "N6", 11 + #define E2 "M6", 14 + #define F2 "M6", 13 + #define G2 "M6", 12 + #define H02 "M6", 11 //TODO: better name for these signals + #define I2 "L6", 14 + #define J2 "L6", 13 + #define K2 "L6", 12 + #define L2 "L6", 11 + + #define CX0 "C6", 11 + #define CX1 "C6", 6 + #define X0 "C5", 10 + #define X1 "B6", 3 + #define X2 "C6", 3 + #define Y0 "B6", 11 + #define Y1 "B6", 6 + #define Y2 "A6", 6 + #define DN "C4", 3 + #define PC "D4", 12 + #define PD "D4", 11 + #define SU_n "D5", 8 + #define V_SLOW "C5", 8 + + #define PLNR "E3", 4 + #define SCI_n "H4", 6 + #define SFL_n "E9", 12 //score flash + #define TOP_n "E9", 2 + + #define BP_HIT_n "A5", 8 + #define BTB_HIT_n "C3", 3 + + #define SET_BRICKS "D3", 9 + #define SET_BRICKS_n "D3", 8 + + #define BALL_A "B4", 13 + #define BALL_B "B4", 12 + #define BALL_C "B4", 11 + + #define FPD1 "F3", 10 + #define FPD1_n "F3", 9 + #define FPD2 "F3", 6 + #define FPD2_n "F3", 7 + + #define COUNT "N7", 11 + #define COUNT_1 "N7", 8 + #define COUNT_2 "N7", 6 + + #define ATTRACT "E6", 8 + #define ATTRACT_n "E6", 9 + + #define BRICK_SOUND "B8", 14 + #define P_HIT_SOUND "B7", 12 + #define VB_HIT_SOUND "B7", 11 + + #define LH_SIDE "J3", 13 + #define RH_SIDE "H2", 3 + #define TOP_BOUND "K4", 6 + +// CONNECTION(CREDIT_1_OR_2, "CREDIT_LIGHT1", 1) +// CONNECTION(CREDIT2, "CREDIT_LIGHT2", 1) +// CONNECTION(SERVE_WAIT_n, "SERVE_LIGHT", 1) + + //Audio + CONNECTION("M9", 2, "F6", 5) + CONNECTION("M9", 2, "F7", 15) + CONNECTION("F6", 13, "F7", 14) + CONNECTION(START_GAME_n, "F6", 11) + CONNECTION(P, "F6", 15) + CONNECTION(P, "F6", 1) + CONNECTION(P, "F6", 10) + CONNECTION(P, "F6", 9) + CONNECTION(GND, "F6", 14) + CONNECTION("F7", 13, "J9", 2) + CONNECTION(VSYNC, "J9", 1) + CONNECTION("A7", 9, "J9", 13) + CONNECTION("J9", 12, "F6", 4) + CONNECTION("J9", 12, "A7", 11) + CONNECTION(GND, "A7", 12) + CONNECTION(ATTRACT_n, "A7", 13) + CONNECTION("J9", 12, "A8", 11) + CONNECTION(GND, "A8", 12) + CONNECTION(ATTRACT_n, "A8", 13) + CONNECTION(VB_HIT_n, "A7", 5) + CONNECTION(GND, "A7", 4) + CONNECTION(ATTRACT_n, "A7", 3) + CONNECTION(BP_HIT_n, "A8", 5) + CONNECTION(GND, "A8", 4) + CONNECTION(ATTRACT_n, "A8", 3) + CONNECTION("A8", 6, "B9", 13) + CONNECTION(P_HIT_SOUND, "B9", 12) + CONNECTION("A8", 10, "B9", 10) + CONNECTION(BRICK_SOUND, "B9", 9) + CONNECTION("A7", 6, "B9", 4) + CONNECTION(VB_HIT_SOUND, "B9", 5) + + CONNECTION(GND, "S1", 1) + CONNECTION(P, "S1", 2) + CONNECTION(GND, "S1", 4) + CONNECTION(P, "S1", 3) + CONNECTION(GND, "S1", 12) + CONNECTION(P, "S1", 11) + CONNECTION(GND, "S1", 9) + CONNECTION(P, "S1", 10) + + //Free Game Selector + CONNECTION(I1, "K7", 2) + CONNECTION("S1", 15, "K7", 1) + CONNECTION(J1, "K7", 12) + CONNECTION("S1", 14, "K7", 13) + CONNECTION(K1, "K7", 5) + CONNECTION("S1", 6, "K7", 4) + CONNECTION(L1, "K7", 9) + CONNECTION("S1", 7, "K7", 10) + + CONNECTION(I2, "L7", 2) + CONNECTION("S1", 15, "L7", 1) + CONNECTION(J2, "L7", 12) + CONNECTION("S1", 14, "L7", 13) + CONNECTION(K2, "L7", 5) + CONNECTION("S1", 6, "L7", 4) + CONNECTION(L2, "L7", 9) + CONNECTION("S1", 7, "L7", 10) + + + CONNECTION("K7", 3, "J7", 13) + CONNECTION("K7", 11, "J7", 12) + CONNECTION("K7", 6, "J7", 10) + CONNECTION("K7", 8, "J7", 9) + + CONNECTION("L7", 3, "J7", 1) + CONNECTION("L7", 11, "J7", 2) + CONNECTION("L7", 6, "J7", 4) + CONNECTION("L7", 8, "J7", 5) + + CONNECTION(START_GAME1_n, "J8", 12) + CONNECTION(BG1_n, "J8", 11) + CONNECTION("J7", 8, "J8", 10) + + CONNECTION(START_GAME1_n, "J8", 2) + CONNECTION(BG2_n, "J8", 3) + CONNECTION("J7", 6, "J8", 1) + + CONNECTION("J8", 9, "K8", 12) + CONNECTION(EGL, "K8", 11) + CONNECTION(P, "K8", 13) + CONNECTION(LAT_Q, "K8", 10) + + CONNECTION("J8", 4, "K8", 2) + CONNECTION(EGL, "K8", 3) + CONNECTION(P, "K8", 1) + CONNECTION(LAT_Q, "K8", 4) + + CONNECTION(P, "K9", 8) + CONNECTION("J8", 9, "K9", 9) + CONNECTION(GND, "K9", 11) + CONNECTION(HSYNC_n, "K9", 10) + + CONNECTION(P, "K9", 1) + CONNECTION("J8", 4, "K9", 12) + CONNECTION(GND, "K9", 4) + CONNECTION(HSYNC_n, "K9", 13) + + CONNECTION("K9", 6, "L9", 12) + CONNECTION("K9", 2, "L9", 13) + + CONNECTION(P, "N8", 5) + CONNECTION(BONUS_COIN, "N8", 4) + CONNECTION(ATTRACT_n, "N8", 3) + + CONNECTION(V4_d, "N7", 2) + CONNECTION("N8", 6, "N7", 1) + // + CONNECTION(GND, "M2", 13) + CONNECTION(V1_d, "M2", 10) + CONNECTION(V2_d, "M2", 8) + CONNECTION(V4_d, "M2", 3) + CONNECTION(V8_d, "M2", 1) + CONNECTION(GND, "M2", 11) + CONNECTION(P2_CONDITIONAL, "M2", 7) + CONNECTION(GND, "M2", 4) + CONNECTION(GND, "M2", 16) + + CONNECTION("M2", 14, "N2", 13) + CONNECTION(V16_d, "N2", 10) + CONNECTION(V32_d, "N2", 8) + CONNECTION(V64_d, "N2", 3) + CONNECTION(V128_d, "N2", 1) + CONNECTION(GND, "N2", 11) + CONNECTION(P2_CONDITIONAL, "N2", 7) + CONNECTION(GND, "N2", 4) + CONNECTION(GND, "N2", 16) + + CONNECTION("M2", 6, "M3", 2) + CONNECTION(P2_CONDITIONAL, "M3", 1) + CONNECTION("M2", 2, "M3", 5) + CONNECTION(P2_CONDITIONAL, "M3", 4) + CONNECTION("M2", 15, "M3", 12) + CONNECTION(P2_CONDITIONAL, "M3", 13) + + CONNECTION(P2_CONDITIONAL, "N3", 10) + CONNECTION("N2", 9, "N3", 9) + CONNECTION(P2_CONDITIONAL, "N3", 1) + CONNECTION("N2", 6, "N3", 2) + CONNECTION(P2_CONDITIONAL, "N3", 4) + CONNECTION("N2", 2, "N3", 5) + CONNECTION(P2_CONDITIONAL, "N3", 13) + CONNECTION("N2", 15, "N3", 12) + + CONNECTION(H1_d, "L2", 9) + CONNECTION(P2_CONDITIONAL, "L2", 10) + CONNECTION(H2_d, "L2", 12) + CONNECTION(P2_CONDITIONAL, "L2", 13) + CONNECTION(H4_d, "L2", 2) + CONNECTION(P2_CONDITIONAL, "L2", 1) + CONNECTION(H8_d, "L2", 5) + CONNECTION(P2_CONDITIONAL, "L2", 4) + + CONNECTION(P2_CONDITIONAL, "K2", 10) + CONNECTION(H16_d, "K2", 9) + CONNECTION(P2_CONDITIONAL, "K2", 13) + CONNECTION(H32_d, "K2", 12) + CONNECTION(P2_CONDITIONAL, "K2", 1) + CONNECTION(H64_d, "K2", 2) + CONNECTION(P2_CONDITIONAL, "K2", 4) + CONNECTION(H128_d, "K2", 5) + + + CONNECTION(V64, "M9", 11) + CONNECTION(H16, "J2", 5) + CONNECTION(H32, "J2", 3) + CONNECTION(V16, "J2", 11) + CONNECTION(H8, "J2", 1) + + CONNECTION(DICECLOCK, "J1", 9) + CONNECTION(SCLOCK, "J1", 4) + CONNECTION("N4", 6, "J1", 5) + CONNECTION(PAD_n, "J1", 12) + CONNECTION(BALL_DISPLAY, "J1", 13) + CONNECTION(P, "J1", 1) + + CONNECTION(P, "K1", 1) + CONNECTION(P, "K1", 3) + CONNECTION(P, "K1", 4) + CONNECTION(P, "K1", 5) + CONNECTION(P, "K1", 6) + CONNECTION(P, "K1", 9) + CONNECTION(P, "K1", 10) + CONNECTION(DICECLOCK, "K1", 2) + CONNECTION("L1", 15, "K1", 7) + + CONNECTION(P, "L1", 1) + CONNECTION(P, "L1", 3) + CONNECTION(GND, "L1", 4) + CONNECTION(P, "L1", 5) + CONNECTION(GND, "L1", 6) + CONNECTION(VERT_TRIG_n, "L1", 9) + CONNECTION(P, "L1", 10) + CONNECTION(DICECLOCK, "L1", 2) + CONNECTION(P, "L1", 7) + + CONNECTION(P, "N1", 1) + CONNECTION(P, "N1", 10) + CONNECTION(P, "N1", 3) + CONNECTION(P, "N1", 4) + CONNECTION(P, "N1", 5) + CONNECTION(P, "N1", 6) + CONNECTION(P, "N1", 9) + CONNECTION(DICECLOCK, "N1", 2) + CONNECTION("H2", 6, "N1", 7) + + CONNECTION("M1", 15, "H2", 5) + CONNECTION("L1", 15, "H2", 4) + + CONNECTION(V128_d, "N4", 5) + CONNECTION(V64_d, "N4", 3) + CONNECTION(V32_d, "N4", 4) + CONNECTION("N4", 6, "H1", 10) + CONNECTION(VSYNC_n, "H1", 9) + + CONNECTION(P, "M1", 1) + CONNECTION(GND, "M1", 3) + CONNECTION(GND, "M1", 4) + CONNECTION(P, "M1", 5) + CONNECTION(GND, "M1", 6) + CONNECTION(VERT_TRIG_n, "M1", 9) + CONNECTION(DICECLOCK, "M1", 2) + CONNECTION("L1", 15, "M1", 7) + CONNECTION("K1", 15, "M1", 10) + + + //9312 circuit + CONNECTION(PLAYER_2, "M9", 9) + CONNECTION(BALL_A, "C5", 5) + CONNECTION(BALL_A, "C4", 13) + CONNECTION(BALL_B, "C4", 12) + CONNECTION(BALL_A, "A4", 13) + CONNECTION(BALL_B, "A4", 12) + CONNECTION(BALL_C, "C4", 10) + CONNECTION("A4", 11, "C4", 9) + + CONNECTION(A2, "N5", 1) + CONNECTION(E2, "N5", 2) + CONNECTION(I2, "N5", 3) + CONNECTION("C5", 6, "N5", 4) + CONNECTION(A1, "N5", 5) + CONNECTION(E1, "N5", 6) + CONNECTION(I1, "N5", 7) + CONNECTION(PLAYER_2_n, "N5", 9) + CONNECTION(H32_n, "N5", 10) + CONNECTION(V16, "N5", 11) + CONNECTION(V64, "N5", 12) + CONNECTION(V128, "N5", 13) + + CONNECTION(B2, "M5", 1) + CONNECTION(F2, "M5", 2) + CONNECTION(J2, "M5", 3) + CONNECTION("C4", 11, "M5", 4) + CONNECTION(B1, "M5", 5) + CONNECTION(F1, "M5", 6) + CONNECTION(J1, "M5", 7) + CONNECTION(PLAYER_2, "M5", 9) + CONNECTION(H32_n, "M5", 10) + CONNECTION(V16, "M5", 11) + CONNECTION(V64, "M5", 12) + CONNECTION(V128, "M5", 13) + + CONNECTION(C2, "L5", 1) + CONNECTION(G2, "L5", 2) + CONNECTION(K2, "L5", 3) + CONNECTION("C4", 8, "L5", 4) + CONNECTION(C1, "L5", 5) + CONNECTION(G1, "L5", 6) + CONNECTION(K1, "L5", 7) + CONNECTION(GND, "L5", 9) + CONNECTION(H32_n, "L5", 10) + CONNECTION(V16, "L5", 11) + CONNECTION(V64, "L5", 12) + CONNECTION(V128, "L5", 13) + + CONNECTION(D2, "K5", 1) + CONNECTION(H02, "K5", 2) + CONNECTION(L2, "K5", 3) + CONNECTION(GND, "K5", 4) + CONNECTION(D1, "K5", 5) + CONNECTION(H01, "K5", 6) + CONNECTION(L1, "K5", 7) + CONNECTION(GND, "K5", 9) + CONNECTION(H32_n, "K5", 10) + CONNECTION(V16, "K5", 11) + CONNECTION(V64, "K5", 12) + CONNECTION(V128, "K5", 13) + + CONNECTION(P, "J5", 4) + CONNECTION(P, "J5", 3) + CONNECTION("N5", 15, "J5", 7) + CONNECTION("M5", 15, "J5", 1) + CONNECTION("L5", 15, "J5", 2) + CONNECTION("K5", 15, "J5", 6) + CONNECTION(H32, "J5", 5) + + CONNECTION("J5", 13, "H5", 1) + CONNECTION(GND, "H5", 2) + CONNECTION(GND, "H5", 3) + CONNECTION("J5", 14, "H5", 4) + CONNECTION(GND, "H5", 5) + CONNECTION(GND, "H5", 6) + CONNECTION("J5", 10, "H5", 7) + CONNECTION(GND, "H5", 9) + + CONNECTION(V4, "K4", 12) + CONNECTION(V8, "K4", 13) + + CONNECTION("K4", 11, "H5", 10) + CONNECTION(H2, "H5", 11) + CONNECTION(H4, "H5", 12) + CONNECTION(H8, "H5", 13) + + CONNECTION(H2, "L4", 3) + CONNECTION(H4, "L4", 5) + CONNECTION(H8, "L4", 4) + + CONNECTION("J5", 12 , "J4", 1) + CONNECTION("J5", 11, "J4", 2) + CONNECTION(GND, "J4", 3) + CONNECTION(GND, "J4", 4) + CONNECTION("J5", 15, "J4", 5) + CONNECTION("J5", 9, "J4", 6) + CONNECTION(GND, "J4", 7) + CONNECTION(GND, "J4", 9) + CONNECTION("L4", 6, "J4", 10) + CONNECTION(H8, "J4", 11) + CONNECTION(V4, "J4", 12) + CONNECTION(V8, "J4", 13) + + CONNECTION("H5", 14, "H4", 13) + CONNECTION("J4", 14, "H4", 12) + + //PADDLES + CONNECTION(ATTRACT_n, "B2", 4) + + CONNECTION("B2", 3, "E9", 13) + CONNECTION(PLAYER_2_n, "M3", 9) + CONNECTION(V128, "M3", 10) + CONNECTION(H64, "J3", 8) + CONNECTION(H128, "J3", 9) + CONNECTION(V32, "E3", 5) + CONNECTION(V16_n, "E3", 6) + + CONNECTION(SFL_n, "M8", 1) + CONNECTION("M3", 8, "M8", 2) + CONNECTION(PLNR, "M8", 13) + CONNECTION("J3", 10, "E9", 1) + CONNECTION(V64, "E2", 5) + CONNECTION(V32, "E2", 4) + CONNECTION(PLNR, "E2", 10) + CONNECTION(H16, "E2", 9) + + CONNECTION("M8", 12, "M8", 3) + CONNECTION(TOP_n, "M8", 4) + CONNECTION(TOP_n, "M8", 5) + CONNECTION("H4", 11, "F2", 11) + CONNECTION("E2", 6, "F2", 10) + CONNECTION("E2", 8, "F2", 9) + + CONNECTION("M8", 6, "H4", 5) + CONNECTION("F2", 8, "H4", 4) + + CONNECTION(PAD_EN_n, "PAD_EN_BUF", 1) + + CONNECTION("PAD_EN_BUF", 2, "C9", 4) + CONNECTION("PAD_EN_BUF", 2, "C9", 2) + CONNECTION(BTB_HIT_n, "C5", 3) + CONNECTION(P, "F5", 10) + CONNECTION(P, "F5", 12) + CONNECTION("C5", 4, "F5", 11) + CONNECTION(SERVE_WAIT_n, "F5", 13) + CONNECTION(H64, "E5", 13) + CONNECTION("F5", 9, "E5", 12) + CONNECTION(H128, "E5", 10) + CONNECTION("F5", 8, "E5", 9) + CONNECTION("E5", 11, "E4", 12) + CONNECTION("E5", 8, "E4", 13) + CONNECTION("E4", 11, "D4", 2) + CONNECTION(P, "D4", 3) + CONNECTION(P, "D4", 4) + CONNECTION(P, "D4", 5) + CONNECTION(P, "D4", 6) + CONNECTION(P, "D4", 9) + CONNECTION(P, "D4", 10) + CONNECTION("C3", 11, "D4", 7) + CONNECTION(VSYNC_n, "D4", 1) + + CONNECTION("D4", 15, "E4", 10) + CONNECTION("H7", 6, "E4", 9) + CONNECTION("C9", 3, "H7", 5) + CONNECTION(PAD_EN_n, "H7", 4) + CONNECTION("E4", 8, "C3", 12) + CONNECTION(ATTRACT_n, "C3", 13) + CONNECTION(H8, "J3", 2) + CONNECTION(H32, "J3", 3) + + CONNECTION("C3", 11, "K3", 12) + CONNECTION(H128, "K3", 5) + CONNECTION(H64, "K3", 6) + CONNECTION(H16, "K3", 11) + CONNECTION(H4, "K3", 4) + CONNECTION("J3", 1, "K3", 1) + CONNECTION(P, "K3", 3) + CONNECTION(P, "K3", 2) + + CONNECTION(V16_d, "D7", 1) + CONNECTION(V64_d, "D7", 13) + CONNECTION(V128_d, "D7", 2) + CONNECTION("D7", 12, "H1", 4) + CONNECTION(V8_d, "H1", 5) + CONNECTION("H1", 6, "C2", 4) + CONNECTION("H1", 6, "C2", 5) + CONNECTION(V32_d, "J2", 9) + CONNECTION("J2", 8, "C2", 10) + CONNECTION("C2", 6, "C2", 9) + + + //SCORE + CONNECTION(SCI_n, "D3", 4) + CONNECTION(GND, "D3", 2) + CONNECTION(GND, "D3", 3) + CONNECTION(GND, "D3", 1) + + //PLAYER2_CONDITIONAL + CONNECTION(PLAYER_2, "H7", 10) + CONNECTION(GND, "S2", 1) + CONNECTION(P, "S2", 2) + CONNECTION("S2", 3, "H7", 9) + + //A-L 1 and 2 + CONNECTION(SET_BRICKS_n, "B3", 2) + CONNECTION(H2, "B3", 3) + CONNECTION("B3", 1, "E7", 6) + CONNECTION(PLAYER_2, "E7", 5) + CONNECTION(P, "N6", 9) + CONNECTION(P, "M6", 9) + CONNECTION(P, "L6", 9) + CONNECTION(P, "H6", 9) + CONNECTION(P, "J6", 9) + CONNECTION(P, "K6", 9) + + CONNECTION(P, "N6", 10) + CONNECTION(PLAYER_2, "N6", 7) + CONNECTION(COUNT_2, "N6", 2) + CONNECTION(START_GAME_n, "N6", 1) + + CONNECTION("N6", 15, "M6", 10) + CONNECTION(PLAYER_2, "M6", 7) + CONNECTION(COUNT_2, "M6", 2) + CONNECTION(START_GAME_n, "M6", 1) + + CONNECTION("M6", 15, "L6", 10) + CONNECTION(PLAYER_2, "L6", 7) + CONNECTION(COUNT_2, "L6", 2) + CONNECTION(START_GAME_n, "L6", 1) + + CONNECTION(P, "H6", 10) + CONNECTION(RAM_PLAYER1, "H6", 7) + CONNECTION(COUNT_1, "H6", 2) + CONNECTION(START_GAME_n, "H6", 1) + + CONNECTION("H6", 15, "J6", 10) + CONNECTION(RAM_PLAYER1, "J6", 7) + CONNECTION(COUNT_1, "J6", 2) + CONNECTION(START_GAME_n, "J6", 1) + + CONNECTION("J6", 15, "K6", 10) + CONNECTION(RAM_PLAYER1, "K6", 7) + CONNECTION(COUNT_1, "K6", 2) + CONNECTION(START_GAME_n, "K6", 1) + + + //CX0 and CX1 + CONNECTION(BRICK_HIT, "H2", 9) + CONNECTION(H16_n, "H2", 10) + CONNECTION(P, "D5", 10) + CONNECTION(P, "D5", 12) + CONNECTION("H2", 8, "D5", 11) + CONNECTION(SERVE_WAIT_n, "D5", 13) + CONNECTION(X0, "C6", 13) + CONNECTION("D5", 9, "C6", 12) + CONNECTION("D5", 9, "D6", 12) + CONNECTION(DN, "D6", 13) + CONNECTION("D6", 11, "C6", 4) + CONNECTION(X1, "C6", 5) + + //COUNT1 and COUNT2 + CONNECTION(P, "N8", 11) + CONNECTION(BRICK_HIT, "N8", 12) + CONNECTION(ATTRACT_n, "N8", 13) + CONNECTION("N8", 9, "N9", 11) + CONNECTION(P, "N9", 15) + CONNECTION(P, "N9", 5) + + CONNECTION(COUNT, "N9", 4) + CONNECTION(START_GAME, "N9", 14) + CONNECTION(H8_n, "N9", 1) + CONNECTION(H16_n, "N9", 10) + CONNECTION(GND, "N9", 9) + + CONNECTION("N9", 13, "N7", 13) + CONNECTION(SCLOCK, "N7", 12) + + CONNECTION(PLAYER_2, "N7", 5) + CONNECTION(COUNT, "N7", 4) + + CONNECTION(COUNT, "M9", 1) + CONNECTION(COUNT, "N7", 10) + CONNECTION(RAM_PLAYER1, "N7", 9) + + + //Ball Logic + CONNECTION(P, "C7", 1) + CONNECTION(P, "C7", 10) + CONNECTION(P, "C7", 7) + CONNECTION(CX0, "C7", 3) + CONNECTION(CX1, "C7", 4) + CONNECTION(X2, "C7", 5) + CONNECTION(GND, "C7", 6) + CONNECTION("D8", 8, "C7", 9) + CONNECTION("C7", 15, "C8", 7) + CONNECTION("C7", 11, "C8", 10) + CONNECTION("C7", 12, "D7", 10) + CONNECTION("C7", 13, "D7", 11) + CONNECTION(DICECLOCK, "C7", 2) + + CONNECTION(P, "C8", 1) + CONNECTION(P, "C8", 3) + CONNECTION(P, "C8", 4) + CONNECTION(P, "C8", 5) + CONNECTION(P, "C8", 6) + CONNECTION(P, "C8", 9) + CONNECTION(DICECLOCK, "C8", 2) + CONNECTION("C8", 15, "B7", 7) + CONNECTION("C7", 15, "B7", 10) + + CONNECTION(P, "B7", 1) + CONNECTION(Y0, "B7", 3) + CONNECTION(Y1, "B7", 4) + CONNECTION(Y2, "B7", 5) + CONNECTION(GND, "B7", 6) + CONNECTION("D8", 8, "B7", 9) + CONNECTION(DICECLOCK, "B7", 2) + CONNECTION("B7", 15, "B8", 7) + + CONNECTION(VB_HIT_SOUND, "D7", 9) + + CONNECTION(P, "B8", 1) + CONNECTION(P, "B8", 3) + CONNECTION(P, "B8", 4) + CONNECTION(P, "B8", 5) + CONNECTION(P, "B8", 6) + CONNECTION(P, "B8", 9) + CONNECTION("C8", 15, "B8", 10) + CONNECTION(DICECLOCK, "B8", 2) + + CONNECTION("B8", 15, "D8", 10) + CONNECTION("B7", 15, "D8", 9) + + CONNECTION("D7", 8, "D7", 5) + CONNECTION(P_HIT_SOUND, "D7", 4) + CONNECTION("B8", 15, "D7", 3) + + //Clock Generator + CONNECTION(CKBH, "H1", 12) + CONNECTION("F1", 14, "H1", 13) + CONNECTION("F1", 15, "E1", 5) + + CONNECTION(P, "F1", 1) + CONNECTION(P, "F1", 7) + CONNECTION(P, "F1", 10) + CONNECTION(GND, "F1", 3) + CONNECTION(P, "F1", 4) + CONNECTION(GND, "F1", 5) + CONNECTION(GND, "F1", 6) + CONNECTION("E1", 6, "F1", 9) + CONNECTION("Y1", 1, "F1", 2) + + // RH and LH Sides + CONNECTION(V128, "N4", 1) + CONNECTION(V64, "N4", 2) + CONNECTION(V16, "N4", 13) + CONNECTION("N4", 12, "N4", 11) + CONNECTION(V8, "N4", 10) + CONNECTION(V4, "N4", 9) + CONNECTION("N4", 8, "H2", 2) + CONNECTION(V32, "H2", 1) + CONNECTION("N4", 8, "J2", 13) + CONNECTION("J2", 12, "J3", 11) + CONNECTION(V32, "J3", 12) + + // Top Bound + CONNECTION(H128, "H3", 4) + CONNECTION(H64, "H3", 5) + CONNECTION(H32, "H3", 3) + CONNECTION("H3", 6, "L4", 9) + CONNECTION(H16, "L4", 10) + CONNECTION(H8, "L4", 11) + CONNECTION("L4", 8, "K4", 5) + CONNECTION(VSYNC_n, "K4", 4) + + //Cabinet type + + // Coin Circuit + CONNECTION("COIN1", 1, "F9", 13) + + CONNECTION(CSW1, "F9", 11) + //CONNECTION("F9", 10, "F9", 13) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha + + CONNECTION(V64, "H7", 12) + CONNECTION(V64, "H7", 13) + + CONNECTION(CSW1, "F8", 10) + CONNECTION("F9", 10, "F8", 12) + CONNECTION(V64I, "F8", 11) + CONNECTION(P, "F8", 13) + CONNECTION(P, "F8", 1) + CONNECTION(V64I, "F8", 3) + CONNECTION("F8", 9, "F8", 2) + CONNECTION(CSW1, "F8", 4) + + CONNECTION("F8", 6, "H8", 12) + CONNECTION(P, "H8", 10) + CONNECTION(V16_d, "H8", 11) + CONNECTION(P, "H8", 13) + CONNECTION("H8", 9, "J8", 15) + CONNECTION("H8", 9, "J9", 9) + CONNECTION(V16_d, "J8", 14) + CONNECTION("J8", 13, "J9", 10) + CONNECTION(P, "S3", 1) + CONNECTION(V4_d, "S3", 2) + CONNECTION("S3", 3, "J9", 11) + + CONNECTION("J9", 8, "L9", 5) + CONNECTION("J9", 6, "L9", 4) + + //COIN2 circuit + //CONNECTION("COIN2", 1, "F9", 1) + CONNECTION(GND, "F9", 1) //TODO: coin2 not implemented + + CONNECTION(CSW2, "F9", 3) + CONNECTION(CSW2, "H9", 10) + CONNECTION("F9", 4, "H9", 12) + CONNECTION(V64_n, "H9", 11) + CONNECTION(V64_n, "H9", 3) + CONNECTION(P, "H9", 13) + CONNECTION("H9", 9, "H9", 2) + CONNECTION(CSW2, "H9", 4) + CONNECTION(P, "H9", 1) + + CONNECTION(P, "H8", 4) + CONNECTION("H9", 6, "H8", 2) + CONNECTION(V16_d, "H8", 3) + CONNECTION(P, "H8", 1) + CONNECTION("H8", 5, "J8", 6) + CONNECTION(V16_d, "J8", 5) + CONNECTION(P, "J9", 3) + CONNECTION("H8", 5, "J9", 5) + CONNECTION("J8", 7, "J9", 4) + + CONNECTION(P2_CONDITIONAL_dash, "E9", 9) + CONNECTION("E9", 8, "H1", 1) + CONNECTION("E9", 8, "H1", 2) + + //Start2 Input + CONNECTION("START", 2, "E9", 11) + CONNECTION("E9", 10, "E8", 12) + CONNECTION(P, "E8", 10) + CONNECTION(V64I, "E8", 11) + + CONNECTION(V128_d, "F7", 2) + CONNECTION(V128_d, "F7", 3) + CONNECTION(CREDIT2_n, "F7", 1) + CONNECTION(ATTRACT_n, "E7", 12) + CONNECTION("F7", 4, "E7", 11) + CONNECTION("E7", 13, "E8", 13) + + //Start1 Input + CONNECTION("START", 1, "E9", 3) + CONNECTION("E9", 4, "E8", 2) + CONNECTION(P, "E8", 4) + CONNECTION(V64_d, "E8", 3) + + + CONNECTION(CREDIT_1_OR_2_n, "E7", 2) + CONNECTION(ATTRACT_n, "E7", 3) + CONNECTION("E7", 1, "E8", 1) + + CONNECTION(CR_START1_n, "D8", 4) // Schematic shows CR_START1 ? + CONNECTION(CR_START2_n, "D8", 5) + + + CONNECTION(START_GAME, "M9", 3) + CONNECTION(START_GAME, "M9", 5) + + CONNECTION(V32, "D6", 4) + CONNECTION(ATTRACT, "D6", 5) + CONNECTION(P, "E6", 10) + CONNECTION(START_GAME, "E6", 12) + CONNECTION("D6", 6, "E6", 11) + CONNECTION("D6", 3, "E6", 13) + + //TODO: hows this whole latch stuff work? what about Q_n going to COIN1_n and COIN2_n + CONNECTION(CREDIT_1_OR_2_n, "D8", 13) + CONNECTION(EGL, "D8", 12) + CONNECTION("LATCH", 1, "D8", 11) //set + CONNECTION("LATCH", 2, COIN1_n) //reset + //CONNECTION("LATCH", 3, COIN2_n) //set //TODO: coin2 here + CONNECTION( "LATCH", 3, "E9", 5) //output + + + CONNECTION(LAT_Q, "D6", 1) + CONNECTION(EGL_n, "D6", 2) + + //Serve + CONNECTION(H64, "J3", 6) + CONNECTION(H32, "J3", 5) + CONNECTION("J3", 4, "L4", 13) + CONNECTION(H128, "L4", 2) + CONNECTION(H16, "L4", 1) + + CONNECTION(BALL_DISPLAY, "H2", 13) + CONNECTION(H128, "H2", 12) + CONNECTION("H2", 11, "C3", 9) + CONNECTION(HSYNC, "C3", 10) + CONNECTION("C3", 8, "B3", 5) + CONNECTION(H8_d, "B3", 6) + CONNECTION("B3", 4, "C3", 4) + CONNECTION(H4, "C3", 5) + CONNECTION("C3", 6, "A4", 9) + CONNECTION(START_GAME1_n, "A4", 10) + + CONNECTION(SERVE_WAIT_n, "D2", 13) + + CONNECTION(SERVE_n, "D2", 12) + CONNECTION(SERVE_n, "A3", 4) + CONNECTION(P, "A3", 2) + CONNECTION(ATTRACT, "A3", 3) + CONNECTION(SERVE_WAIT, "A3", 1) + + CONNECTION(BALL, "E1", 13) + CONNECTION("E1", 12, "B3", 8) + CONNECTION("A3", 6, "B3", 9) + CONNECTION("B3", 10, "B3", 11) + CONNECTION(SERVE_WAIT_n, "B3", 12) + CONNECTION("B3", 13, "A3", 12) + CONNECTION("A4", 8, "A3", 10) + CONNECTION("L4", 12, "A3", 11) + CONNECTION(P, "A3", 13) + + //Set Bricks + CONNECTION(P, "D3", 10) + CONNECTION(P, "D3", 12) + CONNECTION(START_GAME, "D3", 11) + CONNECTION(SERVE_n, "D3", 13) + + //Playfield + CONNECTION(LH_SIDE, "H3", 1) + CONNECTION(TOP_BOUND, "H3", 13) + CONNECTION(RH_SIDE, "H3", 2) + CONNECTION("H3", 12, "H4", 2) + CONNECTION("E1", 2, "C36", 1) + CONNECTION("C36", 2, "H4", 1) + + CONNECTION(BALL_DISPLAY, "A5", 10) + CONNECTION(PSYNC, "A5", 9) + CONNECTION(BSYNC, "C3", 2) + CONNECTION(TOP_BOUND, "C3", 1) + + CONNECTION(PC, "C4", 4) + CONNECTION(PD, "C4", 5) + CONNECTION(BP_HIT_n, "C5", 13) + CONNECTION(PD, "A5", 1) + CONNECTION("C5", 12, "A5", 2) + CONNECTION(BSYNC, "A5", 5) + CONNECTION(VSYNC, "A5", 4) + + CONNECTION("C5", 12, "A5", 13) + CONNECTION("A5", 3, "A5", 12) + + CONNECTION(BRICK_HIT, "D5", 3) + CONNECTION("E5", 3, "D5", 1) + CONNECTION("D5", 6, "D5", 2) + CONNECTION(BP_HIT_n, "D5", 4) + + CONNECTION(P, "A6", 10) + CONNECTION("C4", 6, "A6", 12) + CONNECTION(BP_HIT_n, "A6", 11) + CONNECTION(P, "A6", 13) + + CONNECTION("A5", 3, "A6", 4) + CONNECTION(V16_d, "A6", 2) + CONNECTION(VB_HIT_n, "A6", 3) + CONNECTION("A5", 11, "A6", 1) + + CONNECTION(P2_CONDITIONAL, "C6", 1) + CONNECTION("D5", 5, "C6", 2) + CONNECTION("D5", 6, "C4", 2) + CONNECTION(P2_CONDITIONAL, "C4", 1) + + CONNECTION(V_SLOW, "B6", 12) + CONNECTION("A6", 8, "B6", 13) + CONNECTION(V_SLOW, "C6", 10) + CONNECTION("A6", 5, "C6", 9) + + CONNECTION(Y0, "B6", 4) + CONNECTION("C6", 8, "B6", 5) + + CONNECTION(X2, "D6", 10) + CONNECTION("B6", 8, "D6", 9) + CONNECTION("B5", 7, "B6", 9) + CONNECTION("B5", 6, "B6", 10) + CONNECTION(X0, "B6", 1) + CONNECTION(X2, "B6", 2) + + CONNECTION("B5", 6, "C5", 11) + CONNECTION("B5", 7, "C5", 9) + + CONNECTION(SU_n, "B5", 11) + CONNECTION(P, "B5", 15) + CONNECTION(P, "B5", 1) + CONNECTION(P, "B5", 10) + CONNECTION(P, "B5", 9) + CONNECTION(P, "B5", 4) + CONNECTION("D6", 8, "B5", 5) + CONNECTION(SERVE_WAIT, "B5", 14) + + CONNECTION(BTB_HIT_n, "E5", 1) + CONNECTION(SBD_n, "E5", 2) + + CONNECTION(BP_HIT_n, "E5", 4) + CONNECTION(BTB_HIT_n, "E5", 5) + CONNECTION("E5", 6, "F7", 11) + CONNECTION("E5", 6, "F7", 12) + CONNECTION(BRICK_HIT_n, "F7", 10) + CONNECTION("F7", 9, "C2", 2) + CONNECTION(BALL_DISPLAY, "C2", 1) + CONNECTION("L3", 6, "E3", 11) + CONNECTION("C2", 3, "E3", 12) + + CONNECTION(SET_BRICKS_n, "E6", 4) + CONNECTION("E3", 13, "E6", 2) + CONNECTION(CKBH, "E6", 3) + CONNECTION("E3", 13, "D2", 2) + CONNECTION(SET_BRICKS, "D2", 1) + CONNECTION("D2", 3, "E6", 1) + + CONNECTION(BRICK_DISPLAY, "E1", 1) + CONNECTION(H1, "K4", 9) + CONNECTION(H2, "K4", 10) + CONNECTION("K4", 8, "E3", 2) + CONNECTION("L3", 6, "E3", 3) + + CONNECTION(ATTRACT_n, "C2", 13) + CONNECTION(SET_BRICKS_n, "C2", 12) + CONNECTION("C2", 11, "H3", 10) + CONNECTION(FPD1, "H3", 9) + CONNECTION(FPD2, "H3", 11) + CONNECTION("H3", 8, "E1", 3) + CONNECTION("E1", 4, "C32", 1) + CONNECTION("C32", 2, "L3", 13) + CONNECTION(H4, "L3", 2) + CONNECTION(H8, "L3", 1) + CONNECTION(H16, "L3", 15) + CONNECTION(V32, "L3", 14) + CONNECTION(V64, "L3", 7) + CONNECTION(V128, "L3", 9) + CONNECTION(V16, "L3", 10) + CONNECTION(RAM_PLAYER1, "L3", 11) + CONNECTION(H32, "L3", 3) + CONNECTION(H128, "L3", 4) + CONNECTION("H4", 8, "L3", 5) + + CONNECTION(V2, "M4", 5) + CONNECTION(V4, "M4", 4) + CONNECTION(V8, "M4", 3) + CONNECTION("M4", 6, "H4", 9) + CONNECTION(VSYNC_n, "K4", 2) + CONNECTION(H64, "K4", 1) + CONNECTION("K4", 3, "H4", 10) + CONNECTION(FPD1_n, "F2", 13) + CONNECTION(BRICK_HIT_n, "F2", 2) + CONNECTION(FPD2_n, "F2", 1) + + CONNECTION("F2", 12, "L3", 12) + + //FPD circuits + CONNECTION(K2, "M4", 2) + CONNECTION(G2, "M4", 13) + CONNECTION(D2, "M4", 1) + CONNECTION(K1, "M4", 9) + CONNECTION(G1, "M4", 10) + CONNECTION(D1, "M4", 11) + CONNECTION(BP_HIT_n, "E4", 2) + CONNECTION("M4", 12, "E4", 1) + CONNECTION(BP_HIT_n, "E4", 4) + CONNECTION("M4", 8, "E4", 5) + + CONNECTION(P, "F4", 4) + CONNECTION(P, "F4", 2) + CONNECTION("E4", 3, "F4", 3) + CONNECTION(START_GAME1_n, "F4", 1) + + CONNECTION(P, "F4", 10) + CONNECTION(P, "F4", 12) + CONNECTION("E4", 6, "F4", 11) + CONNECTION(START_GAME1_n, "F4", 13) + + CONNECTION("F4", 6, "F3", 5) + CONNECTION(GND, "F3", 4) + CONNECTION("F4", 8, "F3", 11) + CONNECTION(GND, "F3", 12) + + CONNECTION(P, "F3", 3) + CONNECTION(P, "F3", 13) + + + //CREDIT_COUNTER + CONNECTION(BONUS_COIN, "E7", 8) + CONNECTION(COIN, "E7", 9) + CONNECTION(CR_START1_n, "H7", 2) + CONNECTION(V8, "D8", 1) + CONNECTION(CR_START2, "D8", 2) + CONNECTION("D8", 3, "H7", 1) + + CONNECTION("L8", 12, "L8", 11) // not on schematic, on rollover load 16, keeps you from losing all credits + CONNECTION(P, "L8", 15) + CONNECTION(P, "L8", 1) + CONNECTION(P, "L8", 10) + CONNECTION(P, "L8", 9) + CONNECTION("E7", 10, "L8", 5) + CONNECTION("H7", 3, "L8", 4) + + CONNECTION(LAT_Q, "L9", 10) + CONNECTION("L8", 13, "L9", 9) + CONNECTION("L9", 8, "L8", 14) + CONNECTION("L8", 7, "M8", 9) + CONNECTION("L8", 6, "M8", 10) + CONNECTION("L8", 2, "M8", 11) + CONNECTION("L8", 3, "M9", 13) + + CONNECTION(CREDIT2_n, "F9", 5) + CONNECTION(CREDIT2_n, "L9", 2) + CONNECTION("M9", 12, "L9", 1) + CONNECTION(CREDIT_1_OR_2, "F9", 9) + + //PLGM2_n + CONNECTION(CR_START1_n, "F7", 6) + CONNECTION(CR_START2_n, "F7", 5) + + //PLAY_CP + CONNECTION(PLGM2_n, "F2", 5) + CONNECTION(PLAYER_2, "F2", 4) + CONNECTION(H1, "F2", 3) + + CONNECTION(P, "F5", 4) + CONNECTION(P, "F5", 2) + CONNECTION(SERVE_WAIT, "F5", 3) + CONNECTION(H128, "F5", 1) + CONNECTION("F2", 6, "D2", 9) + CONNECTION("F5", 5, "D2", 10) + + //EGL + CONNECTION(P, "B4", 10) + CONNECTION(P, "B4", 7) + CONNECTION(P, "B4", 9) + CONNECTION(PLAY_CP, "B4", 2) + + CONNECTION(EGL, "C5", 1) + + + + CONNECTION(START_GAME1_n, "B4", 1) + CONNECTION(BALL_A, "A4", 2) + CONNECTION(BALL_B, "S4", 1) + CONNECTION(BALL_C, "S4", 2) + CONNECTION("S4", 3, "A4", 1) + CONNECTION("A4", 3, "C37", 1) + + CONNECTION(SERVE_WAIT_n, "A4", 5) + CONNECTION(BALL, "A4", 4) + + // Ball Circuit + + + // Video Summing + CONNECTION(V16_d, "D2", 4) + CONNECTION(V8_d, "D2", 5) + CONNECTION("D2", 6, "E3", 8) + CONNECTION(VSYNC_n, "E3", 9) + CONNECTION(HSYNC_n, "E2", 12) + CONNECTION("E3", 10, "E2", 13) + CONNECTION(PSYNC, "B9", 1) + CONNECTION(VSYNC_n, "B9", 2) + + //CONNECTION("VIDEO", 1, "E2", 11) + CONNECTION("VIDEO", 2, PLAYFIELD) + CONNECTION("VIDEO", 3, BSYNC) + CONNECTION("VIDEO", 4, SCORE) + CONNECTION("VIDEO", 5, "B9", 3) + //CONNECTION("VIDEO", 6, P) + + CONNECTION("VIDEO", Video::HBLANK_PIN, HSYNC) + CONNECTION("VIDEO", Video::VBLANK_PIN, "E3", 10) + + + // Audio Summing + CONNECTION("AUDIO", 1, "B9", 11) + CONNECTION("AUDIO", 2, "B9", 8) + CONNECTION("AUDIO", 3, FREE_GAME_TONE) + CONNECTION("AUDIO", 4, "B9", 6) + + +#ifdef DEBUG + // RAM access + /*CONNECTION("LOG1", 3, H4) //A + CONNECTION("LOG1", 4, H8) //B + CONNECTION("LOG1", 5, H16) //C + CONNECTION("LOG1", 6, V32) //D + CONNECTION("LOG1", 7, V64) //E + CONNECTION("LOG1", 8, V128) //F + CONNECTION("LOG1", 9, V16) //G + CONNECTION("LOG1", 10, RAM_PLAYER1) //H + CONNECTION("LOG1", 11, H32) //I + CONNECTION("LOG1", 12, H128) //J + CONNECTION("LOG1", 13, "H4", 8) //K + CONNECTION("LOG1", 14, "E1", 4) //L + CONNECTION("LOG1", 15, "F2", 12) //M + CONNECTION("LOG1", 16, "L3", 6)*/ //N +#endif + +CIRCUIT_LAYOUT_END + +#endif diff --git a/src/mame/drivers/nl_pong.c b/src/mame/drivers/nl_pong.c index 40975b5026e..ca8bd6ab740 100644 --- a/src/mame/drivers/nl_pong.c +++ b/src/mame/drivers/nl_pong.c @@ -9,6 +9,7 @@ NETLIST_START(pong_fast) SOLVER(Solver, 48000) + PARAM(Solver.PARALLEL, 0) // Don't do parallel solvers PARAM(Solver.ACCURACY, 1e-4) // works and is sufficient PARAM(Solver.LTE, 1e-4) // Default is not enough for paddle control if using LTE -- cgit v1.2.3-70-g09d2 From 057a3e2335c7f1bc5fbb7d5f11c9a217e4716953 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Wed, 22 Apr 2015 00:00:45 +0100 Subject: new NOT WORKING Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04) [gamerfan, Smitdogg, The Dumping Union] --- src/mame/drivers/midqslvr.c | 27 +++++++++++++++++++++++++-- src/mame/mame.lst | 4 ++-- 2 files changed, 27 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/midqslvr.c b/src/mame/drivers/midqslvr.c index d4995155e92..7aa1e1dadb5 100644 --- a/src/mame/drivers/midqslvr.c +++ b/src/mame/drivers/midqslvr.c @@ -462,7 +462,7 @@ ROM_START( arctthnd ) ROM_END // this also required a dongle to work -ROM_START( arctthndult ) +ROM_START( ultarctc ) ROM_REGION32_LE(0x80000, "bios", ROMREGION_ERASEFF) ROM_LOAD( "m29f002bt.u6", 0x040000, 0x040000, CRC(012c9290) SHA1(cdee6f19d5e5ea5bb1dd6a5ec397ac70b3452790) ) @@ -474,10 +474,33 @@ ROM_START( arctthndult ) DISK_IMAGE( "uarctict", 0, SHA1(8557a1d7ae8dc41c879350cb1c228f4c27a0dd09) ) ROM_END +// this is an update CD, We don't know if it updates the HDD image we have, if the image we have is already an updated version, if it +// requires a specific version we don't have, or even if it updates a regular Arctic Thunder to Ultimate. +ROM_START( ultarctcup ) + ROM_REGION32_LE(0x80000, "bios", ROMREGION_ERASEFF) + ROM_LOAD( "m29f002bt.u6", 0x040000, 0x040000, CRC(012c9290) SHA1(cdee6f19d5e5ea5bb1dd6a5ec397ac70b3452790) ) + + ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed +// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) +// ROM_CONTINUE( 0x0001, 0x4000 ) + + DISK_REGION( "ide:0:hdd:image" ) + DISK_IMAGE( "uarctict", 0, SHA1(8557a1d7ae8dc41c879350cb1c228f4c27a0dd09) ) + DISK_REGION( "cd" ) + DISK_IMAGE( "040503_1309", 0, SHA1(453adb81e204b0580ad02c2d98f68525757ec2a1) ) +// sourced from these +// ROM_LOAD( "040503_1309.CUE", 0x0000, 0x000004d, CRC(4a9e2de5) SHA1(04d3d90ad4b235c0ac4606557e16a1410d018fa9) ) +// ROM_LOAD( "040503_1309.BIN", 0x0000, 0x6bd9960, CRC(48a63422) SHA1(9d1cacf07526c5bddf4205c667a9010802f74859) ) + +ROM_END // there are almost certainly multiple versions of these; updates were offered on floppy disk. The version numbers for the existing CHDs are unknown. GAME(1999, hydrthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Hydro Thunder", GAME_IS_SKELETON) + GAME(2000, offrthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Offroad Thunder", GAME_IS_SKELETON) + GAME(2001, arctthnd, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Arctic Thunder (v1.002)", GAME_IS_SKELETON) -GAME(2001, arctthndult, arctthnd, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder", GAME_IS_SKELETON) + +GAME(2001, ultarctc, 0, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder", GAME_IS_SKELETON) +GAME(2004, ultarctcup, ultarctc, midqslvr, at_keyboard, driver_device, 0, ROT0, "Midway Games", "Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04)", GAME_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 913e7da4d73..34c992a13ec 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -8265,8 +8265,8 @@ cartfury // (c) 2000 Midway Games // Midway Quicksilver hydrthnd // (c) 1999 Midway Games offrthnd // (c) 2000 Midway Games -arctthnd // (c) 2001 Midway Games -arctthndult // (c) 2001 Midway Games +ultarctc // (c) 2001 Midway Games +ultarctcup // (c) 2001 Midway Games // Midway Touchmaster / Galaxy Games tm // (c) 1996 Midway Games -- cgit v1.2.3-70-g09d2 From b7383e6dd1ae6dda29d60a59fc3f5cd20e6f9861 Mon Sep 17 00:00:00 2001 From: briantro Date: Tue, 21 Apr 2015 20:08:11 -0500 Subject: exidy440.c: Correct rom names for Who Dunit v9.0 and Showdown as per actual rom labels. - NW --- src/mame/drivers/exidy440.c | 190 ++++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 95 deletions(-) (limited to 'src') diff --git a/src/mame/drivers/exidy440.c b/src/mame/drivers/exidy440.c index 39aad94c4f9..b35de1fe770 100644 --- a/src/mame/drivers/exidy440.c +++ b/src/mame/drivers/exidy440.c @@ -1651,59 +1651,59 @@ ROM_END ROM_START( whodunit ) /* Version 9 */ ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for code for the first CPU, plus lots of banked ROMs */ - ROM_LOAD( "wdl-9_1-a_2764.bin", 0x08000, 0x2000, CRC(903e45f6) SHA1(3c5d3f0ec851331febf7da493bfa3b33ac5aaff3) ) - ROM_LOAD( "wdl8.3a", 0x0a000, 0x2000, CRC(5d1530f8) SHA1(258d19c14a757497e0ce95a3ab8332168d97e67c) ) // WDL-9_3-A_2764.bin - ROM_LOAD( "wdl-9_4-a_2764.bin", 0x0c000, 0x2000, CRC(96c6b81f) SHA1(c4775b7cdbd2c977131b0df99aef75834a68559f) ) - ROM_LOAD( "wdl-9_6-a_2764.bin", 0x0e000, 0x2000, CRC(c9a864ec) SHA1(2f67b8b711101818888bb9624be8a33d98ddc811) ) - ROM_LOAD( "wdl-9_4-e_2764.bin", 0x14000, 0x2000, CRC(246c836f) SHA1(1c39b61dbbde5df2a79a9c96ed2a85eaf870b46c) ) - ROM_LOAD( "wdl-9_6-e_2764.bin", 0x16000, 0x2000, CRC(65d551c0) SHA1(7ad3c2567ad7f64b8c3b9fade01296bad1ffff89) ) - ROM_LOAD( "wdl-9_7-e_2764.bin", 0x18000, 0x2000, CRC(aee7a237) SHA1(e12a5cc825944c95461b436041631bc64ae7f0c3) ) - ROM_LOAD( "wdl-9_8-e_2764.bin", 0x1a000, 0x2000, CRC(a1c1e995) SHA1(7fdd54102ba3d1a4e1612d1e63ac435317184c03) ) - ROM_LOAD( "wdl8.10e", 0x1c000, 0x2000, CRC(f24adde5) SHA1(e4b22da75341a70c75fa245e26e965f1f7cbf3a1) ) // WDL-9_10-E_2764.bin - ROM_LOAD( "wdl8.11e", 0x1e000, 0x2000, CRC(ad6fe69e) SHA1(039baebb3a232cbd2c497cfe8aba234469e16ada) ) // WDL-9_11-E_2764.bin - ROM_LOAD( "wdl6.1d", 0x20000, 0x2000, CRC(3572fb71) SHA1(dcc5b04c8a4c0db62eeffe8524f67574142f1a19) ) // WDL-9_1-D_2764.bin - ROM_LOAD( "wdl6.3d", 0x22000, 0x2000, CRC(158074f4) SHA1(d4520017973a4476ba9ed7b5ed7cbfc3f5302f3a) ) // WDL-9_3-D_2764.bin - ROM_LOAD( "wdl8.4d", 0x24000, 0x2000, CRC(601d8bd0) SHA1(118e5d7358034c98a1e4e87b1e523e574c8264bb) ) // WDL-9_4-D_2764.bin - ROM_LOAD( "wdl8.6d", 0x26000, 0x2000, CRC(b72e8f63) SHA1(bdb5b379d5c14123e59cd186499703ca2096027c) ) // WDL-9_6-D_2764.bin - ROM_LOAD( "wdl6.7d", 0x28000, 0x2000, CRC(e3f55a4b) SHA1(9d3e4fc68f9b8c7228ef407f039849fdcdb1d9ef) ) // WDL-9_7-D_2764.bin - ROM_LOAD( "wdl6.8d", 0x2a000, 0x2000, CRC(932689c8) SHA1(9b65db2c4ce544331290f3dd57fde3b6aab905ff) ) // WDL-9_8-D_2764.bin - ROM_LOAD( "wdl6.10d", 0x2c000, 0x2000, CRC(0c4348f2) SHA1(19a3919dccf198c2189e310545aa15b319990579) ) // WDL-9_10-D_2764.bin - ROM_LOAD( "wdl8.11d", 0x2e000, 0x2000, CRC(92391ffe) SHA1(1f4bb288ec80af3eb452ca8fe67cba862e23977b) ) // WDL-9_11-D_2764.bin - ROM_LOAD( "wdl8.1c", 0x30000, 0x2000, CRC(21c62c90) SHA1(98dbf416e9d88383bf3e0e17a71861671046aa20) ) // WDL-9_1-C_2764.bin - ROM_LOAD( "wdl-9_3-c_2764.bin", 0x32000, 0x2000, CRC(b221188e) SHA1(0f488e7a46489e38da322769189c2f992bb3e1e7) ) - ROM_LOAD( "wdl6.4c", 0x34000, 0x2000, CRC(7b58dfac) SHA1(b52566a9bfcd30510accc7e32c3535b99bf3372c) ) // WDL-9_4-C_2764.bin - ROM_LOAD( "wdl-9_6-c_2764.bin", 0x36000, 0x2000, CRC(abe0ba57) SHA1(9dfcdf8f7b8f09d6d2e90e1bb1fda9064215fe14) ) - ROM_LOAD( "wdl6.7c", 0x38000, 0x2000, CRC(3cb3faae) SHA1(de719bc4806aa54ff73a723e3dfffed8bb394da0) ) // WDL-9_7-C_2764.bin - ROM_LOAD( "wdl6.8c", 0x3a000, 0x2000, CRC(51e95d91) SHA1(091dca2360456988da9ed39e757918ec58118258) ) // WDL-9_8-C_2764.bin - ROM_LOAD( "wdl6.10c", 0x3c000, 0x2000, CRC(eab12084) SHA1(aa75dfdeece07baa6cf72cecfc006af958768acf) ) // WDL-9_10-C_2764.bin - ROM_LOAD( "wdl6.11c", 0x3e000, 0x2000, CRC(fe2c532f) SHA1(199334fdc4c92ecacf4d4337bbe7419a53b78067) ) // WDL-9_11-C_2764.bin - ROM_LOAD( "wdl6.1b", 0x40000, 0x2000, CRC(cdaa5ca0) SHA1(1232e54cd61293f1cb7a8c628bb811bfd527ba93) ) // WDL-9_1-B_2764.bin - ROM_LOAD( "wdl6.3b", 0x42000, 0x2000, CRC(9bbc8161) SHA1(a4849ff8c957904a87f53edf79961a035e9b7c6b) ) // WDL-9_3-B_2764.bin - ROM_LOAD( "wdl8.4b", 0x44000, 0x2000, CRC(eb7dc583) SHA1(fe61e1eb16be246493db40f90090317d60a21bbf) ) // WDL-9_4-B_2764.bin - ROM_LOAD( "wdl8.6b", 0x46000, 0x2000, CRC(91c049a5) SHA1(8c6ae1e80925526902f80a2c549c6739353cdb86) ) // WDL-9_6-B_2764.bin - ROM_LOAD( "wdl6.7b", 0x48000, 0x2000, CRC(fe0a2d00) SHA1(a8649a95567f6c1f6513461a19250455b8cfe3ed) ) // WDL-9_7-B_2764.bin - ROM_LOAD( "wdl8.8b", 0x4a000, 0x2000, CRC(33792758) SHA1(408da288288f54f7446b083b14dc74d43ef4ab9f) ) // WDL-9_8-B_2764.bin - ROM_LOAD( "wdl-9_10-b_2764.bin",0x4c000, 0x2000, CRC(c5ab5805) SHA1(fd7c47e50eb4005b81309a73afae2e04a823d00b) ) + ROM_LOAD( "wdl-9_1-a.1a", 0x08000, 0x2000, CRC(903e45f6) SHA1(3c5d3f0ec851331febf7da493bfa3b33ac5aaff3) ) // all these ROMs are 2764 eproms + ROM_LOAD( "wdl-9_3-a.3a", 0x0a000, 0x2000, CRC(5d1530f8) SHA1(258d19c14a757497e0ce95a3ab8332168d97e67c) ) + ROM_LOAD( "wdl-9_4-a.4a", 0x0c000, 0x2000, CRC(96c6b81f) SHA1(c4775b7cdbd2c977131b0df99aef75834a68559f) ) + ROM_LOAD( "wdl-9_6-a.6a", 0x0e000, 0x2000, CRC(c9a864ec) SHA1(2f67b8b711101818888bb9624be8a33d98ddc811) ) + ROM_LOAD( "wdl-9_4-e.4e", 0x14000, 0x2000, CRC(246c836f) SHA1(1c39b61dbbde5df2a79a9c96ed2a85eaf870b46c) ) + ROM_LOAD( "wdl-9_6-e.6e", 0x16000, 0x2000, CRC(65d551c0) SHA1(7ad3c2567ad7f64b8c3b9fade01296bad1ffff89) ) + ROM_LOAD( "wdl-9_7-e.7e", 0x18000, 0x2000, CRC(aee7a237) SHA1(e12a5cc825944c95461b436041631bc64ae7f0c3) ) + ROM_LOAD( "wdl-9_8-e.8e", 0x1a000, 0x2000, CRC(a1c1e995) SHA1(7fdd54102ba3d1a4e1612d1e63ac435317184c03) ) + ROM_LOAD( "wdl-9_10-e.10e", 0x1c000, 0x2000, CRC(f24adde5) SHA1(e4b22da75341a70c75fa245e26e965f1f7cbf3a1) ) + ROM_LOAD( "wdl-9_11-e.11e", 0x1e000, 0x2000, CRC(ad6fe69e) SHA1(039baebb3a232cbd2c497cfe8aba234469e16ada) ) + ROM_LOAD( "wdl-9_1-d.1d", 0x20000, 0x2000, CRC(3572fb71) SHA1(dcc5b04c8a4c0db62eeffe8524f67574142f1a19) ) + ROM_LOAD( "wdl-9_3-d.3d", 0x22000, 0x2000, CRC(158074f4) SHA1(d4520017973a4476ba9ed7b5ed7cbfc3f5302f3a) ) + ROM_LOAD( "wdl-9_4-d.4d", 0x24000, 0x2000, CRC(601d8bd0) SHA1(118e5d7358034c98a1e4e87b1e523e574c8264bb) ) + ROM_LOAD( "wdl-9_6-d.6d", 0x26000, 0x2000, CRC(b72e8f63) SHA1(bdb5b379d5c14123e59cd186499703ca2096027c) ) + ROM_LOAD( "wdl-9_7-d.7d", 0x28000, 0x2000, CRC(e3f55a4b) SHA1(9d3e4fc68f9b8c7228ef407f039849fdcdb1d9ef) ) + ROM_LOAD( "wdl-9_8-d.8d", 0x2a000, 0x2000, CRC(932689c8) SHA1(9b65db2c4ce544331290f3dd57fde3b6aab905ff) ) + ROM_LOAD( "wdl-9_10-d.10d", 0x2c000, 0x2000, CRC(0c4348f2) SHA1(19a3919dccf198c2189e310545aa15b319990579) ) + ROM_LOAD( "wdl-9_11-d.11d", 0x2e000, 0x2000, CRC(92391ffe) SHA1(1f4bb288ec80af3eb452ca8fe67cba862e23977b) ) + ROM_LOAD( "wdl-9_1-c.1c", 0x30000, 0x2000, CRC(21c62c90) SHA1(98dbf416e9d88383bf3e0e17a71861671046aa20) ) + ROM_LOAD( "wdl-9_3-c.3c", 0x32000, 0x2000, CRC(b221188e) SHA1(0f488e7a46489e38da322769189c2f992bb3e1e7) ) + ROM_LOAD( "wdl-9_4-c.4c", 0x34000, 0x2000, CRC(7b58dfac) SHA1(b52566a9bfcd30510accc7e32c3535b99bf3372c) ) + ROM_LOAD( "wdl-9_6-c.6c", 0x36000, 0x2000, CRC(abe0ba57) SHA1(9dfcdf8f7b8f09d6d2e90e1bb1fda9064215fe14) ) + ROM_LOAD( "wdl-9_7-c.7c", 0x38000, 0x2000, CRC(3cb3faae) SHA1(de719bc4806aa54ff73a723e3dfffed8bb394da0) ) + ROM_LOAD( "wdl-9_8-c.8c", 0x3a000, 0x2000, CRC(51e95d91) SHA1(091dca2360456988da9ed39e757918ec58118258) ) + ROM_LOAD( "wdl-9_10-c.10c", 0x3c000, 0x2000, CRC(eab12084) SHA1(aa75dfdeece07baa6cf72cecfc006af958768acf) ) + ROM_LOAD( "wdl-9_11-c.11c", 0x3e000, 0x2000, CRC(fe2c532f) SHA1(199334fdc4c92ecacf4d4337bbe7419a53b78067) ) + ROM_LOAD( "wdl-9_1-b.1b", 0x40000, 0x2000, CRC(cdaa5ca0) SHA1(1232e54cd61293f1cb7a8c628bb811bfd527ba93) ) + ROM_LOAD( "wdl-9_3-b.3b", 0x42000, 0x2000, CRC(9bbc8161) SHA1(a4849ff8c957904a87f53edf79961a035e9b7c6b) ) + ROM_LOAD( "wdl-9_4-b.4b", 0x44000, 0x2000, CRC(eb7dc583) SHA1(fe61e1eb16be246493db40f90090317d60a21bbf) ) + ROM_LOAD( "wdl-9_6-b.6b", 0x46000, 0x2000, CRC(91c049a5) SHA1(8c6ae1e80925526902f80a2c549c6739353cdb86) ) + ROM_LOAD( "wdl-9_7-b.7b", 0x48000, 0x2000, CRC(fe0a2d00) SHA1(a8649a95567f6c1f6513461a19250455b8cfe3ed) ) + ROM_LOAD( "wdl-9_8-b.8b", 0x4a000, 0x2000, CRC(33792758) SHA1(408da288288f54f7446b083b14dc74d43ef4ab9f) ) + ROM_LOAD( "wdl-9_10-b.10b", 0x4c000, 0x2000, CRC(c5ab5805) SHA1(fd7c47e50eb4005b81309a73afae2e04a823d00b) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "wda-9_h-1_2764.bin", 0x0e000, 0x2000, CRC(dc4b36f0) SHA1(1ddd47dbd7f3e360aae830b67a13dd6a1d7a6497) ) + ROM_LOAD( "wda-9_h-1.h1", 0x0e000, 0x2000, CRC(dc4b36f0) SHA1(1ddd47dbd7f3e360aae830b67a13dd6a1d7a6497) ) // This ROM is a 2764 eprom ROM_REGION( 0x20000, "cvsd", 0 ) - ROM_LOAD( "wda6.k2", 0x00000, 0x2000, CRC(d4951375) SHA1(88616a7cb587748b366ece6126185a85e7375659) ) // WDL-9_2-K_2764.bin - ROM_LOAD( "wda6.l2", 0x02000, 0x2000, CRC(be8dcf07) SHA1(9a6e9b256da07be50feb81b27e53d86b3f016f4e) ) // WDL-9_2-L_2764.bin - ROM_LOAD( "wda6.m2", 0x04000, 0x2000, CRC(fb389e2d) SHA1(8ee1be233429d6b7cbb56a13586e2db49dffaca1) ) // WDL-9_2-M_2764.bin - ROM_LOAD( "wda6.n2", 0x06000, 0x2000, CRC(3849bc78) SHA1(2b5bffec6919c3f4dfd3618f715445b02905cc1d) ) // WDL-9_2-N_2764.bin - ROM_LOAD( "wda6.p2", 0x08000, 0x2000, CRC(d0dcea80) SHA1(ac3305eab146f1741d38678a6f473474bef05ade) ) // WDL-9_2-P_2764.bin - ROM_LOAD( "wda6.r2", 0x0a000, 0x2000, CRC(748b0930) SHA1(f7e06ca6bef86d2bc8fa4569bcfc8d2ec199e4bd) ) // WDL-9_2-R_2764.bin - ROM_LOAD( "wda6.s2", 0x0c000, 0x2000, CRC(23d5c5a9) SHA1(ab8997556b6a9c4a011c367a2035aeba3c752be1) ) // WDL-9_2-S_2764.bin - ROM_LOAD( "wda6.t2", 0x0e000, 0x2000, CRC(a807536d) SHA1(154564c189c7e6f755acda95178db503991ecbaa) ) // WDL-9_2-T_2764.bin - ROM_LOAD( "wda8.l1", 0x12000, 0x2000, CRC(27b856bd) SHA1(f66f6f898d2a7f044b7d331290a7bf32715b5587) ) // WDL-9_1-L_2764.bin - ROM_LOAD( "wda8.m1", 0x14000, 0x2000, CRC(8e15c601) SHA1(924b10523cf8ff802c0907dae96cbc9bae9fe4b0) ) // WDL-9_1-M_2764.bin - ROM_LOAD( "xba1.1n", 0x16000, 0x2000, CRC(2e855698) SHA1(fa4c3ec03fdd1c569c0ca2418899ffa81b5259ec) ) // WDL-9_1-N_2764.bin - ROM_LOAD( "wda6.p1", 0x18000, 0x2000, CRC(3ffaaa22) SHA1(a0848c0f4d799c3b6e9fe8e8f89e7e36754174f6) ) // WDL-9_1-P_2764.bin - ROM_LOAD( "wda6.r1", 0x1a000, 0x2000, CRC(0579a3b8) SHA1(554bced664c12547a766ee6df1278b967714b5ae) ) // WDL-9_1-R_2764.bin - ROM_LOAD( "wda6.s1", 0x1c000, 0x2000, CRC(f55c3c6e) SHA1(54878fe1106986e9aa26c6141921429119703990) ) // WDL-9_1-S_2764.bin - ROM_LOAD( "wda6.t1", 0x1e000, 0x2000, CRC(38363b52) SHA1(4b1c3225a32882e35e5af742f1c6b1e665722fd4) ) // WDL-9_1-T_2764.bin + ROM_LOAD( "wda-9_2-k.2k", 0x00000, 0x2000, CRC(d4951375) SHA1(88616a7cb587748b366ece6126185a85e7375659) ) // all these ROMs are 2764 eproms + ROM_LOAD( "wda-9_2-l.2l", 0x02000, 0x2000, CRC(be8dcf07) SHA1(9a6e9b256da07be50feb81b27e53d86b3f016f4e) ) + ROM_LOAD( "wda-9_2-m.2m", 0x04000, 0x2000, CRC(fb389e2d) SHA1(8ee1be233429d6b7cbb56a13586e2db49dffaca1) ) + ROM_LOAD( "wda-9_2-n.2n", 0x06000, 0x2000, CRC(3849bc78) SHA1(2b5bffec6919c3f4dfd3618f715445b02905cc1d) ) + ROM_LOAD( "wda-9_2-p.2p", 0x08000, 0x2000, CRC(d0dcea80) SHA1(ac3305eab146f1741d38678a6f473474bef05ade) ) + ROM_LOAD( "wda-9_2-r.2r", 0x0a000, 0x2000, CRC(748b0930) SHA1(f7e06ca6bef86d2bc8fa4569bcfc8d2ec199e4bd) ) + ROM_LOAD( "wda-9_2-s.2s", 0x0c000, 0x2000, CRC(23d5c5a9) SHA1(ab8997556b6a9c4a011c367a2035aeba3c752be1) ) + ROM_LOAD( "wda-9_2-t.2t", 0x0e000, 0x2000, CRC(a807536d) SHA1(154564c189c7e6f755acda95178db503991ecbaa) ) + ROM_LOAD( "wda-9_1-l.1l", 0x12000, 0x2000, CRC(27b856bd) SHA1(f66f6f898d2a7f044b7d331290a7bf32715b5587) ) + ROM_LOAD( "wda-9_1-m.1m", 0x14000, 0x2000, CRC(8e15c601) SHA1(924b10523cf8ff802c0907dae96cbc9bae9fe4b0) ) + ROM_LOAD( "wda-9_1-n.1n", 0x16000, 0x2000, CRC(2e855698) SHA1(fa4c3ec03fdd1c569c0ca2418899ffa81b5259ec) ) + ROM_LOAD( "wda-9_1-p.1p", 0x18000, 0x2000, CRC(3ffaaa22) SHA1(a0848c0f4d799c3b6e9fe8e8f89e7e36754174f6) ) + ROM_LOAD( "wda-9_1-r.1r", 0x1a000, 0x2000, CRC(0579a3b8) SHA1(554bced664c12547a766ee6df1278b967714b5ae) ) + ROM_LOAD( "wda-9_1-s.1s", 0x1c000, 0x2000, CRC(f55c3c6e) SHA1(54878fe1106986e9aa26c6141921429119703990) ) + ROM_LOAD( "wda-9_1-t.1t", 0x1e000, 0x2000, CRC(38363b52) SHA1(4b1c3225a32882e35e5af742f1c6b1e665722fd4) ) ROM_REGION( 0x01100, "user1", 0 ) /* vertical sync timing */ @@ -1794,55 +1794,55 @@ ROM_END ROM_START( showdown ) ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for code for the first CPU, plus lots of banked ROMs */ - ROM_LOAD( "showda1.bin", 0x08000, 0x2000, CRC(e4031507) SHA1(3d5183cd049be843fd38e3d1bd2d0a305df723bd) ) - ROM_LOAD( "showd3a.bin", 0x0a000, 0x2000, CRC(e7de171e) SHA1(881a2b596949de3b4bb1263e2aa08faeb3051a6e) ) - ROM_LOAD( "showd4a.bin", 0x0c000, 0x2000, CRC(5c8683c9) SHA1(81d0880fcbd3c1662ea4dd1662d6987adbdb4f71) ) - ROM_LOAD( "showd6a.bin", 0x0e000, 0x2000, CRC(4a408379) SHA1(1ec83b7416f948bc31bafa8ddaa87c23490bce16) ) - ROM_LOAD( "showd11e.bin", 0x1e000, 0x2000, CRC(1c6b34e5) SHA1(ae5ddd80d5fdc89274f44a30c4ec1aa325b26cc7) ) - ROM_LOAD( "showd1d.bin", 0x20000, 0x2000, CRC(db4c8cf6) SHA1(11fb37afb87b926f94f23abf90fb537a3a867aec) ) - ROM_LOAD( "showd3d.bin", 0x22000, 0x2000, CRC(24242867) SHA1(aa109231cad5fcb9e24578b567ff0fe50a72be44) ) - ROM_LOAD( "showd4d.bin", 0x24000, 0x2000, CRC(36f247e9) SHA1(749f5ea3307bfc02bced9535ebd733bb1297a0ae) ) - ROM_LOAD( "showd6d.bin", 0x26000, 0x2000, CRC(c9b14d8d) SHA1(48e66f5a4dc63c3948e32aeb0a151c8f9d2082b2) ) - ROM_LOAD( "showd7d.bin", 0x28000, 0x2000, CRC(fd054cd2) SHA1(a7fcedd30c088d2cb9fe013eaa1214b48f3569ab) ) - ROM_LOAD( "showd8d.bin", 0x2a000, 0x2000, CRC(8bf32822) SHA1(91a1ab0bc6aac3dfe7b7e60e3d35e7d4909aa09d) ) - ROM_LOAD( "showd10d.bin", 0x2c000, 0x2000, CRC(a2051da2) SHA1(f879459a90a00c9dc4ba0b1e8895bc1352286a8a) ) - ROM_LOAD( "showd11d.bin", 0x2e000, 0x2000, CRC(0748f345) SHA1(c435cd0769aa44162b3f7aa1bc230cadf572ca73) ) - ROM_LOAD( "showd1c.bin", 0x30000, 0x2000, CRC(c016cf73) SHA1(30221e5f878354933b8caf8c644f2c6f1e5dcd30) ) - ROM_LOAD( "showd3c.bin", 0x32000, 0x2000, CRC(652503ee) SHA1(90c76bb5d59ce0626d1d7f3feaea05ef984f9551) ) - ROM_LOAD( "showd4c.bin", 0x34000, 0x2000, CRC(b4dab193) SHA1(e028d2c865e7607f43bb7b4f2afe75082618a47b) ) - ROM_LOAD( "showd6c.bin", 0x36000, 0x2000, CRC(a1e6a2b3) SHA1(b75a0355e1245a8ca0dc438c66a96c064b7ab40a) ) - ROM_LOAD( "showd7c.bin", 0x38000, 0x2000, CRC(bc1bea93) SHA1(77fcfef6c509186af394f0ad67717c11ca447fb7) ) - ROM_LOAD( "showd8c.bin", 0x3a000, 0x2000, CRC(337dd7fa) SHA1(4df916968f5a2e12cdc8bab585f58b6f6a9d2f4c) ) - ROM_LOAD( "showd10c.bin", 0x3c000, 0x2000, CRC(3ad32d71) SHA1(1a032eb136c56b97305e64572730a40c40d9c52b) ) - ROM_LOAD( "showd11c.bin", 0x3e000, 0x2000, CRC(5fe91932) SHA1(f4f880c55e72159a6754f7c939b4dbb16522e3ad) ) - ROM_LOAD( "showd1b.bin", 0x40000, 0x2000, CRC(54ff987e) SHA1(ea50a6e2b6c409403cec035f96f4672814e153e2) ) - ROM_LOAD( "showd3b.bin", 0x42000, 0x2000, CRC(e302e915) SHA1(cb2413c24503fd2363f6e717e8de558f771427a4) ) - ROM_LOAD( "showd4b.bin", 0x44000, 0x2000, CRC(1b981516) SHA1(16c417c9c1918a00dee976f3513925f8f28e6f41) ) - ROM_LOAD( "showd6b.bin", 0x46000, 0x2000, CRC(4ee00996) SHA1(7201aef40f6ea3b73d0c009117c174f19d97b98e) ) - ROM_LOAD( "showd7b.bin", 0x48000, 0x2000, CRC(018b7c00) SHA1(04879f476687e087d21bd8d5f439f3e45d39d142) ) - ROM_LOAD( "showd8b.bin", 0x4a000, 0x2000, CRC(024fe6ee) SHA1(4287091e65c58aec75c54e320c534d41def951f9) ) - ROM_LOAD( "showd10b.bin", 0x4c000, 0x2000, CRC(0b318dfe) SHA1(feb65530ea3aea6b0786875dc48d96e07d579636) ) + ROM_LOAD( "sld-5_1-a.1a", 0x08000, 0x2000, CRC(e4031507) SHA1(3d5183cd049be843fd38e3d1bd2d0a305df723bd) ) + ROM_LOAD( "sld-5_3-a.3a", 0x0a000, 0x2000, CRC(e7de171e) SHA1(881a2b596949de3b4bb1263e2aa08faeb3051a6e) ) + ROM_LOAD( "sld-5_4-a.4a", 0x0c000, 0x2000, CRC(5c8683c9) SHA1(81d0880fcbd3c1662ea4dd1662d6987adbdb4f71) ) + ROM_LOAD( "sld-5_6-a.6a", 0x0e000, 0x2000, CRC(4a408379) SHA1(1ec83b7416f948bc31bafa8ddaa87c23490bce16) ) + ROM_LOAD( "sld-5_11-e.11e", 0x1e000, 0x2000, CRC(1c6b34e5) SHA1(ae5ddd80d5fdc89274f44a30c4ec1aa325b26cc7) ) + ROM_LOAD( "sld-5_1-d.1d", 0x20000, 0x2000, CRC(db4c8cf6) SHA1(11fb37afb87b926f94f23abf90fb537a3a867aec) ) + ROM_LOAD( "sld-5_3-d.3d", 0x22000, 0x2000, CRC(24242867) SHA1(aa109231cad5fcb9e24578b567ff0fe50a72be44) ) + ROM_LOAD( "sld-5_4-d.4d", 0x24000, 0x2000, CRC(36f247e9) SHA1(749f5ea3307bfc02bced9535ebd733bb1297a0ae) ) + ROM_LOAD( "sld-5_6-d.6d", 0x26000, 0x2000, CRC(c9b14d8d) SHA1(48e66f5a4dc63c3948e32aeb0a151c8f9d2082b2) ) + ROM_LOAD( "sld-5_7-d.7d", 0x28000, 0x2000, CRC(fd054cd2) SHA1(a7fcedd30c088d2cb9fe013eaa1214b48f3569ab) ) + ROM_LOAD( "sld-5_8-d.8d", 0x2a000, 0x2000, CRC(8bf32822) SHA1(91a1ab0bc6aac3dfe7b7e60e3d35e7d4909aa09d) ) + ROM_LOAD( "sld-5_10-d.10d", 0x2c000, 0x2000, CRC(a2051da2) SHA1(f879459a90a00c9dc4ba0b1e8895bc1352286a8a) ) + ROM_LOAD( "sld-5_11-d.11d", 0x2e000, 0x2000, CRC(0748f345) SHA1(c435cd0769aa44162b3f7aa1bc230cadf572ca73) ) + ROM_LOAD( "sld-5_1-c.1c", 0x30000, 0x2000, CRC(c016cf73) SHA1(30221e5f878354933b8caf8c644f2c6f1e5dcd30) ) + ROM_LOAD( "sld-5_3-c.3c", 0x32000, 0x2000, CRC(652503ee) SHA1(90c76bb5d59ce0626d1d7f3feaea05ef984f9551) ) + ROM_LOAD( "sld-5_4-c.4c", 0x34000, 0x2000, CRC(b4dab193) SHA1(e028d2c865e7607f43bb7b4f2afe75082618a47b) ) + ROM_LOAD( "sld-5_6-c.6c", 0x36000, 0x2000, CRC(a1e6a2b3) SHA1(b75a0355e1245a8ca0dc438c66a96c064b7ab40a) ) + ROM_LOAD( "sld-5_7-c.7c", 0x38000, 0x2000, CRC(bc1bea93) SHA1(77fcfef6c509186af394f0ad67717c11ca447fb7) ) + ROM_LOAD( "sld-5_8-c.8c", 0x3a000, 0x2000, CRC(337dd7fa) SHA1(4df916968f5a2e12cdc8bab585f58b6f6a9d2f4c) ) + ROM_LOAD( "sld-5_10-c.10c", 0x3c000, 0x2000, CRC(3ad32d71) SHA1(1a032eb136c56b97305e64572730a40c40d9c52b) ) + ROM_LOAD( "sld-5_11-c.11c", 0x3e000, 0x2000, CRC(5fe91932) SHA1(f4f880c55e72159a6754f7c939b4dbb16522e3ad) ) + ROM_LOAD( "sld-5_1-b.1b", 0x40000, 0x2000, CRC(54ff987e) SHA1(ea50a6e2b6c409403cec035f96f4672814e153e2) ) + ROM_LOAD( "sld-5_3-b.3b", 0x42000, 0x2000, CRC(e302e915) SHA1(cb2413c24503fd2363f6e717e8de558f771427a4) ) + ROM_LOAD( "sld-5_4-b.4b", 0x44000, 0x2000, CRC(1b981516) SHA1(16c417c9c1918a00dee976f3513925f8f28e6f41) ) + ROM_LOAD( "sld-5_6-b.6b", 0x46000, 0x2000, CRC(4ee00996) SHA1(7201aef40f6ea3b73d0c009117c174f19d97b98e) ) + ROM_LOAD( "sld-5_7-b.7b", 0x48000, 0x2000, CRC(018b7c00) SHA1(04879f476687e087d21bd8d5f439f3e45d39d142) ) + ROM_LOAD( "sld-5_8-b.8b", 0x4a000, 0x2000, CRC(024fe6ee) SHA1(4287091e65c58aec75c54e320c534d41def951f9) ) + ROM_LOAD( "sld-5_10-b.10b", 0x4c000, 0x2000, CRC(0b318dfe) SHA1(feb65530ea3aea6b0786875dc48d96e07d579636) ) ROM_REGION( 0x10000, "audiocpu", 0 ) - ROM_LOAD( "showd1h.bin", 0x0e000, 0x2000, CRC(6a10ff47) SHA1(ee57de74ab9a5cfe5726212a9b905e91e6461225) ) + ROM_LOAD( "sda-5_h-1.h1", 0x0e000, 0x2000, CRC(6a10ff47) SHA1(ee57de74ab9a5cfe5726212a9b905e91e6461225) ) ROM_REGION( 0x20000, "cvsd", 0 ) - ROM_LOAD( "showd2k.bin", 0x00000, 0x2000, CRC(67a86f7f) SHA1(a4f70aab90acd2502e8f3f39efdafcd71b1a22b4) ) - ROM_LOAD( "showd2l.bin", 0x02000, 0x2000, CRC(0bb8874b) SHA1(8b643dbd5412a713b3e2831dd1ba2b7d1f613ac2) ) - ROM_LOAD( "showd2m.bin", 0x04000, 0x2000, CRC(8b77eac8) SHA1(d70038cd6655e71c6488c555ecb1d1a424d00d49) ) - ROM_LOAD( "showd2n.bin", 0x06000, 0x2000, CRC(78e6eed6) SHA1(d9218745fc497a67373b0f6fd82caeef33bb4b3e) ) - ROM_LOAD( "showd2p.bin", 0x08000, 0x2000, CRC(03a13435) SHA1(1965d26a2f294e883cc6a13bc89bf0c28e30d28e) ) - ROM_LOAD( "showd2r.bin", 0x0a000, 0x2000, CRC(1b6b7eac) SHA1(b30965203807d8b863e8b2863a222d2e614eee2d) ) - ROM_LOAD( "showd2s.bin", 0x0c000, 0x2000, CRC(b88aeb82) SHA1(62d87430c7aec1aec892a15e45fb257206d8cf94) ) - ROM_LOAD( "showd2t.bin", 0x0e000, 0x2000, CRC(5c801f4d) SHA1(e6dbb2d2815b9d848c0580cff47d1f0d10c1906d) ) - ROM_LOAD( "showd1k.bin", 0x10000, 0x2000, CRC(4e1f4f15) SHA1(cf075e09eaeab1e630b5b2e28c806d4c34eece48) ) - ROM_LOAD( "showd1l.bin", 0x12000, 0x2000, CRC(6779a745) SHA1(de7d8e39f053eaa45238844e477732295d9af494) ) - ROM_LOAD( "showd1m.bin", 0x14000, 0x2000, CRC(9cebd8ea) SHA1(ff8121c16e8fe93a59c49c20459287f6b002bbbc) ) - ROM_LOAD( "showd1n.bin", 0x16000, 0x2000, CRC(689d8a3f) SHA1(aa592b9edcac8d264c9c89871283dfeebce2300e) ) - ROM_LOAD( "showd1p.bin", 0x18000, 0x2000, CRC(862b350d) SHA1(12e6c92ba424df578eac5a820a68aaaffd73c577) ) - ROM_LOAD( "showd1r.bin", 0x1a000, 0x2000, CRC(95b099ed) SHA1(1327852712ade3fc96bd8192045c081c4d32f4ba) ) - ROM_LOAD( "showd1s.bin", 0x1c000, 0x2000, CRC(8f230881) SHA1(daa8efc355fb042b2fce89a0d2950a90e56a806f) ) - ROM_LOAD( "showd1t.bin", 0x1e000, 0x2000, CRC(70e724c7) SHA1(df2905f91038693c87452813216aa86bbb81521b) ) + ROM_LOAD( "sda-5_k-2.k2", 0x00000, 0x2000, CRC(67a86f7f) SHA1(a4f70aab90acd2502e8f3f39efdafcd71b1a22b4) ) + ROM_LOAD( "sda-5_l-2.l2", 0x02000, 0x2000, CRC(0bb8874b) SHA1(8b643dbd5412a713b3e2831dd1ba2b7d1f613ac2) ) + ROM_LOAD( "sda-5_m-2.m2", 0x04000, 0x2000, CRC(8b77eac8) SHA1(d70038cd6655e71c6488c555ecb1d1a424d00d49) ) + ROM_LOAD( "sda-5_n-2.n2", 0x06000, 0x2000, CRC(78e6eed6) SHA1(d9218745fc497a67373b0f6fd82caeef33bb4b3e) ) + ROM_LOAD( "sda-5_p-2.p2", 0x08000, 0x2000, CRC(03a13435) SHA1(1965d26a2f294e883cc6a13bc89bf0c28e30d28e) ) + ROM_LOAD( "sda-5_r-2.r2", 0x0a000, 0x2000, CRC(1b6b7eac) SHA1(b30965203807d8b863e8b2863a222d2e614eee2d) ) + ROM_LOAD( "sda-5_s-2.s2", 0x0c000, 0x2000, CRC(b88aeb82) SHA1(62d87430c7aec1aec892a15e45fb257206d8cf94) ) + ROM_LOAD( "sda-5_t-2.t2", 0x0e000, 0x2000, CRC(5c801f4d) SHA1(e6dbb2d2815b9d848c0580cff47d1f0d10c1906d) ) + ROM_LOAD( "sda-5_k-1.k1", 0x10000, 0x2000, CRC(4e1f4f15) SHA1(cf075e09eaeab1e630b5b2e28c806d4c34eece48) ) + ROM_LOAD( "sda-5_l-1.l1", 0x12000, 0x2000, CRC(6779a745) SHA1(de7d8e39f053eaa45238844e477732295d9af494) ) + ROM_LOAD( "sda-5_m-1.m1", 0x14000, 0x2000, CRC(9cebd8ea) SHA1(ff8121c16e8fe93a59c49c20459287f6b002bbbc) ) + ROM_LOAD( "sda-5_n-1.n1", 0x16000, 0x2000, CRC(689d8a3f) SHA1(aa592b9edcac8d264c9c89871283dfeebce2300e) ) + ROM_LOAD( "sda-5_p-1.p1", 0x18000, 0x2000, CRC(862b350d) SHA1(12e6c92ba424df578eac5a820a68aaaffd73c577) ) + ROM_LOAD( "sda-5_r-1.r1", 0x1a000, 0x2000, CRC(95b099ed) SHA1(1327852712ade3fc96bd8192045c081c4d32f4ba) ) + ROM_LOAD( "sda-5_s-1.s1", 0x1c000, 0x2000, CRC(8f230881) SHA1(daa8efc355fb042b2fce89a0d2950a90e56a806f) ) + ROM_LOAD( "sda-5_t-1.t1", 0x1e000, 0x2000, CRC(70e724c7) SHA1(df2905f91038693c87452813216aa86bbb81521b) ) ROM_REGION( 0x00900, "user1", 0 ) /* vertical sync timing */ @@ -1850,7 +1850,7 @@ ROM_START( showdown ) /* horizontal sync timing */ ROM_LOAD( "xbl.9h", 0x00100, 0x0100, CRC(2e7d5562) SHA1(7cd51fad8236b9853eff2eb84b474838ae1b44e8) ) ROM_LOAD( "xbl.2h", 0x00200, 0x0100, CRC(b078c1e4) SHA1(13834da4384ad43bc1671366fd428520cc3d1c1a) ) -ROM_LOAD( "xml-3k_mmi_6331.bin", 0x00300, 0x0020, CRC(afa289d1) SHA1(703f3e433ebe0b9c2f1be31bef0d01b8007d48ea) ) + ROM_LOAD( "xml-3k_mmi_6331.bin", 0x00300, 0x0020, CRC(afa289d1) SHA1(703f3e433ebe0b9c2f1be31bef0d01b8007d48ea) ) ROM_LOAD( "xbl.4k", 0x00400, 0x0100, CRC(31a9549c) SHA1(5bfba7ef3f3f5fc59bc03feca39bb16d54a92778) ) ROM_LOAD( "xbl.5k", 0x00500, 0x0100, CRC(1379bb2a) SHA1(51e9e21aeb0db8727f58fda708ddea8fb53378d9) ) ROM_LOAD( "xbl.6k", 0x00600, 0x0100, CRC(588969f7) SHA1(316db275c4026e3a24e44f39f160e10189d310a3) ) -- cgit v1.2.3-70-g09d2 From 54f8b3ae5df6736c58b2a8398f9ac85da425c96d Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 22 Apr 2015 11:30:19 +0200 Subject: moved all to std::string (nw) --- src/emu/audit.c | 64 +-- src/emu/audit.h | 2 +- src/emu/bus/gba/gba_slot.c | 7 +- src/emu/cheat.c | 106 ++--- src/emu/cheat.h | 20 +- src/emu/clifront.c | 67 +-- src/emu/cpu/8x300/8x300.c | 2 +- src/emu/cpu/8x300/8x300.h | 2 +- src/emu/cpu/adsp2100/adsp2100.c | 14 +- src/emu/cpu/adsp2100/adsp2100.h | 2 +- src/emu/cpu/alph8201/alph8201.c | 4 +- src/emu/cpu/alph8201/alph8201.h | 2 +- src/emu/cpu/alto2/alto2cpu.c | 6 +- src/emu/cpu/alto2/alto2cpu.h | 2 +- src/emu/cpu/am29000/am29000.c | 4 +- src/emu/cpu/am29000/am29000.h | 2 +- src/emu/cpu/amis2000/amis2000.c | 4 +- src/emu/cpu/amis2000/amis2000.h | 2 +- src/emu/cpu/apexc/apexc.c | 4 +- src/emu/cpu/apexc/apexc.h | 2 +- src/emu/cpu/arm/arm.c | 4 +- src/emu/cpu/arm/arm.h | 2 +- src/emu/cpu/arm7/arm7.c | 4 +- src/emu/cpu/arm7/arm7.h | 2 +- src/emu/cpu/asap/asap.c | 8 +- src/emu/cpu/asap/asap.h | 2 +- src/emu/cpu/avr8/avr8.c | 6 +- src/emu/cpu/avr8/avr8.h | 2 +- src/emu/cpu/ccpu/ccpu.c | 4 +- src/emu/cpu/ccpu/ccpu.h | 2 +- src/emu/cpu/cop400/cop400.c | 4 +- src/emu/cpu/cop400/cop400.h | 2 +- src/emu/cpu/cosmac/cosmac.c | 8 +- src/emu/cpu/cosmac/cosmac.h | 2 +- src/emu/cpu/cp1610/cp1610.c | 4 +- src/emu/cpu/cp1610/cp1610.h | 2 +- src/emu/cpu/cubeqcpu/cubeqcpu.c | 8 +- src/emu/cpu/cubeqcpu/cubeqcpu.h | 4 +- src/emu/cpu/drcbex64.c | 8 +- src/emu/cpu/drcbex86.c | 8 +- src/emu/cpu/drcuml.c | 22 +- src/emu/cpu/drcuml.h | 4 +- src/emu/cpu/dsp16/dsp16.c | 42 +- src/emu/cpu/dsp16/dsp16.h | 2 +- src/emu/cpu/dsp16/dsp16dis.c | 180 ++++---- src/emu/cpu/dsp32/dsp32.c | 10 +- src/emu/cpu/dsp32/dsp32.h | 2 +- src/emu/cpu/dsp56k/dsp56k.c | 12 +- src/emu/cpu/dsp56k/dsp56k.h | 2 +- src/emu/cpu/dsp56k/inst.h | 454 +++++++++---------- src/emu/cpu/dsp56k/opcode.c | 10 +- src/emu/cpu/dsp56k/opcode.h | 4 +- src/emu/cpu/dsp56k/pmove.h | 48 +- src/emu/cpu/dsp56k/tables.c | 120 ++--- src/emu/cpu/dsp56k/tables.h | 36 +- src/emu/cpu/e132xs/e132xs.c | 6 +- src/emu/cpu/e132xs/e132xs.h | 2 +- src/emu/cpu/esrip/esrip.c | 6 +- src/emu/cpu/esrip/esrip.h | 2 +- src/emu/cpu/f8/f8.c | 4 +- src/emu/cpu/f8/f8.h | 2 +- src/emu/cpu/g65816/g65816.c | 4 +- src/emu/cpu/g65816/g65816.h | 2 +- src/emu/cpu/h6280/h6280.c | 4 +- src/emu/cpu/h6280/h6280.h | 2 +- src/emu/cpu/h8/h8.c | 8 +- src/emu/cpu/h8/h8.h | 2 +- src/emu/cpu/hcd62121/hcd62121.c | 70 +-- src/emu/cpu/hcd62121/hcd62121.h | 2 +- src/emu/cpu/hd61700/hd61700.c | 8 +- src/emu/cpu/hd61700/hd61700.h | 2 +- src/emu/cpu/hmcs40/hmcs40.c | 4 +- src/emu/cpu/hmcs40/hmcs40.h | 2 +- src/emu/cpu/i386/i386.c | 36 +- src/emu/cpu/i386/i386.h | 2 +- src/emu/cpu/i4004/i4004.c | 10 +- src/emu/cpu/i4004/i4004.h | 2 +- src/emu/cpu/i8008/i8008.c | 8 +- src/emu/cpu/i8008/i8008.h | 2 +- src/emu/cpu/i8085/i8085.c | 4 +- src/emu/cpu/i8085/i8085.h | 2 +- src/emu/cpu/i8089/i8089.c | 16 +- src/emu/cpu/i8089/i8089.h | 2 +- src/emu/cpu/i86/i286.c | 6 +- src/emu/cpu/i86/i286.h | 2 +- src/emu/cpu/i86/i86.c | 6 +- src/emu/cpu/i86/i86.h | 2 +- src/emu/cpu/i960/i960.c | 4 +- src/emu/cpu/i960/i960.h | 2 +- src/emu/cpu/ie15/ie15.c | 8 +- src/emu/cpu/ie15/ie15.h | 2 +- src/emu/cpu/jaguar/jaguar.c | 4 +- src/emu/cpu/jaguar/jaguar.h | 2 +- src/emu/cpu/lc8670/lc8670.c | 4 +- src/emu/cpu/lc8670/lc8670.h | 2 +- src/emu/cpu/lh5801/lh5801.c | 4 +- src/emu/cpu/lh5801/lh5801.h | 2 +- src/emu/cpu/lr35902/lr35902.c | 6 +- src/emu/cpu/lr35902/lr35902.h | 2 +- src/emu/cpu/m37710/m37710.c | 4 +- src/emu/cpu/m37710/m37710.h | 2 +- src/emu/cpu/m6502/m6502.c | 4 +- src/emu/cpu/m6502/m6502.h | 2 +- src/emu/cpu/m6502/m65ce02.c | 6 +- src/emu/cpu/m6502/m65ce02.h | 2 +- src/emu/cpu/m6502/m740.c | 4 +- src/emu/cpu/m6502/m740.h | 2 +- src/emu/cpu/m6800/m6800.c | 4 +- src/emu/cpu/m6800/m6800.h | 2 +- src/emu/cpu/m68000/m68000.h | 2 +- src/emu/cpu/m68000/m68kcpu.c | 40 +- src/emu/cpu/m6805/m6805.c | 6 +- src/emu/cpu/m6805/m6805.h | 2 +- src/emu/cpu/m6809/m6809.c | 5 +- src/emu/cpu/m6809/m6809.h | 2 +- src/emu/cpu/mb86233/mb86233.c | 4 +- src/emu/cpu/mb86233/mb86233.h | 2 +- src/emu/cpu/mb86235/mb86235.c | 4 +- src/emu/cpu/mb86235/mb86235.h | 2 +- src/emu/cpu/mb88xx/mb88xx.c | 4 +- src/emu/cpu/mb88xx/mb88xx.h | 2 +- src/emu/cpu/mc68hc11/mc68hc11.c | 4 +- src/emu/cpu/mc68hc11/mc68hc11.h | 2 +- src/emu/cpu/mcs48/mcs48.c | 13 +- src/emu/cpu/mcs48/mcs48.h | 2 +- src/emu/cpu/mcs51/mcs51.c | 4 +- src/emu/cpu/mcs51/mcs51.h | 2 +- src/emu/cpu/mcs96/mcs96.c | 6 +- src/emu/cpu/mcs96/mcs96.h | 4 +- src/emu/cpu/minx/minx.c | 4 +- src/emu/cpu/minx/minx.h | 2 +- src/emu/cpu/mips/mips3.c | 132 +++--- src/emu/cpu/mips/mips3.h | 2 +- src/emu/cpu/mips/r3000.c | 2 +- src/emu/cpu/mips/r3000.h | 2 +- src/emu/cpu/mn10200/mn10200.c | 4 +- src/emu/cpu/mn10200/mn10200.h | 2 +- src/emu/cpu/nec/nec.c | 4 +- src/emu/cpu/nec/nec.h | 2 +- src/emu/cpu/nec/v25.c | 4 +- src/emu/cpu/nec/v25.h | 2 +- src/emu/cpu/pdp1/pdp1.c | 4 +- src/emu/cpu/pdp1/pdp1.h | 2 +- src/emu/cpu/pic16c5x/pic16c5x.c | 6 +- src/emu/cpu/pic16c5x/pic16c5x.h | 2 +- src/emu/cpu/pic16c62x/pic16c62x.c | 6 +- src/emu/cpu/pic16c62x/pic16c62x.h | 2 +- src/emu/cpu/powerpc/ppc.h | 2 +- src/emu/cpu/powerpc/ppccom.c | 66 +-- src/emu/cpu/pps4/pps4.c | 4 +- src/emu/cpu/pps4/pps4.h | 2 +- src/emu/cpu/psx/psx.c | 6 +- src/emu/cpu/psx/psx.h | 2 +- src/emu/cpu/rsp/rsp.c | 4 +- src/emu/cpu/rsp/rsp.h | 2 +- src/emu/cpu/rsp/rspcp2.c | 66 +-- src/emu/cpu/rsp/rspcp2.h | 2 +- src/emu/cpu/rsp/rspcp2d.c | 66 +-- src/emu/cpu/rsp/rspcp2d.h | 2 +- src/emu/cpu/rsp/rspcp2s.c | 2 +- src/emu/cpu/rsp/rspcp2s.h | 2 +- src/emu/cpu/s2650/s2650.c | 4 +- src/emu/cpu/s2650/s2650.h | 2 +- src/emu/cpu/saturn/saturn.c | 24 +- src/emu/cpu/saturn/saturn.h | 2 +- src/emu/cpu/sc61860/sc61860.c | 4 +- src/emu/cpu/sc61860/sc61860.h | 2 +- src/emu/cpu/scmp/scmp.c | 4 +- src/emu/cpu/scmp/scmp.h | 2 +- src/emu/cpu/score/score.c | 12 +- src/emu/cpu/score/score.h | 2 +- src/emu/cpu/scudsp/scudsp.c | 4 +- src/emu/cpu/scudsp/scudsp.h | 2 +- src/emu/cpu/se3208/se3208.c | 4 +- src/emu/cpu/se3208/se3208.h | 2 +- src/emu/cpu/sh2/sh2.c | 4 +- src/emu/cpu/sh2/sh2.h | 2 +- src/emu/cpu/sh4/sh4.c | 68 +-- src/emu/cpu/sh4/sh4.h | 2 +- src/emu/cpu/sm8500/sm8500.c | 22 +- src/emu/cpu/sm8500/sm8500.h | 2 +- src/emu/cpu/spc700/spc700.c | 4 +- src/emu/cpu/spc700/spc700.h | 2 +- src/emu/cpu/ssem/ssem.c | 6 +- src/emu/cpu/ssem/ssem.h | 2 +- src/emu/cpu/ssp1601/ssp1601.c | 4 +- src/emu/cpu/ssp1601/ssp1601.h | 2 +- src/emu/cpu/t11/t11.c | 4 +- src/emu/cpu/t11/t11.h | 2 +- src/emu/cpu/tlcs90/tlcs90.c | 4 +- src/emu/cpu/tlcs90/tlcs90.h | 2 +- src/emu/cpu/tlcs900/tlcs900.c | 4 +- src/emu/cpu/tlcs900/tlcs900.h | 2 +- src/emu/cpu/tms0980/tms0980.c | 4 +- src/emu/cpu/tms0980/tms0980.h | 2 +- src/emu/cpu/tms32010/tms32010.c | 4 +- src/emu/cpu/tms32010/tms32010.h | 2 +- src/emu/cpu/tms32025/tms32025.c | 4 +- src/emu/cpu/tms32025/tms32025.h | 2 +- src/emu/cpu/tms32031/tms32031.c | 6 +- src/emu/cpu/tms32031/tms32031.h | 2 +- src/emu/cpu/tms32082/tms32082.c | 8 +- src/emu/cpu/tms32082/tms32082.h | 4 +- src/emu/cpu/tms34010/tms34010.c | 10 +- src/emu/cpu/tms34010/tms34010.h | 2 +- src/emu/cpu/tms7000/tms7000.c | 4 +- src/emu/cpu/tms7000/tms7000.h | 2 +- src/emu/cpu/tms9900/tms9900.c | 4 +- src/emu/cpu/tms9900/tms9900.h | 2 +- src/emu/cpu/tms9900/tms9995.c | 4 +- src/emu/cpu/tms9900/tms9995.h | 2 +- src/emu/cpu/ucom4/ucom4.c | 4 +- src/emu/cpu/ucom4/ucom4.h | 2 +- src/emu/cpu/uml.c | 66 +-- src/emu/cpu/uml.h | 4 +- src/emu/cpu/upd7725/upd7725.c | 8 +- src/emu/cpu/upd7725/upd7725.h | 2 +- src/emu/cpu/upd7810/upd7810.c | 4 +- src/emu/cpu/upd7810/upd7810.h | 2 +- src/emu/cpu/v30mz/v30mz.c | 6 +- src/emu/cpu/v30mz/v30mz.h | 2 +- src/emu/cpu/v810/v810.c | 4 +- src/emu/cpu/v810/v810.h | 2 +- src/emu/cpu/x86log.c | 4 +- src/emu/cpu/z180/z180.c | 4 +- src/emu/cpu/z180/z180.h | 2 +- src/emu/cpu/z8/z8.c | 8 +- src/emu/cpu/z8/z8.h | 2 +- src/emu/cpu/z80/z80.c | 4 +- src/emu/cpu/z80/z80.h | 2 +- src/emu/cpu/z8000/z8000.c | 4 +- src/emu/cpu/z8000/z8000.h | 2 +- src/emu/debug/debugcmd.c | 64 +-- src/emu/debug/debugcon.c | 12 +- src/emu/debug/debugcpu.c | 40 +- src/emu/debug/debugcpu.h | 12 +- src/emu/debug/debugvw.c | 2 +- src/emu/debug/debugvw.h | 6 +- src/emu/debug/dvbpoints.c | 73 ++-- src/emu/debug/dvbpoints.h | 2 +- src/emu/debug/dvdisasm.c | 4 +- src/emu/debug/dvmemory.c | 14 +- src/emu/debug/dvmemory.h | 2 +- src/emu/debug/dvstate.c | 30 +- src/emu/debug/dvstate.h | 2 +- src/emu/debug/dvwpoints.c | 93 ++-- src/emu/debug/dvwpoints.h | 2 +- src/emu/debug/express.c | 8 +- src/emu/debug/express.h | 6 +- src/emu/devfind.h | 11 +- src/emu/diimage.c | 107 ++--- src/emu/diimage.h | 32 +- src/emu/dimemory.c | 4 +- src/emu/dislot.c | 2 +- src/emu/disound.h | 2 +- src/emu/distate.c | 62 +-- src/emu/distate.h | 12 +- src/emu/emucore.h | 2 - src/emu/emuopts.c | 46 +- src/emu/emuopts.h | 12 +- src/emu/emupal.c | 2 +- src/emu/fileio.c | 84 ++-- src/emu/fileio.h | 14 +- src/emu/hash.c | 67 +-- src/emu/hash.h | 12 +- src/emu/image.c | 16 +- src/emu/image.h | 2 +- src/emu/imagedev/cassette.c | 6 +- src/emu/imagedev/diablo.c | 10 +- src/emu/imagedev/harddriv.c | 12 +- src/emu/info.c | 96 ++-- src/emu/input.c | 125 +++--- src/emu/input.h | 18 +- src/emu/ioport.c | 100 ++--- src/emu/ioport.h | 32 +- src/emu/luaengine.c | 10 +- src/emu/machine.c | 85 ++-- src/emu/machine.h | 10 +- src/emu/machine/fdc_pll.c | 2 +- src/emu/machine/fdc_pll.h | 2 +- src/emu/machine/hdc9234.c | 4 +- src/emu/machine/hdc9234.h | 4 +- src/emu/machine/laserdsc.c | 2 +- src/emu/machine/netlist.h | 6 +- src/emu/machine/ram.c | 12 +- src/emu/machine/upd765.c | 4 +- src/emu/machine/upd765.h | 4 +- src/emu/machine/wd_fdc.c | 4 +- src/emu/machine/wd_fdc.h | 6 +- src/emu/mame.c | 10 +- src/emu/mconfig.c | 2 +- src/emu/memory.c | 22 +- src/emu/memory.h | 8 +- src/emu/output.c | 4 +- src/emu/profiler.c | 16 +- src/emu/profiler.h | 2 +- src/emu/render.c | 4 +- src/emu/rendfont.c | 4 +- src/emu/rendlay.c | 18 +- src/emu/rendlay.h | 18 +- src/emu/rendutil.c | 6 +- src/emu/romload.c | 150 +++---- src/emu/romload.h | 2 +- src/emu/save.c | 12 +- src/emu/save.h | 10 +- src/emu/schedule.c | 4 +- src/emu/screen.c | 8 +- src/emu/softlist.c | 61 +-- src/emu/softlist.h | 4 +- src/emu/sound.c | 12 +- src/emu/sound.h | 2 +- src/emu/tilemap.c | 2 +- src/emu/ui/barcode.c | 10 +- src/emu/ui/cheatopt.c | 4 +- src/emu/ui/devctrl.h | 14 +- src/emu/ui/devopt.c | 94 ++-- src/emu/ui/filemngr.c | 28 +- src/emu/ui/filemngr.h | 8 +- src/emu/ui/info.c | 6 +- src/emu/ui/inputmap.c | 58 +-- src/emu/ui/mainmenu.c | 10 +- src/emu/ui/menu.c | 4 +- src/emu/ui/miscmenu.c | 28 +- src/emu/ui/selgame.c | 28 +- src/emu/ui/sliders.c | 6 +- src/emu/ui/slotopt.c | 12 +- src/emu/ui/swlist.c | 4 +- src/emu/ui/tapectrl.c | 8 +- src/emu/ui/tapectrl.h | 2 +- src/emu/ui/ui.c | 308 ++++++------- src/emu/ui/ui.h | 8 +- src/emu/ui/videoopt.c | 5 +- src/emu/validity.c | 42 +- src/emu/validity.h | 6 +- src/emu/video.c | 84 ++-- src/emu/video.h | 2 +- src/emu/webengine.c | 8 +- src/lib/formats/ccvf_dsk.c | 10 +- src/lib/util/astring.c | 483 --------------------- src/lib/util/astring.h | 157 ------- src/lib/util/cdrom.c | 8 +- src/lib/util/chd.c | 6 +- src/lib/util/chd.h | 7 +- src/lib/util/chdcd.c | 36 +- src/lib/util/chdcd.h | 4 +- src/lib/util/chdcodec.c | 2 +- src/lib/util/corefile.c | 6 +- src/lib/util/corefile.h | 5 +- src/lib/util/corestr.c | 122 ++++++ src/lib/util/corestr.h | 15 + src/lib/util/harddisk.c | 2 +- src/lib/util/hashing.c | 24 +- src/lib/util/hashing.h | 11 +- src/lib/util/options.c | 104 ++--- src/lib/util/options.h | 28 +- src/lib/util/zippath.c | 17 +- src/mame/drivers/bfm_sc45_helper.c | 44 +- src/mame/drivers/cps3.c | 4 +- src/mame/etc/template_cpu.c | 4 +- src/mame/etc/template_cpu.h | 2 +- src/mess/drivers/aim65.c | 4 +- src/mess/drivers/pegasus.c | 4 +- src/mess/machine/spec_snqk.c | 10 +- src/mess/machine/thomson.c | 8 +- src/mess/tools/imgtool/imghd.c | 4 +- src/osd/modules/debugger/debugint.c | 22 +- .../modules/debugger/qt/deviceinformationwindow.h | 2 +- src/osd/modules/debugger/qt/mainwindow.c | 10 +- src/osd/modules/debugger/win/consolewininfo.c | 40 +- src/osd/modules/debugger/win/consolewininfo.h | 6 +- src/osd/modules/debugger/win/disasmbasewininfo.c | 14 +- src/osd/modules/debugger/win/disasmwininfo.c | 2 +- src/osd/modules/debugger/win/editwininfo.h | 2 +- src/osd/modules/debugger/win/logwininfo.c | 2 +- src/osd/modules/debugger/win/memorywininfo.c | 2 +- src/osd/modules/debugger/win/pointswininfo.c | 2 +- src/osd/modules/font/font_sdl.c | 22 +- src/osd/modules/font/font_windows.c | 10 +- src/osd/modules/lib/osdobj_common.c | 16 +- src/osd/modules/lib/osdobj_common.h | 18 +- src/osd/modules/osdmodule.h | 4 +- src/osd/modules/render/d3d/d3dhlsl.c | 201 ++++----- src/osd/modules/render/d3d/d3dhlsl.h | 2 +- src/osd/sdl/input.c | 2 +- src/osd/sdl/osdsdl.h | 6 +- src/osd/sdl/sdlmain.c | 4 +- src/osd/windows/winmain.c | 58 +-- src/tools/chdman.c | 232 +++++----- src/tools/ldresample.c | 2 +- src/tools/ldverify.c | 2 +- src/tools/nltool.c | 5 +- src/tools/pngcmp.c | 10 +- src/tools/regrep.c | 98 ++--- src/tools/split.c | 49 ++- src/tools/src2html.c | 184 ++++---- 395 files changed, 3443 insertions(+), 3896 deletions(-) delete mode 100644 src/lib/util/astring.c delete mode 100644 src/lib/util/astring.h (limited to 'src') diff --git a/src/emu/audit.c b/src/emu/audit.c index fe207522c02..b8ab208d6a0 100644 --- a/src/emu/audit.c +++ b/src/emu/audit.c @@ -64,9 +64,9 @@ const char *driverpath = m_enumerator.config().root_device().searchpath(); for (const rom_entry *region = rom_first_region(*device); region != NULL; region = rom_next_region(region)) { // temporary hack: add the driver path & region name -astring combinedpath = astring(device->searchpath()).cat(";").cat(driverpath); +std::string combinedpath = std::string(device->searchpath()).append(";").append(driverpath); if (device->shortname()) - combinedpath.cat(";").cat(device->shortname()); + combinedpath.append(";").append(device->shortname()); m_searchpath = combinedpath.c_str(); for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) @@ -188,19 +188,19 @@ media_auditor::summary media_auditor::audit_software(const char *list_name, soft // store validation for later m_validation = validation; - astring combinedpath(swinfo->shortname()); - combinedpath.cat(";"); - combinedpath.cat(list_name); - combinedpath.cat(PATH_SEPARATOR); - combinedpath.cat(swinfo->shortname()); - astring locationtag(list_name); - locationtag.cat("%"); - locationtag.cat(swinfo->shortname()); - locationtag.cat("%"); + std::string combinedpath(swinfo->shortname()); + combinedpath.append(";"); + combinedpath.append(list_name); + combinedpath.append(PATH_SEPARATOR); + combinedpath.append(swinfo->shortname()); + std::string locationtag(list_name); + locationtag.append("%"); + locationtag.append(swinfo->shortname()); + locationtag.append("%"); if (swinfo->parentname() != NULL) { - locationtag.cat(swinfo->parentname()); - combinedpath.cat(";").cat(swinfo->parentname()).cat(";").cat(list_name).cat(PATH_SEPARATOR).cat(swinfo->parentname()); + locationtag.append(swinfo->parentname()); + combinedpath.append(";").append(swinfo->parentname()).append(";").append(list_name).append(PATH_SEPARATOR).append(swinfo->parentname()); } m_searchpath = combinedpath.c_str(); @@ -274,12 +274,12 @@ media_auditor::summary media_auditor::audit_samples() for (samples_device *device = iter.first(); device != NULL; device = iter.next()) { // by default we just search using the driver name - astring searchpath(m_enumerator.driver().name); + std::string searchpath(m_enumerator.driver().name); // add the alternate path if present samples_iterator iter(*device); if (iter.altbasename() != NULL) - searchpath.cat(";").cat(iter.altbasename()); + searchpath.append(";").append(iter.altbasename()); // iterate over samples in this entry for (const char *samplename = iter.first(); samplename != NULL; samplename = iter.next()) @@ -292,7 +292,7 @@ media_auditor::summary media_auditor::audit_samples() // look for the files emu_file file(m_enumerator.options().sample_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD); path_iterator path(searchpath.c_str()); - astring curpath; + std::string curpath; while (path.next(curpath, samplename)) { // attempt to access the file (.flac) or (.wav) @@ -327,7 +327,7 @@ media_auditor::summary media_auditor::audit_samples() // string format //------------------------------------------------- -media_auditor::summary media_auditor::summarize(const char *name, astring *output) +media_auditor::summary media_auditor::summarize(const char *name, std::string *output) { if (m_record_list.count() == 0) { @@ -347,37 +347,37 @@ media_auditor::summary media_auditor::summarize(const char *name, astring *outpu // output the game name, file name, and length (if applicable) if (output != NULL) { - output->catprintf("%-12s: %s", name, record->name()); + strcatprintf(*output,"%-12s: %s", name, record->name()); if (record->expected_length() > 0) - output->catprintf(" (%" I64FMT "d bytes)", record->expected_length()); - output->catprintf(" - "); + strcatprintf(*output," (%" I64FMT "d bytes)", record->expected_length()); + strcatprintf(*output," - "); } // use the substatus for finer details switch (record->substatus()) { case audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP: - if (output != NULL) output->catprintf("NEEDS REDUMP\n"); + if (output != NULL) strcatprintf(*output,"NEEDS REDUMP\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_FOUND_NODUMP: - if (output != NULL) output->catprintf("NO GOOD DUMP KNOWN\n"); + if (output != NULL) strcatprintf(*output,"NO GOOD DUMP KNOWN\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM: if (output != NULL) { - astring tempstr; - output->catprintf("INCORRECT CHECKSUM:\n"); - output->catprintf("EXPECTED: %s\n", record->expected_hashes().macro_string(tempstr)); - output->catprintf(" FOUND: %s\n", record->actual_hashes().macro_string(tempstr)); + std::string tempstr; + strcatprintf(*output,"INCORRECT CHECKSUM:\n"); + strcatprintf(*output,"EXPECTED: %s\n", record->expected_hashes().macro_string(tempstr)); + strcatprintf(*output," FOUND: %s\n", record->actual_hashes().macro_string(tempstr)); } break; case audit_record::SUBSTATUS_FOUND_WRONG_LENGTH: - if (output != NULL) output->catprintf("INCORRECT LENGTH: %" I64FMT "d bytes\n", record->actual_length()); + if (output != NULL) strcatprintf(*output,"INCORRECT LENGTH: %" I64FMT "d bytes\n", record->actual_length()); break; case audit_record::SUBSTATUS_NOT_FOUND: @@ -385,20 +385,20 @@ media_auditor::summary media_auditor::summarize(const char *name, astring *outpu { device_t *shared_device = record->shared_device(); if (shared_device == NULL) - output->catprintf("NOT FOUND\n"); + strcatprintf(*output,"NOT FOUND\n"); else - output->catprintf("NOT FOUND (%s)\n", shared_device->shortname()); + strcatprintf(*output,"NOT FOUND (%s)\n", shared_device->shortname()); } best_new_status = NOTFOUND; break; case audit_record::SUBSTATUS_NOT_FOUND_NODUMP: - if (output != NULL) output->catprintf("NOT FOUND - NO GOOD DUMP KNOWN\n"); + if (output != NULL) strcatprintf(*output,"NOT FOUND - NO GOOD DUMP KNOWN\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL: - if (output != NULL) output->catprintf("NOT FOUND BUT OPTIONAL\n"); + if (output != NULL) strcatprintf(*output,"NOT FOUND BUT OPTIONAL\n"); best_new_status = BEST_AVAILABLE; break; @@ -430,7 +430,7 @@ audit_record *media_auditor::audit_one_rom(const rom_entry *rom) emu_file file(m_enumerator.options().media_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD); file.set_restrict_to_mediapath(true); path_iterator path(m_searchpath); - astring curpath; + std::string curpath; while (path.next(curpath, record.name())) { // open the file if we can diff --git a/src/emu/audit.h b/src/emu/audit.h index f769cbb22b1..5989fe5a10e 100644 --- a/src/emu/audit.h +++ b/src/emu/audit.h @@ -149,7 +149,7 @@ public: summary audit_device(device_t *device, const char *validation = AUDIT_VALIDATE_FULL); summary audit_software(const char *list_name, software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); summary audit_samples(); - summary summarize(const char *name,astring *output = NULL); + summary summarize(const char *name,std::string *output = NULL); private: // internal helpers diff --git a/src/emu/bus/gba/gba_slot.c b/src/emu/bus/gba/gba_slot.c index 1122958a4b5..bc2ccd88f66 100644 --- a/src/emu/bus/gba/gba_slot.c +++ b/src/emu/bus/gba/gba_slot.c @@ -256,9 +256,9 @@ bool gba_cart_slot_device::call_softlist_load(software_list_device &swlist, cons fullpath -------------------------------------------------*/ -INLINE astring gba_chip_string( UINT32 chip ) +INLINE std::string gba_chip_string( UINT32 chip ) { - astring str; + std::string str; if (chip == 0) str += "NONE "; if (chip & GBA_CHIP_EEPROM) str += "EEPROM "; if (chip & GBA_CHIP_EEPROM_64K) str += "EEPROM_64K "; @@ -268,7 +268,8 @@ INLINE astring gba_chip_string( UINT32 chip ) if (chip & GBA_CHIP_FLASH_512) str += "FLASH_512 "; if (chip & GBA_CHIP_SRAM) str += "SRAM "; if (chip & GBA_CHIP_RTC) str += "RTC "; - return str.trimspace(); + strtrimspace(str); + return str; } diff --git a/src/emu/cheat.c b/src/emu/cheat.c index 39cd2074073..fc19df4e83c 100644 --- a/src/emu/cheat.c +++ b/src/emu/cheat.c @@ -101,25 +101,25 @@ // the format //------------------------------------------------- -inline const char *number_and_format::format(astring &str) const +inline const char *number_and_format::format(std::string &str) const { switch (m_format) { default: case XML_INT_FORMAT_DECIMAL: - str.printf("%d", (UINT32)m_value); + strprintf(str, "%d", (UINT32)m_value); break; case XML_INT_FORMAT_DECIMAL_POUND: - str.printf("#%d", (UINT32)m_value); + strprintf(str, "#%d", (UINT32)m_value); break; case XML_INT_FORMAT_HEX_DOLLAR: - str.printf("$%X", (UINT32)m_value); + strprintf(str, "$%X", (UINT32)m_value); break; case XML_INT_FORMAT_HEX_C: - str.printf("0x%X", (UINT32)m_value); + strprintf(str, "0x%X", (UINT32)m_value); break; } return str.c_str(); @@ -178,16 +178,16 @@ const char *cheat_parameter::text() { // are we a value cheat? if (!has_itemlist()) - m_curtext.format("%d (0x%X)", UINT32(m_value), UINT32(m_value)); + strprintf(m_curtext,"%d (0x%X)", UINT32(m_value), UINT32(m_value)); // if not, we're an item cheat else { - m_curtext.format("??? (%d)", UINT32(m_value)); + strprintf(m_curtext, "??? (%d)", UINT32(m_value)); for (item *curitem = m_itemlist.first(); curitem != NULL; curitem = curitem->next()) if (curitem->value() == m_value) { - m_curtext.cpy(curitem->text()); + m_curtext.assign(curitem->text()); break; } } @@ -205,7 +205,7 @@ void cheat_parameter::save(emu_file &cheatfile) const cheatfile.printf("\t\tvalues(argindex, ¶ms[curarg]); // generate the astring - manager.get_output_astring(m_line, m_justify).printf(m_format.c_str(), + strprintf(manager.get_output_astring(m_line, m_justify), m_format.c_str(), (UINT32)params[0], (UINT32)params[1], (UINT32)params[2], (UINT32)params[3], (UINT32)params[4], (UINT32)params[5], (UINT32)params[6], (UINT32)params[7], (UINT32)params[8], (UINT32)params[9], (UINT32)params[10], (UINT32)params[11], @@ -526,7 +526,7 @@ void cheat_script::script_entry::execute(cheat_manager &manager, UINT64 &arginde void cheat_script::script_entry::save(emu_file &cheatfile) const { - astring tempstring; + std::string tempstring; // output an action if (m_format.empty()) @@ -660,7 +660,7 @@ int cheat_script::script_entry::output_argument::values(UINT64 &argindex, UINT64 void cheat_script::script_entry::output_argument::save(emu_file &cheatfile) const { - astring tempstring; + std::string tempstring; cheatfile.printf("\t\t\t\tvalue != NULL && commentnode->value[0] != 0) - m_comment.cpy(commentnode->value); + m_comment.assign(commentnode->value); // only one comment is kept commentnode = xml_get_sibling(commentnode->next, "comment"); @@ -951,11 +953,11 @@ bool cheat_entry::select_next_state() // this cheat in a menu item //------------------------------------------------- -void cheat_entry::menu_text(astring &description, astring &state, UINT32 &flags) +void cheat_entry::menu_text(std::string &description, std::string &state, UINT32 &flags) { // description is standard - description.cpy(m_description); - state.reset(); + description.assign(m_description); + state.clear(); flags = 0; // some cheat entries are just text for display @@ -963,21 +965,21 @@ void cheat_entry::menu_text(astring &description, astring &state, UINT32 &flags) { if (!description.empty()) { - description.trimspace(); + strtrimspace(description); if (description.empty()) - description.cpy(MENU_SEPARATOR_ITEM); + description.assign(MENU_SEPARATOR_ITEM); } flags = MENU_FLAG_DISABLE; } // if we have no parameter and no run or off script, it's a oneshot cheat else if (is_oneshot()) - state.cpy("Set"); + state.assign("Set"); // if we have no parameter, it's just on/off else if (is_onoff()) { - state.cpy((m_state == SCRIPT_STATE_RUN) ? "On" : "Off"); + state.assign((m_state == SCRIPT_STATE_RUN) ? "On" : "Off"); flags = (m_state != 0) ? MENU_FLAG_LEFT_ARROW : MENU_FLAG_RIGHT_ARROW; } @@ -986,12 +988,12 @@ void cheat_entry::menu_text(astring &description, astring &state, UINT32 &flags) { if (m_state == SCRIPT_STATE_OFF) { - state.cpy(is_oneshot_parameter() ? "Set" : "Off"); + state.assign(is_oneshot_parameter() ? "Set" : "Off"); flags = MENU_FLAG_RIGHT_ARROW; } else { - state.cpy(m_parameter->text()); + state.assign(m_parameter->text()); flags = MENU_FLAG_LEFT_ARROW; if (!m_parameter->is_maximum()) flags |= MENU_FLAG_RIGHT_ARROW; @@ -1149,8 +1151,8 @@ void cheat_manager::reload() UINT32 crc = image->crc(); if (crc != 0) { - astring filename; - filename.printf("%08X", crc); + std::string filename; + strprintf(filename,"%08X", crc); load_cheats(filename.c_str()); break; } @@ -1235,7 +1237,7 @@ void cheat_manager::render_text(render_container &container) // justification //------------------------------------------------- -astring &cheat_manager::get_output_astring(int row, int justify) +std::string &cheat_manager::get_output_astring(int row, int justify) { // if the row is not specified, grab the next one if (row == 0) @@ -1263,34 +1265,34 @@ astring &cheat_manager::get_output_astring(int row, int justify) // document //------------------------------------------------- -const char *cheat_manager::quote_expression(astring &str, const parsed_expression &expression) +const char *cheat_manager::quote_expression(std::string &str, const parsed_expression &expression) { - str.cpy(expression.original_string()); + str.assign(expression.original_string()); - str.replace(0, " && ", " and "); - str.replace(0, " &&", " and "); - str.replace(0, "&& ", " and "); - str.replace(0, "&&", " and "); + strreplace(str, " && ", " and "); + strreplace(str, " &&", " and "); + strreplace(str, "&& ", " and "); + strreplace(str, "&&", " and "); - str.replace(0, " & ", " band "); - str.replace(0, " &", " band "); - str.replace(0, "& ", " band "); - str.replace(0, "&", " band "); + strreplace(str, " & ", " band "); + strreplace(str, " &", " band "); + strreplace(str, "& ", " band "); + strreplace(str, "&", " band "); - str.replace(0, " <= ", " le "); - str.replace(0, " <=", " le "); - str.replace(0, "<= ", " le "); - str.replace(0, "<=", " le "); + strreplace(str, " <= ", " le "); + strreplace(str, " <=", " le "); + strreplace(str, "<= ", " le "); + strreplace(str, "<=", " le "); - str.replace(0, " < ", " lt "); - str.replace(0, " <", " lt "); - str.replace(0, "< ", " lt "); - str.replace(0, "<", " lt "); + strreplace(str, " < ", " lt "); + strreplace(str, " <", " lt "); + strreplace(str, "< ", " lt "); + strreplace(str, "<", " lt "); - str.replace(0, " << ", " lshift "); - str.replace(0, " <<", " lshift "); - str.replace(0, "<< ", " lshift "); - str.replace(0, "<<", " lshift "); + strreplace(str, " << ", " lshift "); + strreplace(str, " <<", " lshift "); + strreplace(str, "<< ", " lshift "); + strreplace(str, "<<", " lshift "); return str.c_str(); } @@ -1347,7 +1349,7 @@ void cheat_manager::frame_update() m_numlines = floor(1.0f / machine().ui().get_line_height()); m_numlines = MIN(m_numlines, ARRAY_LENGTH(m_output)); for (int linenum = 0; linenum < ARRAY_LENGTH(m_output); linenum++) - m_output[linenum].reset(); + m_output[linenum].clear(); // iterate over running cheats and execute them for (cheat_entry *cheat = m_cheatlist.first(); cheat != NULL; cheat = cheat->next()) diff --git a/src/emu/cheat.h b/src/emu/cheat.h index 9e80b6c6bb1..816781a461d 100644 --- a/src/emu/cheat.h +++ b/src/emu/cheat.h @@ -56,7 +56,7 @@ public: operator const UINT64 &() const { return m_value; } // format the number according to its format - const char *format(astring &str) const; + const char *format(std::string &str) const; private: // internal state @@ -109,7 +109,7 @@ private: private: // internal state item * m_next; // next item in list - astring m_text; // name of the item + std::string m_text; // name of the item number_and_format m_value; // value of the item }; @@ -118,7 +118,7 @@ private: number_and_format m_maxval; // maximum value number_and_format m_stepval; // step value UINT64 m_value; // live value of the parameter - astring m_curtext; // holding for a value string + std::string m_curtext; // holding for a value string simple_list m_itemlist; // list of items }; @@ -190,7 +190,7 @@ private: script_entry * m_next; // link to next entry parsed_expression m_condition; // condition under which this is executed parsed_expression m_expression; // expression to execute - astring m_format; // string format to print + std::string m_format; // string format to print simple_list m_arglist; // list of arguments INT8 m_line; // which line to print on UINT8 m_justify; // justification when printing @@ -252,7 +252,7 @@ public: void save(emu_file &cheatfile) const; // UI helpers - void menu_text(astring &description, astring &state, UINT32 &flags); + void menu_text(std::string &description, std::string &state, UINT32 &flags); // per-frame update void frame_update() { if (m_state == SCRIPT_STATE_RUN) execute_run_script(); } @@ -265,8 +265,8 @@ private: // internal state cheat_manager & m_manager; // reference to our manager cheat_entry * m_next; // next cheat entry - astring m_description; // string description/menu title - astring m_comment; // comment data + std::string m_description; // string description/menu title + std::string m_comment; // comment data auto_pointer m_parameter; // parameter auto_pointer m_on_script; // script to run when turning on auto_pointer m_off_script; // script to run when turning off @@ -305,10 +305,10 @@ public: void render_text(render_container &container); // output helpers - astring &get_output_astring(int row, int justify); + std::string &get_output_astring(int row, int justify); // global helpers - static const char *quote_expression(astring &str, const parsed_expression &expression); + static const char *quote_expression(std::string &str, const parsed_expression &expression); static UINT64 execute_frombcd(symbol_table &table, void *ref, int params, const UINT64 *param); static UINT64 execute_tobcd(symbol_table &table, void *ref, int params, const UINT64 *param); @@ -321,7 +321,7 @@ private: running_machine & m_machine; // reference to our machine simple_list m_cheatlist; // cheat list UINT64 m_framecount; // frame count - astring m_output[UI_TARGET_FONT_ROWS*2]; // array of output strings + std::string m_output[UI_TARGET_FONT_ROWS * 2]; // array of output strings UINT8 m_justify[UI_TARGET_FONT_ROWS*2]; // justification for each string UINT8 m_numlines; // number of lines available for output INT8 m_lastline; // last line used for output diff --git a/src/emu/clifront.c b/src/emu/clifront.c index 4c5f11a4585..bdb6988c0c6 100644 --- a/src/emu/clifront.c +++ b/src/emu/clifront.c @@ -107,7 +107,7 @@ int cli_frontend::execute(int argc, char **argv) try { // first parse options to be able to get software from it - astring option_errors; + std::string option_errors; m_options.parse_command_line(argc, argv, option_errors); if (*(m_options.software_name()) != 0) @@ -149,8 +149,8 @@ int cli_frontend::execute(int argc, char **argv) // mount only if not already mounted if (*option == 0) { - astring val; - val.printf("%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name()); + std::string val; + strprintf(val, "%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name()); // call this in order to set slot devices according to mounting m_options.parse_slot_devices(argc, argv, option_errors, image->instance_name(), val.c_str()); @@ -184,13 +184,13 @@ int cli_frontend::execute(int argc, char **argv) throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "Unknown system '%s'", m_options.system_name()); // otherwise, error on the options - throw emu_fatalerror(MAMERR_INVALID_CONFIG, "%s", option_errors.trimspace().c_str()); + throw emu_fatalerror(MAMERR_INVALID_CONFIG, "%s", strtrimspace(option_errors).c_str()); } if (!option_errors.empty()) - osd_printf_error("Error in command line:\n%s\n", option_errors.trimspace().c_str()); + osd_printf_error("Error in command line:\n%s\n", strtrimspace(option_errors).c_str()); // determine the base name of the EXE - astring exename; + std::string exename; core_filename_extract_base(exename, argv[0], true); // if we have a command, execute that @@ -208,7 +208,7 @@ int cli_frontend::execute(int argc, char **argv) m_options.parse_standard_inis(option_errors); } if (!option_errors.empty()) - osd_printf_error("Error in command line:\n%s\n", option_errors.trimspace().c_str()); + osd_printf_error("Error in command line:\n%s\n", strtrimspace(option_errors).c_str()); // if we can't find it, give an appropriate error const game_driver *system = m_options.system(); @@ -225,8 +225,9 @@ int cli_frontend::execute(int argc, char **argv) // handle exceptions of various types catch (emu_fatalerror &fatal) { - astring str(fatal.string()); - osd_printf_error("%s\n", str.trimspace().c_str()); + std::string str(fatal.string()); + strtrimspace(str); + osd_printf_error("%s\n", str.c_str()); m_result = (fatal.exitcode() != 0) ? fatal.exitcode() : MAMERR_FATALERROR; // if a game was specified, wasn't a wildcard, and our error indicates this was the @@ -326,7 +327,7 @@ void cli_frontend::listsource(const char *gamename) throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename); // iterate through drivers and output the info - astring filename; + std::string filename; while (drivlist.next()) osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(filename, drivlist.driver().source_file).c_str()); } @@ -414,7 +415,7 @@ void cli_frontend::listbrothers(const char *gamename) // output the entries found drivlist.reset(); - astring filename; + std::string filename; while (drivlist.next()) { int clone_of = drivlist.clone(); @@ -465,7 +466,7 @@ void cli_frontend::listroms(const char *gamename) throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename); // iterate through matches - astring tempstr; + std::string tempstr; bool first = true; while (drivlist.next()) { @@ -722,17 +723,17 @@ void cli_frontend::listmedia(const char *gamename) for (const device_image_interface *imagedev = iter.first(); imagedev != NULL; imagedev = iter.next()) { // extract the shortname with parentheses - astring paren_shortname; - paren_shortname.format("(%s)", imagedev->brief_instance_name()); + std::string paren_shortname; + strprintf(paren_shortname,"(%s)", imagedev->brief_instance_name()); // output the line, up to the list of extensions printf("%-13s%-12s%-8s ", first ? drivlist.driver().name : "", imagedev->instance_name(), paren_shortname.c_str()); // get the extensions and print them - astring extensions(imagedev->file_extensions()); - for (int start = 0, end = extensions.chr(0, ','); ; start = end + 1, end = extensions.chr(start, ',')) + std::string extensions(imagedev->file_extensions()); + for (int start = 0, end = extensions.find_first_of(',');; start = end + 1, end = extensions.find_first_of(',', start)) { - astring curext(extensions, start, (end == -1) ? extensions.len() - start : end - start); + std::string curext(extensions, start, (end == -1) ? extensions.length() - start : end - start); printf(".%-5s", curext.c_str()); if (end == -1) break; @@ -780,7 +781,7 @@ void cli_frontend::verifyroms(const char *gamename) else { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(drivlist.driver().name,&summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -840,7 +841,7 @@ void cli_frontend::verifyroms(const char *gamename) else if (summary != media_auditor::NONE_NEEDED) { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(dev->shortname(),&summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -878,8 +879,8 @@ void cli_frontend::verifyroms(const char *gamename) { for (const device_slot_option *option = slot->first_option(); option != NULL; option = option->next()) { - astring temptag("_"); - temptag.cat(option->name()); + std::string temptag("_"); + temptag.append(option->name()); device_t *dev = const_cast(config).device_add(&config.root_device(), temptag.c_str(), option->devtype(), 0); // notify this device and all its subdevices that they are now configured @@ -905,7 +906,7 @@ void cli_frontend::verifyroms(const char *gamename) else if(summary != media_auditor::NONE_NEEDED) { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(dev->shortname(),&summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -1002,7 +1003,7 @@ void cli_frontend::verifysamples(const char *gamename) else if (summary != media_auditor::NONE_NEEDED) { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(drivlist.driver().name,&summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -1120,7 +1121,7 @@ void cli_frontend::verifysamples(const char *gamename) void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlistdev) { - astring tempstr; + std::string tempstr; fprintf(out, "\t\n", swlistdev.list_name(), xml_normalize_string(swlistdev.description())); for (software_info *swinfo = swlistdev.first_software_info(); swinfo != NULL; swinfo = swinfo->next()) @@ -1320,7 +1321,7 @@ void cli_frontend::verifysoftware(const char *gamename) else if(summary != media_auditor::NONE_NEEDED) { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(swinfo->shortname(), &summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -1442,7 +1443,7 @@ void cli_frontend::verifysoftlist(const char *gamename) else if (summary != media_auditor::NONE_NEEDED) { // output the summary of the audit - astring summary_string; + std::string summary_string; auditor.summarize(swinfo->shortname(), &summary_string); osd_printf_info("%s", summary_string.c_str()); @@ -1538,7 +1539,7 @@ void cli_frontend::execute_commands(const char *exename) // showusage? if (strcmp(m_options.command(), CLICOMMAND_SHOWUSAGE) == 0) { - astring helpstring; + std::string helpstring; emulator_info::printf_usage(exename, emulator_info::get_gamenoun()); osd_printf_info("\n\nOptions:\n%s", m_options.output_help(helpstring)); return; @@ -1553,7 +1554,7 @@ void cli_frontend::execute_commands(const char *exename) } // other commands need the INIs parsed - astring option_errors; + std::string option_errors; m_options.parse_standard_inis(option_errors); if (!option_errors.empty()) osd_printf_error("%s\n", option_errors.c_str()); @@ -1567,7 +1568,7 @@ void cli_frontend::execute_commands(const char *exename) throw emu_fatalerror("Unable to create file %s.ini\n",emulator_info::get_configname()); // generate the updated INI - astring initext; + std::string initext; file.puts(m_options.output_ini(initext)); return; } @@ -1576,7 +1577,7 @@ void cli_frontend::execute_commands(const char *exename) if (strcmp(m_options.command(), CLICOMMAND_SHOWCONFIG) == 0) { // print the INI text - astring initext; + std::string initext; printf("%s\n", m_options.output_ini(initext)); return; } @@ -1686,7 +1687,7 @@ void media_identifier::identify(const char *filename) for (const osd_directory_entry *entry = osd_readdir(directory); entry != NULL; entry = osd_readdir(directory)) if (entry->type == ENTTYPE_FILE) { - astring curfile = astring(filename).cat(PATH_SEPARATOR).cat(entry->name); + std::string curfile = std::string(filename).append(PATH_SEPARATOR).append(entry->name); identify(curfile.c_str()); } @@ -1778,7 +1779,7 @@ void media_identifier::identify_file(const char *name) if (core_filename_ends_with(name, ".chd")) { // output the name - astring basename; + std::string basename; osd_printf_info("%-20s", core_filename_extract_base(basename, name).c_str()); m_total++; @@ -1854,7 +1855,7 @@ void media_identifier::identify_data(const char *name, const UINT8 *data, int le // output the name m_total++; - astring basename; + std::string basename; osd_printf_info("%-20s", core_filename_extract_base(basename, name).c_str()); // see if we can find a match in the ROMs diff --git a/src/emu/cpu/8x300/8x300.c b/src/emu/cpu/8x300/8x300.c index fab5f9f9ab4..517e205c5a2 100644 --- a/src/emu/cpu/8x300/8x300.c +++ b/src/emu/cpu/8x300/8x300.c @@ -143,7 +143,7 @@ void n8x300_cpu_device::device_start() m_icountptr = &m_icount; } -void n8x300_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void n8x300_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { diff --git a/src/emu/cpu/8x300/8x300.h b/src/emu/cpu/8x300/8x300.h index 151d4fd49fc..116fef0119e 100644 --- a/src/emu/cpu/8x300/8x300.h +++ b/src/emu/cpu/8x300/8x300.h @@ -64,7 +64,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/emu/cpu/adsp2100/adsp2100.c index 0a521b7898f..3c3a5e7049c 100644 --- a/src/emu/cpu/adsp2100/adsp2100.c +++ b/src/emu/cpu/adsp2100/adsp2100.c @@ -544,15 +544,15 @@ void adsp21xx_device::device_start() state_add(ADSP2100_SR0_SEC, "SR0_SEC", m_alt.sr.srx.sr0.u); state_add(ADSP2100_SR1_SEC, "SR1_SEC", m_alt.sr.srx.sr1.u); - astring tempstring; + std::string tempstring; for (int ireg = 0; ireg < 8; ireg++) - state_add(ADSP2100_I0 + ireg, tempstring.format("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport(); + state_add(ADSP2100_I0 + ireg, strformat(tempstring, "I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport(); for (int lreg = 0; lreg < 8; lreg++) - state_add(ADSP2100_L0 + lreg, tempstring.format("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport(); + state_add(ADSP2100_L0 + lreg, strformat(tempstring, "L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport(); for (int mreg = 0; mreg < 8; mreg++) - state_add(ADSP2100_M0 + mreg, tempstring.format("M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff); + state_add(ADSP2100_M0 + mreg, strformat(tempstring, "M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff); state_add(ADSP2100_PX, "PX", m_px); state_add(ADSP2100_CNTR, "CNTR", m_cntr).mask(0x3fff); @@ -571,7 +571,7 @@ void adsp21xx_device::device_start() for (int irqnum = 0; irqnum < 4; irqnum++) if (irqnum < 4 || m_chip_type == CHIP_TYPE_ADSP2100) - state_add(ADSP2100_IRQSTATE0 + irqnum, tempstring.format("IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport(); + state_add(ADSP2100_IRQSTATE0 + irqnum, strformat(tempstring, "IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport(); state_add(ADSP2100_FLAGIN, "FLAGIN", m_flagin).mask(1); state_add(ADSP2100_FLAGOUT, "FLAGOUT", m_flagout).mask(1); @@ -720,12 +720,12 @@ void adsp21xx_device::state_import(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void adsp21xx_device::state_string_export(const device_state_entry &entry, astring &str) +void adsp21xx_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_astat & 0x80 ? 'X':'.', m_astat & 0x40 ? 'M':'.', m_astat & 0x20 ? 'Q':'.', diff --git a/src/emu/cpu/adsp2100/adsp2100.h b/src/emu/cpu/adsp2100/adsp2100.h index 81a938d2c46..ee5e6b23871 100644 --- a/src/emu/cpu/adsp2100/adsp2100.h +++ b/src/emu/cpu/adsp2100/adsp2100.h @@ -237,7 +237,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/alph8201/alph8201.c b/src/emu/cpu/alph8201/alph8201.c index 922309c1fe6..6fb73a1eb4a 100644 --- a/src/emu/cpu/alph8201/alph8201.c +++ b/src/emu/cpu/alph8201/alph8201.c @@ -513,12 +513,12 @@ void alpha8201_cpu_device::state_export(const device_state_entry &entry) } -void alpha8201_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void alpha8201_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.'); + strprintf(str, "%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.'); break; } } diff --git a/src/emu/cpu/alph8201/alph8201.h b/src/emu/cpu/alph8201/alph8201.h index 07544c29406..48f0f284a6a 100644 --- a/src/emu/cpu/alph8201/alph8201.h +++ b/src/emu/cpu/alph8201/alph8201.h @@ -61,7 +61,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/alto2/alto2cpu.c b/src/emu/cpu/alto2/alto2cpu.c index 02808d81115..a0299d95ec8 100644 --- a/src/emu/cpu/alto2/alto2cpu.c +++ b/src/emu/cpu/alto2/alto2cpu.c @@ -1004,15 +1004,15 @@ void alto2_cpu_device::device_start() // for the debugger //------------------------------------------------- -void alto2_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void alto2_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case A2_TASK: - str.printf("%s", task_name(m_task)); + strprintf(str, "%s", task_name(m_task)); break; case STATE_GENFLAGS: - str.printf("%s%s%s%s", + strprintf(str, "%s%s%s%s", m_aluc0 ? "C":"-", m_laluc0 ? "c":"-", m_shifter == 0 ? "0":"-", diff --git a/src/emu/cpu/alto2/alto2cpu.h b/src/emu/cpu/alto2/alto2cpu.h index fa1512e18e1..464ac5a594a 100644 --- a/src/emu/cpu/alto2/alto2cpu.h +++ b/src/emu/cpu/alto2/alto2cpu.h @@ -215,7 +215,7 @@ protected: //! device (P)ROMs virtual const rom_entry *device_rom_region() const; //! device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); //! device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/am29000/am29000.c b/src/emu/cpu/am29000/am29000.c index 8ebb37c014f..d100f44c351 100644 --- a/src/emu/cpu/am29000/am29000.c +++ b/src/emu/cpu/am29000/am29000.c @@ -402,12 +402,12 @@ void am29000_cpu_device::device_start() } -void am29000_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void am29000_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c|%3d", m_alu & ALU_V ? 'V' : '.', + strprintf(str, "%c%c%c%c%c%c%c%c%c|%3d", m_alu & ALU_V ? 'V' : '.', m_alu & ALU_Z ? 'Z' : '.', m_alu & ALU_N ? 'N' : '.', m_alu & ALU_C ? 'C' : '.', diff --git a/src/emu/cpu/am29000/am29000.h b/src/emu/cpu/am29000/am29000.h index 88662a71a5b..7e9d691fe91 100644 --- a/src/emu/cpu/am29000/am29000.h +++ b/src/emu/cpu/am29000/am29000.h @@ -460,7 +460,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/amis2000/amis2000.c b/src/emu/cpu/amis2000/amis2000.c index 44062fae621..1d3c198952f 100644 --- a/src/emu/cpu/amis2000/amis2000.c +++ b/src/emu/cpu/amis2000/amis2000.c @@ -72,12 +72,12 @@ amis2152_cpu_device::amis2152_cpu_device(const machine_config &mconfig, const ch // disasm -void amis2000_base_device::state_string_export(const device_state_entry &entry, astring &str) +void amis2000_base_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", m_f & 0x20 ? '6':'.', m_f & 0x10 ? '5':'.', m_f & 0x08 ? '4':'.', diff --git a/src/emu/cpu/amis2000/amis2000.h b/src/emu/cpu/amis2000/amis2000.h index a80a2b11c4b..ba565205b21 100644 --- a/src/emu/cpu/amis2000/amis2000.h +++ b/src/emu/cpu/amis2000/amis2000.h @@ -89,7 +89,7 @@ protected: virtual UINT32 disasm_min_opcode_bytes() const { return 1; } virtual UINT32 disasm_max_opcode_bytes() const { return 1; } virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/emu/cpu/apexc/apexc.c b/src/emu/cpu/apexc/apexc.c index 35a47c36463..218fd05404f 100644 --- a/src/emu/cpu/apexc/apexc.c +++ b/src/emu/cpu/apexc/apexc.c @@ -812,12 +812,12 @@ void apexc_cpu_device::state_export(const device_state_entry &entry) } -void apexc_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void apexc_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c", m_running ? 'R' : 'S'); + strprintf(str, "%c", m_running ? 'R' : 'S'); break; } } diff --git a/src/emu/cpu/apexc/apexc.h b/src/emu/cpu/apexc/apexc.h index f691ec1fa60..8142246c486 100644 --- a/src/emu/cpu/apexc/apexc.h +++ b/src/emu/cpu/apexc/apexc.h @@ -42,7 +42,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/arm/arm.c b/src/emu/cpu/arm/arm.c index 8de2e2471c1..77f1927f3e3 100644 --- a/src/emu/cpu/arm/arm.c +++ b/src/emu/cpu/arm/arm.c @@ -550,14 +550,14 @@ void arm_cpu_device::device_start() } -void arm_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void arm_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { static const char *s[4] = { "USER", "FIRQ", "IRQ ", "SVC " }; switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c %s", + strprintf(str, "%c%c%c%c%c%c %s", (m_sArmRegister[15] & N_MASK) ? 'N' : '-', (m_sArmRegister[15] & Z_MASK) ? 'Z' : '-', (m_sArmRegister[15] & C_MASK) ? 'C' : '-', diff --git a/src/emu/cpu/arm/arm.h b/src/emu/cpu/arm/arm.h index 490fe41b6b6..8a5cd9057fe 100644 --- a/src/emu/cpu/arm/arm.h +++ b/src/emu/cpu/arm/arm.h @@ -59,7 +59,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/arm7/arm7.c b/src/emu/cpu/arm7/arm7.c index dfc8cb7e035..2f32785e62f 100644 --- a/src/emu/cpu/arm7/arm7.c +++ b/src/emu/cpu/arm7/arm7.c @@ -574,12 +574,12 @@ void arm7_cpu_device::state_export(const device_state_entry &entry) } -void arm7_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c %s", + strprintf(str, "%c%c%c%c%c%c%c%c %s", (ARM7REG(eCPSR) & N_MASK) ? 'N' : '-', (ARM7REG(eCPSR) & Z_MASK) ? 'Z' : '-', (ARM7REG(eCPSR) & C_MASK) ? 'C' : '-', diff --git a/src/emu/cpu/arm7/arm7.h b/src/emu/cpu/arm7/arm7.h index ce78d0b6407..08fa9902ed9 100644 --- a/src/emu/cpu/arm7/arm7.h +++ b/src/emu/cpu/arm7/arm7.h @@ -97,7 +97,7 @@ protected: // device_state_interface overrides virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/asap/asap.c b/src/emu/cpu/asap/asap.c index b80398d421e..1402ef8e442 100644 --- a/src/emu/cpu/asap/asap.c +++ b/src/emu/cpu/asap/asap.c @@ -186,7 +186,7 @@ void asap_device::device_start() m_direct = &m_program->direct(); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_pc).noshow(); state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow(); state_add(STATE_GENSP, "GENSP", m_src2val[REGBASE + 31]).noshow(); @@ -194,7 +194,7 @@ void asap_device::device_start() state_add(ASAP_PC, "PC", m_pc); state_add(ASAP_PS, "PS", m_flagsio).callimport().callexport(); for (int regnum = 0; regnum < 32; regnum++) - state_add(ASAP_R0 + regnum, tempstr.format("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]); + state_add(ASAP_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_src2val[REGBASE + regnum]); // register our state for saving save_item(NAME(m_pc)); @@ -281,12 +281,12 @@ void asap_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void asap_device::state_string_export(const device_state_entry &entry, astring &str) +void asap_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", m_pflag ? 'P' : '.', m_iflag ? 'I' : '.', ((INT32)m_znflag < 0) ? 'N' : '.', diff --git a/src/emu/cpu/asap/asap.h b/src/emu/cpu/asap/asap.h index fc7bfadae48..6cac9ee4c36 100644 --- a/src/emu/cpu/asap/asap.h +++ b/src/emu/cpu/asap/asap.h @@ -48,7 +48,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/avr8/avr8.c b/src/emu/cpu/avr8/avr8.c index ad61eeae266..b8dc5ffd1d2 100644 --- a/src/emu/cpu/avr8/avr8.c +++ b/src/emu/cpu/avr8/avr8.c @@ -749,7 +749,7 @@ void avr8_device::device_start() m_io = &space(AS_IO); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_shifted_pc).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_r[AVR8_REGIDX_SREG]).callimport().callexport().formatstr("%8s").noshow(); state_add(AVR8_SREG, "STATUS", m_r[AVR8_REGIDX_SREG]).mask(0xff); @@ -902,12 +902,12 @@ const address_space_config *avr8_device::memory_space_config(address_spacenum sp // for the debugger //------------------------------------------------- -void avr8_device::state_string_export(const device_state_entry &entry, astring &str) +void avr8_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_r[AVR8_REGIDX_SREG] & 0x80) ? 'I' : '-', (m_r[AVR8_REGIDX_SREG] & 0x40) ? 'T' : '-', (m_r[AVR8_REGIDX_SREG] & 0x20) ? 'H' : '-', diff --git a/src/emu/cpu/avr8/avr8.h b/src/emu/cpu/avr8/avr8.h index 7ae7417279f..1d42d081ada 100644 --- a/src/emu/cpu/avr8/avr8.h +++ b/src/emu/cpu/avr8/avr8.h @@ -132,7 +132,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // address spaces const address_space_config m_program_config; diff --git a/src/emu/cpu/ccpu/ccpu.c b/src/emu/cpu/ccpu/ccpu.c index 1f31a8d3525..a06ac8e003e 100644 --- a/src/emu/cpu/ccpu/ccpu.c +++ b/src/emu/cpu/ccpu/ccpu.c @@ -139,12 +139,12 @@ void ccpu_cpu_device::device_start() } -void ccpu_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", TEST_A0 ? '0' : 'o', TEST_NC ? 'N' : 'n', TEST_LT ? 'L' : 'l', diff --git a/src/emu/cpu/ccpu/ccpu.h b/src/emu/cpu/ccpu/ccpu.h index b7dffc7a44d..96a0fac344a 100644 --- a/src/emu/cpu/ccpu/ccpu.h +++ b/src/emu/cpu/ccpu/ccpu.h @@ -82,7 +82,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/cop400/cop400.c b/src/emu/cpu/cop400/cop400.c index 26fbd8e21ef..1d5eaf785fe 100644 --- a/src/emu/cpu/cop400/cop400.c +++ b/src/emu/cpu/cop400/cop400.c @@ -1239,12 +1239,12 @@ void cop400_cpu_device::state_export(const device_state_entry &entry) } } -void cop400_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void cop400_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c", + strprintf(str, "%c%c%c", m_c ? 'C' : '.', m_skl ? 'S' : '.', m_skt_latch ? 'T' : '.'); diff --git a/src/emu/cpu/cop400/cop400.h b/src/emu/cpu/cop400/cop400.h index ada3d7d9e1a..f98f9df44ce 100644 --- a/src/emu/cpu/cop400/cop400.h +++ b/src/emu/cpu/cop400/cop400.h @@ -139,7 +139,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/cosmac/cosmac.c b/src/emu/cpu/cosmac/cosmac.c index 5afa7ec3e14..63747781f07 100644 --- a/src/emu/cpu/cosmac/cosmac.c +++ b/src/emu/cpu/cosmac/cosmac.c @@ -356,9 +356,9 @@ void cosmac_device::device_start() state_add(COSMAC_I, "I", m_i).mask(0xf); state_add(COSMAC_N, "N", m_n).mask(0xf); - astring tempstr; + std::string tempstr; for (int regnum = 0; regnum < 16; regnum++) - state_add(COSMAC_R0 + regnum, tempstr.format("R%x", regnum).c_str(), m_r[regnum]); + state_add(COSMAC_R0 + regnum, strformat(tempstr, "R%x", regnum).c_str(), m_r[regnum]); state_add(COSMAC_DF, "DF", m_df).mask(0x1).noshow(); state_add(COSMAC_IE, "IE", m_ie).mask(0x1).noshow(); @@ -472,12 +472,12 @@ void cosmac_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void cosmac_device::state_string_export(const device_state_entry &entry, astring &str) +void cosmac_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c", + strprintf(str, "%c%c%c", m_df ? 'D' : '.', m_ie ? 'I' : '.', m_q ? 'Q' : '.'); diff --git a/src/emu/cpu/cosmac/cosmac.h b/src/emu/cpu/cosmac/cosmac.h index f0b601dce02..897c4f027ed 100644 --- a/src/emu/cpu/cosmac/cosmac.h +++ b/src/emu/cpu/cosmac/cosmac.h @@ -235,7 +235,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/cp1610/cp1610.c b/src/emu/cpu/cp1610/cp1610.c index c2e905bb6fa..a52c795ede9 100644 --- a/src/emu/cpu/cp1610/cp1610.c +++ b/src/emu/cpu/cp1610/cp1610.c @@ -3427,12 +3427,12 @@ cp1610_cpu_device::cp1610_cpu_device(const machine_config &mconfig, const char * } -void cp1610_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c", + strprintf(str, "%c%c%c%c", m_flags & 0x80 ? 'S':'.', m_flags & 0x40 ? 'Z':'.', m_flags & 0x20 ? 'V':'.', diff --git a/src/emu/cpu/cp1610/cp1610.h b/src/emu/cpu/cp1610/cp1610.h index 97a85fb86da..712378a20d3 100644 --- a/src/emu/cpu/cp1610/cp1610.h +++ b/src/emu/cpu/cp1610/cp1610.h @@ -64,7 +64,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.c b/src/emu/cpu/cubeqcpu/cubeqcpu.c index 10b21ec6c6e..d0bbe856df5 100644 --- a/src/emu/cpu/cubeqcpu/cubeqcpu.c +++ b/src/emu/cpu/cubeqcpu/cubeqcpu.c @@ -345,12 +345,12 @@ void cquestrot_cpu_device::device_reset() } -void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c", m_cflag ? 'C' : '.', + strprintf(str, "%c%c%c", m_cflag ? 'C' : '.', m_vflag ? 'V' : '.', m_f ? '.' : 'Z'); break; @@ -469,12 +469,12 @@ void cquestlin_cpu_device::device_reset() } -void cquestlin_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void cquestlin_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c|%cG", m_cflag ? 'C' : '.', + strprintf(str, "%c%c%c|%cG", m_cflag ? 'C' : '.', m_vflag ? 'V' : '.', m_f ? '.' : 'Z', ( m_clkcnt & 3 ) ? 'B' : 'F'); diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.h b/src/emu/cpu/cubeqcpu/cubeqcpu.h index 677be9a4d43..ce19b86f559 100644 --- a/src/emu/cpu/cubeqcpu/cubeqcpu.h +++ b/src/emu/cpu/cubeqcpu/cubeqcpu.h @@ -230,7 +230,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 8; } @@ -314,7 +314,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 8; } diff --git a/src/emu/cpu/drcbex64.c b/src/emu/cpu/drcbex64.c index eb51d667b5e..64f2dd89bf0 100644 --- a/src/emu/cpu/drcbex64.c +++ b/src/emu/cpu/drcbex64.c @@ -654,7 +654,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, U // create the log if (device.machine().options().drc_log_native()) { - astring filename = astring("drcbex64_").cat(device.shortname()).cat(".asm"); + std::string filename = std::string("drcbex64_").append(device.shortname()).append(".asm"); m_log = x86log_create_context(filename.c_str()); } } @@ -787,7 +787,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3 x86code *dst = base; // generate code - astring tempstring; + std::string tempstring; const char *blockname = NULL; for (int inum = 0; inum < numinst; inum++) { @@ -797,7 +797,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3 // add a comment if (m_log != NULL) { - astring dasm; + std::string dasm; inst.disasm(dasm, &m_drcuml); x86log_add_comment(m_log, dst, "%s", dasm.c_str()); } @@ -808,7 +808,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3 if (inst.opcode() == OP_HANDLE) blockname = inst.param(0).handle().string(); else if (inst.opcode() == OP_HASH) - blockname = tempstring.format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); + blockname = strformat(tempstring, "Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); } // generate code diff --git a/src/emu/cpu/drcbex86.c b/src/emu/cpu/drcbex86.c index ca90329ac2d..b52ece2b0cc 100644 --- a/src/emu/cpu/drcbex86.c +++ b/src/emu/cpu/drcbex86.c @@ -568,7 +568,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, U // create the log if (device.machine().options().drc_log_native()) { - astring filename = astring("drcbex86_").cat(device.shortname()).cat(".asm"); + std::string filename = std::string("drcbex86_").append(device.shortname()).append(".asm"); m_log = x86log_create_context(filename.c_str()); } } @@ -770,7 +770,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3 x86code *dst = base; // generate code - astring tempstring; + std::string tempstring; const char *blockname = NULL; for (int inum = 0; inum < numinst; inum++) { @@ -780,7 +780,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3 // add a comment if (m_log != NULL) { - astring dasm; + std::string dasm; inst.disasm(dasm, &m_drcuml); x86log_add_comment(m_log, dst, "%s", dasm.c_str()); } @@ -791,7 +791,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3 if (inst.opcode() == OP_HANDLE) blockname = inst.param(0).handle().string(); else if (inst.opcode() == OP_HASH) - blockname = tempstring.format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); + blockname = strformat(tempstring, "Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); } // generate code diff --git a/src/emu/cpu/drcuml.c b/src/emu/cpu/drcuml.c index 6d698e265b3..b7e3c3e0045 100644 --- a/src/emu/cpu/drcuml.c +++ b/src/emu/cpu/drcuml.c @@ -129,7 +129,7 @@ drcuml_state::drcuml_state(device_t &device, drc_cache &cache, UINT32 flags, int // if we're to log, create the logfile if (device.machine().options().drc_log_uml()) { - astring filename = astring("drcuml_").cat(m_device.shortname()).cat(".asm"); + std::string filename = std::string("drcuml_").append(m_device.shortname()).append(".asm"); m_umllog = fopen(filename.c_str(), "w"); } } @@ -386,14 +386,14 @@ uml::instruction &drcuml_block::append() void drcuml_block::append_comment(const char *format, ...) { // do the printf - astring temp; + std::string temp; va_list va; va_start(va, format); - temp.vprintf(format, va); + strvprintf(temp,format, va); va_end(va); // allocate space in the cache to hold the comment - char *comment = (char *)m_drcuml.cache().alloc_temporary(temp.len() + 1); + char *comment = (char *)m_drcuml.cache().alloc_temporary(temp.length() + 1); if (comment == NULL) return; strcpy(comment, temp.c_str()); @@ -457,8 +457,8 @@ void drcuml_block::optimize() void drcuml_block::disassemble() { - astring comment; - astring dasm; + std::string comment; + std::string dasm; // iterate over instructions and output int firstcomment = -1; @@ -520,15 +520,17 @@ void drcuml_block::disassemble() // associated with a comment or mapvar //------------------------------------------------- -const char *drcuml_block::get_comment_text(const instruction &inst, astring &comment) +const char *drcuml_block::get_comment_text(const instruction &inst, std::string &comment) { // comments return their strings if (inst.opcode() == OP_COMMENT) - return comment.cpy(inst.param(0).string()).c_str(); + return comment.assign(inst.param(0).string()).c_str(); // mapvars comment about their values - else if (inst.opcode() == OP_MAPVAR) - return comment.format("m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate()).c_str(); + else if (inst.opcode() == OP_MAPVAR) { + strprintf(comment,"m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate()); + return comment.c_str(); + } // everything else is NULL return NULL; diff --git a/src/emu/cpu/drcuml.h b/src/emu/cpu/drcuml.h index 98074e2424f..10652a224cc 100644 --- a/src/emu/cpu/drcuml.h +++ b/src/emu/cpu/drcuml.h @@ -121,7 +121,7 @@ private: // internal helpers void optimize(); void disassemble(); - const char *get_comment_text(const uml::instruction &inst, astring &comment); + const char *get_comment_text(const uml::instruction &inst, std::string &comment); // internal state drcuml_state & m_drcuml; // pointer back to the owning UML @@ -220,7 +220,7 @@ private: symbol * m_next; // link to the next symbol drccodeptr m_base; // base of the symbol UINT32 m_length; // length of the region covered - astring m_name; // name of the symbol + std::string m_name; // name of the symbol }; // internal state diff --git a/src/emu/cpu/dsp16/dsp16.c b/src/emu/cpu/dsp16/dsp16.c index 9520c125784..42913c5361d 100644 --- a/src/emu/cpu/dsp16/dsp16.c +++ b/src/emu/cpu/dsp16/dsp16.c @@ -212,26 +212,26 @@ const address_space_config *dsp16_device::memory_space_config(address_spacenum s // for the debugger //------------------------------------------------- -void dsp16_device::state_string_export(const device_state_entry &entry, astring &str) +void dsp16_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("(below)"); + strprintf(str, "(below)"); break; case DSP16_AUC: { - astring alignString; + std::string alignString; const UINT8 align = m_auc & 0x03; switch (align) { - case 0x00: alignString.printf("xy"); break; - case 0x01: alignString.printf("/4"); break; - case 0x02: alignString.printf("x4"); break; - case 0x03: alignString.printf(",,"); break; + case 0x00: strprintf(alignString,"xy"); break; + case 0x01: strprintf(alignString,"/4"); break; + case 0x02: strprintf(alignString,"x4"); break; + case 0x03: strprintf(alignString,",,"); break; } - str.printf("%c%c%c%c%c%s", + strprintf(str, "%c%c%c%c%c%s", m_auc & 0x40 ? 'Y':'.', m_auc & 0x20 ? '1':'.', m_auc & 0x10 ? '0':'.', @@ -242,7 +242,7 @@ void dsp16_device::state_string_export(const device_state_entry &entry, astring } case DSP16_PSW: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", m_psw & 0x8000 ? 'M':'.', m_psw & 0x4000 ? 'E':'.', m_psw & 0x2000 ? 'L':'.', @@ -263,16 +263,16 @@ void dsp16_device::state_string_export(const device_state_entry &entry, astring case DSP16_PIOC: { - astring strobeString; + std::string strobeString; const UINT8 strobe = (m_pioc & 0x6000) >> 13; switch (strobe) { - case 0x00: strobeString.printf("1T"); break; - case 0x01: strobeString.printf("2T"); break; - case 0x02: strobeString.printf("3T"); break; - case 0x03: strobeString.printf("4T"); break; + case 0x00: strprintf(strobeString, "1T"); break; + case 0x01: strprintf(strobeString, "2T"); break; + case 0x02: strprintf(strobeString, "3T"); break; + case 0x03: strprintf(strobeString, "4T"); break; } - str.printf("%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c", m_pioc & 0x8000 ? 'I':'.', strobeString.c_str(), m_pioc & 0x1000 ? 'O':'I', @@ -294,16 +294,16 @@ void dsp16_device::state_string_export(const device_state_entry &entry, astring // Placeholder for a better view later (TODO) case DSP16_SIOC: { - astring clkString; + std::string clkString; const UINT8 clk = (m_sioc & 0x0180) >> 7; switch (clk) { - case 0x00: clkString.printf("/4"); break; - case 0x01: clkString.printf("12"); break; - case 0x02: clkString.printf("16"); break; - case 0x03: clkString.printf("20"); break; + case 0x00: strprintf(clkString, "/4"); break; + case 0x01: strprintf(clkString, "12"); break; + case 0x02: strprintf(clkString, "16"); break; + case 0x03: strprintf(clkString, "20"); break; } - str.printf("%c%s%c%c%c%c%c%c%c", + strprintf(str, "%c%s%c%c%c%c%c%c%c", m_sioc & 0x0200 ? 'I':'O', clkString.c_str(), m_sioc & 0x0040 ? 'L':'M', diff --git a/src/emu/cpu/dsp16/dsp16.h b/src/emu/cpu/dsp16/dsp16.h index 56f800f9d4c..4d093ef010e 100644 --- a/src/emu/cpu/dsp16/dsp16.h +++ b/src/emu/cpu/dsp16/dsp16.h @@ -44,7 +44,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const; // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/dsp16/dsp16dis.c b/src/emu/cpu/dsp16/dsp16dis.c index 7db21ec7bf6..2aed7e0f0b8 100644 --- a/src/emu/cpu/dsp16/dsp16dis.c +++ b/src/emu/cpu/dsp16/dsp16dis.c @@ -1,34 +1,34 @@ #include "emu.h" #include "dsp16.h" -astring disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S) +std::string disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S) { - astring ret = ""; + std::string ret = ""; switch (F1) { - case 0x00: ret.printf("a%d = p, p = x*y", D); break; - case 0x01: ret.printf("a%d = a%d + p, p = x*y", D, S); break; - case 0x02: ret.printf("p = x*y"); break; - case 0x03: ret.printf("a%d = a%d - p, p = x*y", D, S); break; - case 0x04: ret.printf("a%d = p", D); break; - case 0x05: ret.printf("a%d = a%d + p", D, S); break; - case 0x06: ret.printf("NOP"); break; - case 0x07: ret.printf("a%d = a%d - p", D, S); break; - case 0x08: ret.printf("a%d = a%d | y", D, S); break; - case 0x09: ret.printf("a%d = a%d ^ y", D, S); break; - case 0x0a: ret.printf("a%d & y", S); break; - case 0x0b: ret.printf("a%d - y", S); break; - case 0x0c: ret.printf("a%d = y", D); break; - case 0x0d: ret.printf("a%d = a%d + y", D, S); break; - case 0x0e: ret.printf("a%d = a%d & y", D, S); break; - case 0x0f: ret.printf("a%d = a%d - y", D, S); break; + case 0x00: strprintf(ret, "a%d = p, p = x*y", D); break; + case 0x01: strprintf(ret, "a%d = a%d + p, p = x*y", D, S); break; + case 0x02: strprintf(ret, "p = x*y"); break; + case 0x03: strprintf(ret, "a%d = a%d - p, p = x*y", D, S); break; + case 0x04: strprintf(ret, "a%d = p", D); break; + case 0x05: strprintf(ret, "a%d = a%d + p", D, S); break; + case 0x06: strprintf(ret, "NOP"); break; + case 0x07: strprintf(ret, "a%d = a%d - p", D, S); break; + case 0x08: strprintf(ret, "a%d = a%d | y", D, S); break; + case 0x09: strprintf(ret, "a%d = a%d ^ y", D, S); break; + case 0x0a: strprintf(ret, "a%d & y", S); break; + case 0x0b: strprintf(ret, "a%d - y", S); break; + case 0x0c: strprintf(ret, "a%d = y", D); break; + case 0x0d: strprintf(ret, "a%d = a%d + y", D, S); break; + case 0x0e: strprintf(ret, "a%d = a%d & y", D, S); break; + case 0x0f: strprintf(ret, "a%d = a%d - y", D, S); break; default: return "UNKNOWN"; } return ret; } -astring disasmYField(const UINT8& Y) +std::string disasmYField(const UINT8& Y) { switch (Y) { @@ -58,7 +58,7 @@ astring disasmYField(const UINT8& Y) //return ""; } -astring disasmZField(const UINT8& Z) +std::string disasmZField(const UINT8& Z) { switch (Z) { @@ -88,35 +88,35 @@ astring disasmZField(const UINT8& Z) //return ""; } -astring disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S) +std::string disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S) { - astring ret = ""; + std::string ret = ""; switch (F2) { - case 0x00: ret.printf("a%d = a%d >> 1", D, S); break; - case 0x01: ret.printf("a%d = a%d << 1", D, S); break; - case 0x02: ret.printf("a%d = a%d >> 4", D, S); break; - case 0x03: ret.printf("a%d = a%d << 4", D, S); break; - case 0x04: ret.printf("a%d = a%d >> 8", D, S); break; - case 0x05: ret.printf("a%d = a%d << 8", D, S); break; - case 0x06: ret.printf("a%d = a%d >> 16", D, S); break; - case 0x07: ret.printf("a%d = a%d << 16", D, S); break; - - case 0x08: ret.printf("a%d = p", D); break; - case 0x09: ret.printf("a%dh = a%dh + 1", D, S); break; - case 0x0a: ret.printf("RESERVED"); break; - case 0x0b: ret.printf("a%d = rnd(a%d)", D, S); break; - case 0x0c: ret.printf("a%d = y", D); break; - case 0x0d: ret.printf("a%d = a%d + 1", D, S); break; - case 0x0e: ret.printf("a%d = a%d", D, S); break; - case 0x0f: ret.printf("a%d = -a%d", D, S); break; + case 0x00: strprintf(ret, "a%d = a%d >> 1", D, S); break; + case 0x01: strprintf(ret, "a%d = a%d << 1", D, S); break; + case 0x02: strprintf(ret, "a%d = a%d >> 4", D, S); break; + case 0x03: strprintf(ret, "a%d = a%d << 4", D, S); break; + case 0x04: strprintf(ret, "a%d = a%d >> 8", D, S); break; + case 0x05: strprintf(ret, "a%d = a%d << 8", D, S); break; + case 0x06: strprintf(ret, "a%d = a%d >> 16", D, S); break; + case 0x07: strprintf(ret, "a%d = a%d << 16", D, S); break; + + case 0x08: strprintf(ret, "a%d = p", D); break; + case 0x09: strprintf(ret, "a%dh = a%dh + 1", D, S); break; + case 0x0a: strprintf(ret, "RESERVED"); break; + case 0x0b: strprintf(ret, "a%d = rnd(a%d)", D, S); break; + case 0x0c: strprintf(ret, "a%d = y", D); break; + case 0x0d: strprintf(ret, "a%d = a%d + 1", D, S); break; + case 0x0e: strprintf(ret, "a%d = a%d", D, S); break; + case 0x0f: strprintf(ret, "a%d = -a%d", D, S); break; default: return "UNKNOWN"; } return ret; } -astring disasmCONField(const UINT8& CON) +std::string disasmCONField(const UINT8& CON) { switch (CON) { @@ -145,7 +145,7 @@ astring disasmCONField(const UINT8& CON) //return ""; } -astring disasmBField(const UINT8& B) +std::string disasmBField(const UINT8& B) { switch (B) { @@ -164,7 +164,7 @@ astring disasmBField(const UINT8& B) //return ""; } -astring disasmRImmediateField(const UINT8& R) +std::string disasmRImmediateField(const UINT8& R) { switch (R) { @@ -183,7 +183,7 @@ astring disasmRImmediateField(const UINT8& R) //return ""; } -astring disasmRField(const UINT8& R) +std::string disasmRField(const UINT8& R) { switch (R) { @@ -222,7 +222,7 @@ astring disasmRField(const UINT8& R) //return ""; } -astring disasmIField(const UINT8& I) +std::string disasmIField(const UINT8& I) { switch (I) { @@ -268,8 +268,8 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring fString = disasmF1Field(F1, D, S); + std::string yString = disasmYField(Y); + std::string fString = disasmF1Field(F1, D, S); sprintf(buffer, "%s, %s", fString.c_str(), yString.c_str()); break; } @@ -281,10 +281,10 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring fString = disasmF1Field(F1, D, S); - astring aString = (opcode == 0x1c) ? "a0" : "a1"; - astring xString = (X) ? "" : "l"; + std::string yString = disasmYField(Y); + std::string fString = disasmF1Field(F1, D, S); + std::string aString = (opcode == 0x1c) ? "a0" : "a1"; + std::string xString = (X) ? "" : "l"; sprintf(buffer, "%s = %s%s, %s", yString.c_str(), aString.c_str(), xString.c_str(), fString.c_str()); break; } @@ -295,8 +295,8 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring fString = disasmF1Field(F1, D, S); + std::string yString = disasmYField(Y); + std::string fString = disasmF1Field(F1, D, S); sprintf(buffer, "%s, x = %s", fString.c_str(), yString.c_str()); break; } @@ -308,9 +308,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring fString = disasmF1Field(F1, D, S); - astring xString = (X ? "y" : "y1"); + std::string yString = disasmYField(Y); + std::string fString = disasmF1Field(F1, D, S); + std::string xString = (X ? "y" : "y1"); sprintf(buffer, "%s, %s = %s", fString.c_str(), xString.c_str(), yString.c_str()); break; } @@ -322,9 +322,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring fString = disasmF1Field(F1, D, S); - astring xString = (X ? "*pt++i" : "*pt++"); + std::string yString = disasmYField(Y); + std::string fString = disasmF1Field(F1, D, S); + std::string xString = (X ? "*pt++i" : "*pt++"); sprintf(buffer, "%s, y = %s, x = %s", fString.c_str(), yString.c_str(), xString.c_str()); break; } @@ -336,9 +336,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring fString = disasmF1Field(F1, D, S); - astring xString = (X ? "*pt++i" : "*pt++"); - astring aString = (opcode == 0x19) ? "a0" : "a1"; + std::string fString = disasmF1Field(F1, D, S); + std::string xString = (X ? "*pt++i" : "*pt++"); + std::string aString = (opcode == 0x19) ? "a0" : "a1"; sprintf(buffer, "%s, y = %s, x = %s", fString.c_str(), aString.c_str(), xString.c_str()); if (Y != 0x00) sprintf(buffer, "UNKNOWN"); break; @@ -351,9 +351,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring xString = (X ? "y" : "y1"); - astring fString = disasmF1Field(F1, D, S); + std::string yString = disasmYField(Y); + std::string xString = (X ? "y" : "y1"); + std::string fString = disasmF1Field(F1, D, S); sprintf(buffer, "%s, %s = %s", fString.c_str(), yString.c_str(), xString.c_str()); break; } @@ -366,9 +366,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 aT = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring yString = disasmYField(Y); - astring atString = (aT ? "a0" : "a1"); - astring fString = disasmF1Field(F1, aT, S); + std::string yString = disasmYField(Y); + std::string atString = (aT ? "a0" : "a1"); + std::string fString = disasmF1Field(F1, aT, S); sprintf(buffer, "%s, %s = %s", fString.c_str(), atString.c_str(), yString.c_str()); break; } @@ -382,9 +382,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring zString = disasmZField(Z); - astring xString = (X ? "y" : "y1"); - astring fString = disasmF1Field(F1, D, S); + std::string zString = disasmZField(Z); + std::string xString = (X ? "y" : "y1"); + std::string fString = disasmF1Field(F1, D, S); sprintf(buffer, "%s, %s <=> %s", fString.c_str(), xString.c_str(), zString.c_str()); break; } @@ -396,9 +396,9 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring zString = disasmZField(Z); - astring xString = (X ? "*pt++i" : "*pt++"); - astring fString = disasmF1Field(F1, D, S); + std::string zString = disasmZField(Z); + std::string xString = (X ? "*pt++i" : "*pt++"); + std::string fString = disasmF1Field(F1, D, S); sprintf(buffer, "%s, %s <=> y, x = %s", fString.c_str(), zString.c_str(), xString.c_str()); break; } @@ -412,10 +412,10 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 aT = (op & 0x0400) >> 10; const UINT8 F1 = (op & 0x01e0) >> 5; - astring zString = disasmZField(Z); - astring atString = (aT ? "a0" : "a1"); + std::string zString = disasmZField(Z); + std::string atString = (aT ? "a0" : "a1"); atString += X ? "" : "1"; // TODO: Figure out unclear wording. - astring fString = disasmF1Field(F1, aT, S); + std::string fString = disasmF1Field(F1, aT, S); sprintf(buffer, "%s, %s <=> %s", fString.c_str(), zString.c_str(), atString.c_str()); break; } @@ -429,8 +429,8 @@ CPU_DISASSEMBLE( dsp16a ) const UINT8 S = (op & 0x0200) >> 9; const UINT8 D = (op & 0x0400) >> 10; const UINT8 F2 = (op & 0x01e0) >> 5; - astring fString = disasmF2Field(F2, D, S); - astring conString = disasmCONField(CON); + std::string fString = disasmF2Field(F2, D, S); + std::string conString = disasmCONField(CON); if (op & 0x0800) sprintf(buffer, "if %s : %s", conString.c_str(), fString.c_str()); else sprintf(buffer, "ifc %s : %s", conString.c_str(), fString.c_str()); break; @@ -457,7 +457,7 @@ CPU_DISASSEMBLE( dsp16a ) { // goto B const UINT8 B = (op & 0x0700) >> 8; - astring bString = disasmBField(B); + std::string bString = disasmBField(B); sprintf(buffer, "%s", bString.c_str()); break; } @@ -467,7 +467,7 @@ CPU_DISASSEMBLE( dsp16a ) { // if CON [goto/call/return] const UINT8 CON = (op & 0x001f); - astring conString = disasmCONField(CON); + std::string conString = disasmCONField(CON); sprintf(buffer, "if %s:", conString.c_str()); // TODO: Test for invalid ops // icall @@ -481,7 +481,7 @@ CPU_DISASSEMBLE( dsp16a ) // R = aS const UINT8 R = (op & 0x03f0) >> 4; const UINT8 S = (op & 0x1000) >> 12; - astring rString = disasmRField(R); + std::string rString = disasmRField(R); sprintf(buffer, "%s = %s", rString.c_str(), (S ? "a1" : "a0")); break; } @@ -490,7 +490,7 @@ CPU_DISASSEMBLE( dsp16a ) // aT = R const UINT8 R = (op & 0x03f0) >> 4; const UINT8 aT = (op & 0x0400) >> 10; - astring rString = disasmRField(R); + std::string rString = disasmRField(R); sprintf(buffer, "%s = %s", (aT ? "a0" : "a1"), rString.c_str()); break; } @@ -499,8 +499,8 @@ CPU_DISASSEMBLE( dsp16a ) // R = Y const UINT8 Y = (op & 0x000f); const UINT8 R = (op & 0x03f0) >> 4; - astring yString = disasmYField(Y); - astring rString = disasmRField(R); + std::string yString = disasmYField(Y); + std::string rString = disasmRField(R); sprintf(buffer, "%s = %s", rString.c_str(), yString.c_str()); // TODO: Special case the R == [y, y1, or x] case break; @@ -510,8 +510,8 @@ CPU_DISASSEMBLE( dsp16a ) // Y = R const UINT8 Y = (op & 0x000f); const UINT8 R = (op & 0x03f0) >> 4; - astring yString = disasmYField(Y); - astring rString = disasmRField(R); + std::string yString = disasmYField(Y); + std::string rString = disasmRField(R); // TODO: page 3-31 "special function encoding" sprintf(buffer, "%s = %s", yString.c_str(), rString.c_str()); break; @@ -521,8 +521,8 @@ CPU_DISASSEMBLE( dsp16a ) // Z : R const UINT8 Z = (op & 0x000f); const UINT8 R = (op & 0x03f0) >> 4; - astring zString = disasmZField(Z); - astring rString = disasmRField(R); + std::string zString = disasmZField(Z); + std::string rString = disasmRField(R); sprintf(buffer, "%s <=> %s", zString.c_str(), rString.c_str()); break; } @@ -532,7 +532,7 @@ CPU_DISASSEMBLE( dsp16a ) { // R = N const UINT8 R = (op & 0x03f0) >> 4; - astring rString = disasmRField(R); + std::string rString = disasmRField(R); sprintf(buffer, "%s = 0x%04x", rString.c_str(), op2); opSize = 2; break; @@ -544,7 +544,7 @@ CPU_DISASSEMBLE( dsp16a ) // R = M const UINT16 M = (op & 0x01ff); const UINT8 R = (op & 0x0e00) >> 9; - astring rString = disasmRImmediateField(R); + std::string rString = disasmRImmediateField(R); sprintf(buffer, "%s = 0x%04x", rString.c_str(), M); break; } diff --git a/src/emu/cpu/dsp32/dsp32.c b/src/emu/cpu/dsp32/dsp32.c index b41c9031c06..2de5e6f50d6 100644 --- a/src/emu/cpu/dsp32/dsp32.c +++ b/src/emu/cpu/dsp32/dsp32.c @@ -194,14 +194,14 @@ void dsp32c_device::device_start() m_direct = &m_program->direct(); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_r[15]).noshow(); state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc).noshow(); state_add(STATE_GENSP, "GENSP", m_r[21]).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_iotemp).callimport().callexport().formatstr("%6s").noshow(); state_add(DSP32_PC, "PC", m_r[15]).mask(0xffffff); for (int regnum = 0; regnum <= 14; regnum++) - state_add(DSP32_R0 + regnum, tempstr.format("R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff); + state_add(DSP32_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff); state_add(DSP32_R15, "R15", m_r[17]).mask(0xffffff); state_add(DSP32_R16, "R16", m_r[18]).mask(0xffffff); state_add(DSP32_R17, "R17", m_r[19]).mask(0xffffff); @@ -369,12 +369,12 @@ void dsp32c_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void dsp32c_device::state_string_export(const device_state_entry &entry, astring &str) +void dsp32c_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", NFLAG ? 'N':'.', ZFLAG ? 'Z':'.', UFLAG ? 'U':'.', @@ -389,7 +389,7 @@ void dsp32c_device::state_string_export(const device_state_entry &entry, astring case DSP32_A1: case DSP32_A2: case DSP32_A3: - str.printf("%8g", *(double *)entry.dataptr()); + strprintf(str, "%8g", *(double *)entry.dataptr()); break; } } diff --git a/src/emu/cpu/dsp32/dsp32.h b/src/emu/cpu/dsp32/dsp32.h index 643eef126b3..1ef1642f6c2 100644 --- a/src/emu/cpu/dsp32/dsp32.h +++ b/src/emu/cpu/dsp32/dsp32.h @@ -123,7 +123,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/dsp56k/dsp56k.c b/src/emu/cpu/dsp56k/dsp56k.c index bcdb2c85d32..2a5e94e135c 100644 --- a/src/emu/cpu/dsp56k/dsp56k.c +++ b/src/emu/cpu/dsp56k/dsp56k.c @@ -357,14 +357,14 @@ void dsp56k_device::device_start() } -void dsp56k_device::state_string_export(const device_state_entry &entry, astring &str) +void dsp56k_device::state_string_export(const device_state_entry &entry, std::string &str) { dsp56k_core *cpustate = &m_dsp56k_core; switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s%s %s%s%s%s%s%s%s%s %s%s", + strprintf(str, "%s%s %s%s%s%s%s%s%s%s %s%s", /* Status Register */ LF_bit(cpustate) ? "L" : ".", FV_bit(cpustate) ? "F" : ".", @@ -384,19 +384,19 @@ void dsp56k_device::state_string_export(const device_state_entry &entry, astring break; case DSP56K_X: - str.printf("%04x %04x", X1, X0); + strprintf(str, "%04x %04x", X1, X0); break; case DSP56K_Y: - str.printf("%04x %04x", Y1, Y0); + strprintf(str, "%04x %04x", Y1, Y0); break; case DSP56K_A: - str.printf("%02x %04x %04x", A2, A1, A0); + strprintf(str, "%02x %04x %04x", A2, A1, A0); break; case DSP56K_B: - str.printf("%02x %04x %04x", B2, B1, B0); + strprintf(str, "%02x %04x %04x", B2, B1, B0); break; } } diff --git a/src/emu/cpu/dsp56k/dsp56k.h b/src/emu/cpu/dsp56k/dsp56k.h index cc2ea2b059f..c2fd831515d 100644 --- a/src/emu/cpu/dsp56k/dsp56k.h +++ b/src/emu/cpu/dsp56k/dsp56k.h @@ -232,7 +232,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_DATA) ? &m_data_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/dsp56k/inst.h b/src/emu/cpu/dsp56k/inst.h index b4b5c3e1688..fb9c55f89ad 100644 --- a/src/emu/cpu/dsp56k/inst.h +++ b/src/emu/cpu/dsp56k/inst.h @@ -29,7 +29,7 @@ public: virtual ~Instruction() {} virtual bool decode(const UINT16 word0, const UINT16 word1) = 0; - virtual void disassemble(astring& retString) const = 0; + virtual void disassemble(std::string& retString) const = 0; virtual void evaluate(dsp56k_core* cpustate) = 0; virtual size_t size() const = 0; @@ -77,7 +77,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "abs " + regIdAsString(m_destination); } @@ -100,7 +100,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "adc " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -123,7 +123,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "add " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -150,7 +150,7 @@ public: // TODO: m_opcode = "add"; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_opcode + " " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -159,8 +159,8 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_opcode; - astring m_arg; // TODO: get rid of this Add|Sub thing. + std::string m_opcode; + std::string m_arg; // TODO: get rid of this Add|Sub thing. }; // AND : .... .... 0110 F1JJ : A-24 //////////////////////////////////////////// @@ -177,7 +177,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "and " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -201,11 +201,11 @@ public: decode_EE_table(BITSn(word0,0x0600), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x,%s", m_immediate, regIdAsString(m_destination).c_str()); - retString = "andi " + astring(temp); + retString = "andi " + std::string(temp); // NEW // sprintf(opcode_str, "and(i)"); } void evaluate(dsp56k_core* cpustate) {} @@ -229,7 +229,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "asl " + regIdAsString(m_destination); } @@ -251,7 +251,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "asl4 " + regIdAsString(m_destination); } @@ -273,7 +273,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "asr " + regIdAsString(m_destination); } @@ -295,7 +295,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "asr4 " + regIdAsString(m_destination); } @@ -317,7 +317,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "asr16 " + regIdAsString(m_destination); } @@ -358,7 +358,7 @@ public: assemble_D_from_P_table(BITSn(word0,0x0020), BITSn(word0,0x001f), dString); - if (dString.cmp("!!")==0) + if (dString.compare("!!") == 0) return false; switch(BITSn(word1,0x1f00)) @@ -371,11 +371,11 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x", m_iVal); - retString = m_opcode + " " + astring(temp) + "," + dString; + retString = m_opcode + " " + std::string(temp) + "," + dString; // NEW // sprintf(temp, "#$%04x", iVal); } void evaluate(dsp56k_core* cpustate) {} @@ -383,8 +383,8 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: UINT16 m_iVal; - astring m_opcode; - astring dString; + std::string m_opcode; + std::string dString; }; /* BFCHG : 0001 0100 101- --RR BBB1 0010 iiii iiii : A-38 */ @@ -432,14 +432,14 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x", m_iVal); - astring source = temp; + std::string source = temp; sprintf(temp, "X:(%s)", regIdAsString(m_r).c_str()); - astring destination = temp; + std::string destination = temp; retString = m_opcode + " " + source + "," + destination; // NEW // sprintf(temp, "#$%04x", m_iVal); @@ -451,7 +451,7 @@ public: private: reg_id m_r; UINT16 m_iVal; - astring m_opcode; + std::string m_opcode; }; /* BFCHG : 0001 0100 100D DDDD BBB1 0010 iiii iiii : A-38 */ @@ -498,11 +498,11 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x", m_iVal); - astring source = temp; + std::string source = temp; retString = m_opcode + " " + source + "," + regIdAsString(m_destination); // NEW // sprintf(temp, "#$%04x", m_iVal); @@ -513,7 +513,7 @@ public: private: UINT16 m_iVal; - astring m_opcode; + std::string m_opcode; }; // Bcc : 0000 0111 --11 cccc xxxx xxxx xxxx xxxx : A-48 //////////////////////// @@ -532,15 +532,15 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "b" + opMnemonicAsString(m_mnem); + std::string opcode = "b" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "b.%s", M); char temp[32]; sprintf(temp, ">*+$%x", 2 + m_immediate); // NEW // sprintf(temp, "$%04x (%d)", pc + 2 + (INT16)word1, (INT16)word1); - retString = opcode + " " + astring(temp); + retString = opcode + " " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -567,9 +567,9 @@ public: m_immediate = get_6_bit_signed_value(BITSn(word0,0x003f)); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "b" + opMnemonicAsString(m_mnem); + std::string opcode = "b" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "b.%s", M); char temp[32]; @@ -577,7 +577,7 @@ public: else sprintf(temp, "<*-$%x", 1 - m_immediate - 2); // NEW // sprintf(temp, "$%04x (%d)", pc + 1 + relativeInt, relativeInt); - retString = opcode + " " + astring(temp); + retString = opcode + " " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -603,9 +603,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "b" + opMnemonicAsString(m_mnem); + std::string opcode = "b" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "b.%s", M); } @@ -631,12 +631,12 @@ public: m_immediate = (INT16)word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, ">*+$%x", 2 + m_immediate); // NEW // sprintf(temp, "$%04x (%d)", pc + 2 + word1, (INT16)word1); - retString = "bra " + astring(temp); + retString = "bra " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -660,13 +660,13 @@ public: m_immediate = (INT8)BITSn(word0,0x00ff); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; if (m_immediate >= 0) sprintf(temp, "<*+$%x", 1 + m_immediate); else sprintf(temp, "<*-$%x", 1 - m_immediate - 2); // NEW // sprintf(temp, "$%04x (%d)", pc + 1 + iVal, iVal); - retString = "bra " + astring(temp); + retString = "bra " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -689,7 +689,7 @@ public: decode_RR_table(BITSn(word0,0x0003), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "bra " + regIdAsString(m_destination); } @@ -712,9 +712,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "brk" + opMnemonicAsString(m_mnem); + std::string opcode = "brk" + opMnemonicAsString(m_mnem); retString = opcode; // NEW // sprintf(opcode_str, "brk.%s", M); } @@ -742,9 +742,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "bs" + opMnemonicAsString(m_mnem); + std::string opcode = "bs" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "bs.%s", M); char temp[32]; @@ -752,7 +752,7 @@ public: else sprintf(temp, ">*-$%x", 1 - m_immediate - 1 - 2); //sprintf(temp, ">*+$%x", 2 + m_immediate); // NEW // sprintf(temp, "$%04x (%d)", pc + 2 + (INT16)word1, (INT16)word1); - retString = opcode + " " + astring(temp); + retString = opcode + " " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -779,9 +779,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "bs" + opMnemonicAsString(m_mnem); + std::string opcode = "bs" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "bs.%s", M); } @@ -808,13 +808,13 @@ public: m_immediate = (INT16)word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; if (m_immediate >= 0) sprintf(temp, ">*+$%x", 2 + m_immediate); else sprintf(temp, ">*-$%x", 1 - m_immediate - 1 - 2); // NEW // sprintf(temp, "$%04x (%d)", pc + 2 + (INT16)word1, (INT16)word1); - retString = "bsr " + astring(temp); + retString = "bsr " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -838,7 +838,7 @@ public: decode_RR_table(BITSn(word0,0x0003), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "bsr " + regIdAsString(m_destination); } @@ -860,7 +860,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "chkaau"; } @@ -882,7 +882,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "clr " + regIdAsString(m_destination); } @@ -904,7 +904,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "clr24 " + regIdAsString(m_destination); } @@ -929,7 +929,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "cmp " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -954,7 +954,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "cmpm " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -975,7 +975,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "debug"; } @@ -998,9 +998,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "debug" + opMnemonicAsString(m_mnem); + std::string opcode = "debug" + opMnemonicAsString(m_mnem); retString = opcode; // NEW // sprintf(opcode_str, "debug.%s", M); } @@ -1025,7 +1025,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "dec " + regIdAsString(m_destination); } @@ -1047,7 +1047,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "dec24 " + regIdAsString(m_destination); } @@ -1070,7 +1070,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "div " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -1098,9 +1098,9 @@ public: if (m_mnem == oINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "dmac" + opMnemonicAsString(m_mnem); + std::string opcode = "dmac" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_source) + "," + @@ -1131,15 +1131,15 @@ public: decode_RR_table(BITSn(word0,0x0003), m_source); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "*+$%x", 2 + m_immediate); - astring destination = temp; + std::string destination = temp; // NEW // sprintf(temp, "X:(R%d),$%02x", Rnum, pc + 2 + word1); sprintf(temp, "X:(%s)", regIdAsString(m_source).c_str()); - astring source = temp; + std::string source = temp; retString = "do " + source + "," + destination; } @@ -1167,12 +1167,12 @@ public: m_displacement = word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#<$%x,*+$%x", m_immediate, 2 + m_displacement); // NEW // sprintf(temp, "#$%02x,$%04x", BITSn(word0,0x00ff), pc + 2 + word1); - retString = "do " + astring(temp); + retString = "do " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1201,12 +1201,12 @@ public: if (m_source == iINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "*+$%x", 2 + m_displacement); // NEW // sprintf(temp, "%s,$%04x", S1, pc + 2 + word1); - retString = "do " + regIdAsString(m_source) + "," + astring(temp); + retString = "do " + regIdAsString(m_source) + "," + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1230,13 +1230,13 @@ public: m_displacement = word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "*+$%x", m_displacement + 2); // NEW // sprintf(temp, "*+$%x", pc + word1); // NEW // sprintf(temp, "$%04x", pc + 2 + word1); - retString = "do forever, " + astring(temp); + retString = "do forever, " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1258,7 +1258,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "enddo"; } @@ -1281,7 +1281,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "eor " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -1303,7 +1303,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "ext " + regIdAsString(m_destination); } @@ -1324,7 +1324,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "illegal"; } @@ -1348,7 +1348,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "imac " + regIdAsString(m_source) + "," + @@ -1377,7 +1377,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "impy " + regIdAsString(m_source) + "," + @@ -1404,7 +1404,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "inc " + regIdAsString(m_destination); } @@ -1426,7 +1426,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "inc24 " + regIdAsString(m_destination); } @@ -1451,15 +1451,15 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "j" + opMnemonicAsString(m_mnem); + std::string opcode = "j" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "j.%s", M); char temp[32]; sprintf(temp, ">$%x", m_displacement); // NEW // sprintf(temp, "$%04x", word1); - retString = opcode + " " + astring(temp); + retString = opcode + " " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1485,9 +1485,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "j" + opMnemonicAsString(m_mnem); + std::string opcode = "j" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "j.%s", M); } @@ -1513,12 +1513,12 @@ public: m_displacement = word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, ">$%x", m_displacement); // NEW // sprintf(temp, "$%04x", word1); - retString = "jmp " + astring(temp); + retString = "jmp " + std::string(temp); } void evaluate(dsp56k_core* cpustate) { @@ -1549,7 +1549,7 @@ public: decode_RR_table(BITSn(word0,0x0003), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "jmp " + regIdAsString(m_destination); } @@ -1584,15 +1584,15 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "js" + opMnemonicAsString(m_mnem); + std::string opcode = "js" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "js.%s", M); char temp[32]; sprintf(temp, ">$%x", m_displacement); // NEW // sprintf(temp, "$%04x", word1); - retString = opcode + " " + astring(temp); + retString = opcode + " " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1619,9 +1619,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "js" + opMnemonicAsString(m_mnem); + std::string opcode = "js" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "js.%s", M); } @@ -1648,12 +1648,12 @@ public: m_displacement = word1; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, ">$%x", m_displacement); // NEW // sprintf(temp, "$%04x", word1); - retString = "jsr " + astring(temp); + retString = "jsr " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 2; } @@ -1678,12 +1678,12 @@ public: m_bAddr = BITSn(word0,0x00ff); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "<$%x", m_bAddr); // NEW // sprintf(temp, "#$%02x", BITSn(word0,0x00ff)); - retString = "jsr " + astring(temp); + retString = "jsr " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -1707,7 +1707,7 @@ public: decode_RR_table(BITSn(word0,0x0003), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "jsr " + regIdAsString(m_destination); } @@ -1737,7 +1737,7 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { // HACK retString = "lea " + m_ea + "," + regIdAsString(m_destination); @@ -1747,7 +1747,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_ea; + std::string m_ea; }; // LEA : 0000 0001 10NN MMRR : A-116 /////////////////////////////////////////// @@ -1769,7 +1769,7 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { // HACK retString = "lea " + m_ea + "," + regIdAsString(m_destination); @@ -1779,7 +1779,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_ea; + std::string m_ea; }; // LSL : .... .... 0011 F011 : A-118 /////////////////////////////////////////// @@ -1795,7 +1795,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "lsl " + regIdAsString(m_destination); } @@ -1817,7 +1817,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "lsr " + regIdAsString(m_destination); } @@ -1844,10 +1844,10 @@ public: decode_kSign_table(BITSn(word0,0x40), m_sign); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring ts = m_sign; - if (ts.cmp("-") != 0) ts = ""; + std::string ts = m_sign; + if (ts.compare("-") != 0) ts = ""; retString = "mac " + ts + regIdAsString(m_source) + "," + @@ -1859,7 +1859,7 @@ public: private: reg_id m_source2; - astring m_sign; + std::string m_sign; }; // MAC : 011m mKKK 1xx0 F1QQ : A-122 /////////////////////////////////////////// @@ -1877,7 +1877,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "mac " + regIdAsString(m_source) + "," + @@ -1906,7 +1906,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "mac " + regIdAsString(m_source) + "," + @@ -1938,10 +1938,10 @@ public: decode_kSign_table(BITSn(word0,0x40), m_sign); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring ts = m_sign; - if (ts.cmp("-")!=0) ts = ""; + std::string ts = m_sign; + if (ts.compare("-") != 0) ts = ""; retString = "macr " + ts + regIdAsString(m_source) + "," + @@ -1952,7 +1952,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_sign; + std::string m_sign; reg_id m_source2; }; @@ -1971,7 +1971,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "macr " + regIdAsString(m_source) + "," + @@ -2004,9 +2004,9 @@ public: decode_s_table(BITSn(word0,0x0004), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "mac" + opMnemonicAsString(m_mnem); + std::string opcode = "mac" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_source) + "," + @@ -2049,7 +2049,7 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { if (m_isNop) retString = "nop"; @@ -2083,7 +2083,7 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "move"; } @@ -2110,10 +2110,10 @@ public: decode_HHH_table(BITSn(word1,0x0e00), m_SD); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_reg_from_W_table(m_W, 'X', m_SD, m_b, source, destination); retString = "move " + source + "," + destination; } @@ -2148,10 +2148,10 @@ public: if (m_SD == iINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "move " + source + "," + destination; // NEW // sprintf(opcode_str, "move(c)"); @@ -2163,7 +2163,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MOVE(C) : 0011 1WDD DDD1 q0RR : A-144 /////////////////////////////////////// @@ -2187,10 +2187,10 @@ public: if (m_SD == iINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "move " + source + "," + destination; // NEW // sprintf(opcode_str, "move(c)"); @@ -2202,7 +2202,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MOVE(C) : 0011 1WDD DDD1 Z11- : A-144 /////////////////////////////////////// @@ -2225,10 +2225,10 @@ public: if (m_SD == iINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "move " + source + "," + destination; // NEW // sprintf(opcode_str, "move(c)"); @@ -2240,7 +2240,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MOVE(C) : 0011 1WDD DDD1 t10- xxxx xxxx xxxx xxxx : A-144 /////////////////// @@ -2269,9 +2269,9 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring ea; + std::string ea; assemble_ea_from_t_table(m_t, m_value, ea); retString = "move "; @@ -2339,7 +2339,7 @@ public: if (m_source == iSSH && m_destination == iSSH) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "move " + regIdAsString(m_source) + "," + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "move(c)"); @@ -2368,10 +2368,10 @@ public: decode_DDDDD_table(BITSn(word1,0x03e0), m_SD); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_reg_from_W_table(m_W, 'X', m_SD, m_b, source, destination); retString = "move " + source + "," + destination; // NEW // opcode = "move(c)"; @@ -2402,7 +2402,7 @@ public: decode_DD_table(BITSn(word0,0x0300), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; if (m_immediate >= 0) sprintf(temp, "#<+$%x", m_immediate); @@ -2410,7 +2410,7 @@ public: // NEW // sprintf(temp, "#$%02x,%s", BITSn(word0,0x00ff), D1); retString = "move " + - astring(temp) + "," + regIdAsString(m_destination); + std::string(temp) + "," + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "move(i)"); } void evaluate(dsp56k_core* cpustate) {} @@ -2441,10 +2441,10 @@ public: m_W = BITSn(word0,0x0100); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'P', m_SD, m_ea, source, destination); retString = "move " + source + "," + destination; // NEW // sprintf(opcode_str, "move(m)"); @@ -2456,7 +2456,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MOVE(M) : 0000 001W RR11 mmRR : A-152 /////////////////////////////////////// @@ -2476,10 +2476,10 @@ public: assemble_eas_from_mm_table(BITSn(word0,0x000c), BITSn(word0,0x00c0), BITSn(word0,0x0003), m_ea, m_ea2); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; if (m_W) { source = "X:" + m_ea; @@ -2499,8 +2499,8 @@ public: private: UINT8 m_W; - astring m_ea; - astring m_ea2; + std::string m_ea; + std::string m_ea2; }; // MOVE(M) : 0000 0101 BBBB BBBB 0000 001W --0- -HHH : A-152 /////////////////// @@ -2521,10 +2521,10 @@ public: decode_HHH_table(BITSn(word1,0x0007), m_SD); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_reg_from_W_table(m_W, 'P', m_SD, m_b, source, destination); retString = "move " + source + "," + destination; // NEW // opcode = "move(m)"; @@ -2561,10 +2561,10 @@ public: m_W = BITSn(word0,0x0100); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "movep " + source + "," + destination; // NEW // sprintf(opcode_str, "move(p)"); @@ -2576,7 +2576,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MOVE(P) : 0000 110W RRmp pppp : A-156 /////////////////////////////////////// @@ -2596,7 +2596,7 @@ public: assemble_ea_from_m_table(BITSn(word0,0x0020), rNum, m_ea); - astring fullAddy; /* Convert Short Absolute Address to full 16-bit */ + std::string fullAddy; /* Convert Short Absolute Address to full 16-bit */ assemble_address_from_IO_short_address(BITSn(word0,0x001f), fullAddy); m_W = BITSn(word0,0x0100); @@ -2604,10 +2604,10 @@ public: // NEW // sprintf(SD, "X:$%s", fullAddy); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "movep " + source + "," + destination; // NEW // sprintf(opcode_str, "move(p)*"); @@ -2618,8 +2618,8 @@ public: private: INT8 m_W; - astring m_SD; - astring m_ea; + std::string m_SD; + std::string m_ea; }; // MOVE(S) : 0001 100W HH0a aaaa : A-158 /////////////////////////////////////// @@ -2644,10 +2644,10 @@ public: m_W = BITSn(word0,0x0100); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source; - astring destination; + std::string source; + std::string destination; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source, destination); retString = "moves " + source + "," + destination; // NEW // sprintf(opcode_str, "move(s)"); @@ -2659,7 +2659,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; }; // MPY : .... .... 1k00 FQQQ : A-160 /////////////////////////////////////////// @@ -2682,10 +2682,10 @@ public: decode_kSign_table(BITSn(word0,0x40), m_sign); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring ts = m_sign; - if (ts.cmp("-")!=0) ts = ""; + std::string ts = m_sign; + if (ts.compare("-")!=0) ts = ""; retString = "mpy " + ts + regIdAsString(m_source) + "," + @@ -2696,7 +2696,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_sign; + std::string m_sign; reg_id m_source2; }; @@ -2715,7 +2715,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "mpy " + regIdAsString(m_source) + "," + @@ -2744,7 +2744,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "mpy " + regIdAsString(m_source) + "," + @@ -2778,10 +2778,10 @@ public: decode_kSign_table(BITSn(word0,0x40), m_sign); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring ts = m_sign; - if (ts.cmp("-") != 0) ts = ""; + std::string ts = m_sign; + if (ts.compare("-") != 0) ts = ""; retString = "mpyr " + ts + regIdAsString(m_source) + "," + @@ -2792,7 +2792,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_sign; + std::string m_sign; reg_id m_source2; }; @@ -2811,7 +2811,7 @@ public: m_source, m_source2, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "mpyr " + regIdAsString(m_source) + "," + @@ -2843,9 +2843,9 @@ public: decode_s_table(BITSn(word0,0x0004), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "mpy" + opMnemonicAsString(m_mnem); + std::string opcode = "mpy" + opMnemonicAsString(m_mnem); retString = opcode + " " + regIdAsString(m_source) + "," + @@ -2874,7 +2874,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "neg " + regIdAsString(m_destination); } @@ -2896,7 +2896,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "negc " + regIdAsString(m_destination); } @@ -2917,7 +2917,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "nop"; } @@ -2941,7 +2941,7 @@ public: decode_RR_table(BITSn(word0,0x0003), m_source); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "norm " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -2963,7 +2963,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "not " + regIdAsString(m_destination); } @@ -2986,7 +2986,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "or " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3010,12 +3010,12 @@ public: decode_EE_table(BITSn(word0,0x0600), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x", m_immediate); // NEW // sprintf(temp, "#$%02x", BITSn(word0,0x00ff)); - retString = "ori " + astring(temp) + "," + regIdAsString(m_destination); + retString = "ori " + std::string(temp) + "," + regIdAsString(m_destination); // NEW // sprintf(opcode_str, "or(i)"); } void evaluate(dsp56k_core* cpustate) {} @@ -3039,11 +3039,11 @@ public: decode_RR_table(BITSn(word0,0x0003), m_source); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "X:(%s)", regIdAsString(m_source).c_str()); - retString = "rep " + astring(temp); + retString = "rep " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -3064,12 +3064,12 @@ public: m_immediate = BITSn(word0,0x00ff); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { char temp[32]; sprintf(temp, "#$%x", m_immediate); // NEW // sprintf(temp, "#$%02x (%d)", BITSn(word0,0x00ff), BITSn(word0,0x00ff)); - retString = "rep " + astring(temp); + retString = "rep " + std::string(temp); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -3093,7 +3093,7 @@ public: if (m_source == iINVALID) return false; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "rep " + regIdAsString(m_source); } @@ -3116,9 +3116,9 @@ public: decode_cccc_table(BITSn(word0,0x000f), m_mnem); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "rep" + opMnemonicAsString(m_mnem); + std::string opcode = "rep" + opMnemonicAsString(m_mnem); retString = opcode; // NEW // sprintf(opcode_str, "rep.%s", M); } @@ -3142,7 +3142,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "reset"; } @@ -3164,7 +3164,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "rnd " + regIdAsString(m_destination); } @@ -3186,7 +3186,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "rol " + regIdAsString(m_destination); } @@ -3208,7 +3208,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "ror " + regIdAsString(m_destination); } @@ -3229,7 +3229,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "rti"; } @@ -3251,7 +3251,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "rts"; } @@ -3275,7 +3275,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "sbc " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3296,7 +3296,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "stop"; } @@ -3319,7 +3319,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "sub " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3345,7 +3345,7 @@ public: // TODO // m_opcode = "sub"; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_opcode + " " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3354,7 +3354,7 @@ public: size_t accumulatorBitsModified() const { return BM_HIGH | BM_MIDDLE | BM_LOW; } private: - astring m_opcode; + std::string m_opcode; }; // SUBL : .... .... 0100 F001 : A-204 ////////////////////////////////////////// @@ -3380,7 +3380,7 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "subl " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3402,7 +3402,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "swap " + regIdAsString(m_destination); } @@ -3423,7 +3423,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "swi"; } @@ -3457,17 +3457,17 @@ public: return false; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring opcode = "t" + opMnemonicAsString(m_mnem); + std::string opcode = "t" + opMnemonicAsString(m_mnem); // NEW // sprintf(opcode_str, "t.%s", M); retString = opcode; if (m_source != m_destination) - retString += astring(" ") + regIdAsString(m_source) + "," + regIdAsString(m_destination); + retString += std::string(" ") + regIdAsString(m_source) + "," + regIdAsString(m_destination); if (m_destination2 != iR0) - retString += astring(" R0,") + regIdAsString(m_destination2); + retString += std::string(" R0,") + regIdAsString(m_destination2); } void evaluate(dsp56k_core* cpustate) {} size_t size() const { return 1; } @@ -3492,7 +3492,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "tfr " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3515,7 +3515,7 @@ public: m_source, m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "tfr " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3538,7 +3538,7 @@ public: m_destination, m_source); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "tfr2 " + regIdAsString(m_source) + "," + regIdAsString(m_destination); } @@ -3575,10 +3575,10 @@ public: m_W = BITSn(word0,0x0100); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { - astring source2; - astring destination2; + std::string source2; + std::string destination2; assemble_arguments_from_W_table(m_W, 'X', m_SD, m_ea, source2, destination2); retString = "tfr3 " + regIdAsString(m_source) + "," + regIdAsString(m_destination) + " " + @@ -3591,7 +3591,7 @@ public: private: INT8 m_W; reg_id m_SD; - astring m_ea; + std::string m_ea; reg_id m_source2; reg_id m_destination2; }; @@ -3609,7 +3609,7 @@ public: decode_F_table(BITSn(word0,0x08), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "tst " + regIdAsString(m_destination); } @@ -3631,7 +3631,7 @@ public: decode_DD_table(BITSn(word0,0x0003), m_source); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "tst2 " + regIdAsString(m_source); } @@ -3652,7 +3652,7 @@ public: { return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "wait"; } @@ -3674,7 +3674,7 @@ public: decode_F_table(BITSn(word0,0x0008), m_destination); return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "zero " + regIdAsString(m_destination); } @@ -3713,7 +3713,7 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "shfl " + regIdAsString(m_source) + "," + @@ -3757,7 +3757,7 @@ public: } return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = "shfr " + regIdAsString(m_source) + "," + diff --git a/src/emu/cpu/dsp56k/opcode.c b/src/emu/cpu/dsp56k/opcode.c index 58ade2b7b30..7943736580c 100644 --- a/src/emu/cpu/dsp56k/opcode.c +++ b/src/emu/cpu/dsp56k/opcode.c @@ -16,7 +16,7 @@ Opcode::~Opcode() } -astring Opcode::disassemble() const +std::string Opcode::disassemble() const { // Duck out early if there isn't a valid op if (!m_instruction) @@ -29,8 +29,8 @@ astring Opcode::disassemble() const return dcString(); // Disassemble what you can. - astring opString = ""; - astring pmString = ""; + std::string opString = ""; + std::string pmString = ""; if (m_instruction) m_instruction->disassemble(opString); if (m_parallelMove) m_parallelMove->disassemble(pmString); @@ -68,11 +68,11 @@ const reg_id& Opcode::instSource() const { return m_instruction->source(); } const reg_id& Opcode::instDestination() const { return m_instruction->destination(); } const size_t Opcode::instAccumulatorBitsModified() const { return m_instruction->accumulatorBitsModified(); } -astring Opcode::dcString() const +std::string Opcode::dcString() const { char tempStr[1024]; sprintf(tempStr, "dc $%x", m_word0); - return astring(tempStr); + return std::string(tempStr); } } diff --git a/src/emu/cpu/dsp56k/opcode.h b/src/emu/cpu/dsp56k/opcode.h index da6a8a87d1b..b258c0241a6 100644 --- a/src/emu/cpu/dsp56k/opcode.h +++ b/src/emu/cpu/dsp56k/opcode.h @@ -21,7 +21,7 @@ public: Opcode(UINT16 w0, UINT16 w1); virtual ~Opcode(); - astring disassemble() const; + std::string disassemble() const; void evaluate(dsp56k_core* cpustate) const; size_t size() const; size_t evalSize() const; @@ -38,7 +38,7 @@ private: UINT16 m_word0; //UINT16 m_word1; - astring dcString() const; + std::string dcString() const; }; } diff --git a/src/emu/cpu/dsp56k/pmove.h b/src/emu/cpu/dsp56k/pmove.h index 2a475975542..16c9de1a555 100644 --- a/src/emu/cpu/dsp56k/pmove.h +++ b/src/emu/cpu/dsp56k/pmove.h @@ -19,7 +19,7 @@ public: virtual ~ParallelMove() {} virtual bool decode(const UINT16 word0, const UINT16 word1) = 0; - virtual void disassemble(astring& retString) const = 0; + virtual void disassemble(std::string& retString) const = 0; virtual void evaluate() = 0; static ParallelMove* decodeParallelMove(const Opcode* opc, const UINT16 word0, const UINT16 word1); @@ -57,7 +57,7 @@ public: reg_id SD; decode_HHH_table(BITSn(word0,0x0e00), SD); - astring ea; + std::string ea; assemble_ea_from_m_table(BITSn(word0,0x4000), regIDAsNum(r), ea); assemble_arguments_from_W_table(BITSn(word0,0x0100), 'X', SD, ea, @@ -69,15 +69,15 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_source + "," + m_destination; } void evaluate() {} private: - astring m_source; - astring m_destination; + std::string m_source; + std::string m_destination; }; @@ -91,7 +91,7 @@ public: } bool decode(const UINT16 word0, const UINT16 word1) { - astring ea; + std::string ea; if (opDestination() == iB) ea = "(A1)"; else if (opDestination() == iA) @@ -111,15 +111,15 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_source + "," + m_destination; } void evaluate() {} private: - astring m_source; - astring m_destination; + std::string m_source; + std::string m_destination; }; @@ -136,8 +136,8 @@ public: reg_id r; reg_id D1; reg_id D2; - astring ea1 = ""; - astring ea2 = ""; + std::string ea1 = ""; + std::string ea2 = ""; decode_rr_table(BITSn(word0,0x0060), r); decode_KKK_table(BITSn(word0,0x0700), D1, D2); @@ -165,15 +165,15 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = parallelMove + " " + parallelMove2; } void evaluate() {} private: - astring parallelMove; - astring parallelMove2; + std::string parallelMove; + std::string parallelMove2; }; @@ -212,7 +212,7 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { // (?,?) is a parallel nop if (m_source == iWEIRD && m_destination == iWEIRD) @@ -259,15 +259,15 @@ public: pms2 = parallel_move_str2; return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = pms + " " + pms2; } void evaluate() {} private: - astring pms; // TODO - astring pms2; + std::string pms; // TODO + std::string pms2; }; @@ -288,14 +288,14 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_ea; } void evaluate() {} private: - astring m_ea; + std::string m_ea; }; @@ -313,7 +313,7 @@ public: { INT8 b; reg_id SD; - astring args; + std::string args; b = (char)(word0 & 0x00ff); decode_HHH_table(BITSn(word1,0x0e00), SD); @@ -321,15 +321,15 @@ public: return true; } - void disassemble(astring& retString) const + void disassemble(std::string& retString) const { retString = m_source + "," + m_destination; } void evaluate() {} private: - astring m_source; - astring m_destination; + std::string m_source; + std::string m_destination; }; } diff --git a/src/emu/cpu/dsp56k/tables.c b/src/emu/cpu/dsp56k/tables.c index 727d7772d6e..a7db21acf44 100644 --- a/src/emu/cpu/dsp56k/tables.c +++ b/src/emu/cpu/dsp56k/tables.c @@ -283,7 +283,7 @@ void decode_JF_table(const UINT16 J, const UINT16 F, reg_id& S, reg_id& D) // NEW // } // NEW // } -void decode_kSign_table(const UINT16 k, astring& plusMinus) +void decode_kSign_table(const UINT16 k, std::string& plusMinus) { switch(k) { @@ -431,7 +431,7 @@ void decode_ss_table(const UINT16 ss, op_mnem& arithmetic) } } -void decode_uuuuF_table(const UINT16 uuuu, const UINT16 F, astring& arg, reg_id& S, reg_id& D) +void decode_uuuuF_table(const UINT16 uuuu, const UINT16 F, std::string& arg, reg_id& S, reg_id& D) { const UINT16 switchVal = (uuuu << 1) | F; @@ -473,7 +473,7 @@ void decode_uuuuF_table(const UINT16 uuuu, const UINT16 F, astring& arg, reg_id& } } -void decode_Z_table(const UINT16 Z, astring& ea) +void decode_Z_table(const UINT16 Z, std::string& ea) { /* This is fixed as per the Family Manual errata addendum */ switch(Z) @@ -483,7 +483,7 @@ void decode_Z_table(const UINT16 Z, astring& ea) } } -void assemble_ea_from_m_table(const UINT16 m, const int n, astring& ea) +void assemble_ea_from_m_table(const UINT16 m, const int n, std::string& ea) { char temp[32]; switch(m) @@ -494,7 +494,7 @@ void assemble_ea_from_m_table(const UINT16 m, const int n, astring& ea) ea = temp; } -void assemble_eas_from_mm_table(UINT16 mm, int n1, int n2, astring& ea1, astring& ea2) +void assemble_eas_from_mm_table(UINT16 mm, int n1, int n2, std::string& ea1, std::string& ea2) { char temp1[32]; char temp2[32]; @@ -513,7 +513,7 @@ void assemble_eas_from_mm_table(UINT16 mm, int n1, int n2, astring& ea1, astring ea2 = temp2; } -void assemble_ea_from_MM_table(UINT16 MM, int n, astring& ea) +void assemble_ea_from_MM_table(UINT16 MM, int n, std::string& ea) { char temp[32]; switch(MM) @@ -526,7 +526,7 @@ void assemble_ea_from_MM_table(UINT16 MM, int n, astring& ea) ea = temp; } -void assemble_ea_from_q_table(UINT16 q, int n, astring& ea) +void assemble_ea_from_q_table(UINT16 q, int n, std::string& ea) { char temp[32]; switch(q) @@ -537,7 +537,7 @@ void assemble_ea_from_q_table(UINT16 q, int n, astring& ea) ea = temp; } -void assemble_ea_from_t_table(UINT16 t, UINT16 val, astring& ea) +void assemble_ea_from_t_table(UINT16 t, UINT16 val, std::string& ea) { char temp[32]; switch(t) @@ -550,7 +550,7 @@ void assemble_ea_from_t_table(UINT16 t, UINT16 val, astring& ea) ea = temp; } -void assemble_ea_from_z_table(UINT16 z, int n, astring& ea) +void assemble_ea_from_z_table(UINT16 z, int n, std::string& ea) { char temp[32]; switch(z) @@ -561,10 +561,10 @@ void assemble_ea_from_z_table(UINT16 z, int n, astring& ea) ea = temp; } -void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, astring& D) +void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, std::string& D) { char temp[32]; - astring fullAddy; /* Convert Short Absolute Address to full 16-bit */ + std::string fullAddy; /* Convert Short Absolute Address to full 16-bit */ switch(P) { @@ -581,8 +581,8 @@ void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, astring& D) D = temp; } -void assemble_arguments_from_W_table(UINT16 W, char ma, const reg_id& SD, const astring& ea, - astring& source, astring& destination) +void assemble_arguments_from_W_table(UINT16 W, char ma, const reg_id& SD, const std::string& ea, + std::string& source, std::string& destination) { char temp[32]; sprintf(temp, "%c:%s", ma, ea.c_str()); @@ -593,8 +593,8 @@ void assemble_arguments_from_W_table(UINT16 W, char ma, const reg_id& SD, const } } -void assemble_arguments_from_W_table(UINT16 W, char ma, const astring& SD, const astring& ea, - astring& source, astring& destination) +void assemble_arguments_from_W_table(UINT16 W, char ma, const std::string& SD, const std::string& ea, + std::string& source, std::string& destination) { char temp[32]; sprintf(temp, "%c:%s", ma, ea.c_str()); @@ -605,7 +605,7 @@ void assemble_arguments_from_W_table(UINT16 W, char ma, const astring& SD, const } } -void assemble_reg_from_W_table(UINT16 W, char ma, const reg_id& SD, const INT8 xx, astring& S, astring& D) +void assemble_reg_from_W_table(UINT16 W, char ma, const reg_id& SD, const INT8 xx, std::string& S, std::string& D) { UINT8 abs_xx; char temp[32]; @@ -627,7 +627,7 @@ void assemble_reg_from_W_table(UINT16 W, char ma, const reg_id& SD, const INT8 x } } -void assemble_address_from_IO_short_address(UINT16 pp, astring& ea) +void assemble_address_from_IO_short_address(UINT16 pp, std::string& ea) { char temp[32]; @@ -751,7 +751,7 @@ void setReg16(dsp56k_core* cpustate, const UINT16& value, const reg_id& reg) if (reg == iM3) M3 = value; } -astring regIdAsString(const reg_id& regId) +std::string regIdAsString(const reg_id& regId) { switch(regId) { @@ -799,7 +799,7 @@ astring regIdAsString(const reg_id& regId) return "INVALID_REG_ID"; } -astring opMnemonicAsString(const op_mnem& mnem) +std::string opMnemonicAsString(const op_mnem& mnem) { switch(mnem) { @@ -829,47 +829,47 @@ astring opMnemonicAsString(const op_mnem& mnem) return "INVALID_OPCODE_MNEMONIC"; } -reg_id stringAsRegID(const astring& str) -{ - if (str.cmp("X")==0) return iX; - if (str.cmp("X0") == 0) return iX0; - if (str.cmp("X1") == 0) return iX1; - if (str.cmp("Y") == 0) return iY; - if (str.cmp("Y0") == 0) return iY0; - if (str.cmp("Y1") == 0) return iY1; - if (str.cmp("A") == 0) return iA; - if (str.cmp("A0") == 0) return iA0; - if (str.cmp("A1") == 0) return iA1; - if (str.cmp("A2") == 0) return iA2; - if (str.cmp("B") == 0) return iB; - if (str.cmp("B0") == 0) return iB0; - if (str.cmp("B1") == 0) return iB1; - if (str.cmp("B2") == 0) return iB2; - if (str.cmp("R0") == 0) return iR0; - if (str.cmp("R1") == 0) return iR1; - if (str.cmp("R2") == 0) return iR2; - if (str.cmp("R3") == 0) return iR3; - if (str.cmp("N0") == 0) return iN0; - if (str.cmp("N1") == 0) return iN1; - if (str.cmp("N2") == 0) return iN2; - if (str.cmp("N3") == 0) return iN3; - if (str.cmp("M0") == 0) return iM0; - if (str.cmp("M1") == 0) return iM1; - if (str.cmp("M2") == 0) return iM2; - if (str.cmp("M3") == 0) return iM3; - if (str.cmp("LC") == 0) return iLC; - if (str.cmp("SR") == 0) return iSR; - if (str.cmp("OMR") == 0) return iOMR; - if (str.cmp("SP") == 0) return iSP; - if (str.cmp("SSH") == 0) return iSSH; - if (str.cmp("SSL") == 0) return iSSL; - if (str.cmp("LA") == 0) return iLA; - if (str.cmp("MR") == 0) return iMR; - if (str.cmp("CCR") == 0) return iCCR; - if (str.cmp("F") == 0) return iF; - if (str.cmp("^F") == 0) return iFHAT; - if (str.cmp("!!") == 0) return iINVALID; - if (str.cmp("?") == 0)return iWEIRD; +reg_id stringAsRegID(const std::string& str) +{ + if (str.compare("X")==0) return iX; + if (str.compare("X0") == 0) return iX0; + if (str.compare("X1") == 0) return iX1; + if (str.compare("Y") == 0) return iY; + if (str.compare("Y0") == 0) return iY0; + if (str.compare("Y1") == 0) return iY1; + if (str.compare("A") == 0) return iA; + if (str.compare("A0") == 0) return iA0; + if (str.compare("A1") == 0) return iA1; + if (str.compare("A2") == 0) return iA2; + if (str.compare("B") == 0) return iB; + if (str.compare("B0") == 0) return iB0; + if (str.compare("B1") == 0) return iB1; + if (str.compare("B2") == 0) return iB2; + if (str.compare("R0") == 0) return iR0; + if (str.compare("R1") == 0) return iR1; + if (str.compare("R2") == 0) return iR2; + if (str.compare("R3") == 0) return iR3; + if (str.compare("N0") == 0) return iN0; + if (str.compare("N1") == 0) return iN1; + if (str.compare("N2") == 0) return iN2; + if (str.compare("N3") == 0) return iN3; + if (str.compare("M0") == 0) return iM0; + if (str.compare("M1") == 0) return iM1; + if (str.compare("M2") == 0) return iM2; + if (str.compare("M3") == 0) return iM3; + if (str.compare("LC") == 0) return iLC; + if (str.compare("SR") == 0) return iSR; + if (str.compare("OMR") == 0) return iOMR; + if (str.compare("SP") == 0) return iSP; + if (str.compare("SSH") == 0) return iSSH; + if (str.compare("SSL") == 0) return iSSL; + if (str.compare("LA") == 0) return iLA; + if (str.compare("MR") == 0) return iMR; + if (str.compare("CCR") == 0) return iCCR; + if (str.compare("F") == 0) return iF; + if (str.compare("^F") == 0) return iFHAT; + if (str.compare("!!") == 0) return iINVALID; + if (str.compare("?") == 0)return iWEIRD; return iINVALID; } diff --git a/src/emu/cpu/dsp56k/tables.h b/src/emu/cpu/dsp56k/tables.h index 139d89403a0..dbe877f1431 100644 --- a/src/emu/cpu/dsp56k/tables.h +++ b/src/emu/cpu/dsp56k/tables.h @@ -46,7 +46,7 @@ void decode_IIIIx_table(const UINT16 IIII, const UINT16 x, reg_id& S, reg_id& D) void decode_JJJF_table(const UINT16 JJJ, const UINT16 F, reg_id& S, reg_id& D); void decode_JJF_table(const UINT16 JJ, const UINT16 F, reg_id& S, reg_id& D); void decode_JF_table(const UINT16 J, const UINT16 F, reg_id& S, reg_id& D); -void decode_kSign_table(const UINT16 k, astring& plusMinus); +void decode_kSign_table(const UINT16 k, std::string& plusMinus); void decode_KKK_table(const UINT16 KKK, reg_id& D1, reg_id& D2); void decode_NN_table(UINT16 NN, reg_id& ret); void decode_TT_table(UINT16 TT, reg_id& ret); @@ -57,20 +57,20 @@ void decode_RR_table(UINT16 RR, reg_id& ret); void decode_rr_table(UINT16 rr, reg_id& ret); void decode_s_table(const UINT16 s, op_mnem& arithmetic); void decode_ss_table(const UINT16 ss, op_mnem& arithmetic); -void decode_uuuuF_table(const UINT16 uuuu, const UINT16 F, astring& arg, reg_id& S, reg_id& D); -void decode_Z_table(const UINT16 Z, astring& ea); - -void assemble_ea_from_m_table(const UINT16 m, const int n, astring& ea); -void assemble_eas_from_mm_table(UINT16 mm, int n1, int n2, astring& ea1, astring& ea2); -void assemble_ea_from_MM_table(UINT16 MM, int n, astring& ea); -void assemble_ea_from_q_table(UINT16 q, int n, astring& ea); -void assemble_ea_from_t_table(UINT16 t, UINT16 val, astring& ea); -void assemble_ea_from_z_table(UINT16 z, int n, astring& ea); -void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, astring& D); -void assemble_arguments_from_W_table(UINT16 W, char ma, const reg_id& SD, const astring& ea, astring& S, astring& D); -void assemble_arguments_from_W_table(UINT16 W, char ma, const astring& SD, const astring& ea, astring& S, astring& D); -void assemble_reg_from_W_table(UINT16 W, char ma, const reg_id& SD, const INT8 xx, astring& S, astring& D); -void assemble_address_from_IO_short_address(UINT16 pp, astring& ea); +void decode_uuuuF_table(const UINT16 uuuu, const UINT16 F, std::string& arg, reg_id& S, reg_id& D); +void decode_Z_table(const UINT16 Z, std::string& ea); + +void assemble_ea_from_m_table(const UINT16 m, const int n, std::string& ea); +void assemble_eas_from_mm_table(UINT16 mm, int n1, int n2, std::string& ea1, std::string& ea2); +void assemble_ea_from_MM_table(UINT16 MM, int n, std::string& ea); +void assemble_ea_from_q_table(UINT16 q, int n, std::string& ea); +void assemble_ea_from_t_table(UINT16 t, UINT16 val, std::string& ea); +void assemble_ea_from_z_table(UINT16 z, int n, std::string& ea); +void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, std::string& D); +void assemble_arguments_from_W_table(UINT16 W, char ma, const reg_id& SD, const std::string& ea, std::string& S, std::string& D); +void assemble_arguments_from_W_table(UINT16 W, char ma, const std::string& SD, const std::string& ea, std::string& S, std::string& D); +void assemble_reg_from_W_table(UINT16 W, char ma, const reg_id& SD, const INT8 xx, std::string& S, std::string& D); +void assemble_address_from_IO_short_address(UINT16 pp, std::string& ea); INT8 get_6_bit_signed_value(UINT16 bits); @@ -82,9 +82,9 @@ bool registerOverlap(const reg_id& r0, const size_t bmd, const reg_id& r1); UINT16 regValue16(dsp56k_core* cpustate, const reg_id& reg); void setReg16(dsp56k_core* cpustate, const UINT16& value, const reg_id& reg); -astring regIdAsString(const reg_id& regId); -astring opMnemonicAsString(const op_mnem& mnem); -reg_id stringAsRegID(const astring& str); +std::string regIdAsString(const reg_id& regId); +std::string opMnemonicAsString(const op_mnem& mnem); +reg_id stringAsRegID(const std::string& str); UINT8 regIDAsNum(const reg_id& regId); diff --git a/src/emu/cpu/e132xs/e132xs.c b/src/emu/cpu/e132xs/e132xs.c index 258f0642673..613bc57a03f 100644 --- a/src/emu/cpu/e132xs/e132xs.c +++ b/src/emu/cpu/e132xs/e132xs.c @@ -1560,7 +1560,7 @@ void hyperstone_device::init(int scale_mask) m_clock_scale_mask = scale_mask; // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_global_regs[0]).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_global_regs[1]).callimport().callexport().formatstr("%40s").noshow(); state_add(E132XS_PC, "PC", m_global_regs[0]).mask(0xffffffff); @@ -1847,12 +1847,12 @@ const address_space_config *hyperstone_device::memory_space_config(address_space // for the debugger //------------------------------------------------- -void hyperstone_device::state_string_export(const device_state_entry &entry, astring &str) +void hyperstone_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c FTE:%X FRM:%X ILC:%d FL:%d FP:%d", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c FTE:%X FRM:%X ILC:%d FL:%d FP:%d", GET_S ? 'S':'.', GET_P ? 'P':'.', GET_T ? 'T':'.', diff --git a/src/emu/cpu/e132xs/e132xs.h b/src/emu/cpu/e132xs/e132xs.h index 9ab10d1cec1..2d8bc976cf8 100644 --- a/src/emu/cpu/e132xs/e132xs.h +++ b/src/emu/cpu/e132xs/e132xs.h @@ -241,7 +241,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // address spaces const address_space_config m_program_config; diff --git a/src/emu/cpu/esrip/esrip.c b/src/emu/cpu/esrip/esrip.c index 8551a18c745..5bbcebeee08 100644 --- a/src/emu/cpu/esrip/esrip.c +++ b/src/emu/cpu/esrip/esrip.c @@ -191,7 +191,7 @@ void esrip_device::device_start() m_direct = &m_program->direct(); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_rip_pc).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_status).callimport().callexport().formatstr("%8s").noshow(); state_add(ESRIP_PC, "PC:", m_rip_pc).mask(0xffff); @@ -349,12 +349,12 @@ const address_space_config *esrip_device::memory_space_config(address_spacenum s // for the debugger //------------------------------------------------- -void esrip_device::state_string_export(const device_state_entry &entry, astring &str) +void esrip_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c", (m_status & 0x80) ? '3' : '.', (m_status & 0x40) ? '2' : '.', (m_status & 0x20) ? '1' : '.', diff --git a/src/emu/cpu/esrip/esrip.h b/src/emu/cpu/esrip/esrip.h index d772d37b093..2cf5b335aad 100644 --- a/src/emu/cpu/esrip/esrip.h +++ b/src/emu/cpu/esrip/esrip.h @@ -150,7 +150,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // address spaces const address_space_config m_program_config; diff --git a/src/emu/cpu/f8/f8.c b/src/emu/cpu/f8/f8.c index 52ca9747911..6c5db98e721 100644 --- a/src/emu/cpu/f8/f8.c +++ b/src/emu/cpu/f8/f8.c @@ -2057,12 +2057,12 @@ void f8_cpu_device::device_start() } -void f8_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void f8_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c", m_w & 0x10 ? 'I':'.', m_w & 0x08 ? 'O':'.', m_w & 0x04 ? 'Z':'.', diff --git a/src/emu/cpu/f8/f8.h b/src/emu/cpu/f8/f8.h index e888fc29608..e2045e42ff9 100644 --- a/src/emu/cpu/f8/f8.h +++ b/src/emu/cpu/f8/f8.h @@ -63,7 +63,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/g65816/g65816.c b/src/emu/cpu/g65816/g65816.c index d8d6538c0fc..feedb58ef59 100644 --- a/src/emu/cpu/g65816/g65816.c +++ b/src/emu/cpu/g65816/g65816.c @@ -955,12 +955,12 @@ void g65816_device::state_export(const device_state_entry &entry) } } -void g65816_device::state_string_export(const device_state_entry &entry, astring &str) +void g65816_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_flag_n & NFLAG_SET ? 'N':'.', m_flag_v & VFLAG_SET ? 'V':'.', m_flag_m & MFLAG_SET ? 'M':'.', diff --git a/src/emu/cpu/g65816/g65816.h b/src/emu/cpu/g65816/g65816.h index 565269331b7..2f6973ab195 100644 --- a/src/emu/cpu/g65816/g65816.h +++ b/src/emu/cpu/g65816/g65816.h @@ -85,7 +85,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/h6280/h6280.c b/src/emu/cpu/h6280/h6280.c index 5f3fccf9e04..ec6a11f6775 100644 --- a/src/emu/cpu/h6280/h6280.c +++ b/src/emu/cpu/h6280/h6280.c @@ -2189,12 +2189,12 @@ OP(op,ff) { h6280_cycles(4); bbs(7, rd_zpg()); } // 6/8 BBS7 ZPG,REL // for the debugger //------------------------------------------------- -void h6280_device::state_string_export(const device_state_entry &entry, astring &str) +void h6280_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_p & 0x80) ? 'N':'.', (m_p & 0x40) ? 'V':'.', (m_p & 0x20) ? 'R':'.', diff --git a/src/emu/cpu/h6280/h6280.h b/src/emu/cpu/h6280/h6280.h index decc1f20f01..892be50308c 100644 --- a/src/emu/cpu/h6280/h6280.h +++ b/src/emu/cpu/h6280/h6280.h @@ -96,7 +96,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // opcode accessors UINT8 program_read8(offs_t addr); diff --git a/src/emu/cpu/h8/h8.c b/src/emu/cpu/h8/h8.c index f9093e2b513..cd2f7ecd17f 100644 --- a/src/emu/cpu/h8/h8.c +++ b/src/emu/cpu/h8/h8.c @@ -243,12 +243,12 @@ void h8_device::state_export(const device_state_entry &entry) { } -void h8_device::state_string_export(const device_state_entry &entry, astring &str) +void h8_device::state_string_export(const device_state_entry &entry, std::string &str) { switch(entry.index()) { case STATE_GENFLAGS: if(has_exr) - str.printf("%c%c %c%c%c%c%c%c%c%c", + strprintf(str, "%c%c %c%c%c%c%c%c%c%c", (EXR & EXR_T) ? 'T' : '-', '0' + (EXR & EXR_I), (CCR & F_I) ? 'I' : '-', @@ -260,7 +260,7 @@ void h8_device::state_string_export(const device_state_entry &entry, astring &st (CCR & F_V) ? 'V' : '-', (CCR & F_C) ? 'C' : '-'); else - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (CCR & F_I) ? 'I' : '-', (CCR & F_UI) ? 'u' : '-', (CCR & F_H) ? 'H' : '-', @@ -279,7 +279,7 @@ void h8_device::state_string_export(const device_state_entry &entry, astring &st case H8_R6: case H8_R7: { int r = entry.index() - H8_R0; - str.printf("%04x %04x", R[r + 8], R[r]); + strprintf(str, "%04x %04x", R[r + 8], R[r]); break; } } diff --git a/src/emu/cpu/h8/h8.h b/src/emu/cpu/h8/h8.h index 957ddc63296..b3a7a072ec9 100644 --- a/src/emu/cpu/h8/h8.h +++ b/src/emu/cpu/h8/h8.h @@ -185,7 +185,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/hcd62121/hcd62121.c b/src/emu/cpu/hcd62121/hcd62121.c index fdeebc36a21..f446b80f921 100644 --- a/src/emu/cpu/hcd62121/hcd62121.c +++ b/src/emu/cpu/hcd62121/hcd62121.c @@ -361,16 +361,16 @@ void hcd62121_cpu_device::device_start() } -void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENPC: - str.printf("%06X", (m_cseg << 16) | m_ip); + strprintf(str, "%06X", (m_cseg << 16) | m_ip); break; case STATE_GENFLAGS: - str.printf("%s-%s-%s-%c-%c", + strprintf(str, "%s-%s-%s-%c-%c", m_f & _FLAG_ZH ? "ZH":"__", m_f & _FLAG_CL ? "CL":"__", m_f & _FLAG_ZL ? "ZL":"__", @@ -381,100 +381,100 @@ void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, a break; case HCD62121_R00: - str.printf("%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]); break; case HCD62121_R04: - str.printf("%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]); break; case HCD62121_R08: - str.printf("%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]); break; case HCD62121_R0C: - str.printf("%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]); break; case HCD62121_R10: - str.printf("%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]); break; case HCD62121_R14: - str.printf("%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]); break; case HCD62121_R18: - str.printf("%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]); break; case HCD62121_R1C: - str.printf("%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]); break; case HCD62121_R20: - str.printf("%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]); break; case HCD62121_R24: - str.printf("%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]); break; case HCD62121_R28: - str.printf("%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]); break; case HCD62121_R2C: - str.printf("%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]); break; case HCD62121_R30: - str.printf("%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]); break; case HCD62121_R34: - str.printf("%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]); break; case HCD62121_R38: - str.printf("%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]); break; case HCD62121_R3C: - str.printf("%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]); break; case HCD62121_R40: - str.printf("%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]); break; case HCD62121_R44: - str.printf("%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]); break; case HCD62121_R48: - str.printf("%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]); break; case HCD62121_R4C: - str.printf("%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]); break; case HCD62121_R50: - str.printf("%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]); break; case HCD62121_R54: - str.printf("%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]); break; case HCD62121_R58: - str.printf("%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]); break; case HCD62121_R5C: - str.printf("%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]); break; case HCD62121_R60: - str.printf("%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]); break; case HCD62121_R64: - str.printf("%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]); break; case HCD62121_R68: - str.printf("%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]); break; case HCD62121_R6C: - str.printf("%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]); break; case HCD62121_R70: - str.printf("%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]); break; case HCD62121_R74: - str.printf("%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]); break; case HCD62121_R78: - str.printf("%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]); break; case HCD62121_R7C: - str.printf("%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]); + strprintf(str, "%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]); break; } } diff --git a/src/emu/cpu/hcd62121/hcd62121.h b/src/emu/cpu/hcd62121/hcd62121.h index 938ba53f4d9..60a5f35c101 100644 --- a/src/emu/cpu/hcd62121/hcd62121.h +++ b/src/emu/cpu/hcd62121/hcd62121.h @@ -52,7 +52,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/hd61700/hd61700.c b/src/emu/cpu/hd61700/hd61700.c index a9b83620f33..9e8276c6bc0 100644 --- a/src/emu/cpu/hd61700/hd61700.c +++ b/src/emu/cpu/hd61700/hd61700.c @@ -183,8 +183,8 @@ void hd61700_cpu_device::device_start() for (int ireg=0; ireg<32; ireg++) { - astring tmpstr; - state_add(HD61700_MAINREG + ireg, tmpstr.format("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X"); + std::string tmpstr; + state_add(HD61700_MAINREG + ireg, strformat(tmpstr, "R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X"); } state_add(STATE_GENPC, "curpc", m_curpc).callimport().callexport().formatstr("%8s").noshow(); @@ -271,12 +271,12 @@ void hd61700_cpu_device::state_import(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void hd61700_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void hd61700_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", m_flags & FLAG_Z ? '.' : 'Z', m_flags & FLAG_C ? 'C' : '.', m_flags & FLAG_LZ ? '.' : 'L', diff --git a/src/emu/cpu/hd61700/hd61700.h b/src/emu/cpu/hd61700/hd61700.h index 445ae13b951..1b928e57922 100644 --- a/src/emu/cpu/hd61700/hd61700.h +++ b/src/emu/cpu/hd61700/hd61700.h @@ -92,7 +92,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } diff --git a/src/emu/cpu/hmcs40/hmcs40.c b/src/emu/cpu/hmcs40/hmcs40.c index 16d85efd6ad..f6ad44ee73e 100644 --- a/src/emu/cpu/hmcs40/hmcs40.c +++ b/src/emu/cpu/hmcs40/hmcs40.c @@ -144,12 +144,12 @@ hd44828_device::hd44828_device(const machine_config &mconfig, const char *tag, d // disasm -void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c", + strprintf(str, "%c%c", m_c ? 'C':'c', m_s ? 'S':'s' ); diff --git a/src/emu/cpu/hmcs40/hmcs40.h b/src/emu/cpu/hmcs40/hmcs40.h index cb5399137f7..b5967a4d640 100644 --- a/src/emu/cpu/hmcs40/hmcs40.h +++ b/src/emu/cpu/hmcs40/hmcs40.h @@ -159,7 +159,7 @@ protected: virtual UINT32 disasm_min_opcode_bytes() const { return 2; } virtual UINT32 disasm_max_opcode_bytes() const { return 2; } virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c index c473c82fc3c..589941d29d2 100644 --- a/src/emu/cpu/i386/i386.c +++ b/src/emu/cpu/i386/i386.c @@ -3468,60 +3468,60 @@ void i386_device::state_export(const device_state_entry &entry) } } -void i386_device::state_string_export(const device_state_entry &entry, astring &str) +void i386_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%08X", get_flags()); + strprintf(str, "%08X", get_flags()); break; case X87_ST0: - str.printf("%f", fx80_to_double(ST(0))); + strprintf(str, "%f", fx80_to_double(ST(0))); break; case X87_ST1: - str.printf("%f", fx80_to_double(ST(1))); + strprintf(str, "%f", fx80_to_double(ST(1))); break; case X87_ST2: - str.printf("%f", fx80_to_double(ST(2))); + strprintf(str, "%f", fx80_to_double(ST(2))); break; case X87_ST3: - str.printf("%f", fx80_to_double(ST(3))); + strprintf(str, "%f", fx80_to_double(ST(3))); break; case X87_ST4: - str.printf("%f", fx80_to_double(ST(4))); + strprintf(str, "%f", fx80_to_double(ST(4))); break; case X87_ST5: - str.printf("%f", fx80_to_double(ST(5))); + strprintf(str, "%f", fx80_to_double(ST(5))); break; case X87_ST6: - str.printf("%f", fx80_to_double(ST(6))); + strprintf(str, "%f", fx80_to_double(ST(6))); break; case X87_ST7: - str.printf("%f", fx80_to_double(ST(7))); + strprintf(str, "%f", fx80_to_double(ST(7))); break; case SSE_XMM0: - str.printf("%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]); break; case SSE_XMM1: - str.printf("%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]); break; case SSE_XMM2: - str.printf("%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]); break; case SSE_XMM3: - str.printf("%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]); break; case SSE_XMM4: - str.printf("%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]); break; case SSE_XMM5: - str.printf("%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]); break; case SSE_XMM6: - str.printf("%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]); break; case SSE_XMM7: - str.printf("%08x%08x%08x%08x", XMM(7).d[3], XMM(7).d[2], XMM(7).d[1], XMM(7).d[0]); + strprintf(str, "%08x%08x%08x%08x", XMM(7).d[3], XMM(7).d[2], XMM(7).d[1], XMM(7).d[0]); break; } } diff --git a/src/emu/cpu/i386/i386.h b/src/emu/cpu/i386/i386.h index 4a9a9cfb613..5b2ed036b2a 100644 --- a/src/emu/cpu/i386/i386.h +++ b/src/emu/cpu/i386/i386.h @@ -58,7 +58,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/i4004/i4004.c b/src/emu/cpu/i4004/i4004.c index c219b402f45..23b1721df3a 100644 --- a/src/emu/cpu/i4004/i4004.c +++ b/src/emu/cpu/i4004/i4004.c @@ -419,15 +419,15 @@ void i4004_cpu_device::device_start() state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s"); state_add(I4004_A, "A", m_A).mask(0x0f); - astring tempstr; + std::string tempstr; for (int regnum = 0; regnum < 8; regnum++) { - state_add(I4004_R01 + regnum, tempstr.format("R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]); + state_add(I4004_R01 + regnum, strformat(tempstr, "R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]); } for (int addrnum = 0; addrnum < 4; addrnum++) { - state_add(I4004_ADDR1 + addrnum, tempstr.format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); + state_add(I4004_ADDR1 + addrnum, strformat(tempstr, "ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); } state_add(I4004_RAM, "RAM", m_RAM.w.l).mask(0x0fff); @@ -507,12 +507,12 @@ void i4004_cpu_device::state_export(const device_state_entry &entry) } } -void i4004_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void i4004_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf(".%c%c%c", + strprintf(str, ".%c%c%c", (m_A==0) ? 'Z':'.', m_C ? 'C':'.', m_TEST ? 'T':'.'); diff --git a/src/emu/cpu/i4004/i4004.h b/src/emu/cpu/i4004/i4004.h index 1050ac2997e..956218f3723 100644 --- a/src/emu/cpu/i4004/i4004.h +++ b/src/emu/cpu/i4004/i4004.h @@ -57,7 +57,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/i8008/i8008.c b/src/emu/cpu/i8008/i8008.c index 066fddb4fd4..2bb5b9cf4b7 100644 --- a/src/emu/cpu/i8008/i8008.c +++ b/src/emu/cpu/i8008/i8008.c @@ -92,9 +92,9 @@ void i8008_device::device_start() state_add(I8008_H, "H", m_H); state_add(I8008_L, "L", m_L); - astring tempstr; + std::string tempstr; for (int addrnum = 0; addrnum < 8; addrnum++) - state_add(I8008_ADDR1 + addrnum, tempstr.format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); + state_add(I8008_ADDR1 + addrnum, strformat(tempstr, "ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); init_tables(); } @@ -187,12 +187,12 @@ void i8008_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void i8008_device::state_string_export(const device_state_entry &entry, astring &str) +void i8008_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c", + strprintf(str, "%c%c%c%c", m_CF ? 'C':'.', m_ZF ? 'Z':'.', m_SF ? 'S':'.', diff --git a/src/emu/cpu/i8008/i8008.h b/src/emu/cpu/i8008/i8008.h index 8d75cc90957..c9cbecce7aa 100644 --- a/src/emu/cpu/i8008/i8008.h +++ b/src/emu/cpu/i8008/i8008.h @@ -48,7 +48,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides diff --git a/src/emu/cpu/i8085/i8085.c b/src/emu/cpu/i8085/i8085.c index f3a768dddc9..ef44db0284f 100644 --- a/src/emu/cpu/i8085/i8085.c +++ b/src/emu/cpu/i8085/i8085.c @@ -1081,12 +1081,12 @@ void i8085a_cpu_device::state_export(const device_state_entry &entry) } } -void i8085a_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void i8085a_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_AF.b.l & 0x80 ? 'S':'.', m_AF.b.l & 0x40 ? 'Z':'.', m_AF.b.l & 0x20 ? 'X':'.', // X5 diff --git a/src/emu/cpu/i8085/i8085.h b/src/emu/cpu/i8085/i8085.h index 437d085cb67..63b340ddadd 100644 --- a/src/emu/cpu/i8085/i8085.h +++ b/src/emu/cpu/i8085/i8085.h @@ -82,7 +82,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); void state_export(const device_state_entry &entry); void state_import(const device_state_entry &entry); diff --git a/src/emu/cpu/i8089/i8089.c b/src/emu/cpu/i8089/i8089.c index d318dc6ce6c..03d5d9d2856 100644 --- a/src/emu/cpu/i8089/i8089.c +++ b/src/emu/cpu/i8089/i8089.c @@ -159,7 +159,7 @@ offs_t i8089_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *op // for the debugger //------------------------------------------------- -void i8089_device::state_string_export(const device_state_entry &entry, astring &str) +void i8089_device::state_string_export(const device_state_entry &entry, std::string &str) { i8089_channel *ch = m_ch1; @@ -169,30 +169,30 @@ void i8089_device::state_string_export(const device_state_entry &entry, astring switch (entry.index()) { case SYSBUS: - str.printf("%c", sysbus_width() ? 'W' : '.'); + strprintf(str, "%c", sysbus_width() ? 'W' : '.'); break; case SOC: - str.printf("%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.'); + strprintf(str, "%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.'); break; case CH1_GA: case CH2_GA: - str.printf("%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w); + strprintf(str, "%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w); break; case CH1_GB: case CH2_GB: - str.printf("%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w); + strprintf(str, "%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w); break; case CH1_GC: case CH2_GC: - str.printf("%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w); + strprintf(str, "%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w); break; case CH1_TP: case CH2_TP: - str.printf("%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w); + strprintf(str, "%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w); break; case CH1_PSW: case CH2_PSW: - str.printf("%c%s%c%s%s%s%c%c", + strprintf(str, "%c%s%c%s%s%s%c%c", BIT(ch->m_r[i8089_channel::PSW].w, 7) ? 'P':'.', BIT(ch->m_r[i8089_channel::PSW].w, 6) ? "XF":"..", BIT(ch->m_r[i8089_channel::PSW].w, 5) ? 'B':'.', diff --git a/src/emu/cpu/i8089/i8089.h b/src/emu/cpu/i8089/i8089.h index 403550d173c..4f325a7ac4e 100644 --- a/src/emu/cpu/i8089/i8089.h +++ b/src/emu/cpu/i8089/i8089.h @@ -89,7 +89,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // optional information overrides virtual machine_config_constructor device_mconfig_additions() const; diff --git a/src/emu/cpu/i86/i286.c b/src/emu/cpu/i86/i286.c index d645ed2cad3..763794cb69a 100644 --- a/src/emu/cpu/i86/i286.c +++ b/src/emu/cpu/i86/i286.c @@ -275,18 +275,18 @@ void i80286_cpu_device::device_start() m_out_shutdown_func.resolve_safe(); } -void i80286_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void i80286_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENPC: - str.printf("%08X", pc()); + strprintf(str, "%08X", pc()); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", flags & 0x8000 ? '0':'.', flags & 0x4000 ? 'N':'.', flags & 0x2000 ? 'I':'.', diff --git a/src/emu/cpu/i86/i286.h b/src/emu/cpu/i86/i286.h index 8d9f19fbe00..466c672ac78 100644 --- a/src/emu/cpu/i86/i286.h +++ b/src/emu/cpu/i86/i286.h @@ -75,7 +75,7 @@ protected: virtual void execute_run(); virtual void device_reset(); virtual void device_start(); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); virtual UINT32 execute_input_lines() const { return 1; } virtual void execute_set_input(int inputnum, int state); bool memory_translate(address_spacenum spacenum, int intention, offs_t &address); diff --git a/src/emu/cpu/i86/i86.c b/src/emu/cpu/i86/i86.c index 50c0c970ba9..3809610d819 100644 --- a/src/emu/cpu/i86/i86.c +++ b/src/emu/cpu/i86/i86.c @@ -310,18 +310,18 @@ i8086_common_cpu_device::i8086_common_cpu_device(const machine_config &mconfig, memset(m_sregs, 0x00, sizeof(m_sregs)); } -void i8086_common_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void i8086_common_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENPC: - str.printf("%08X", pc()); + strprintf(str, "%08X", pc()); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", flags & 0x8000 ? '1':'.', flags & 0x4000 ? '1':'.', flags & 0x2000 ? '1':'.', diff --git a/src/emu/cpu/i86/i86.h b/src/emu/cpu/i86/i86.h index 7868d49de0e..8c0618e10d5 100644 --- a/src/emu/cpu/i86/i86.h +++ b/src/emu/cpu/i86/i86.h @@ -118,7 +118,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); virtual void interrupt(int int_num, int trap = 1); bool common_op(UINT8 op); diff --git a/src/emu/cpu/i960/i960.c b/src/emu/cpu/i960/i960.c index d8d6dac6434..a704a964cd9 100644 --- a/src/emu/cpu/i960/i960.c +++ b/src/emu/cpu/i960/i960.c @@ -2078,7 +2078,7 @@ void i960_cpu_device::device_start() m_icountptr = &m_icount; } -void i960_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void i960_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { static const char *const conditions[8] = { @@ -2088,7 +2088,7 @@ void i960_cpu_device::state_string_export(const device_state_entry &entry, astri switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s", conditions[m_AC & 7]); + strprintf(str, "%s", conditions[m_AC & 7]); break; } } diff --git a/src/emu/cpu/i960/i960.h b/src/emu/cpu/i960/i960.h index b4e4cfc86f8..c8f791a73a7 100644 --- a/src/emu/cpu/i960/i960.h +++ b/src/emu/cpu/i960/i960.h @@ -93,7 +93,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/ie15/ie15.c b/src/emu/cpu/ie15/ie15.c index c41cffd223c..03e1f0a91ee 100644 --- a/src/emu/cpu/ie15/ie15.c +++ b/src/emu/cpu/ie15/ie15.c @@ -62,9 +62,9 @@ void ie15_device::device_start() state_add(STATE_GENFLAGS,"GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s"); state_add(IE15_A, "A", m_A); - astring tempstring; + std::string tempstring; for (int ireg = 0; ireg < 32; ireg++) - state_add(IE15_R0 + ireg, tempstring.format("R%d", ireg).c_str(), m_REGS[ireg]); + state_add(IE15_R0 + ireg, strformat(tempstring, "R%d", ireg).c_str(), m_REGS[ireg]); } //------------------------------------------------- @@ -131,12 +131,12 @@ void ie15_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void ie15_device::state_string_export(const device_state_entry &entry, astring &str) +void ie15_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c", + strprintf(str, "%c%c%c", m_CF ? 'C':'.', m_ZF ? 'Z':'.', m_RF ? 'R':'.'); diff --git a/src/emu/cpu/ie15/ie15.h b/src/emu/cpu/ie15/ie15.h index d4fa943418e..efaeb2bb167 100644 --- a/src/emu/cpu/ie15/ie15.h +++ b/src/emu/cpu/ie15/ie15.h @@ -46,7 +46,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/jaguar/jaguar.c b/src/emu/cpu/jaguar/jaguar.c index dc7f10a1531..6c1dd97b821 100644 --- a/src/emu/cpu/jaguar/jaguar.c +++ b/src/emu/cpu/jaguar/jaguar.c @@ -403,12 +403,12 @@ void jaguar_cpu_device::device_start() } -void jaguar_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void jaguar_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c", FLAGS & 0x8000 ? 'D':'.', FLAGS & 0x4000 ? 'A':'.', FLAGS & 0x0100 ? '4':'.', diff --git a/src/emu/cpu/jaguar/jaguar.h b/src/emu/cpu/jaguar/jaguar.h index 6e9a9c017aa..5139158861b 100644 --- a/src/emu/cpu/jaguar/jaguar.h +++ b/src/emu/cpu/jaguar/jaguar.h @@ -127,7 +127,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/lc8670/lc8670.c b/src/emu/cpu/lc8670/lc8670.c index 99f1119ae49..ac1fd1960d1 100644 --- a/src/emu/cpu/lc8670/lc8670.c +++ b/src/emu/cpu/lc8670/lc8670.c @@ -369,12 +369,12 @@ void lc8670_cpu_device::state_import(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void lc8670_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s%s%s%s", + strprintf(str, "%s%s%s%s", GET_CY ? "CY" : "..", GET_AC ? "AC" : "..", GET_OV ? "OV" : "..", diff --git a/src/emu/cpu/lc8670/lc8670.h b/src/emu/cpu/lc8670/lc8670.h index 4a27c871f03..e2668c1bacd 100644 --- a/src/emu/cpu/lc8670/lc8670.h +++ b/src/emu/cpu/lc8670/lc8670.h @@ -110,7 +110,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const; diff --git a/src/emu/cpu/lh5801/lh5801.c b/src/emu/cpu/lh5801/lh5801.c index c3dba6be253..de02d12e49d 100644 --- a/src/emu/cpu/lh5801/lh5801.c +++ b/src/emu/cpu/lh5801/lh5801.c @@ -154,12 +154,12 @@ void lh5801_cpu_device::device_start() m_icountptr = &m_icount; } -void lh5801_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void lh5801_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_t&0x80?'1':'0', m_t&0x40?'1':'0', m_t&0x20?'1':'0', diff --git a/src/emu/cpu/lh5801/lh5801.h b/src/emu/cpu/lh5801/lh5801.h index 303a0fd8c2a..9ad564b1bab 100644 --- a/src/emu/cpu/lh5801/lh5801.h +++ b/src/emu/cpu/lh5801/lh5801.h @@ -101,7 +101,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/lr35902/lr35902.c b/src/emu/cpu/lr35902/lr35902.c index d78a59a7344..4b34883c4b5 100644 --- a/src/emu/cpu/lr35902/lr35902.c +++ b/src/emu/cpu/lr35902/lr35902.c @@ -178,16 +178,16 @@ void lr35902_cpu_device::device_start() } -void lr35902_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void lr35902_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case LR35902_SPEED: - str.printf("%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending); + strprintf(str, "%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending); break; case STATE_GENFLAGS: - str.printf("%c%c%c%c", + strprintf(str, "%c%c%c%c", m_F & FLAG_Z ? 'Z' : '.', m_F & FLAG_N ? 'N' : '.', m_F & FLAG_H ? 'H' : '.', diff --git a/src/emu/cpu/lr35902/lr35902.h b/src/emu/cpu/lr35902/lr35902.h index e2592388627..6e466f58171 100644 --- a/src/emu/cpu/lr35902/lr35902.h +++ b/src/emu/cpu/lr35902/lr35902.h @@ -68,7 +68,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/m37710/m37710.c b/src/emu/cpu/m37710/m37710.c index 73d41bdd402..454ee2a435e 100644 --- a/src/emu/cpu/m37710/m37710.c +++ b/src/emu/cpu/m37710/m37710.c @@ -1134,12 +1134,12 @@ void m37710_cpu_device::state_export(const device_state_entry &entry) } -void m37710_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void m37710_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_flag_n & NFLAG_SET ? 'N':'.', m_flag_v & VFLAG_SET ? 'V':'.', m_flag_m & MFLAG_SET ? 'M':'.', diff --git a/src/emu/cpu/m37710/m37710.h b/src/emu/cpu/m37710/m37710.h index 58e7d6d1b0a..118ea8af909 100644 --- a/src/emu/cpu/m37710/m37710.h +++ b/src/emu/cpu/m37710/m37710.h @@ -115,7 +115,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/m6502/m6502.c b/src/emu/cpu/m6502/m6502.c index 90e738cf844..6368b6b991f 100644 --- a/src/emu/cpu/m6502/m6502.c +++ b/src/emu/cpu/m6502/m6502.c @@ -456,12 +456,12 @@ void m6502_device::state_export(const device_state_entry &entry) { } -void m6502_device::state_string_export(const device_state_entry &entry, astring &str) +void m6502_device::state_string_export(const device_state_entry &entry, std::string &str) { switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_D ? 'D' : '.', diff --git a/src/emu/cpu/m6502/m6502.h b/src/emu/cpu/m6502/m6502.h index 2fe03782d29..db277522dc8 100644 --- a/src/emu/cpu/m6502/m6502.h +++ b/src/emu/cpu/m6502/m6502.h @@ -173,7 +173,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/m6502/m65ce02.c b/src/emu/cpu/m6502/m65ce02.c index cb3bb9a1651..0788683264a 100644 --- a/src/emu/cpu/m6502/m65ce02.c +++ b/src/emu/cpu/m6502/m65ce02.c @@ -104,12 +104,12 @@ void m65ce02_device::state_export(const device_state_entry &entry) { } -void m65ce02_device::state_string_export(const device_state_entry &entry, astring &str) +void m65ce02_device::state_string_export(const device_state_entry &entry, std::string &str) { switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - str.printf("%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_E ? 'E' : '.', @@ -119,7 +119,7 @@ void m65ce02_device::state_string_export(const device_state_entry &entry, astrin P & F_C ? 'C' : '.'); break; case M65CE02_B: - str.printf("%02x", B >> 8); + strprintf(str, "%02x", B >> 8); break; } } diff --git a/src/emu/cpu/m6502/m65ce02.h b/src/emu/cpu/m6502/m65ce02.h index df715d72e9c..df0f1fbd996 100644 --- a/src/emu/cpu/m6502/m65ce02.h +++ b/src/emu/cpu/m6502/m65ce02.h @@ -63,7 +63,7 @@ protected: virtual void device_reset(); virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); inline void dec_SP_ce() { if(P & F_E) SP = set_l(SP, SP-1); else SP--; } inline void inc_SP_ce() { if(P & F_E) SP = set_l(SP, SP+1); else SP++; } diff --git a/src/emu/cpu/m6502/m740.c b/src/emu/cpu/m6502/m740.c index 330eff9f378..fc8b245b761 100644 --- a/src/emu/cpu/m6502/m740.c +++ b/src/emu/cpu/m6502/m740.c @@ -82,12 +82,12 @@ void m740_device::device_reset() SP = 0x00ff; } -void m740_device::state_string_export(const device_state_entry &entry, astring &str) +void m740_device::state_string_export(const device_state_entry &entry, std::string &str) { switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - str.printf("%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_T ? 'T' : '.', diff --git a/src/emu/cpu/m6502/m740.h b/src/emu/cpu/m6502/m740.h index 29e690018db..232e661c755 100644 --- a/src/emu/cpu/m6502/m740.h +++ b/src/emu/cpu/m6502/m740.h @@ -73,7 +73,7 @@ public: static const disasm_entry disasm_entries[0x200]; - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); virtual void do_exec_full(); diff --git a/src/emu/cpu/m6800/m6800.c b/src/emu/cpu/m6800/m6800.c index e6d60ed56b8..56d456cfd81 100644 --- a/src/emu/cpu/m6800/m6800.c +++ b/src/emu/cpu/m6800/m6800.c @@ -1123,12 +1123,12 @@ void m6800_cpu_device::device_start() m_icountptr = &m_icount; } -void m6800_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void m6800_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_cc & 0x80 ? '?':'.', m_cc & 0x40 ? '?':'.', m_cc & 0x20 ? 'H':'.', diff --git a/src/emu/cpu/m6800/m6800.h b/src/emu/cpu/m6800/m6800.h index b3f458eb0a7..dcd343c19f4 100644 --- a/src/emu/cpu/m6800/m6800.h +++ b/src/emu/cpu/m6800/m6800.h @@ -85,7 +85,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO && m_has_io) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h index 39ec43d96e7..29665c107b5 100644 --- a/src/emu/cpu/m68000/m68000.h +++ b/src/emu/cpu/m68000/m68000.h @@ -398,7 +398,7 @@ public: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_memory_interface overrides virtual bool memory_translate(address_spacenum space, int intention, offs_t &address); diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index 269eae5b829..16af2ba8e1e 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -1173,47 +1173,47 @@ void m68000_base_device::state_export(const device_state_entry &entry) } } -void m68000_base_device::state_string_export(const device_state_entry &entry, astring &str) +void m68000_base_device::state_string_export(const device_state_entry &entry, std::string &str) { UINT16 sr; switch (entry.index()) { case M68K_FP0: - str.printf("%f", fx80_to_double(REG_FP(this)[0])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[0])); break; case M68K_FP1: - str.printf("%f", fx80_to_double(REG_FP(this)[1])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[1])); break; case M68K_FP2: - str.printf("%f", fx80_to_double(REG_FP(this)[2])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[2])); break; case M68K_FP3: - str.printf("%f", fx80_to_double(REG_FP(this)[3])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[3])); break; case M68K_FP4: - str.printf("%f", fx80_to_double(REG_FP(this)[4])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[4])); break; case M68K_FP5: - str.printf("%f", fx80_to_double(REG_FP(this)[5])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[5])); break; case M68K_FP6: - str.printf("%f", fx80_to_double(REG_FP(this)[6])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[6])); break; case M68K_FP7: - str.printf("%f", fx80_to_double(REG_FP(this)[7])); + strprintf(str,"%f", fx80_to_double(REG_FP(this)[7])); break; case STATE_GENFLAGS: sr = m68ki_get_sr(this); - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", sr & 0x8000 ? 'T':'.', sr & 0x4000 ? 't':'.', sr & 0x2000 ? 'S':'.', @@ -1737,11 +1737,15 @@ void m68000_base_device::define_state(void) state_add(M68K_MSP, "MSP", iotemp).callimport().callexport(); state_add(M68K_ISP, "ISP", iotemp).callimport().callexport(); - astring tempstr; - for (int regnum = 0; regnum < 8; regnum++) - state_add(M68K_D0 + regnum, tempstr.format("D%d", regnum).c_str(), dar[regnum]); - for (int regnum = 0; regnum < 8; regnum++) - state_add(M68K_A0 + regnum, tempstr.format("A%d", regnum).c_str(), dar[8 + regnum]); + std::string tempstr; + for (int regnum = 0; regnum < 8; regnum++) { + strprintf(tempstr,"D%d", regnum); + state_add(M68K_D0 + regnum, tempstr.c_str(), dar[regnum]); + } + for (int regnum = 0; regnum < 8; regnum++) { + strprintf(tempstr,"A%d", regnum); + state_add(M68K_A0 + regnum, tempstr.c_str(), dar[8 + regnum]); + } state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask); state_add(M68K_PREF_DATA, "PREF_DATA", pref_data); @@ -1761,8 +1765,10 @@ void m68000_base_device::define_state(void) if (cpu_type & MASK_030_OR_LATER) { - for (int regnum = 0; regnum < 8; regnum++) - state_add(M68K_FP0 + regnum, tempstr.format("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s"); + for (int regnum = 0; regnum < 8; regnum++) { + strprintf(tempstr,"FP%d", regnum); + state_add(M68K_FP0 + regnum, tempstr.c_str(), iotemp).callimport().callexport().formatstr("%10s"); + } state_add(M68K_FPSR, "FPSR", fpsr); state_add(M68K_FPCR, "FPCR", fpcr); } diff --git a/src/emu/cpu/m6805/m6805.c b/src/emu/cpu/m6805/m6805.c index f02b2ca4f09..1c7ed46056c 100644 --- a/src/emu/cpu/m6805/m6805.c +++ b/src/emu/cpu/m6805/m6805.c @@ -422,7 +422,7 @@ void m6805_base_device::device_start() m_icountptr = &m_icount; // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_pc.w.l).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_cc).callimport().callexport().formatstr("%8s").noshow(); state_add(M6805_A, "A", m_a).mask(0xff); @@ -492,12 +492,12 @@ const address_space_config *m6805_base_device::memory_space_config(address_space // for the debugger //------------------------------------------------- -void m6805_base_device::state_string_export(const device_state_entry &entry, astring &str) +void m6805_base_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_cc & 0x80) ? '?' : '.', (m_cc & 0x40) ? '?' : '.', (m_cc & 0x20) ? '?' : '.', diff --git a/src/emu/cpu/m6805/m6805.h b/src/emu/cpu/m6805/m6805.h index 49bd1f3cdea..8f40ed83c5b 100644 --- a/src/emu/cpu/m6805/m6805.h +++ b/src/emu/cpu/m6805/m6805.h @@ -49,7 +49,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); private: // opcode/condition tables diff --git a/src/emu/cpu/m6809/m6809.c b/src/emu/cpu/m6809/m6809.c index bca2f14aaad..df89f3951bb 100644 --- a/src/emu/cpu/m6809/m6809.c +++ b/src/emu/cpu/m6809/m6809.c @@ -127,7 +127,6 @@ void m6809_base_device::device_start() m_lic_func.resolve_safe(); // register our state for the debugger - astring tempstr; state_add(STATE_GENPC, "GENPC", m_pc.w).noshow(); state_add(STATE_GENPCBASE, "GENPCBASE", m_ppc.w).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_cc).callimport().callexport().formatstr("%8s").noshow(); @@ -292,12 +291,12 @@ const address_space_config *m6809_base_device::memory_space_config(address_space // for the debugger //------------------------------------------------- -void m6809_base_device::state_string_export(const device_state_entry &entry, astring &str) +void m6809_base_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_cc & 0x80) ? 'E' : '.', (m_cc & 0x40) ? 'F' : '.', (m_cc & 0x20) ? 'H' : '.', diff --git a/src/emu/cpu/m6809/m6809.h b/src/emu/cpu/m6809/m6809.h index aba8a0775e1..805be7be9cf 100644 --- a/src/emu/cpu/m6809/m6809.h +++ b/src/emu/cpu/m6809/m6809.h @@ -61,7 +61,7 @@ protected: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // addressing modes enum diff --git a/src/emu/cpu/mb86233/mb86233.c b/src/emu/cpu/mb86233/mb86233.c index c2961d95cac..886f4a12496 100644 --- a/src/emu/cpu/mb86233/mb86233.c +++ b/src/emu/cpu/mb86233/mb86233.c @@ -158,12 +158,12 @@ void mb86233_cpu_device::device_start() } -void mb86233_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mb86233_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z'); + strprintf(str, "%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z'); break; } } diff --git a/src/emu/cpu/mb86233/mb86233.h b/src/emu/cpu/mb86233/mb86233.h index 5732cd3546c..d800e3ea49a 100644 --- a/src/emu/cpu/mb86233/mb86233.h +++ b/src/emu/cpu/mb86233/mb86233.h @@ -72,7 +72,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/mb86235/mb86235.c b/src/emu/cpu/mb86235/mb86235.c index 02d9b70eb83..891f9746a91 100644 --- a/src/emu/cpu/mb86235/mb86235.c +++ b/src/emu/cpu/mb86235/mb86235.c @@ -108,12 +108,12 @@ mb86235_cpu_device::mb86235_cpu_device(const machine_config &mconfig, const char } -void mb86235_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mb86235_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c", + strprintf(str, "%c%c%c%c", m_flags & 0x80 ? 'S':'.', m_flags & 0x40 ? 'Z':'.', m_flags & 0x20 ? 'V':'.', diff --git a/src/emu/cpu/mb86235/mb86235.h b/src/emu/cpu/mb86235/mb86235.h index a53448bf65d..1a6d4c81a4b 100644 --- a/src/emu/cpu/mb86235/mb86235.h +++ b/src/emu/cpu/mb86235/mb86235.h @@ -42,7 +42,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 8; } diff --git a/src/emu/cpu/mb88xx/mb88xx.c b/src/emu/cpu/mb88xx/mb88xx.c index c724dfdcc08..6015091562d 100644 --- a/src/emu/cpu/mb88xx/mb88xx.c +++ b/src/emu/cpu/mb88xx/mb88xx.c @@ -267,12 +267,12 @@ void mb88_cpu_device::state_export(const device_state_entry &entry) } -void mb88_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mb88_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c", TEST_ST() ? 'T' : 't', TEST_ZF() ? 'Z' : 'z', TEST_CF() ? 'C' : 'c', diff --git a/src/emu/cpu/mb88xx/mb88xx.h b/src/emu/cpu/mb88xx/mb88xx.h index c770dcdd6f9..56ee148181e 100644 --- a/src/emu/cpu/mb88xx/mb88xx.h +++ b/src/emu/cpu/mb88xx/mb88xx.h @@ -88,7 +88,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ) ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); void state_import(const device_state_entry &entry); void state_export(const device_state_entry &entry); diff --git a/src/emu/cpu/mc68hc11/mc68hc11.c b/src/emu/cpu/mc68hc11/mc68hc11.c index c0496c04d03..1f475beb8ba 100644 --- a/src/emu/cpu/mc68hc11/mc68hc11.c +++ b/src/emu/cpu/mc68hc11/mc68hc11.c @@ -448,12 +448,12 @@ void mc68hc11_cpu_device::device_start() } -void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_ccr & CC_S) ? 'S' : '.', (m_ccr & CC_X) ? 'X' : '.', (m_ccr & CC_H) ? 'H' : '.', diff --git a/src/emu/cpu/mc68hc11/mc68hc11.h b/src/emu/cpu/mc68hc11/mc68hc11.h index 999a40524d0..dddd9f00a55 100644 --- a/src/emu/cpu/mc68hc11/mc68hc11.h +++ b/src/emu/cpu/mc68hc11/mc68hc11.h @@ -68,7 +68,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/mcs48/mcs48.c b/src/emu/cpu/mcs48/mcs48.c index e3cd5a1b716..303745e444e 100644 --- a/src/emu/cpu/mcs48/mcs48.c +++ b/src/emu/cpu/mcs48/mcs48.c @@ -976,10 +976,11 @@ void mcs48_cpu_device::device_start() state_add(MCS48_P1, "P1", m_p1); state_add(MCS48_P2, "P2", m_p2); - astring tempstr; - for (int regnum = 0; regnum < 8; regnum++) - state_add(MCS48_R0 + regnum, tempstr.format("R%d", regnum).c_str(), m_rtemp).callimport().callexport(); - + std::string tempstr; + for (int regnum = 0; regnum < 8; regnum++) { + strprintf(tempstr, "R%d", regnum); + state_add(MCS48_R0 + regnum, tempstr.c_str(), m_rtemp).callimport().callexport(); + } state_add(MCS48_EA, "EA", m_ea).mask(0x1); if (m_feature_mask & UPI41_FEATURE) @@ -1295,12 +1296,12 @@ void mcs48_cpu_device::state_export(const device_state_entry &entry) } } -void mcs48_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mcs48_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c %c%c%c%c%c%c%c%c", + strprintf(str, "%c%c %c%c%c%c%c%c%c%c", m_irq_state ? 'I':'.', m_a11 ? 'M':'.', m_psw & 0x80 ? 'C':'.', diff --git a/src/emu/cpu/mcs48/mcs48.h b/src/emu/cpu/mcs48/mcs48.h index 655c8111f07..7bdc32e75e6 100644 --- a/src/emu/cpu/mcs48/mcs48.h +++ b/src/emu/cpu/mcs48/mcs48.h @@ -150,7 +150,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/mcs51/mcs51.c b/src/emu/cpu/mcs51/mcs51.c index ce53db78330..f03c7decdf6 100644 --- a/src/emu/cpu/mcs51/mcs51.c +++ b/src/emu/cpu/mcs51/mcs51.c @@ -2223,12 +2223,12 @@ void mcs51_cpu_device::state_export(const device_state_entry &entry) } } -void mcs51_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void mcs51_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str,"%c%c%c%c%c%c%c%c", PSW & 0x80 ? 'C':'.', PSW & 0x40 ? 'A':'.', PSW & 0x20 ? 'F':'.', diff --git a/src/emu/cpu/mcs51/mcs51.h b/src/emu/cpu/mcs51/mcs51.h index 27f4fedf842..efca4c8de16 100644 --- a/src/emu/cpu/mcs51/mcs51.h +++ b/src/emu/cpu/mcs51/mcs51.h @@ -119,7 +119,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/mcs96/mcs96.c b/src/emu/cpu/mcs96/mcs96.c index 942693b3088..b905c2db8b1 100644 --- a/src/emu/cpu/mcs96/mcs96.c +++ b/src/emu/cpu/mcs96/mcs96.c @@ -156,12 +156,12 @@ void mcs96_device::state_export(const device_state_entry &entry) { } -void mcs96_device::state_string_export(const device_state_entry &entry, astring &str) +void mcs96_device::state_string_export(const device_state_entry &entry, std::string &str) { switch(entry.index()) { case STATE_GENFLAGS: case MCS96_PSW: - str.printf("%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c", PSW & F_Z ? 'Z' : '.', PSW & F_N ? 'N' : '.', PSW & F_V ? 'V' : '.', @@ -181,7 +181,7 @@ void mcs96_device::state_string_export(const device_state_entry &entry, astring } } -astring mcs96_device::regname(UINT8 reg) +std::string mcs96_device::regname(UINT8 reg) { char res[32]; switch(reg) { diff --git a/src/emu/cpu/mcs96/mcs96.h b/src/emu/cpu/mcs96/mcs96.h index d80dcf372c7..4858d455ce6 100644 --- a/src/emu/cpu/mcs96/mcs96.h +++ b/src/emu/cpu/mcs96/mcs96.h @@ -114,7 +114,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; @@ -143,7 +143,7 @@ protected: virtual UINT16 io_r16(UINT8 adr) = 0; void recompute_bcount(UINT64 event_time); - static astring regname(UINT8 reg); + static std::string regname(UINT8 reg); inline void next(int cycles) { icount -= cycles_scaling*cycles; inst_state = STATE_FETCH; } inline void next_noirq(int cycles) { icount -= cycles_scaling*cycles; inst_state = STATE_FETCH_NOIRQ; } diff --git a/src/emu/cpu/minx/minx.c b/src/emu/cpu/minx/minx.c index 700de4bf874..85e450d5646 100644 --- a/src/emu/cpu/minx/minx.c +++ b/src/emu/cpu/minx/minx.c @@ -119,12 +119,12 @@ void minx_cpu_device::device_start() } -void minx_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void minx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c-%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c-%c%c%c%c%c", m_F & FLAG_I ? 'I' : '.', m_F & FLAG_D ? 'D' : '.', m_F & FLAG_L ? 'L' : '.', diff --git a/src/emu/cpu/minx/minx.h b/src/emu/cpu/minx/minx.h index 3f833da028e..eb7dbe5e9e9 100644 --- a/src/emu/cpu/minx/minx.h +++ b/src/emu/cpu/minx/minx.h @@ -34,7 +34,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/mips/mips3.c b/src/emu/cpu/mips/mips3.c index 9baf8542c57..3ffdd64aac7 100644 --- a/src/emu/cpu/mips/mips3.c +++ b/src/emu/cpu/mips/mips3.c @@ -661,268 +661,268 @@ void mips3_device::state_export(const device_state_entry &entry) } -void mips3_device::state_string_export(const device_state_entry &entry, astring &str) +void mips3_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case MIPS3_FPS0: - str.printf("!%16g", *(float *)&m_core->cpr[1][0]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][0]); break; case MIPS3_FPD0: - str.printf("!%16g", *(double *)&m_core->cpr[1][0]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][0]); break; case MIPS3_FPS1: - str.printf("!%16g", *(float *)&m_core->cpr[1][1]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][1]); break; case MIPS3_FPD1: - str.printf("!%16g", *(double *)&m_core->cpr[1][1]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][1]); break; case MIPS3_FPS2: - str.printf("!%16g", *(float *)&m_core->cpr[1][2]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][2]); break; case MIPS3_FPD2: - str.printf("!%16g", *(double *)&m_core->cpr[1][2]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][2]); break; case MIPS3_FPS3: - str.printf("!%16g", *(float *)&m_core->cpr[1][3]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][3]); break; case MIPS3_FPD3: - str.printf("!%16g", *(double *)&m_core->cpr[1][3]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][3]); break; case MIPS3_FPS4: - str.printf("!%16g", *(float *)&m_core->cpr[1][4]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][4]); break; case MIPS3_FPD4: - str.printf("!%16g", *(double *)&m_core->cpr[1][4]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][4]); break; case MIPS3_FPS5: - str.printf("!%16g", *(float *)&m_core->cpr[1][5]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][5]); break; case MIPS3_FPD5: - str.printf("!%16g", *(double *)&m_core->cpr[1][5]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][5]); break; case MIPS3_FPS6: - str.printf("!%16g", *(float *)&m_core->cpr[1][6]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][6]); break; case MIPS3_FPD6: - str.printf("!%16g", *(double *)&m_core->cpr[1][6]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][6]); break; case MIPS3_FPS7: - str.printf("!%16g", *(float *)&m_core->cpr[1][7]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][7]); break; case MIPS3_FPD7: - str.printf("!%16g", *(double *)&m_core->cpr[1][7]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][7]); break; case MIPS3_FPS8: - str.printf("!%16g", *(float *)&m_core->cpr[1][8]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][8]); break; case MIPS3_FPD8: - str.printf("!%16g", *(double *)&m_core->cpr[1][8]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][8]); break; case MIPS3_FPS9: - str.printf("!%16g", *(float *)&m_core->cpr[1][9]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][9]); break; case MIPS3_FPD9: - str.printf("!%16g", *(double *)&m_core->cpr[1][9]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][9]); break; case MIPS3_FPS10: - str.printf("!%16g", *(float *)&m_core->cpr[1][10]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][10]); break; case MIPS3_FPD10: - str.printf("!%16g", *(double *)&m_core->cpr[1][10]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][10]); break; case MIPS3_FPS11: - str.printf("!%16g", *(float *)&m_core->cpr[1][11]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][11]); break; case MIPS3_FPD11: - str.printf("!%16g", *(double *)&m_core->cpr[1][11]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][11]); break; case MIPS3_FPS12: - str.printf("!%16g", *(float *)&m_core->cpr[1][12]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][12]); break; case MIPS3_FPD12: - str.printf("!%16g", *(double *)&m_core->cpr[1][12]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][12]); break; case MIPS3_FPS13: - str.printf("!%16g", *(float *)&m_core->cpr[1][13]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][13]); break; case MIPS3_FPD13: - str.printf("!%16g", *(double *)&m_core->cpr[1][13]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][13]); break; case MIPS3_FPS14: - str.printf("!%16g", *(float *)&m_core->cpr[1][14]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][14]); break; case MIPS3_FPD14: - str.printf("!%16g", *(double *)&m_core->cpr[1][14]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][14]); break; case MIPS3_FPS15: - str.printf("!%16g", *(float *)&m_core->cpr[1][15]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][15]); break; case MIPS3_FPD15: - str.printf("!%16g", *(double *)&m_core->cpr[1][15]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][15]); break; case MIPS3_FPS16: - str.printf("!%16g", *(float *)&m_core->cpr[1][16]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][16]); break; case MIPS3_FPD16: - str.printf("!%16g", *(double *)&m_core->cpr[1][16]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][16]); break; case MIPS3_FPS17: - str.printf("!%16g", *(float *)&m_core->cpr[1][17]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][17]); break; case MIPS3_FPD17: - str.printf("!%16g", *(double *)&m_core->cpr[1][17]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][17]); break; case MIPS3_FPS18: - str.printf("!%16g", *(float *)&m_core->cpr[1][18]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][18]); break; case MIPS3_FPD18: - str.printf("!%16g", *(double *)&m_core->cpr[1][18]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][18]); break; case MIPS3_FPS19: - str.printf("!%16g", *(float *)&m_core->cpr[1][19]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][19]); break; case MIPS3_FPD19: - str.printf("!%16g", *(double *)&m_core->cpr[1][19]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][19]); break; case MIPS3_FPS20: - str.printf("!%16g", *(float *)&m_core->cpr[1][20]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][20]); break; case MIPS3_FPD20: - str.printf("!%16g", *(double *)&m_core->cpr[1][20]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][20]); break; case MIPS3_FPS21: - str.printf("!%16g", *(float *)&m_core->cpr[1][21]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][21]); break; case MIPS3_FPD21: - str.printf("!%16g", *(double *)&m_core->cpr[1][21]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][21]); break; case MIPS3_FPS22: - str.printf("!%16g", *(float *)&m_core->cpr[1][22]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][22]); break; case MIPS3_FPD22: - str.printf("!%16g", *(double *)&m_core->cpr[1][22]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][22]); break; case MIPS3_FPS23: - str.printf("!%16g", *(float *)&m_core->cpr[1][23]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][23]); break; case MIPS3_FPD23: - str.printf("!%16g", *(double *)&m_core->cpr[1][23]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][23]); break; case MIPS3_FPS24: - str.printf("!%16g", *(float *)&m_core->cpr[1][24]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][24]); break; case MIPS3_FPD24: - str.printf("!%16g", *(double *)&m_core->cpr[1][24]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][24]); break; case MIPS3_FPS25: - str.printf("!%16g", *(float *)&m_core->cpr[1][25]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][25]); break; case MIPS3_FPD25: - str.printf("!%16g", *(double *)&m_core->cpr[1][25]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][25]); break; case MIPS3_FPS26: - str.printf("!%16g", *(float *)&m_core->cpr[1][26]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][26]); break; case MIPS3_FPD26: - str.printf("!%16g", *(double *)&m_core->cpr[1][26]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][26]); break; case MIPS3_FPS27: - str.printf("!%16g", *(float *)&m_core->cpr[1][27]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][27]); break; case MIPS3_FPD27: - str.printf("!%16g", *(double *)&m_core->cpr[1][27]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][27]); break; case MIPS3_FPS28: - str.printf("!%16g", *(float *)&m_core->cpr[1][28]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][28]); break; case MIPS3_FPD28: - str.printf("!%16g", *(double *)&m_core->cpr[1][28]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][28]); break; case MIPS3_FPS29: - str.printf("!%16g", *(float *)&m_core->cpr[1][29]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][29]); break; case MIPS3_FPD29: - str.printf("!%16g", *(double *)&m_core->cpr[1][29]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][29]); break; case MIPS3_FPS30: - str.printf("!%16g", *(float *)&m_core->cpr[1][30]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][30]); break; case MIPS3_FPD30: - str.printf("!%16g", *(double *)&m_core->cpr[1][30]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][30]); break; case MIPS3_FPS31: - str.printf("!%16g", *(float *)&m_core->cpr[1][31]); + strprintf(str, "!%16g", *(float *)&m_core->cpr[1][31]); break; case MIPS3_FPD31: - str.printf("!%16g", *(double *)&m_core->cpr[1][31]); + strprintf(str, "!%16g", *(double *)&m_core->cpr[1][31]); break; case STATE_GENFLAGS: - str.printf(" "); + strprintf(str, " "); break; } } diff --git a/src/emu/cpu/mips/mips3.h b/src/emu/cpu/mips/mips3.h index b9737128098..5d5d61354d7 100644 --- a/src/emu/cpu/mips/mips3.h +++ b/src/emu/cpu/mips/mips3.h @@ -320,7 +320,7 @@ protected: // device_state_interface overrides virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/mips/r3000.c b/src/emu/cpu/mips/r3000.c index 4214857f5b9..5e6fa280884 100644 --- a/src/emu/cpu/mips/r3000.c +++ b/src/emu/cpu/mips/r3000.c @@ -443,7 +443,7 @@ void r3000_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void r3000_device::state_string_export(const device_state_entry &entry, astring &str) +void r3000_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { diff --git a/src/emu/cpu/mips/r3000.h b/src/emu/cpu/mips/r3000.h index cfcc4e1e0f1..da008d2b213 100644 --- a/src/emu/cpu/mips/r3000.h +++ b/src/emu/cpu/mips/r3000.h @@ -126,7 +126,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/mn10200/mn10200.c b/src/emu/cpu/mn10200/mn10200.c index 01c8f3ecdab..4456a65e70e 100644 --- a/src/emu/cpu/mn10200/mn10200.c +++ b/src/emu/cpu/mn10200/mn10200.c @@ -174,12 +174,12 @@ void mn10200_device::device_start() } -void mn10200_device::state_string_export(const device_state_entry &entry, astring &str) +void mn10200_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("S=%d irq=%s im=%d %c%c%c%c %c%c%c%c", + strprintf(str, "S=%d irq=%s im=%d %c%c%c%c %c%c%c%c", (m_psw >> 12) & 3, m_psw & FLAG_IE ? "on " : "off", (m_psw >> 8) & 7, diff --git a/src/emu/cpu/mn10200/mn10200.h b/src/emu/cpu/mn10200/mn10200.h index 712334e1d3b..d5e072e3844 100644 --- a/src/emu/cpu/mn10200/mn10200.h +++ b/src/emu/cpu/mn10200/mn10200.h @@ -86,7 +86,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/nec/nec.c b/src/emu/cpu/nec/nec.c index ea1593f7a1c..de109bfa176 100644 --- a/src/emu/cpu/nec/nec.c +++ b/src/emu/cpu/nec/nec.c @@ -435,14 +435,14 @@ void nec_common_device::device_start() m_icountptr = &m_icount; } -void nec_common_device::state_string_export(const device_state_entry &entry, astring &str) +void nec_common_device::state_string_export(const device_state_entry &entry, std::string &str) { UINT16 flags = CompressFlags(); switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", flags & 0x8000 ? 'N':'E', flags & 0x4000 ? '?':'.', flags & 0x2000 ? '?':'.', diff --git a/src/emu/cpu/nec/nec.h b/src/emu/cpu/nec/nec.h index 6cf7c9c0554..8321fcde1af 100644 --- a/src/emu/cpu/nec/nec.h +++ b/src/emu/cpu/nec/nec.h @@ -40,7 +40,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); diff --git a/src/emu/cpu/nec/v25.c b/src/emu/cpu/nec/v25.c index 2b542b84f45..b4cb319e7f8 100644 --- a/src/emu/cpu/nec/v25.c +++ b/src/emu/cpu/nec/v25.c @@ -523,14 +523,14 @@ void v25_common_device::device_start() } -void v25_common_device::state_string_export(const device_state_entry &entry, astring &str) +void v25_common_device::state_string_export(const device_state_entry &entry, std::string &str) { UINT16 flags = CompressFlags(); switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c %d %c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c %d %c%c%c%c%c%c%c%c%c%c%c%c", flags & 0x8000 ? 'N':'S', (flags & 0x7000) >> 12, flags & 0x0800 ? 'O':'.', diff --git a/src/emu/cpu/nec/v25.h b/src/emu/cpu/nec/v25.h index 7f467d891f1..be67e7fe7c9 100644 --- a/src/emu/cpu/nec/v25.h +++ b/src/emu/cpu/nec/v25.h @@ -57,7 +57,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); diff --git a/src/emu/cpu/pdp1/pdp1.c b/src/emu/cpu/pdp1/pdp1.c index 96346ad71a7..c31313cf7b8 100644 --- a/src/emu/cpu/pdp1/pdp1.c +++ b/src/emu/cpu/pdp1/pdp1.c @@ -735,12 +735,12 @@ void pdp1_device::state_export(const device_state_entry &entry) } -void pdp1_device::state_string_export(const device_state_entry &entry, astring &str) +void pdp1_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c-%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c-%c%c%c%c%c%c", (FLAGS & 040) ? '1' : '.', (FLAGS & 020) ? '2' : '.', (FLAGS & 010) ? '3' : '.', diff --git a/src/emu/cpu/pdp1/pdp1.h b/src/emu/cpu/pdp1/pdp1.h index ba39bf8e4f7..d6b7fe1f2eb 100644 --- a/src/emu/cpu/pdp1/pdp1.h +++ b/src/emu/cpu/pdp1/pdp1.h @@ -105,7 +105,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/pic16c5x/pic16c5x.c b/src/emu/cpu/pic16c5x/pic16c5x.c index b1f9b2aefc6..78be71b5499 100644 --- a/src/emu/cpu/pic16c5x/pic16c5x.c +++ b/src/emu/cpu/pic16c5x/pic16c5x.c @@ -921,16 +921,16 @@ void pic16c5x_device::state_export(const device_state_entry &entry) } } -void pic16c5x_device::state_string_export(const device_state_entry &entry, astring &str) +void pic16c5x_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case PIC16C5x_PSCL: - str.printf("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); + strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); break; case STATE_GENFLAGS: - str.printf("%01x%c%c%c%c%c %c%c%c%03x", + strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x", (STATUS & 0xe0) >> 5, STATUS & 0x10 ? '.':'O', /* WDT Overflow */ STATUS & 0x08 ? 'P':'D', /* Power/Down */ diff --git a/src/emu/cpu/pic16c5x/pic16c5x.h b/src/emu/cpu/pic16c5x/pic16c5x.h index fbf3815281b..41b1bb9ebd8 100644 --- a/src/emu/cpu/pic16c5x/pic16c5x.h +++ b/src/emu/cpu/pic16c5x/pic16c5x.h @@ -115,7 +115,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/pic16c62x/pic16c62x.c b/src/emu/cpu/pic16c62x/pic16c62x.c index 403fdd9ac04..4f6fa19fc75 100644 --- a/src/emu/cpu/pic16c62x/pic16c62x.c +++ b/src/emu/cpu/pic16c62x/pic16c62x.c @@ -979,16 +979,16 @@ void pic16c62x_device::state_export(const device_state_entry &entry) } } -void pic16c62x_device::state_string_export(const device_state_entry &entry, astring &str) +void pic16c62x_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case PIC16C62x_PSCL: - str.printf("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); + strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); break; case STATE_GENFLAGS: - str.printf("%01x%c%c%c%c%c %c%c%c%03x", + strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x", (STATUS & 0xe0) >> 5, STATUS & 0x10 ? '.':'O', /* WDT Overflow */ STATUS & 0x08 ? 'P':'D', /* Power/Down */ diff --git a/src/emu/cpu/pic16c62x/pic16c62x.h b/src/emu/cpu/pic16c62x/pic16c62x.h index 6ba54df93be..55c6f963728 100644 --- a/src/emu/cpu/pic16c62x/pic16c62x.h +++ b/src/emu/cpu/pic16c62x/pic16c62x.h @@ -86,7 +86,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/powerpc/ppc.h b/src/emu/cpu/powerpc/ppc.h index f3ef96a7fce..9fe6bcb6fe1 100644 --- a/src/emu/cpu/powerpc/ppc.h +++ b/src/emu/cpu/powerpc/ppc.h @@ -265,7 +265,7 @@ protected: // device_state_interface overrides virtual void state_export(const device_state_entry &entry); virtual void state_import(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/powerpc/ppccom.c b/src/emu/cpu/powerpc/ppccom.c index 1c528b3204a..6f91b4a96e8 100644 --- a/src/emu/cpu/powerpc/ppccom.c +++ b/src/emu/cpu/powerpc/ppccom.c @@ -1007,136 +1007,136 @@ void ppc_device::state_import(const device_state_entry &entry) } -void ppc_device::state_string_export(const device_state_entry &entry, astring &str) +void ppc_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case PPC_F0: - str.printf("%12f", m_core->f[0]); + strprintf(str, "%12f", m_core->f[0]); break; case PPC_F1: - str.printf("%12f", m_core->f[1]); + strprintf(str, "%12f", m_core->f[1]); break; case PPC_F2: - str.printf("%12f", m_core->f[2]); + strprintf(str, "%12f", m_core->f[2]); break; case PPC_F3: - str.printf("%12f", m_core->f[3]); + strprintf(str, "%12f", m_core->f[3]); break; case PPC_F4: - str.printf("%12f", m_core->f[4]); + strprintf(str, "%12f", m_core->f[4]); break; case PPC_F5: - str.printf("%12f", m_core->f[5]); + strprintf(str, "%12f", m_core->f[5]); break; case PPC_F6: - str.printf("%12f", m_core->f[6]); + strprintf(str, "%12f", m_core->f[6]); break; case PPC_F7: - str.printf("%12f", m_core->f[7]); + strprintf(str, "%12f", m_core->f[7]); break; case PPC_F8: - str.printf("%12f", m_core->f[8]); + strprintf(str, "%12f", m_core->f[8]); break; case PPC_F9: - str.printf("%12f", m_core->f[9]); + strprintf(str, "%12f", m_core->f[9]); break; case PPC_F10: - str.printf("%12f", m_core->f[10]); + strprintf(str, "%12f", m_core->f[10]); break; case PPC_F11: - str.printf("%12f", m_core->f[11]); + strprintf(str, "%12f", m_core->f[11]); break; case PPC_F12: - str.printf("%12f", m_core->f[12]); + strprintf(str, "%12f", m_core->f[12]); break; case PPC_F13: - str.printf("%12f", m_core->f[13]); + strprintf(str, "%12f", m_core->f[13]); break; case PPC_F14: - str.printf("%12f", m_core->f[14]); + strprintf(str, "%12f", m_core->f[14]); break; case PPC_F15: - str.printf("%12f", m_core->f[15]); + strprintf(str, "%12f", m_core->f[15]); break; case PPC_F16: - str.printf("%12f", m_core->f[16]); + strprintf(str, "%12f", m_core->f[16]); break; case PPC_F17: - str.printf("%12f", m_core->f[17]); + strprintf(str, "%12f", m_core->f[17]); break; case PPC_F18: - str.printf("%12f", m_core->f[18]); + strprintf(str, "%12f", m_core->f[18]); break; case PPC_F19: - str.printf("%12f", m_core->f[19]); + strprintf(str, "%12f", m_core->f[19]); break; case PPC_F20: - str.printf("%12f", m_core->f[20]); + strprintf(str, "%12f", m_core->f[20]); break; case PPC_F21: - str.printf("%12f", m_core->f[21]); + strprintf(str, "%12f", m_core->f[21]); break; case PPC_F22: - str.printf("%12f", m_core->f[22]); + strprintf(str, "%12f", m_core->f[22]); break; case PPC_F23: - str.printf("%12f", m_core->f[23]); + strprintf(str, "%12f", m_core->f[23]); break; case PPC_F24: - str.printf("%12f", m_core->f[24]); + strprintf(str, "%12f", m_core->f[24]); break; case PPC_F25: - str.printf("%12f", m_core->f[25]); + strprintf(str, "%12f", m_core->f[25]); break; case PPC_F26: - str.printf("%12f", m_core->f[26]); + strprintf(str, "%12f", m_core->f[26]); break; case PPC_F27: - str.printf("%12f", m_core->f[27]); + strprintf(str, "%12f", m_core->f[27]); break; case PPC_F28: - str.printf("%12f", m_core->f[28]); + strprintf(str, "%12f", m_core->f[28]); break; case PPC_F29: - str.printf("%12f", m_core->f[29]); + strprintf(str, "%12f", m_core->f[29]); break; case PPC_F30: - str.printf("%12f", m_core->f[30]); + strprintf(str, "%12f", m_core->f[30]); break; case PPC_F31: - str.printf("%12f", m_core->f[31]); + strprintf(str, "%12f", m_core->f[31]); break; } } diff --git a/src/emu/cpu/pps4/pps4.c b/src/emu/cpu/pps4/pps4.c index 47ea940d202..3a942aa6cca 100644 --- a/src/emu/cpu/pps4/pps4.c +++ b/src/emu/cpu/pps4/pps4.c @@ -1552,12 +1552,12 @@ void pps4_device::device_start() m_icountptr = &m_icount; } -void pps4_device::state_string_export(const device_state_entry &entry, astring &str) +void pps4_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c", + strprintf(str, "%c%c%c", m_C ? 'C':'.', m_FF1 ? '1':'.', m_FF2 ? '2':'.'); diff --git a/src/emu/cpu/pps4/pps4.h b/src/emu/cpu/pps4/pps4.h index cfa1fa50b6f..d459591a7c0 100644 --- a/src/emu/cpu/pps4/pps4.h +++ b/src/emu/cpu/pps4/pps4.h @@ -62,7 +62,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/psx/psx.c b/src/emu/cpu/psx/psx.c index 00aeb6fcfb5..bb0d07a13b6 100644 --- a/src/emu/cpu/psx/psx.c +++ b/src/emu/cpu/psx/psx.c @@ -2025,18 +2025,18 @@ void psxcpu_device::state_import( const device_state_entry &entry ) // for the debugger //------------------------------------------------- -void psxcpu_device::state_string_export( const device_state_entry &entry, astring &str ) +void psxcpu_device::state_string_export( const device_state_entry &entry, std::string &str ) { switch( entry.index() ) { case PSXCPU_DELAYR: if( m_delayr <= PSXCPU_DELAYR_NOTPC ) { - str.printf("%02x %-3s", m_delayr, delayn[m_delayr]); + strprintf(str, "%02x %-3s", m_delayr, delayn[m_delayr]); } else { - str.printf("%02x ---", m_delayr); + strprintf(str, "%02x ---", m_delayr); } break; } diff --git a/src/emu/cpu/psx/psx.h b/src/emu/cpu/psx/psx.h index 3839be8d21f..7fe938349eb 100644 --- a/src/emu/cpu/psx/psx.h +++ b/src/emu/cpu/psx/psx.h @@ -220,7 +220,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/rsp/rsp.c b/src/emu/cpu/rsp/rsp.c index 25b096cb45f..49ad29975b1 100644 --- a/src/emu/cpu/rsp/rsp.c +++ b/src/emu/cpu/rsp/rsp.c @@ -537,7 +537,7 @@ void rsp_device::state_export(const device_state_entry &entry) } } -void rsp_device::state_string_export(const device_state_entry &entry, astring &str) +void rsp_device::state_string_export(const device_state_entry &entry, std::string &str) { const int index = entry.index(); if (index >= RSP_V0 && index <= RSP_V31) @@ -546,7 +546,7 @@ void rsp_device::state_string_export(const device_state_entry &entry, astring &s } else if (index == STATE_GENFLAGS) { - str.printf("%s", ""); + strprintf(str, "%s", ""); } } diff --git a/src/emu/cpu/rsp/rsp.h b/src/emu/cpu/rsp/rsp.h index a7db6341b6f..dba8ff38b7b 100644 --- a/src/emu/cpu/rsp/rsp.h +++ b/src/emu/cpu/rsp/rsp.h @@ -185,7 +185,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/rsp/rspcp2.c b/src/emu/cpu/rsp/rspcp2.c index 225a6d31bca..681d503c878 100644 --- a/src/emu/cpu/rsp/rspcp2.c +++ b/src/emu/cpu/rsp/rspcp2.c @@ -171,105 +171,105 @@ void rsp_cop2::start() } } -void rsp_cop2::state_string_export(const int index, astring &str) +void rsp_cop2::state_string_export(const int index, std::string &str) { switch (index) { case RSP_V0: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7)); break; case RSP_V1: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7)); break; case RSP_V2: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7)); break; case RSP_V3: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7)); break; case RSP_V4: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7)); break; case RSP_V5: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7)); break; case RSP_V6: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7)); break; case RSP_V7: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7)); break; case RSP_V8: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7)); break; case RSP_V9: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7)); break; case RSP_V10: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7)); break; case RSP_V11: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7)); break; case RSP_V12: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7)); break; case RSP_V13: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7)); break; case RSP_V14: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7)); break; case RSP_V15: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7)); break; case RSP_V16: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7)); break; case RSP_V17: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7)); break; case RSP_V18: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7)); break; case RSP_V19: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7)); break; case RSP_V20: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7)); break; case RSP_V21: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7)); break; case RSP_V22: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7)); break; case RSP_V23: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7)); break; case RSP_V24: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7)); break; case RSP_V25: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7)); break; case RSP_V26: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7)); break; case RSP_V27: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7)); break; case RSP_V28: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7)); break; case RSP_V29: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7)); break; case RSP_V30: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7)); break; case RSP_V31: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7)); break; } } diff --git a/src/emu/cpu/rsp/rspcp2.h b/src/emu/cpu/rsp/rspcp2.h index 3f45d1e89c7..9b8c8d206a4 100644 --- a/src/emu/cpu/rsp/rspcp2.h +++ b/src/emu/cpu/rsp/rspcp2.h @@ -52,7 +52,7 @@ protected: virtual int generate_lwc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; } virtual int generate_swc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; } - virtual void state_string_export(const int index, astring &str); + virtual void state_string_export(const int index, std::string &str); public: virtual ~rsp_cop2(); diff --git a/src/emu/cpu/rsp/rspcp2d.c b/src/emu/cpu/rsp/rspcp2d.c index 11dcd896203..75f5daae1a6 100644 --- a/src/emu/cpu/rsp/rspcp2d.c +++ b/src/emu/cpu/rsp/rspcp2d.c @@ -150,105 +150,105 @@ static void unimplemented_opcode(void *param) ((rsp_cop2 *)param)->cfunc_unimplemented_opcode(); } -void rsp_cop2_drc::state_string_export(const int index, astring &str) +void rsp_cop2_drc::state_string_export(const int index, std::string &str) { switch (index) { case RSP_V0: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7)); break; case RSP_V1: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7)); break; case RSP_V2: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7)); break; case RSP_V3: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7)); break; case RSP_V4: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7)); break; case RSP_V5: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7)); break; case RSP_V6: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7)); break; case RSP_V7: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7)); break; case RSP_V8: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7)); break; case RSP_V9: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7)); break; case RSP_V10: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7)); break; case RSP_V11: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7)); break; case RSP_V12: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7)); break; case RSP_V13: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7)); break; case RSP_V14: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7)); break; case RSP_V15: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7)); break; case RSP_V16: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7)); break; case RSP_V17: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7)); break; case RSP_V18: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7)); break; case RSP_V19: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7)); break; case RSP_V20: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7)); break; case RSP_V21: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7)); break; case RSP_V22: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7)); break; case RSP_V23: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7)); break; case RSP_V24: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7)); break; case RSP_V25: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7)); break; case RSP_V26: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7)); break; case RSP_V27: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7)); break; case RSP_V28: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7)); break; case RSP_V29: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7)); break; case RSP_V30: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7)); break; case RSP_V31: - str.printf("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7)); + strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7)); break; } } diff --git a/src/emu/cpu/rsp/rspcp2d.h b/src/emu/cpu/rsp/rspcp2d.h index 2cbdfd218b6..3fcb3572820 100644 --- a/src/emu/cpu/rsp/rspcp2d.h +++ b/src/emu/cpu/rsp/rspcp2d.h @@ -30,7 +30,7 @@ class rsp_cop2_drc : public rsp_cop2 virtual int generate_lwc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc); virtual int generate_swc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc); - virtual void state_string_export(const int index, astring &str); + virtual void state_string_export(const int index, std::string &str); void cfunc_unimplemented_opcode(); public: diff --git a/src/emu/cpu/rsp/rspcp2s.c b/src/emu/cpu/rsp/rspcp2s.c index 01613ec7466..376d27b0a23 100644 --- a/src/emu/cpu/rsp/rspcp2s.c +++ b/src/emu/cpu/rsp/rspcp2s.c @@ -295,7 +295,7 @@ rsp_cop2_simd::rsp_cop2_simd(rsp_device &rsp, running_machine &machine) : rsp_co vec_flag_reverse = _mm_set_epi16(0x0100, 0x0302, 0x0504, 0x0706, 0x0908, 0x0b0a, 0x0d0c, 0x0f0e); } -void rsp_cop2_simd::state_string_export(const int index, astring &str) +void rsp_cop2_simd::state_string_export(const int index, std::string &str) { switch (index) { diff --git a/src/emu/cpu/rsp/rspcp2s.h b/src/emu/cpu/rsp/rspcp2s.h index dbc31e97c3c..4b164c5aefe 100644 --- a/src/emu/cpu/rsp/rspcp2s.h +++ b/src/emu/cpu/rsp/rspcp2s.h @@ -32,7 +32,7 @@ class rsp_cop2_simd : public rsp_cop2_drc virtual int generate_lwc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc); virtual int generate_swc2(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc); - virtual void state_string_export(const int index, astring &str); + virtual void state_string_export(const int index, std::string &str); public: virtual void lbv(); diff --git a/src/emu/cpu/s2650/s2650.c b/src/emu/cpu/s2650/s2650.c index f93f6313b8b..e2f6c289fb3 100644 --- a/src/emu/cpu/s2650/s2650.c +++ b/src/emu/cpu/s2650/s2650.c @@ -870,12 +870,12 @@ void s2650_device::state_export(const device_state_entry &entry) } } -void s2650_device::state_string_export(const device_state_entry &entry, astring &str) +void s2650_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", m_psu & 0x80 ? 'S':'.', m_psu & 0x40 ? 'O':'.', m_psu & 0x20 ? 'I':'.', diff --git a/src/emu/cpu/s2650/s2650.h b/src/emu/cpu/s2650/s2650.h index acdad88ae61..703058d1fca 100644 --- a/src/emu/cpu/s2650/s2650.h +++ b/src/emu/cpu/s2650/s2650.h @@ -60,7 +60,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/saturn/saturn.c b/src/emu/cpu/saturn/saturn.c index 0bd5b8c53de..cf82e50ac50 100644 --- a/src/emu/cpu/saturn/saturn.c +++ b/src/emu/cpu/saturn/saturn.c @@ -181,7 +181,7 @@ void saturn_device::device_start() m_icountptr = &m_icount; } -void saturn_device::state_string_export(const device_state_entry &entry, astring &str) +void saturn_device::state_string_export(const device_state_entry &entry, std::string &str) { #define Reg64Data(s) s[15],s[14],s[13],s[12],s[11],s[10],s[9],s[8],s[7],s[6],s[5],s[4],s[3],s[2],s[1],s[0] #define Reg64Format "%x %x%x%x%x%x%x%x %x%x%x %x%x%x%x%x" @@ -189,47 +189,47 @@ void saturn_device::state_string_export(const device_state_entry &entry, astring switch (entry.index()) { case SATURN_A: - str.printf( Reg64Format, Reg64Data(m_reg[A]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[A]) ); break; case SATURN_B: - str.printf( Reg64Format, Reg64Data(m_reg[B]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[B]) ); break; case SATURN_C: - str.printf( Reg64Format, Reg64Data(m_reg[C]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[C]) ); break; case SATURN_D: - str.printf( Reg64Format, Reg64Data(m_reg[D]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[D]) ); break; case SATURN_R0: - str.printf( Reg64Format, Reg64Data(m_reg[R0]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[R0]) ); break; case SATURN_R1: - str.printf( Reg64Format, Reg64Data(m_reg[R1]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[R1]) ); break; case SATURN_R2: - str.printf( Reg64Format, Reg64Data(m_reg[R2]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[R2]) ); break; case SATURN_R3: - str.printf( Reg64Format, Reg64Data(m_reg[R3]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[R3]) ); break; case SATURN_R4: - str.printf( Reg64Format, Reg64Data(m_reg[R4]) ); + strprintf(str, Reg64Format, Reg64Data(m_reg[R4]) ); break; case SATURN_IRQ_STATE: - str.printf( "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state ); + strprintf(str, "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state ); break; case STATE_GENFLAGS: - str.printf( "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' ); + strprintf(str, "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' ); break; } } diff --git a/src/emu/cpu/saturn/saturn.h b/src/emu/cpu/saturn/saturn.h index a54faaca164..cd9705cbbcd 100644 --- a/src/emu/cpu/saturn/saturn.h +++ b/src/emu/cpu/saturn/saturn.h @@ -117,7 +117,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); diff --git a/src/emu/cpu/sc61860/sc61860.c b/src/emu/cpu/sc61860/sc61860.c index ee4e33e931d..6d887ffe916 100644 --- a/src/emu/cpu/sc61860/sc61860.c +++ b/src/emu/cpu/sc61860/sc61860.c @@ -181,12 +181,12 @@ void sc61860_device::device_start() } -void sc61860_device::state_string_export(const device_state_entry &entry, astring &str) +void sc61860_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.'); + strprintf(str, "%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.'); break; } } diff --git a/src/emu/cpu/sc61860/sc61860.h b/src/emu/cpu/sc61860/sc61860.h index 3966ada8a58..e4c4c7e7a9c 100644 --- a/src/emu/cpu/sc61860/sc61860.h +++ b/src/emu/cpu/sc61860/sc61860.h @@ -116,7 +116,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/scmp/scmp.c b/src/emu/cpu/scmp/scmp.c index a6a36dc604e..cbfaf6a82c2 100644 --- a/src/emu/cpu/scmp/scmp.c +++ b/src/emu/cpu/scmp/scmp.c @@ -547,12 +547,12 @@ void scmp_device::device_reset() COMMON STATE IMPORT/EXPORT ***************************************************************************/ -void scmp_device::state_string_export(const device_state_entry &entry, astring &str) +void scmp_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_SR & 0x80) ? 'C' : '.', (m_SR & 0x40) ? 'V' : '.', (m_SR & 0x20) ? 'B' : '.', diff --git a/src/emu/cpu/scmp/scmp.h b/src/emu/cpu/scmp/scmp.h index 56f99ee1361..86590f93546 100644 --- a/src/emu/cpu/scmp/scmp.h +++ b/src/emu/cpu/scmp/scmp.h @@ -56,7 +56,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/score/score.c b/src/emu/cpu/score/score.c index 59616854f22..3ecbbe6fb4c 100644 --- a/src/emu/cpu/score/score.c +++ b/src/emu/cpu/score/score.c @@ -80,16 +80,16 @@ void score7_cpu_device::device_start() // register state for debugger state_add(SCORE_PC , "PC" , m_pc).callimport().callexport().formatstr("%08X"); - astring tmp_string; + std::string tmp_string; for(int i=0; i<0x20; i++) - state_add(SCORE_GPR + i, tmp_string.format("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_GPR + i, strformat(tmp_string, "r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X"); for(int i=0; i<0x20; i++) - state_add(SCORE_CR + i, tmp_string.format("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_CR + i, strformat(tmp_string, "cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X"); for(int i=0; i<3; i++) - state_add(SCORE_SR + i, tmp_string.format("sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_SR + i, strformat(tmp_string, "sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X"); state_add(SCORE_CEH, "ceh", REG_CEH).callimport().callexport().formatstr("%08X"); state_add(SCORE_CEL, "cel", REG_CEL).callimport().callexport().formatstr("%08X"); @@ -132,12 +132,12 @@ void score7_cpu_device::device_reset() // for the debugger //------------------------------------------------- -void score7_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void score7_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s%s%s%s%s", + strprintf(str, "%s%s%s%s%s", REG_CR & FLAG_V ? "V" : ".", REG_CR & FLAG_C ? "C" : ".", REG_CR & FLAG_Z ? "Z" : ".", diff --git a/src/emu/cpu/score/score.h b/src/emu/cpu/score/score.h index c3eeaba67b5..2fd8ca70ca3 100644 --- a/src/emu/cpu/score/score.h +++ b/src/emu/cpu/score/score.h @@ -47,7 +47,7 @@ protected: virtual void execute_set_input(int inputnum, int state); // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_memory_interface overrides virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const; diff --git a/src/emu/cpu/scudsp/scudsp.c b/src/emu/cpu/scudsp/scudsp.c index 416e3a54005..1c73999404c 100644 --- a/src/emu/cpu/scudsp/scudsp.c +++ b/src/emu/cpu/scudsp/scudsp.c @@ -1021,12 +1021,12 @@ scudsp_cpu_device::scudsp_cpu_device(const machine_config &mconfig, const char * } -void scudsp_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s%s%s%c%c%c%c%c%s%s%s", + strprintf(str, "%s%s%s%c%c%c%c%c%s%s%s", m_flags & 0x4000000 ? "PR":"..", m_flags & 0x2000000 ? "EP":"..", m_flags & 0x800000 ? "T0":"..", diff --git a/src/emu/cpu/scudsp/scudsp.h b/src/emu/cpu/scudsp/scudsp.h index df7364ac39e..a1ccb3a5ee1 100644 --- a/src/emu/cpu/scudsp/scudsp.h +++ b/src/emu/cpu/scudsp/scudsp.h @@ -94,7 +94,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/emu/cpu/se3208/se3208.c b/src/emu/cpu/se3208/se3208.c index 91e09033bb3..7dc842ad789 100644 --- a/src/emu/cpu/se3208/se3208.c +++ b/src/emu/cpu/se3208/se3208.c @@ -1795,12 +1795,12 @@ void se3208_device::device_start() } -void se3208_device::state_string_export(const device_state_entry &entry, astring &str) +void se3208_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c %c%c%c%c%c", + strprintf(str, "%c%c%c%c %c%c%c%c%c", m_SR&FLAG_C?'C':'.', m_SR&FLAG_V?'V':'.', m_SR&FLAG_S?'S':'.', diff --git a/src/emu/cpu/se3208/se3208.h b/src/emu/cpu/se3208/se3208.h index 9a61b4e3559..9be2316cc87 100644 --- a/src/emu/cpu/se3208/se3208.h +++ b/src/emu/cpu/se3208/se3208.h @@ -30,7 +30,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/sh2/sh2.c b/src/emu/cpu/sh2/sh2.c index 3717cd28521..fb7161acffd 100644 --- a/src/emu/cpu/sh2/sh2.c +++ b/src/emu/cpu/sh2/sh2.c @@ -2610,12 +2610,12 @@ void sh2_device::device_start() } -void sh2_device::state_string_export(const device_state_entry &entry, astring &str) +void sh2_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%d%c%c", + strprintf(str, "%c%c%d%c%c", m_sh2_state->sr & M ? 'M':'.', m_sh2_state->sr & Q ? 'Q':'.', (m_sh2_state->sr & I) >> 4, diff --git a/src/emu/cpu/sh2/sh2.h b/src/emu/cpu/sh2/sh2.h index 59ba4c62bc0..495ff2540ab 100644 --- a/src/emu/cpu/sh2/sh2.h +++ b/src/emu/cpu/sh2/sh2.h @@ -156,7 +156,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/sh4/sh4.c b/src/emu/cpu/sh4/sh4.c index 4d2a903a236..eed99ceca33 100644 --- a/src/emu/cpu/sh4/sh4.c +++ b/src/emu/cpu/sh4/sh4.c @@ -4445,7 +4445,7 @@ void sh34_base_device::state_export(const device_state_entry &entry) } } -void sh34_base_device::state_string_export(const device_state_entry &entry, astring &str) +void sh34_base_device::state_string_export(const device_state_entry &entry, std::string &str) { #ifdef LSB_FIRST UINT8 fpu_xor = m_fpu_pr; @@ -4456,7 +4456,7 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, astr switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s%s%s%s%c%c%d%c%c", + strprintf(str, "%s%s%s%s%c%c%d%c%c", m_sr & MD ? "MD ":" ", m_sr & sRB ? "RB ":" ", m_sr & BL ? "BL ":" ", @@ -4469,131 +4469,131 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, astr break; case SH4_FR0: - str.printf("%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor)); break; case SH4_FR1: - str.printf("%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor)); break; case SH4_FR2: - str.printf("%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor)); break; case SH4_FR3: - str.printf("%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor)); break; case SH4_FR4: - str.printf("%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor)); break; case SH4_FR5: - str.printf("%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor)); break; case SH4_FR6: - str.printf("%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor)); break; case SH4_FR7: - str.printf("%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor)); break; case SH4_FR8: - str.printf("%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor)); break; case SH4_FR9: - str.printf("%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor)); break; case SH4_FR10: - str.printf("%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor)); break; case SH4_FR11: - str.printf("%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor)); break; case SH4_FR12: - str.printf("%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor)); break; case SH4_FR13: - str.printf("%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor)); break; case SH4_FR14: - str.printf("%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor)); break; case SH4_FR15: - str.printf("%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor)); + strprintf(str, "%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor)); break; case SH4_XF0: - str.printf("%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor)); break; case SH4_XF1: - str.printf("%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor)); break; case SH4_XF2: - str.printf("%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor)); break; case SH4_XF3: - str.printf("%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor)); break; case SH4_XF4: - str.printf("%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor)); break; case SH4_XF5: - str.printf("%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor)); break; case SH4_XF6: - str.printf("%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor)); break; case SH4_XF7: - str.printf("%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor)); break; case SH4_XF8: - str.printf("%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor)); break; case SH4_XF9: - str.printf("%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor)); break; case SH4_XF10: - str.printf("%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor)); break; case SH4_XF11: - str.printf("%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor)); break; case SH4_XF12: - str.printf("%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor)); break; case SH4_XF13: - str.printf("%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor)); break; case SH4_XF14: - str.printf("%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor)); break; case SH4_XF15: - str.printf("%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor)); + strprintf(str, "%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor)); break; } diff --git a/src/emu/cpu/sh4/sh4.h b/src/emu/cpu/sh4/sh4.h index 7f2055b6c36..e7ad4fd9cb0 100644 --- a/src/emu/cpu/sh4/sh4.h +++ b/src/emu/cpu/sh4/sh4.h @@ -218,7 +218,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/sm8500/sm8500.c b/src/emu/cpu/sm8500/sm8500.c index e34c53c8178..0e8b6bea10f 100644 --- a/src/emu/cpu/sm8500/sm8500.c +++ b/src/emu/cpu/sm8500/sm8500.c @@ -139,48 +139,48 @@ void sm8500_cpu_device::device_start() } -void sm8500_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void sm8500_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case SM8500_PS: - str.printf( "%04X", ( m_PS0 << 8 ) | m_PS1 ); + strprintf(str, "%04X", ( m_PS0 << 8 ) | m_PS1 ); break; case SM8500_RR0: - str.printf( "%04X", mem_readword( 0x00 ) ); + strprintf(str, "%04X", mem_readword( 0x00 ) ); break; case SM8500_RR2: - str.printf( "%04X", mem_readword( 0x02 ) ); + strprintf(str, "%04X", mem_readword( 0x02 ) ); break; case SM8500_RR4: - str.printf( "%04X", mem_readword( 0x04 ) ); + strprintf(str, "%04X", mem_readword( 0x04 ) ); break; case SM8500_RR6: - str.printf( "%04X", mem_readword( 0x06 ) ); + strprintf(str, "%04X", mem_readword( 0x06 ) ); break; case SM8500_RR8: - str.printf( "%04X", mem_readword( 0x08 ) ); + strprintf(str, "%04X", mem_readword( 0x08 ) ); break; case SM8500_RR10: - str.printf( "%04X", mem_readword( 0x0a ) ); + strprintf(str, "%04X", mem_readword( 0x0a ) ); break; case SM8500_RR12: - str.printf( "%04X", mem_readword( 0x0c ) ); + strprintf(str, "%04X", mem_readword( 0x0c ) ); break; case SM8500_RR14: - str.printf( "%04X", mem_readword( 0x0e ) ); + strprintf(str, "%04X", mem_readword( 0x0e ) ); break; case STATE_GENFLAGS: - str.printf( "%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_PS1 & FLAG_C ? 'C' : '.', m_PS1 & FLAG_Z ? 'Z' : '.', m_PS1 & FLAG_S ? 'S' : '.', diff --git a/src/emu/cpu/sm8500/sm8500.h b/src/emu/cpu/sm8500/sm8500.h index 58b1cded478..0c56e82b7a2 100644 --- a/src/emu/cpu/sm8500/sm8500.h +++ b/src/emu/cpu/sm8500/sm8500.h @@ -69,7 +69,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/spc700/spc700.c b/src/emu/cpu/spc700/spc700.c index 94513ceed5b..0e385bb06ef 100644 --- a/src/emu/cpu/spc700/spc700.c +++ b/src/emu/cpu/spc700/spc700.c @@ -1242,12 +1242,12 @@ void spc700_device::device_start() } -void spc700_device::state_string_export(const device_state_entry &entry, astring &str) +void spc700_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (m_flag_n & 0x80) ? 'N':'.', ((m_flag_v & 0x80) >> 1) ? 'V':'.', (m_flag_p>>3) ? 'P':'.', diff --git a/src/emu/cpu/spc700/spc700.h b/src/emu/cpu/spc700/spc700.h index 053f2fbb9d3..192ec9ba6fe 100644 --- a/src/emu/cpu/spc700/spc700.h +++ b/src/emu/cpu/spc700/spc700.h @@ -28,7 +28,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/ssem/ssem.c b/src/emu/cpu/ssem/ssem.c index 93f7d5281b7..0bd4133a563 100644 --- a/src/emu/cpu/ssem/ssem.c +++ b/src/emu/cpu/ssem/ssem.c @@ -98,7 +98,7 @@ void ssem_device::device_start() m_program = &space(AS_PROGRAM); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", m_pc).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_halt).callimport().callexport().formatstr("%1s").noshow(); state_add(SSEM_PC, "PC", m_shifted_pc).mask(0xffff); @@ -148,12 +148,12 @@ const address_space_config *ssem_device::memory_space_config(address_spacenum sp // for the debugger //------------------------------------------------- -void ssem_device::state_string_export(const device_state_entry &entry, astring &str) +void ssem_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c", m_halt ? 'H' : '.'); + strprintf(str, "%c", m_halt ? 'H' : '.'); break; } } diff --git a/src/emu/cpu/ssem/ssem.h b/src/emu/cpu/ssem/ssem.h index 85a9df24583..251c7a29fd3 100644 --- a/src/emu/cpu/ssem/ssem.h +++ b/src/emu/cpu/ssem/ssem.h @@ -43,7 +43,7 @@ public: virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // address spaces const address_space_config m_program_config; diff --git a/src/emu/cpu/ssp1601/ssp1601.c b/src/emu/cpu/ssp1601/ssp1601.c index c37fc9fdd4a..a50aee5bfe0 100644 --- a/src/emu/cpu/ssp1601/ssp1601.c +++ b/src/emu/cpu/ssp1601/ssp1601.c @@ -548,12 +548,12 @@ void ssp1601_device::device_start() } -void ssp1601_device::state_string_export(const device_state_entry &entry, astring &str) +void ssp1601_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c", (rST&SSP_FLAG_N) ? 'N' : '.', (rST&SSP_FLAG_V) ? 'V' : '.', + strprintf(str, "%c%c%c%c", (rST&SSP_FLAG_N) ? 'N' : '.', (rST&SSP_FLAG_V) ? 'V' : '.', (rST&SSP_FLAG_Z)?'Z':'.', (rST&SSP_FLAG_L)?'L':'.' ); break; diff --git a/src/emu/cpu/ssp1601/ssp1601.h b/src/emu/cpu/ssp1601/ssp1601.h index 8bdeb2eab11..0c06d2785f0 100644 --- a/src/emu/cpu/ssp1601/ssp1601.h +++ b/src/emu/cpu/ssp1601/ssp1601.h @@ -38,7 +38,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : NULL); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/t11/t11.c b/src/emu/cpu/t11/t11.c index ed4667a8b32..46f82f9a627 100644 --- a/src/emu/cpu/t11/t11.c +++ b/src/emu/cpu/t11/t11.c @@ -275,12 +275,12 @@ void t11_device::device_start() m_icountptr = &m_icount; } -void t11_device::state_string_export(const device_state_entry &entry, astring &str) +void t11_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_psw.b.l & 0x80 ? '?':'.', m_psw.b.l & 0x40 ? 'I':'.', m_psw.b.l & 0x20 ? 'I':'.', diff --git a/src/emu/cpu/t11/t11.h b/src/emu/cpu/t11/t11.h index dd724f09ddd..2d7aa2aa180 100644 --- a/src/emu/cpu/t11/t11.h +++ b/src/emu/cpu/t11/t11.h @@ -56,7 +56,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/tlcs90/tlcs90.c b/src/emu/cpu/tlcs90/tlcs90.c index 4b320fd6831..118d7a93168 100644 --- a/src/emu/cpu/tlcs90/tlcs90.c +++ b/src/emu/cpu/tlcs90/tlcs90.c @@ -2761,12 +2761,12 @@ void tlcs90_device::device_start() } -void tlcs90_device::state_string_export(const device_state_entry &entry, astring &str) +void tlcs90_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", F & 0x80 ? 'S':'.', F & 0x40 ? 'Z':'.', F & 0x20 ? 'I':'.', diff --git a/src/emu/cpu/tlcs90/tlcs90.h b/src/emu/cpu/tlcs90/tlcs90.h index 7dd96f9e452..77f4f82d750 100644 --- a/src/emu/cpu/tlcs90/tlcs90.h +++ b/src/emu/cpu/tlcs90/tlcs90.h @@ -49,7 +49,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/tlcs900/tlcs900.c b/src/emu/cpu/tlcs900/tlcs900.c index 37fdea0c12b..05126275cc8 100644 --- a/src/emu/cpu/tlcs900/tlcs900.c +++ b/src/emu/cpu/tlcs900/tlcs900.c @@ -374,12 +374,12 @@ void tlcs900h_device::device_start() } -void tlcs900h_device::state_string_export(const device_state_entry &entry, astring &str) +void tlcs900h_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%d%c%d%c%c%c%c%c%c%c%c", + strprintf(str, "%c%d%c%d%c%c%c%c%c%c%c%c", m_sr.w.l & 0x8000 ? 'S' : 'U', ( m_sr.w.l & 0x7000 ) >> 12, m_sr.w.l & 0x0800 ? 'M' : 'N', diff --git a/src/emu/cpu/tlcs900/tlcs900.h b/src/emu/cpu/tlcs900/tlcs900.h index b550480cb27..11b61e532f1 100644 --- a/src/emu/cpu/tlcs900/tlcs900.h +++ b/src/emu/cpu/tlcs900/tlcs900.h @@ -70,7 +70,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/tms0980/tms0980.c b/src/emu/cpu/tms0980/tms0980.c index 93111b88dba..20897c81b70 100644 --- a/src/emu/cpu/tms0980/tms0980.c +++ b/src/emu/cpu/tms0980/tms0980.c @@ -392,12 +392,12 @@ offs_t tms0980_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UIN return CPU_DISASSEMBLE_NAME(tms0980)(this, buffer, pc, oprom, opram, options); } -void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENPC: - str.printf("%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0)); + strprintf(str, "%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0)); break; } } diff --git a/src/emu/cpu/tms0980/tms0980.h b/src/emu/cpu/tms0980/tms0980.h index a5407e8cf62..ee04406c1c9 100644 --- a/src/emu/cpu/tms0980/tms0980.h +++ b/src/emu/cpu/tms0980/tms0980.h @@ -96,7 +96,7 @@ protected: virtual UINT32 disasm_min_opcode_bytes() const { return 1; } virtual UINT32 disasm_max_opcode_bytes() const { return 1; } - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); void next_pc(); diff --git a/src/emu/cpu/tms32010/tms32010.c b/src/emu/cpu/tms32010/tms32010.c index 2b3053f38bb..28361c39e49 100644 --- a/src/emu/cpu/tms32010/tms32010.c +++ b/src/emu/cpu/tms32010/tms32010.c @@ -893,12 +893,12 @@ void tms32010_device::device_reset() } -void tms32010_device::state_string_export(const device_state_entry &entry, astring &str) +void tms32010_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", m_STR & 0x8000 ? 'O':'.', m_STR & 0x4000 ? 'M':'.', m_STR & 0x2000 ? 'I':'.', diff --git a/src/emu/cpu/tms32010/tms32010.h b/src/emu/cpu/tms32010/tms32010.h index cc305815f71..0b9448112f3 100644 --- a/src/emu/cpu/tms32010/tms32010.h +++ b/src/emu/cpu/tms32010/tms32010.h @@ -70,7 +70,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ) ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/tms32025/tms32025.c b/src/emu/cpu/tms32025/tms32025.c index 75a36da04c6..5e237b2f35d 100644 --- a/src/emu/cpu/tms32025/tms32025.c +++ b/src/emu/cpu/tms32025/tms32025.c @@ -1799,12 +1799,12 @@ void tms32025_device::state_export(const device_state_entry &entry) } -void tms32025_device::state_string_export(const device_state_entry &entry, astring &str) +void tms32025_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("arp%d%c%c%c%cdp%03x arb%d%c%c%c%c%c%c%c%c%c%c%cpm%d", + strprintf(str, "arp%d%c%c%c%cdp%03x arb%d%c%c%c%c%c%c%c%c%c%c%cpm%d", (m_STR0 & 0xe000) >> 13, m_STR0 & 0x1000 ? 'O':'.', m_STR0 & 0x0800 ? 'M':'.', diff --git a/src/emu/cpu/tms32025/tms32025.h b/src/emu/cpu/tms32025/tms32025.h index 09ad0c48d30..60d6cba9643 100644 --- a/src/emu/cpu/tms32025/tms32025.h +++ b/src/emu/cpu/tms32025/tms32025.h @@ -95,7 +95,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/tms32031/tms32031.c b/src/emu/cpu/tms32031/tms32031.c index 18dcaeb7577..df1f389e4c5 100644 --- a/src/emu/cpu/tms32031/tms32031.c +++ b/src/emu/cpu/tms32031/tms32031.c @@ -529,7 +529,7 @@ void tms3203x_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void tms3203x_device::state_string_export(const device_state_entry &entry, astring &str) +void tms3203x_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { @@ -541,12 +541,12 @@ void tms3203x_device::state_string_export(const device_state_entry &entry, astri case TMS3203X_R5F: case TMS3203X_R6F: case TMS3203X_R7F: - str.printf("%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double()); + strprintf(str, "%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double()); break; case STATE_GENFLAGS: UINT32 temp = m_r[TMR_ST].i32[0]; - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", (temp & 0x80) ? 'O':'.', (temp & 0x40) ? 'U':'.', (temp & 0x20) ? 'V':'.', diff --git a/src/emu/cpu/tms32031/tms32031.h b/src/emu/cpu/tms32031/tms32031.h index bcdc36cdea6..ce1189e6c7a 100644 --- a/src/emu/cpu/tms32031/tms32031.h +++ b/src/emu/cpu/tms32031/tms32031.h @@ -179,7 +179,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/tms32082/tms32082.c b/src/emu/cpu/tms32082/tms32082.c index 39e3e18b5fb..742694aa7f9 100644 --- a/src/emu/cpu/tms32082/tms32082.c +++ b/src/emu/cpu/tms32082/tms32082.c @@ -203,12 +203,12 @@ void tms32082_mp_device::device_start() m_icountptr = &m_icount; } -void tms32082_mp_device::state_string_export(const device_state_entry &entry, astring &str) +void tms32082_mp_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("?"); + strprintf(str, "?"); break; } } @@ -502,12 +502,12 @@ void tms32082_pp_device::device_start() m_icountptr = &m_icount; } -void tms32082_pp_device::state_string_export(const device_state_entry &entry, astring &str) +void tms32082_pp_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("?"); + strprintf(str, "?"); break; } } diff --git a/src/emu/cpu/tms32082/tms32082.h b/src/emu/cpu/tms32082/tms32082.h index a0d2b2c8cc1..9c496e73904 100644 --- a/src/emu/cpu/tms32082/tms32082.h +++ b/src/emu/cpu/tms32082/tms32082.h @@ -91,7 +91,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } @@ -181,7 +181,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 8; } diff --git a/src/emu/cpu/tms34010/tms34010.c b/src/emu/cpu/tms34010/tms34010.c index 2a8d023199e..53882e3a59e 100644 --- a/src/emu/cpu/tms34010/tms34010.c +++ b/src/emu/cpu/tms34010/tms34010.c @@ -590,14 +590,14 @@ void tms340x0_device::device_start() state_add(TMS34010_ST, "ST", m_st); state_add(STATE_GENFLAGS, "GENFLAGS", m_st).noshow().formatstr("%18s"); - astring tempstr; + std::string tempstr; for (int regnum = 0; regnum < 15; regnum++) { - state_add(TMS34010_A0 + regnum, tempstr.format("A%d", regnum).c_str(), m_regs[regnum].reg); + state_add(TMS34010_A0 + regnum, strformat(tempstr, "A%d", regnum).c_str(), m_regs[regnum].reg); } for (int regnum = 0; regnum < 15; regnum++) { - state_add(TMS34010_B0 + regnum, tempstr.format("B%d", regnum).c_str(), m_regs[30 - regnum].reg); + state_add(TMS34010_B0 + regnum, strformat(tempstr, "B%d", regnum).c_str(), m_regs[30 - regnum].reg); } } @@ -1596,12 +1596,12 @@ READ16_MEMBER( tms340x0_device::host_r ) } -void tms340x0_device::state_string_export(const device_state_entry &entry, astring &str) +void tms340x0_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", m_st & 0x80000000 ? 'N':'.', m_st & 0x40000000 ? 'C':'.', m_st & 0x20000000 ? 'Z':'.', diff --git a/src/emu/cpu/tms34010/tms34010.h b/src/emu/cpu/tms34010/tms34010.h index 990020f0a62..b9420def0ae 100644 --- a/src/emu/cpu/tms34010/tms34010.h +++ b/src/emu/cpu/tms34010/tms34010.h @@ -280,7 +280,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : NULL; } // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/tms7000/tms7000.c b/src/emu/cpu/tms7000/tms7000.c index 4b825f75d35..9eb1b3ee271 100644 --- a/src/emu/cpu/tms7000/tms7000.c +++ b/src/emu/cpu/tms7000/tms7000.c @@ -271,12 +271,12 @@ void tms7000_device::device_start() state_add(STATE_GENFLAGS, "GENFLAGS", m_sr).formatstr("%8s").noshow(); } -void tms7000_device::state_string_export(const device_state_entry &entry, astring &str) +void tms7000_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_sr & 0x80 ? 'C':'c', m_sr & 0x40 ? 'N':'n', m_sr & 0x20 ? 'Z':'z', diff --git a/src/emu/cpu/tms7000/tms7000.h b/src/emu/cpu/tms7000/tms7000.h index 0488355a8f6..2f30ce144ae 100644 --- a/src/emu/cpu/tms7000/tms7000.h +++ b/src/emu/cpu/tms7000/tms7000.h @@ -91,7 +91,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/tms9900/tms9900.c b/src/emu/cpu/tms9900/tms9900.c index ec5bbf797fc..0029d9cf392 100644 --- a/src/emu/cpu/tms9900/tms9900.c +++ b/src/emu/cpu/tms9900/tms9900.c @@ -349,7 +349,7 @@ void tms99xx_device::state_export(const device_state_entry &entry) /* state_string_export - export state as a string for the debugger */ -void tms99xx_device::state_string_export(const device_state_entry &entry, astring &str) +void tms99xx_device::state_string_export(const device_state_entry &entry, std::string &str) { static const char *statestr = "LAECOPX-----IIII"; char flags[17]; @@ -363,7 +363,7 @@ void tms99xx_device::state_string_export(const device_state_entry &entry, astrin val = (val >> 1) & 0x7fff; } } - str.cpy(flags); + str.assign(flags); } /**************************************************************************/ diff --git a/src/emu/cpu/tms9900/tms9900.h b/src/emu/cpu/tms9900/tms9900.h index f585a0a4cd3..8e7f19042c6 100644 --- a/src/emu/cpu/tms9900/tms9900.h +++ b/src/emu/cpu/tms9900/tms9900.h @@ -226,7 +226,7 @@ private: static const char* s_statename[]; void state_import(const device_state_entry &entry); void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // Interrupt handling void service_interrupt(); diff --git a/src/emu/cpu/tms9900/tms9995.c b/src/emu/cpu/tms9900/tms9995.c index df48a9c41e7..d561a0550c9 100644 --- a/src/emu/cpu/tms9900/tms9995.c +++ b/src/emu/cpu/tms9900/tms9995.c @@ -372,7 +372,7 @@ void tms9995_device::state_export(const device_state_entry &entry) /* state_string_export - export state as a string for the debugger */ -void tms9995_device::state_string_export(const device_state_entry &entry, astring &str) +void tms9995_device::state_string_export(const device_state_entry &entry, std::string &str) { static const char *statestr = "LAECOPX-----IIII"; char flags[17]; @@ -386,7 +386,7 @@ void tms9995_device::state_string_export(const device_state_entry &entry, astrin val = (val >> 1) & 0x7fff; } } - str.cpy(flags); + str.assign(flags); } /* diff --git a/src/emu/cpu/tms9900/tms9995.h b/src/emu/cpu/tms9900/tms9995.h index 0a08f6ebe58..81e2e560505 100644 --- a/src/emu/cpu/tms9900/tms9995.h +++ b/src/emu/cpu/tms9900/tms9995.h @@ -106,7 +106,7 @@ private: static const char* s_statename[]; void state_import(const device_state_entry &entry); void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); UINT16 read_workspace_register_debug(int reg); void write_workspace_register_debug(int reg, UINT16 data); diff --git a/src/emu/cpu/ucom4/ucom4.c b/src/emu/cpu/ucom4/ucom4.c index cb18beec37b..f8fbf383cb2 100644 --- a/src/emu/cpu/ucom4/ucom4.c +++ b/src/emu/cpu/ucom4/ucom4.c @@ -75,13 +75,13 @@ upd552_cpu_device::upd552_cpu_device(const machine_config &mconfig, const char * // disasm -void ucom4_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { // obviously not from a single flags register case STATE_GENFLAGS: - str.printf("%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c", m_inte_f ? 'E':'e', m_int_f ? 'I':'i', m_timer_f ? 'T':'t', diff --git a/src/emu/cpu/ucom4/ucom4.h b/src/emu/cpu/ucom4/ucom4.h index cf412d59a2f..5c4cd18eac4 100644 --- a/src/emu/cpu/ucom4/ucom4.h +++ b/src/emu/cpu/ucom4/ucom4.h @@ -151,7 +151,7 @@ protected: virtual UINT32 disasm_max_opcode_bytes() const { return 2; } virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); address_space_config m_program_config; address_space_config m_data_config; diff --git a/src/emu/cpu/uml.c b/src/emu/cpu/uml.c index b1ca222771e..eef08cc7d47 100644 --- a/src/emu/cpu/uml.c +++ b/src/emu/cpu/uml.c @@ -740,7 +740,7 @@ void uml::instruction::simplify() /* if (LOG_SIMPLIFICATIONS && memcmp(&orig, inst, sizeof(orig)) != 0) { - astring disasm1, disasm2; + std::string disasm1, disasm2; orig.disasm(disasm1, block->drcuml); inst->disasm(disasm2, block->drcuml); osd_printf_debug("Simplified: %-50.50s -> %s\n", disasm1.c_str(), disasm2.c_str()); @@ -855,7 +855,7 @@ UINT8 uml::instruction::modified_flags() const // given buffer //------------------------------------------------- -const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) const +const char *uml::instruction::disasm(std::string &buffer, drcuml_state *drcuml) const { static const char *const conditions[] = { "z", "nz", "s", "ns", "c", "nc", "v", "nv", "u", "nu", "a", "be", "g", "le", "l", "ge" }; static const char *const pound_size[] = { "?", "?", "?", "?", "s", "?", "?", "?", "d" }; @@ -869,19 +869,19 @@ const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) cons assert(m_opcode != OP_INVALID && m_opcode < OP_MAX); // start with the raw mnemonic and substitute sizes - buffer.reset(); + buffer.clear(); for (const char *opsrc = opinfo.mnemonic; *opsrc != 0; opsrc++) if (*opsrc == '!') - buffer.catprintf("%s", bang_size[m_size]); + strcatprintf(buffer, "%s", bang_size[m_size]); else if (*opsrc == '#') - buffer.catprintf("%s", pound_size[m_size]); + strcatprintf(buffer, "%s", pound_size[m_size]); else - buffer.cat(*opsrc); + buffer.push_back(*opsrc); // pad to 8 spaces - int pad = 8 - buffer.len(); + int pad = 8 - buffer.length(); for (int ch = 0; ch < pad; ch++) - buffer.cat(' '); + buffer.push_back(' '); // iterate through parameters for (int pnum = 0; pnum < m_numparams; pnum++) @@ -890,7 +890,7 @@ const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) cons // start with a comma for all except the first parameter if (pnum != 0) - buffer.cat(','); + buffer.push_back(','); // ouput based on type switch (param.type()) @@ -918,20 +918,20 @@ const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) cons if (size == 2) value = (UINT16)value; if (size == 4) value = (UINT32)value; if ((UINT32)value == value) - buffer.catprintf("$%X", (UINT32)value); + strcatprintf(buffer, "$%X", (UINT32)value); else - buffer.catprintf("$%X%08X", (UINT32)(value >> 32), (UINT32)value); + strcatprintf(buffer, "$%X%08X", (UINT32)(value >> 32), (UINT32)value); } break; // immediates have several special cases case parameter::PTYPE_SIZE: - buffer.catprintf("%s", sizes[param.size()]); + strcatprintf(buffer, "%s", sizes[param.size()]); break; // size + address space immediate case parameter::PTYPE_SIZE_SPACE: - buffer.catprintf("%s_%s", spaces[param.space()], sizes[param.size()]); + strcatprintf(buffer, "%s_%s", spaces[param.space()], sizes[param.size()]); break; // size + scale immediate @@ -940,30 +940,30 @@ const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) cons int scale = param.scale(); int size = param.size(); if (scale == size) - buffer.catprintf("%s", sizes[size]); + strcatprintf(buffer, "%s", sizes[size]); else - buffer.catprintf("%s_x%d", sizes[size], 1 << scale); + strcatprintf(buffer, "%s_x%d", sizes[size], 1 << scale); } break; // fmod immediate case parameter::PTYPE_ROUNDING: - buffer.catprintf("%s", fmods[param.rounding()]); + strcatprintf(buffer, "%s", fmods[param.rounding()]); break; // integer registers case parameter::PTYPE_INT_REGISTER: - buffer.catprintf("i%d", param.ireg() - REG_I0); + strcatprintf(buffer, "i%d", param.ireg() - REG_I0); break; // floating point registers case parameter::PTYPE_FLOAT_REGISTER: - buffer.catprintf("f%d", param.freg() - REG_F0); + strcatprintf(buffer, "f%d", param.freg() - REG_F0); break; // map variables case parameter::PTYPE_MAPVAR: - buffer.catprintf("m%d", param.mapvar() - MAPVAR_M0); + strcatprintf(buffer, "m%d", param.mapvar() - MAPVAR_M0); break; // memory @@ -976,55 +976,55 @@ const char *uml::instruction::disasm(astring &buffer, drcuml_state *drcuml) cons if (drcuml != NULL && (symbol = drcuml->symbol_find(param.memory(), &symoffset)) != NULL) { if (symoffset == 0) - buffer.catprintf("[%s]", symbol); + strcatprintf(buffer, "[%s]", symbol); else - buffer.catprintf("[%s+$%X]", symbol, symoffset); + strcatprintf(buffer, "[%s+$%X]", symbol, symoffset); } // cache memory else if (drcuml != NULL && drcuml->cache().contains_pointer(param.memory())) - buffer.catprintf("[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near())); + strcatprintf(buffer, "[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near())); // general memory else - buffer.catprintf("[[$%p]]", param.memory()); + strcatprintf(buffer, "[[$%p]]", param.memory()); break; } // string pointer case parameter::PTYPE_STRING: - buffer.catprintf("%s", (const char *)(FPTR)param.string()); + strcatprintf(buffer, "%s", (const char *)(FPTR)param.string()); break; // handle pointer case parameter::PTYPE_CODE_HANDLE: - buffer.catprintf("%s", param.handle().string()); + strcatprintf(buffer, "%s", param.handle().string()); break; default: - buffer.catprintf("???"); + strcatprintf(buffer, "???"); break; } } // if there's a condition, append it if (m_condition != COND_ALWAYS) - buffer.catprintf(",%s", conditions[m_condition & 0x0f]); + strcatprintf(buffer, ",%s", conditions[m_condition & 0x0f]); // if there are flags, append them if (m_flags != 0) { - buffer.cat(','); + buffer.push_back(','); if (m_flags & FLAG_U) - buffer.cat('U'); + buffer.push_back('U'); if (m_flags & FLAG_S) - buffer.cat('S'); + buffer.push_back('S'); if (m_flags & FLAG_Z) - buffer.cat('Z'); + buffer.push_back('Z'); if (m_flags & FLAG_V) - buffer.cat('V'); + buffer.push_back('V'); if (m_flags & FLAG_C) - buffer.cat('C'); + buffer.push_back('C'); } return buffer.c_str(); } diff --git a/src/emu/cpu/uml.h b/src/emu/cpu/uml.h index ab94a949c98..6d1e6c2d89a 100644 --- a/src/emu/cpu/uml.h +++ b/src/emu/cpu/uml.h @@ -247,7 +247,7 @@ namespace uml private: // internal state drccodeptr * m_code; // pointer in the cache to the associated code - astring m_string; // pointer to string attached to handle + std::string m_string; // pointer to string attached to handle code_handle * m_next; // link to next handle in the list drcuml_state & m_drcuml; // pointer to owning object }; @@ -409,7 +409,7 @@ namespace uml void set_mapvar(int paramnum, UINT32 value) { assert(paramnum < m_numparams); assert(m_param[paramnum].is_mapvar()); m_param[paramnum] = value; } // misc - const char *disasm(astring &str, drcuml_state *drcuml = NULL) const; + const char *disasm(std::string &str, drcuml_state *drcuml = NULL) const; UINT8 input_flags() const; UINT8 output_flags() const; UINT8 modified_flags() const; diff --git a/src/emu/cpu/upd7725/upd7725.c b/src/emu/cpu/upd7725/upd7725.c index 30833ba254e..20cf81d20b2 100644 --- a/src/emu/cpu/upd7725/upd7725.c +++ b/src/emu/cpu/upd7725/upd7725.c @@ -67,7 +67,7 @@ void necdsp_device::device_start() m_direct = &m_program->direct(); // register our state for the debugger - astring tempstr; + std::string tempstr; state_add(STATE_GENPC, "GENPC", regs.pc).noshow(); state_add(UPD7725_PC, "PC", regs.pc); state_add(UPD7725_RP, "RP", regs.rp); @@ -201,12 +201,12 @@ void necdsp_device::state_export(const device_state_entry &entry) // for the debugger //------------------------------------------------- -void necdsp_device::state_string_export(const device_state_entry &entry, astring &str) +void necdsp_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case UPD7725_FLAGA: - str.printf("%s %s %c%c %s %s %s %s", + strprintf(str, "%s %s %c%c %s %s %s %s", regs.flaga.s1 ? "S1" : "s1", regs.flaga.s0 ? "S0" : "s0", regs.flaga.c ? 'C' : 'c', @@ -218,7 +218,7 @@ void necdsp_device::state_string_export(const device_state_entry &entry, astring break; case UPD7725_FLAGB: - str.printf("%s %s %c%c %s %s %s %s", + strprintf(str, "%s %s %c%c %s %s %s %s", regs.flagb.s1 ? "S1" : "s1", regs.flagb.s0 ? "S0" : "s0", regs.flagb.c ? 'C' : 'c', diff --git a/src/emu/cpu/upd7725/upd7725.h b/src/emu/cpu/upd7725/upd7725.h index e773b72a5ec..904e3771386 100644 --- a/src/emu/cpu/upd7725/upd7725.h +++ b/src/emu/cpu/upd7725/upd7725.h @@ -108,7 +108,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const; diff --git a/src/emu/cpu/upd7810/upd7810.c b/src/emu/cpu/upd7810/upd7810.c index ab847a83775..cf1ded0c32b 100644 --- a/src/emu/cpu/upd7810/upd7810.c +++ b/src/emu/cpu/upd7810/upd7810.c @@ -1732,12 +1732,12 @@ void upd78c05_device::device_start() } -void upd7810_device::state_string_export(const device_state_entry &entry, astring &str) +void upd7810_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%s:%s:%s:%s:%s:%s", + strprintf(str, "%s:%s:%s:%s:%s:%s", m_psw & 0x40 ? "ZF":"--", m_psw & 0x20 ? "SK":"--", m_psw & 0x10 ? "HC":"--", diff --git a/src/emu/cpu/upd7810/upd7810.h b/src/emu/cpu/upd7810/upd7810.h index 93e09ab98d0..adbfc21e733 100644 --- a/src/emu/cpu/upd7810/upd7810.h +++ b/src/emu/cpu/upd7810/upd7810.h @@ -168,7 +168,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/v30mz/v30mz.c b/src/emu/cpu/v30mz/v30mz.c index 8ecb338d2c0..c8fc839c856 100644 --- a/src/emu/cpu/v30mz/v30mz.c +++ b/src/emu/cpu/v30mz/v30mz.c @@ -183,18 +183,18 @@ void v30mz_cpu_device::device_start() } -void v30mz_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void v30mz_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENPC: - str.printf("%08X", pc()); + strprintf(str, "%08X", pc()); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", flags & 0x8000 ? 'M':'.', flags & 0x4000 ? '?':'.', flags & 0x2000 ? '?':'.', diff --git a/src/emu/cpu/v30mz/v30mz.h b/src/emu/cpu/v30mz/v30mz.h index 1c195e6f581..40deaf1fa43 100644 --- a/src/emu/cpu/v30mz/v30mz.h +++ b/src/emu/cpu/v30mz/v30mz.h @@ -42,7 +42,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_IO) ? &m_io_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/v810/v810.c b/src/emu/cpu/v810/v810.c index 8d1189095ff..525447c481f 100644 --- a/src/emu/cpu/v810/v810.c +++ b/src/emu/cpu/v810/v810.c @@ -1317,12 +1317,12 @@ void v810_device::device_start() m_icountptr = &m_icount; } -void v810_device::state_string_export(const device_state_entry &entry, astring &str) +void v810_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", GET_AE ? 'A':'.', GET_NP ? 'N':'.', GET_EP ? 'E':'.', diff --git a/src/emu/cpu/v810/v810.h b/src/emu/cpu/v810/v810.h index 770e5cc4449..b2b87b7d247 100644 --- a/src/emu/cpu/v810/v810.h +++ b/src/emu/cpu/v810/v810.h @@ -99,7 +99,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ((spacenum == AS_IO) ? &m_io_config : NULL); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/cpu/x86log.c b/src/emu/cpu/x86log.c index 95013f1d579..4c311310d96 100644 --- a/src/emu/cpu/x86log.c +++ b/src/emu/cpu/x86log.c @@ -48,7 +48,7 @@ struct data_range_t /* the code logging context */ struct x86log_context { - astring filename; /* name of the file */ + std::string filename; /* name of the file */ FILE * file; /* file we are logging to */ data_range_t data_range[MAX_DATA_RANGES]; /* list of data ranges */ @@ -88,7 +88,7 @@ x86log_context *x86log_create_context(const char *filename) log = global_alloc_clear(x86log_context); /* allocate the filename */ - log->filename.cpy(filename); + log->filename.assign(filename); /* reset things */ reset_log(log); diff --git a/src/emu/cpu/z180/z180.c b/src/emu/cpu/z180/z180.c index 446a83c903a..05a6ff6e5eb 100644 --- a/src/emu/cpu/z180/z180.c +++ b/src/emu/cpu/z180/z180.c @@ -2581,12 +2581,12 @@ void z180_device::state_export(const device_state_entry &entry) } } -void z180_device::state_string_export(const device_state_entry &entry, astring &str) +void z180_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", m_AF.b.l & 0x80 ? 'S':'.', m_AF.b.l & 0x40 ? 'Z':'.', m_AF.b.l & 0x20 ? '5':'.', diff --git a/src/emu/cpu/z180/z180.h b/src/emu/cpu/z180/z180.h index 98c53d773db..53479149502 100644 --- a/src/emu/cpu/z180/z180.h +++ b/src/emu/cpu/z180/z180.h @@ -157,7 +157,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/z8/z8.c b/src/emu/cpu/z8/z8.c index 0b5793deadd..47cc5531b65 100644 --- a/src/emu/cpu/z8/z8.c +++ b/src/emu/cpu/z8/z8.c @@ -678,9 +678,9 @@ void z8_device::device_start() state_add(Z8_T1, "T1", m_t1); state_add(STATE_GENFLAGS, "GENFLAGS", m_r[Z8_REGISTER_FLAGS]).noshow().formatstr("%6s"); - astring tempstr; + std::string tempstr; for (int regnum = 0; regnum < 16; regnum++) - state_add(Z8_R0 + regnum, tempstr.format("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport(); + state_add(Z8_R0 + regnum, strformat(tempstr, "R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport(); } /* find address spaces */ @@ -807,11 +807,11 @@ void z8_device::state_export(const device_state_entry &entry) } } -void z8_device::state_string_export(const device_state_entry &entry, astring &str) +void z8_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { - case STATE_GENFLAGS: str.printf("%c%c%c%c%c%c", + case STATE_GENFLAGS: strprintf(str, "%c%c%c%c%c%c", m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_C ? 'C' : '.', m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_Z ? 'Z' : '.', m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_S ? 'S' : '.', diff --git a/src/emu/cpu/z8/z8.h b/src/emu/cpu/z8/z8.h index a3776d3a0e3..c9a653d58d3 100644 --- a/src/emu/cpu/z8/z8.h +++ b/src/emu/cpu/z8/z8.h @@ -60,7 +60,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/z80/z80.c b/src/emu/cpu/z80/z80.c index c1dce14a44a..13f4a59ab6a 100644 --- a/src/emu/cpu/z80/z80.c +++ b/src/emu/cpu/z80/z80.c @@ -3666,12 +3666,12 @@ void z80_device::state_export( const device_state_entry &entry ) } } -void z80_device::state_string_export(const device_state_entry &entry, astring &str) +void z80_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c", F & 0x80 ? 'S':'.', F & 0x40 ? 'Z':'.', F & 0x20 ? 'Y':'.', diff --git a/src/emu/cpu/z80/z80.h b/src/emu/cpu/z80/z80.h index e60e796a07b..6c8d216c135 100644 --- a/src/emu/cpu/z80/z80.h +++ b/src/emu/cpu/z80/z80.h @@ -58,7 +58,7 @@ protected: // device_state_interface overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 1; } diff --git a/src/emu/cpu/z8000/z8000.c b/src/emu/cpu/z8000/z8000.c index f114f665faa..924313481ec 100644 --- a/src/emu/cpu/z8000/z8000.c +++ b/src/emu/cpu/z8000/z8000.c @@ -648,12 +648,12 @@ void z8002_device::register_debug_state() state_add( STATE_GENSP, "GENSP", m_nspoff ).noshow(); } -void z8002_device::state_string_export(const device_state_entry &entry, astring &str) +void z8002_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", m_fcw & 0x8000 ? 'S':'s', m_fcw & 0x4000 ? 'n':'N', m_fcw & 0x2000 ? 'E':'e', diff --git a/src/emu/cpu/z8000/z8000.h b/src/emu/cpu/z8000/z8000.h index 86a87fc7628..20a15ee6738 100644 --- a/src/emu/cpu/z8000/z8000.h +++ b/src/emu/cpu/z8000/z8000.h @@ -60,7 +60,7 @@ protected: } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 2; } diff --git a/src/emu/debug/debugcmd.c b/src/emu/debug/debugcmd.c index 8e1c485046c..50155dacbe0 100644 --- a/src/emu/debug/debugcmd.c +++ b/src/emu/debug/debugcmd.c @@ -1026,7 +1026,7 @@ static void execute_ignore(running_machine &machine, int ref, int params, const /* if there are no parameters, dump the ignore list */ if (params == 0) { - astring buffer; + std::string buffer; /* loop over all executable devices */ execute_interface_iterator iter(machine.root_device()); @@ -1036,14 +1036,14 @@ static void execute_ignore(running_machine &machine, int ref, int params, const if (!exec->device().debug()->observing()) { if (buffer.empty()) - buffer.printf("Currently ignoring device '%s'", exec->device().tag()); + strprintf(buffer, "Currently ignoring device '%s'", exec->device().tag()); else - buffer.catprintf(", '%s'", exec->device().tag()); + strcatprintf(buffer, ", '%s'", exec->device().tag()); } /* special message for none */ if (buffer.empty()) - buffer.printf("Not currently ignoring any devices"); + strprintf(buffer, "Not currently ignoring any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1091,7 +1091,7 @@ static void execute_observe(running_machine &machine, int ref, int params, const /* if there are no parameters, dump the ignore list */ if (params == 0) { - astring buffer; + std::string buffer; /* loop over all executable devices */ execute_interface_iterator iter(machine.root_device()); @@ -1101,14 +1101,14 @@ static void execute_observe(running_machine &machine, int ref, int params, const if (exec->device().debug()->observing()) { if (buffer.empty()) - buffer.printf("Currently observing CPU '%s'", exec->device().tag()); + strprintf(buffer, "Currently observing CPU '%s'", exec->device().tag()); else - buffer.catprintf(", '%s'", exec->device().tag()); + strcatprintf(buffer, ", '%s'", exec->device().tag()); } /* special message for none */ if (buffer.empty()) - buffer.printf("Not currently observing any devices"); + strprintf(buffer, "Not currently observing any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1315,7 +1315,7 @@ static void execute_bpdisenable(running_machine &machine, int ref, int params, c static void execute_bplist(running_machine &machine, int ref, int params, const char *param[]) { int printed = 0; - astring buffer; + std::string buffer; /* loop over all CPUs */ device_iterator iter(machine.root_device()); @@ -1327,11 +1327,11 @@ static void execute_bplist(running_machine &machine, int ref, int params, const /* loop over the breakpoints */ for (device_debug::breakpoint *bp = device->debug()->breakpoint_first(); bp != NULL; bp = bp->next()) { - buffer.printf("%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars())); - if (astring(bp->condition()).cmp("1")!=0) - buffer.catprintf(" if %s", bp->condition()); - if (astring(bp->action()).cmp("")!=0) - buffer.catprintf(" do %s", bp->action()); + strprintf(buffer, "%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars())); + if (std::string(bp->condition()).compare("1") != 0) + strcatprintf(buffer, " if %s", bp->condition()); + if (std::string(bp->action()).compare("") != 0) + strcatprintf(buffer, " do %s", bp->action()); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } @@ -1478,7 +1478,7 @@ static void execute_wpdisenable(running_machine &machine, int ref, int params, c static void execute_wplist(running_machine &machine, int ref, int params, const char *param[]) { int printed = 0; - astring buffer; + std::string buffer; /* loop over all CPUs */ device_iterator iter(machine.root_device()); @@ -1494,14 +1494,14 @@ static void execute_wplist(running_machine &machine, int ref, int params, const /* loop over the watchpoints */ for (device_debug::watchpoint *wp = device->debug()->watchpoint_first(spacenum); wp != NULL; wp = wp->next()) { - buffer.printf("%c%4X @ %s-%s %s", wp->enabled() ? ' ' : 'D', wp->index(), + strprintf(buffer, "%c%4X @ %s-%s %s", wp->enabled() ? ' ' : 'D', wp->index(), core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars()), core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars()), types[wp->type() & 3]); - if (astring(wp->condition()).cmp("1")!=0) - buffer.catprintf(" if %s", wp->condition()); - if (astring(wp->action()).cmp("")!=0) - buffer.catprintf(" do %s", wp->action()); + if (std::string(wp->condition()).compare("1") != 0) + strcatprintf(buffer, " if %s", wp->condition()); + if (std::string(wp->action()).compare("") != 0) + strcatprintf(buffer, " do %s", wp->action()); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } @@ -1625,7 +1625,7 @@ static void execute_rpdisenable(running_machine &machine, int ref, int params, c static void execute_rplist(running_machine &machine, int ref, int params, const char *param[]) { int printed = 0; - astring buffer; + std::string buffer; /* loop over all CPUs */ device_iterator iter(machine.root_device()); @@ -1637,10 +1637,10 @@ static void execute_rplist(running_machine &machine, int ref, int params, const /* loop over the breakpoints */ for (device_debug::registerpoint *rp = device->debug()->registerpoint_first(); rp != NULL; rp = rp->next()) { - buffer.printf("%c%4X ", rp->enabled() ? ' ' : 'D', rp->index()); - buffer.catprintf("if %s", rp->condition()); + strprintf(buffer, "%c%4X ", rp->enabled() ? ' ' : 'D', rp->index()); + strcatprintf(buffer, "if %s", rp->condition()); if (rp->action() != NULL) - buffer.catprintf(" do %s", rp->action()); + strcatprintf(buffer, " do %s", rp->action()); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } @@ -1701,7 +1701,7 @@ static void execute_hotspot(running_machine &machine, int ref, int params, const static void execute_statesave(running_machine &machine, int ref, int params, const char *param[]) { - astring filename(param[0]); + std::string filename(param[0]); machine.immediate_save(filename.c_str()); debug_console_printf(machine, "State save attempted. Please refer to window message popup for results.\n"); } @@ -1713,7 +1713,7 @@ static void execute_statesave(running_machine &machine, int ref, int params, con static void execute_stateload(running_machine &machine, int ref, int params, const char *param[]) { - astring filename(param[0]); + std::string filename(param[0]); machine.immediate_load(filename.c_str()); // Clear all PC & memory tracks @@ -2571,10 +2571,10 @@ static void execute_trace_internal(running_machine &machine, int ref, int params device_t *cpu; FILE *f = NULL; const char *mode; - astring filename = param[0]; + std::string filename = param[0]; /* replace macros */ - filename.replace("{game}", machine.basename()); + strreplace(filename, "{game}", machine.basename()); /* validate parameters */ if (!debug_command_parameter_cpu(machine, (params > 1) ? param[1] : NULL, &cpu)) @@ -2831,9 +2831,9 @@ static void execute_snap(running_machine &machine, int ref, int params, const ch return; } - astring fname(filename); - if (fname.find(0, ".png") == -1) - fname.cat(".png"); + std::string fname(filename); + if (fname.find(".png") == -1) + fname.append(".png"); emu_file file(machine.options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); file_error filerr = file.open(fname.c_str()); @@ -3096,7 +3096,7 @@ static void execute_dumpkbd(running_machine &machine, int ref, int params, const } // loop through all codes - astring buffer = machine.ioport().natkeyboard().dump(); + std::string buffer = machine.ioport().natkeyboard().dump(); // and output it as appropriate if (file != NULL) diff --git a/src/emu/debug/debugcon.c b/src/emu/debug/debugcon.c index 639e6e479db..669ce24c92e 100644 --- a/src/emu/debug/debugcon.c +++ b/src/emu/debug/debugcon.c @@ -475,11 +475,11 @@ const char *debug_cmderr_to_string(CMDERR error) void CLIB_DECL debug_console_printf(running_machine &machine, const char *format, ...) { - astring buffer; + std::string buffer; va_list arg; va_start(arg, format); - buffer.vprintf(format, arg); + strvprintf(buffer, format, arg); va_end(arg); text_buffer_print(console_textbuf, buffer.c_str()); @@ -497,9 +497,9 @@ void CLIB_DECL debug_console_printf(running_machine &machine, const char *format void CLIB_DECL debug_console_vprintf(running_machine &machine, const char *format, va_list args) { - astring buffer; + std::string buffer; - buffer.vprintf(format, args); + strvprintf(buffer, format, args); text_buffer_print(console_textbuf, buffer.c_str()); /* force an update of any console views */ @@ -515,11 +515,11 @@ void CLIB_DECL debug_console_vprintf(running_machine &machine, const char *forma void CLIB_DECL debug_console_printf_wrap(running_machine &machine, int wrapcol, const char *format, ...) { - astring buffer; + std::string buffer; va_list arg; va_start(arg, format); - buffer.vprintf(format, arg); + strvprintf(buffer, format, arg); va_end(arg); text_buffer_print_wrap(console_textbuf, buffer.c_str(), wrapcol); diff --git a/src/emu/debug/debugcpu.c b/src/emu/debug/debugcpu.c index 02b939716cb..9e3d8121344 100644 --- a/src/emu/debug/debugcpu.c +++ b/src/emu/debug/debugcpu.c @@ -1109,8 +1109,8 @@ static void process_source_file(running_machine &machine) static device_t *expression_get_device(running_machine &machine, const char *tag) { // convert to lowercase then lookup the name (tags are enforced to be all lower case) - astring fullname(tag); - fullname.makelower(); + std::string fullname(tag); + strmakelower(fullname); return machine.device(fullname.c_str()); } @@ -1666,9 +1666,11 @@ device_debug::device_debug(device_t &device) } // add all registers into it - astring tempstr; - for (const device_state_entry *entry = m_state->state_first(); entry != NULL; entry = entry->next()) - m_symtable.add(tempstr.cpy(entry->symbol()).makelower().c_str(), (void *)(FPTR)entry->index(), get_state, set_state); + std::string tempstr; + for (const device_state_entry *entry = m_state->state_first(); entry != NULL; entry = entry->next()) { + strmakelower(tempstr.assign(entry->symbol())); + m_symtable.add(tempstr.c_str(), (void *)(FPTR)entry->index(), get_state, set_state); + } } // set up execution-related stuff @@ -2681,7 +2683,7 @@ const char *device_debug::comment_text(offs_t addr) const bool device_debug::comment_export(xml_data_node &curnode) { // iterate through the comments - astring crc_buf; + std::string crc_buf; for (std::set::iterator item = m_comment_set.begin(); item != m_comment_set.end(); ++item) { xml_data_node *datanode = xml_add_child(&curnode, "comment", xml_normalize_string(item->m_text.c_str())); @@ -2689,7 +2691,7 @@ bool device_debug::comment_export(xml_data_node &curnode) return false; xml_set_attribute_int(datanode, "address", item->m_address); xml_set_attribute_int(datanode, "color", item->m_color); - crc_buf.printf("%08X", item->m_crc); + strprintf(crc_buf,"%08X", item->m_crc); xml_set_attribute(datanode, "crc", crc_buf.c_str()); } return true; @@ -2831,7 +2833,7 @@ void device_debug::compute_debug_flags() void device_debug::prepare_for_step_overout(offs_t pc) { // disassemble the current instruction and get the flags - astring dasmbuffer; + std::string dasmbuffer; offs_t dasmresult = dasm_wrapped(dasmbuffer, pc); // if flags are supported and it's a call-style opcode, set a temp breakpoint after that instruction @@ -3048,18 +3050,18 @@ void device_debug::watchpoint_check(address_space &space, int type, offs_t addre "0bytes", "byte", "word", "3bytes", "dword", "5bytes", "6bytes", "7bytes", "qword" }; offs_t pc = (space.device().debug()->m_state != NULL) ? space.device().debug()->m_state->pc() : 0; - astring buffer; + std::string buffer; if (type & WATCHPOINT_WRITE) { - buffer.printf("Stopped at watchpoint %X writing %s to %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); + strprintf(buffer, "Stopped at watchpoint %X writing %s to %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); if (value_to_write >> 32) - buffer.catprintf(" (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write); + strcatprintf(buffer, " (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write); else - buffer.catprintf(" (data=%X)", (UINT32)value_to_write); + strcatprintf(buffer, " (data=%X)", (UINT32)value_to_write); } else - buffer.printf("Stopped at watchpoint %X reading %s from %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); + strprintf(buffer,"Stopped at watchpoint %X reading %s from %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); debug_console_printf(space.machine(), "%s\n", buffer.c_str()); space.device().debug()->compute_debug_flags(); } @@ -3121,7 +3123,7 @@ void device_debug::hotspot_check(address_space &space, offs_t address) // buffer and then disassembling them //------------------------------------------------- -UINT32 device_debug::dasm_wrapped(astring &buffer, offs_t pc) +UINT32 device_debug::dasm_wrapped(std::string &buffer, offs_t pc) { assert(m_memory != NULL && m_disasm != NULL); @@ -3142,7 +3144,7 @@ UINT32 device_debug::dasm_wrapped(astring &buffer, offs_t pc) char diasmbuf[200]; memset(diasmbuf, 0x00, 200); UINT32 result = disassemble(diasmbuf, pc, opbuf, argbuf); - buffer.cpy(diasmbuf); + buffer.assign(diasmbuf); return result; } @@ -3484,14 +3486,14 @@ void device_debug::tracer::update(offs_t pc) debug_console_execute_command(m_debug.m_device.machine(), m_action.c_str(), 0); // print the address - astring buffer; + std::string buffer; int logaddrchars = m_debug.logaddrchars(); - buffer.printf("%0*X: ", logaddrchars, pc); + strprintf(buffer,"%0*X: ", logaddrchars, pc); // print the disassembly - astring dasm; + std::string dasm; offs_t dasmresult = m_debug.dasm_wrapped(dasm, pc); - buffer.cat(dasm); + buffer.append(dasm); // output the result fprintf(&m_file, "%s\n", buffer.c_str()); diff --git a/src/emu/debug/debugcpu.h b/src/emu/debug/debugcpu.h index cf92fda6f7c..1cfacc267b0 100644 --- a/src/emu/debug/debugcpu.h +++ b/src/emu/debug/debugcpu.h @@ -83,7 +83,7 @@ public: UINT8 m_enabled; // enabled? offs_t m_address; // execution address parsed_expression m_condition; // condition - astring m_action; // action + std::string m_action; // action }; // watchpoint class @@ -131,7 +131,7 @@ public: offs_t m_address; // start address offs_t m_length; // length of watch area parsed_expression m_condition; // condition - astring m_action; // action + std::string m_action; // action }; // registerpoint class @@ -158,7 +158,7 @@ public: int m_index; // user reported index UINT8 m_enabled; // enabled? parsed_expression m_condition; // condition - astring m_action; // action + std::string m_action; // action }; public: @@ -278,7 +278,7 @@ private: // internal helpers void compute_debug_flags(); void prepare_for_step_overout(offs_t pc); - UINT32 dasm_wrapped(astring &buffer, offs_t pc); + UINT32 dasm_wrapped(std::string &buffer, offs_t pc); // breakpoint and watchpoint helpers void breakpoint_update_flags(); @@ -351,7 +351,7 @@ private: device_debug & m_debug; // reference to our owner FILE & m_file; // tracing file for this CPU - astring m_action; // action to perform during a trace + std::string m_action; // action to perform during a trace offs_t m_history[TRACE_LOOPS]; // history of recent PCs int m_loops; // number of instructions in a loop int m_nextdex; // next index @@ -399,7 +399,7 @@ private: public: dasm_comment(offs_t address, UINT32 crc, const char *text, rgb_t color); - astring m_text; // Stores comment text & color for a given address & crc32 + std::string m_text; // Stores comment text & color for a given address & crc32 rgb_t m_color; }; std::set m_comment_set; // collection of comments diff --git a/src/emu/debug/debugvw.c b/src/emu/debug/debugvw.c index dd568e81d3d..d04b48b162a 100644 --- a/src/emu/debug/debugvw.c +++ b/src/emu/debug/debugvw.c @@ -501,7 +501,7 @@ bool debug_view_expression::recompute() // if dirty, re-evaluate if (m_dirty) { - astring oldstring(m_parsed.original_string()); + std::string oldstring(m_parsed.original_string()); try { m_parsed.parse(m_string.c_str()); diff --git a/src/emu/debug/debugvw.h b/src/emu/debug/debugvw.h index 462316a19e4..248379eab3c 100644 --- a/src/emu/debug/debugvw.h +++ b/src/emu/debug/debugvw.h @@ -129,7 +129,7 @@ public: private: // internal state debug_view_source * m_next; // link to next item - astring m_name; // name of the source item + std::string m_name; // name of the source item device_t * m_device; // associated device (if applicable) bool m_is_octal; // is view in octal or hex }; @@ -271,7 +271,7 @@ public: // setters void mark_dirty() { m_dirty = true; } - void set_string(const char *string) { m_string.cpy(string); m_dirty = true; } + void set_string(const char *string) { m_string.assign(string); m_dirty = true; } void set_context(symbol_table *context); private: @@ -283,7 +283,7 @@ private: bool m_dirty; // true if the expression needs to be re-evaluated UINT64 m_result; // last result from the expression parsed_expression m_parsed; // parsed expression data - astring m_string; // copy of the expression string + std::string m_string; // copy of the expression string }; diff --git a/src/emu/debug/dvbpoints.c b/src/emu/debug/dvbpoints.c index db393556639..2e4e16de68f 100644 --- a/src/emu/debug/dvbpoints.c +++ b/src/emu/debug/dvbpoints.c @@ -132,8 +132,8 @@ void debug_view_breakpoints::enumerate_sources() disasm_interface_iterator iter(machine().root_device()); for (device_disasm_interface *dasm = iter.first(); dasm != NULL; dasm = iter.next()) { - astring name; - name.printf("%s '%s'", dasm->device().name(), dasm->device().tag()); + std::string name; + strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag()); m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device()))); } @@ -187,16 +187,15 @@ void debug_view_breakpoints::view_click(const int button, const debug_view_xy& p } -void debug_view_breakpoints::pad_astring_to_length(astring& str, int len) +void debug_view_breakpoints::pad_astring_to_length(std::string& str, int len) { - int diff = len - str.len(); + int diff = len - str.length(); if (diff > 0) { - astring buffer; - buffer.expand(diff); + std::string buffer; for (int i = 0; i < diff; i++) - buffer.catprintf(" "); - str.catprintf("%s", buffer.c_str()); + strcatprintf(buffer, " "); + strcatprintf(str, "%s", buffer.c_str()); } } @@ -236,40 +235,40 @@ void debug_view_breakpoints::view_update() // Draw debug_view_char *dest = &m_viewdata[0]; - astring linebuf; + std::string linebuf; // Header if (m_visible.y > 0) { - linebuf.reset(); - linebuf.cat("ID"); - if (m_sortType == &cIndexAscending) linebuf.cat('\\'); - else if (m_sortType == &cIndexDescending) linebuf.cat('/'); + linebuf.clear(); + linebuf.append("ID"); + if (m_sortType == &cIndexAscending) linebuf.push_back('\\'); + else if (m_sortType == &cIndexDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[0]); - linebuf.cat("En"); - if (m_sortType == &cEnabledAscending) linebuf.cat('\\'); - else if (m_sortType == &cEnabledDescending) linebuf.cat('/'); + linebuf.append("En"); + if (m_sortType == &cEnabledAscending) linebuf.push_back('\\'); + else if (m_sortType == &cEnabledDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[1]); - linebuf.cat("CPU"); - if (m_sortType == &cCpuAscending) linebuf.cat('\\'); - else if (m_sortType == &cCpuDescending) linebuf.cat('/'); + linebuf.append("CPU"); + if (m_sortType == &cCpuAscending) linebuf.push_back('\\'); + else if (m_sortType == &cCpuDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[2]); - linebuf.cat("Address"); - if (m_sortType == &cAddressAscending) linebuf.cat('\\'); - else if (m_sortType == &cAddressDescending) linebuf.cat('/'); + linebuf.append("Address"); + if (m_sortType == &cAddressAscending) linebuf.push_back('\\'); + else if (m_sortType == &cAddressDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[3]); - linebuf.cat("Condition"); - if (m_sortType == &cConditionAscending) linebuf.cat('\\'); - else if (m_sortType == &cConditionDescending) linebuf.cat('/'); + linebuf.append("Condition"); + if (m_sortType == &cConditionAscending) linebuf.push_back('\\'); + else if (m_sortType == &cConditionDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[4]); - linebuf.cat("Action"); - if (m_sortType == &cActionAscending) linebuf.cat('\\'); - else if (m_sortType == &cActionDescending) linebuf.cat('/'); + linebuf.append("Action"); + if (m_sortType == &cActionAscending) linebuf.push_back('\\'); + else if (m_sortType == &cActionDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[5]); for (UINT32 i = m_topleft.x; i < (m_topleft.x + m_visible.x); i++, dest++) { - dest->byte = (i < linebuf.len()) ? linebuf[i] : ' '; + dest->byte = (i < linebuf.length()) ? linebuf[i] : ' '; dest->attrib = DCA_ANCILLARY; } } @@ -282,24 +281,24 @@ void debug_view_breakpoints::view_update() { device_debug::breakpoint *const bp = m_buffer[bpi]; - linebuf.reset(); - linebuf.catprintf("%2X", bp->index()); + linebuf.clear(); + strcatprintf(linebuf, "%2X", bp->index()); pad_astring_to_length(linebuf, tableBreaks[0]); - linebuf.cat(bp->enabled() ? 'X' : 'O'); + linebuf.push_back(bp->enabled() ? 'X' : 'O'); pad_astring_to_length(linebuf, tableBreaks[1]); - linebuf.cat(bp->debugInterface()->device().tag()); + linebuf.append(bp->debugInterface()->device().tag()); pad_astring_to_length(linebuf, tableBreaks[2]); - linebuf.cat(core_i64_hex_format(bp->address(), bp->debugInterface()->logaddrchars())); + linebuf.append(core_i64_hex_format(bp->address(), bp->debugInterface()->logaddrchars())); pad_astring_to_length(linebuf, tableBreaks[3]); if (strcmp(bp->condition(), "1")) - linebuf.cat(bp->condition()); + linebuf.append(bp->condition()); pad_astring_to_length(linebuf, tableBreaks[4]); - linebuf.cat(bp->action()); + linebuf.append(bp->action()); pad_astring_to_length(linebuf, tableBreaks[5]); for (UINT32 i = m_topleft.x; i < (m_topleft.x + m_visible.x); i++, dest++) { - dest->byte = (i < linebuf.len()) ? linebuf[i] : ' '; + dest->byte = (i < linebuf.length()) ? linebuf[i] : ' '; dest->attrib = DCA_NORMAL; // Color disabled breakpoints red diff --git a/src/emu/debug/dvbpoints.h b/src/emu/debug/dvbpoints.h index 59a446f8a03..1ee3cdcb510 100644 --- a/src/emu/debug/dvbpoints.h +++ b/src/emu/debug/dvbpoints.h @@ -46,7 +46,7 @@ protected: private: // internal helpers void enumerate_sources(); - void pad_astring_to_length(astring& str, int len); + void pad_astring_to_length(std::string& str, int len); void gather_breakpoints(); diff --git a/src/emu/debug/dvdisasm.c b/src/emu/debug/dvdisasm.c index 79453127662..d29ab590fd4 100644 --- a/src/emu/debug/dvdisasm.c +++ b/src/emu/debug/dvdisasm.c @@ -95,10 +95,10 @@ void debug_view_disasm::enumerate_sources() // iterate over devices with disassembly interfaces disasm_interface_iterator iter(machine().root_device()); - astring name; + std::string name; for (device_disasm_interface *dasm = iter.first(); dasm != NULL; dasm = iter.next()) { - name.printf("%s '%s'", dasm->device().name(), dasm->device().tag()); + strprintf(name,"%s '%s'", dasm->device().name(), dasm->device().tag()); m_source_list.append(*global_alloc(debug_view_disasm_source(name.c_str(), dasm->device()))); } diff --git a/src/emu/debug/dvmemory.c b/src/emu/debug/dvmemory.c index 7ccea671324..a81e032ce48 100644 --- a/src/emu/debug/dvmemory.c +++ b/src/emu/debug/dvmemory.c @@ -127,7 +127,7 @@ void debug_view_memory::enumerate_sources() { // start with an empty list m_source_list.reset(); - astring name; + std::string name; // first add all the devices' address spaces memory_interface_iterator iter(machine().root_device()); @@ -137,14 +137,14 @@ void debug_view_memory::enumerate_sources() if (memintf->has_space(spacenum)) { address_space &space = memintf->space(spacenum); - name.printf("%s '%s' %s space memory", memintf->device().name(), memintf->device().tag(), space.name()); + strprintf(name,"%s '%s' %s space memory", memintf->device().name(), memintf->device().tag(), space.name()); m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), space))); } // then add all the memory regions for (memory_region *region = machine().memory().first_region(); region != NULL; region = region->next()) { - name.printf("Region '%s'", region->name()); + strprintf(name, "Region '%s'", region->name()); m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), *region))); } @@ -162,7 +162,7 @@ void debug_view_memory::enumerate_sources() // also, don't trim the front of the name, it's important to know which VIA6522 we're looking at, e.g. if (strncmp(itemname, "timer/", 6)) { - name.cpy(itemname); + name.assign(itemname); m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), base, valsize, valcount))); } } @@ -451,14 +451,14 @@ void debug_view_memory::recompute() else { m_maxaddr = source.m_length - 1; - addrchars = m_addrformat.printf("%X", m_maxaddr); + addrchars = strprintf(m_addrformat, "%X", m_maxaddr); } // generate an 8-byte aligned format for the address if (!m_reverse_view) - m_addrformat.printf("%*s%%0%dX", 8 - addrchars, "", addrchars); + strprintf(m_addrformat, "%*s%%0%dX", 8 - addrchars, "", addrchars); else - m_addrformat.printf("%%0%dX%*s", addrchars, 8 - addrchars, ""); + strprintf(m_addrformat, "%%0%dX%*s", addrchars, 8 - addrchars, ""); // if we are viewing a space with a minimum chunk size, clamp the bytes per chunk if (source.m_space != NULL && source.m_space->byte_to_address(1) > 1) diff --git a/src/emu/debug/dvmemory.h b/src/emu/debug/dvmemory.h index 69db37b3102..e3d743169a5 100644 --- a/src/emu/debug/dvmemory.h +++ b/src/emu/debug/dvmemory.h @@ -108,7 +108,7 @@ private: offs_t m_maxaddr; // (derived) maximum address to display UINT32 m_bytes_per_row; // (derived) number of bytes displayed per line UINT32 m_byte_offset; // (derived) offset of starting visible byte - astring m_addrformat; // (derived) format string to use to print addresses + std::string m_addrformat; // (derived) format string to use to print addresses struct section { diff --git a/src/emu/debug/dvstate.c b/src/emu/debug/dvstate.c index 4d5ab739d00..8e5906be416 100644 --- a/src/emu/debug/dvstate.c +++ b/src/emu/debug/dvstate.c @@ -75,10 +75,10 @@ void debug_view_state::enumerate_sources() // iterate over devices that have state interfaces state_interface_iterator iter(machine().root_device()); - astring name; + std::string name; for (device_state_interface *state = iter.first(); state != NULL; state = iter.next()) { - name.printf("%s '%s'", state->device().name(), state->device().tag()); + strprintf(name,"%s '%s'", state->device().name(), state->device().tag()); m_source_list.append(*global_alloc(debug_view_state_source(name.c_str(), state->device()))); } @@ -160,7 +160,7 @@ void debug_view_state::recompute() for (state_item *item = m_state_list; item != NULL; item = item->m_next) { count++; - maxtaglen = MAX(maxtaglen, item->m_symbol.len()); + maxtaglen = MAX(maxtaglen, item->m_symbol.length()); maxvallen = MAX(maxvallen, item->m_vallen); } @@ -223,7 +223,7 @@ void debug_view_state::view_update() UINT32 effcol = m_topleft.x; UINT8 attrib = DCA_NORMAL; UINT32 len = 0; - astring valstr; + std::string valstr; // get the effective string if (curitem->m_index >= REG_FRAME && curitem->m_index <= REG_DIVIDER) @@ -233,16 +233,16 @@ void debug_view_state::view_update() { case REG_DIVIDER: curitem->m_vallen = 0; - curitem->m_symbol.reset(); + curitem->m_symbol.clear(); for (int i = 0; i < m_total.x; i++) - curitem->m_symbol.cat("-"); + curitem->m_symbol.append("-"); break; case REG_CYCLES: if (source.m_execintf != NULL) { curitem->m_currval = source.m_execintf->cycles_remaining(); - valstr.printf("%-8d", (UINT32)curitem->m_currval); + strprintf(valstr, "%-8d", (UINT32)curitem->m_currval); } break; @@ -250,7 +250,7 @@ void debug_view_state::view_update() if (screen != NULL) { curitem->m_currval = screen->hpos(); - valstr.printf("%4d", (UINT32)curitem->m_currval); + strprintf(valstr, "%4d", (UINT32)curitem->m_currval); } break; @@ -258,7 +258,7 @@ void debug_view_state::view_update() if (screen != NULL) { curitem->m_currval = screen->vpos(); - valstr.printf("%4d", (UINT32)curitem->m_currval); + strprintf(valstr, "%4d", (UINT32)curitem->m_currval); } break; @@ -266,7 +266,7 @@ void debug_view_state::view_update() if (screen != NULL) { curitem->m_currval = screen->frame_number(); - valstr.printf("%6d", (UINT32)curitem->m_currval); + strprintf(valstr, "%6d", (UINT32)curitem->m_currval); } break; } @@ -285,14 +285,14 @@ void debug_view_state::view_update() // build up a string char temp[256]; - if (curitem->m_symbol.len() < m_divider - 1) + if (curitem->m_symbol.length() < m_divider - 1) { - memset(&temp[len], ' ', m_divider - 1 - curitem->m_symbol.len()); - len += m_divider - 1 - curitem->m_symbol.len(); + memset(&temp[len], ' ', m_divider - 1 - curitem->m_symbol.length()); + len += m_divider - 1 - curitem->m_symbol.length(); } - memcpy(&temp[len], curitem->m_symbol.c_str(), curitem->m_symbol.len()); - len += curitem->m_symbol.len(); + memcpy(&temp[len], curitem->m_symbol.c_str(), curitem->m_symbol.length()); + len += curitem->m_symbol.length(); temp[len++] = ' '; temp[len++] = ' '; diff --git a/src/emu/debug/dvstate.h b/src/emu/debug/dvstate.h index 932d4b80a41..88930587d7b 100644 --- a/src/emu/debug/dvstate.h +++ b/src/emu/debug/dvstate.h @@ -63,7 +63,7 @@ private: UINT64 m_currval; // current value int m_index; // index UINT8 m_vallen; // number of value chars - astring m_symbol; // symbol + std::string m_symbol; // symbol }; // internal helpers diff --git a/src/emu/debug/dvwpoints.c b/src/emu/debug/dvwpoints.c index d8b447a568a..2e5f89b24f3 100644 --- a/src/emu/debug/dvwpoints.c +++ b/src/emu/debug/dvwpoints.c @@ -154,8 +154,8 @@ void debug_view_watchpoints::enumerate_sources() disasm_interface_iterator iter(machine().root_device()); for (device_disasm_interface *dasm = iter.first(); dasm != NULL; dasm = iter.next()) { - astring name; - name.printf("%s '%s'", dasm->device().name(), dasm->device().tag()); + std::string name; + strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag()); m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device()))); } @@ -211,16 +211,15 @@ void debug_view_watchpoints::view_click(const int button, const debug_view_xy& p } -void debug_view_watchpoints::pad_astring_to_length(astring& str, int len) +void debug_view_watchpoints::pad_astring_to_length(std::string& str, int len) { - int diff = len - str.len(); + int diff = len - str.length(); if (diff > 0) { - astring buffer; - buffer.expand(diff); + std::string buffer; for (int i = 0; i < diff; i++) - buffer.catprintf(" "); - str.catprintf("%s", buffer.c_str()); + buffer.append(" "); + strcatprintf(str, "%s", buffer.c_str()); } } @@ -263,48 +262,48 @@ void debug_view_watchpoints::view_update() // Draw debug_view_char *dest = &m_viewdata[0]; - astring linebuf; + std::string linebuf; // Header if (m_visible.y > 0) { - linebuf.reset(); - linebuf.cat("ID"); - if (m_sortType == &cIndexAscending) linebuf.cat('\\'); - else if (m_sortType == &cIndexDescending) linebuf.cat('/'); + linebuf.clear(); + linebuf.append("ID"); + if (m_sortType == &cIndexAscending) linebuf.push_back('\\'); + else if (m_sortType == &cIndexDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[0]); - linebuf.cat("En"); - if (m_sortType == &cEnabledAscending) linebuf.cat('\\'); - else if (m_sortType == &cEnabledDescending) linebuf.cat('/'); + linebuf.append("En"); + if (m_sortType == &cEnabledAscending) linebuf.push_back('\\'); + else if (m_sortType == &cEnabledDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[1]); - linebuf.cat("CPU"); - if (m_sortType == &cCpuAscending) linebuf.cat('\\'); - else if (m_sortType == &cCpuDescending) linebuf.cat('/'); + linebuf.append("CPU"); + if (m_sortType == &cCpuAscending) linebuf.push_back('\\'); + else if (m_sortType == &cCpuDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[2]); - linebuf.cat("Space"); - if (m_sortType == &cSpaceAscending) linebuf.cat('\\'); - else if (m_sortType == &cSpaceDescending) linebuf.cat('/'); + linebuf.append("Space"); + if (m_sortType == &cSpaceAscending) linebuf.push_back('\\'); + else if (m_sortType == &cSpaceDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[3]); - linebuf.cat("Addresses"); - if (m_sortType == &cAddressAscending) linebuf.cat('\\'); - else if (m_sortType == &cAddressDescending) linebuf.cat('/'); + linebuf.append("Addresses"); + if (m_sortType == &cAddressAscending) linebuf.push_back('\\'); + else if (m_sortType == &cAddressDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[4]); - linebuf.cat("Type"); - if (m_sortType == &cTypeAscending) linebuf.cat('\\'); - else if (m_sortType == &cTypeDescending) linebuf.cat('/'); + linebuf.append("Type"); + if (m_sortType == &cTypeAscending) linebuf.push_back('\\'); + else if (m_sortType == &cTypeDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[5]); - linebuf.cat("Condition"); - if (m_sortType == &cConditionAscending) linebuf.cat('\\'); - else if (m_sortType == &cConditionDescending) linebuf.cat('/'); + linebuf.append("Condition"); + if (m_sortType == &cConditionAscending) linebuf.push_back('\\'); + else if (m_sortType == &cConditionDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[6]); - linebuf.cat("Action"); - if (m_sortType == &cActionAscending) linebuf.cat('\\'); - else if (m_sortType == &cActionDescending) linebuf.cat('/'); + linebuf.append("Action"); + if (m_sortType == &cActionAscending) linebuf.push_back('\\'); + else if (m_sortType == &cActionDescending) linebuf.push_back('/'); pad_astring_to_length(linebuf, tableBreaks[7]); for (UINT32 i = m_topleft.x; i < (m_topleft.x + m_visible.x); i++, dest++) { - dest->byte = (i < linebuf.len()) ? linebuf[i] : ' '; + dest->byte = (i < linebuf.length()) ? linebuf[i] : ' '; dest->attrib = DCA_ANCILLARY; } } @@ -318,30 +317,30 @@ void debug_view_watchpoints::view_update() static char const *const types[] = { "unkn ", "read ", "write", "r/w " }; device_debug::watchpoint *const wp = m_buffer[wpi]; - linebuf.reset(); - linebuf.catprintf("%2X", wp->index()); + linebuf.clear(); + strcatprintf(linebuf, "%2X", wp->index()); pad_astring_to_length(linebuf, tableBreaks[0]); - linebuf.cat(wp->enabled() ? 'X' : 'O'); + linebuf.push_back(wp->enabled() ? 'X' : 'O'); pad_astring_to_length(linebuf, tableBreaks[1]); - linebuf.cat(wp->debugInterface()->device().tag()); + linebuf.append(wp->debugInterface()->device().tag()); pad_astring_to_length(linebuf, tableBreaks[2]); - linebuf.cat(wp->space().name()); + linebuf.append(wp->space().name()); pad_astring_to_length(linebuf, tableBreaks[3]); - linebuf.cat(core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars())); - linebuf.cat('-'); - linebuf.cat(core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars())); + linebuf.append(core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars())); + linebuf.push_back('-'); + linebuf.append(core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars())); pad_astring_to_length(linebuf, tableBreaks[4]); - linebuf.cat(types[wp->type() & 3]); + linebuf.append(types[wp->type() & 3]); pad_astring_to_length(linebuf, tableBreaks[5]); if (strcmp(wp->condition(), "1")) - linebuf.cat(wp->condition()); + linebuf.append(wp->condition()); pad_astring_to_length(linebuf, tableBreaks[6]); - linebuf.cat(wp->action()); + linebuf.append(wp->action()); pad_astring_to_length(linebuf, tableBreaks[7]); for (UINT32 i = m_topleft.x; i < (m_topleft.x + m_visible.x); i++, dest++) { - dest->byte = (i < linebuf.len()) ? linebuf[i] : ' '; + dest->byte = (i < linebuf.length()) ? linebuf[i] : ' '; dest->attrib = DCA_NORMAL; // Color disabled watchpoints red diff --git a/src/emu/debug/dvwpoints.h b/src/emu/debug/dvwpoints.h index fc6b641effc..e56c992cb8d 100644 --- a/src/emu/debug/dvwpoints.h +++ b/src/emu/debug/dvwpoints.h @@ -42,7 +42,7 @@ protected: private: // internal helpers void enumerate_sources(); - void pad_astring_to_length(astring& str, int len); + void pad_astring_to_length(std::string& str, int len); void gather_watchpoints(); diff --git a/src/emu/debug/express.c b/src/emu/debug/express.c index 46a4ff22efc..a37a7796f5f 100644 --- a/src/emu/debug/express.c +++ b/src/emu/debug/express.c @@ -579,7 +579,7 @@ parsed_expression::parsed_expression(symbol_table *symtable, const char *express void parsed_expression::parse(const char *expression) { // copy the string and reset our parsing state - m_original_string.cpy(expression); + m_original_string.assign(expression); m_tokenlist.reset(); m_stringlist.reset(); @@ -598,7 +598,7 @@ void parsed_expression::parse(const char *expression) void parsed_expression::copy(const parsed_expression &src) { m_symtable = src.m_symtable; - m_original_string.cpy(src.m_original_string); + m_original_string.assign(src.m_original_string); if (!m_original_string.empty()) parse_string_into_tokens(); } @@ -1033,7 +1033,7 @@ void parsed_expression::parse_quoted_string(parse_token &token, const char *&str { // accumulate a copy of the quoted string string++; - astring buffer; + std::string buffer; while (string[0] != 0) { // allow "" to mean a nested double-quote @@ -1043,7 +1043,7 @@ void parsed_expression::parse_quoted_string(parse_token &token, const char *&str break; string++; } - buffer.cat(string++, 1); + buffer.append(string++, 1); } // if we didn't find the ending quote, report an error diff --git a/src/emu/debug/express.h b/src/emu/debug/express.h index 3063f5e9c04..37f357b0830 100644 --- a/src/emu/debug/express.h +++ b/src/emu/debug/express.h @@ -135,7 +135,7 @@ protected: symbol_entry * m_next; // link to next entry symbol_table & m_table; // pointer back to the owning table symbol_type m_type; // type of symbol - astring m_name; // name of the symbol + std::string m_name; // name of the symbol void * m_ref; // internal reference }; @@ -341,7 +341,7 @@ private: private: // internal state expression_string * m_next; // next string in list - astring m_string; // copy of the string + std::string m_string; // copy of the string }; // internal helpers @@ -373,7 +373,7 @@ private: // internal state symbol_table * m_symtable; // symbol table - astring m_original_string; // original string (prior to parsing) + std::string m_original_string; // original string (prior to parsing) simple_list m_tokenlist; // token list simple_list m_stringlist; // string list int m_token_stack_ptr; // stack pointer (used during execution) diff --git a/src/emu/devfind.h b/src/emu/devfind.h index 38f7705ca0a..2493a66782f 100644 --- a/src/emu/devfind.h +++ b/src/emu/devfind.h @@ -267,8 +267,9 @@ public: // construction/destruction ioport_array_finder(device_t &base, const char *basetag) { - for (int index = 0; index < _Count; index++) - m_array[index].reset(global_alloc(ioport_finder_type(base, m_tag[index].format("%s.%d", basetag, index).c_str()))); + for (int index = 0; index < _Count; index++) { + m_array[index].reset(global_alloc(ioport_finder_type(base, strformat(m_tag[index], "%s.%d", basetag, index).c_str()))); + } } ioport_array_finder(device_t &base, const char * const *tags) @@ -284,7 +285,7 @@ public: protected: // internal state auto_pointer m_array[_Count]; - astring m_tag[_Count]; + std::string m_tag[_Count]; }; // optional ioport array finder @@ -436,7 +437,7 @@ public: shared_ptr_array_finder(device_t &base, const char *basetag, UINT8 width = sizeof(_PointerType) * 8) { for (int index = 0; index < _Count; index++) - m_array[index].reset(global_alloc(shared_ptr_type(base, m_tag[index].format("%s.%d", basetag, index).c_str(), width))); + m_array[index].reset(global_alloc(shared_ptr_type(base, strformat(m_tag[index],"%s.%d", basetag, index).c_str(), width))); } // array accessors @@ -446,7 +447,7 @@ public: protected: // internal state auto_pointer m_array[_Count]; - astring m_tag[_Count]; + std::string m_tag[_Count]; }; // optional shared pointer array finder diff --git a/src/emu/diimage.c b/src/emu/diimage.c index 45474cca2c6..060e2a1b040 100644 --- a/src/emu/diimage.c +++ b/src/emu/diimage.c @@ -151,30 +151,31 @@ image_error_t device_image_interface::set_image_filename(const char *filename) { m_image_name = filename; zippath_parent(m_working_directory, filename); - m_basename.cpy(m_image_name); + m_basename.assign(m_image_name); - int loc1 = m_image_name.rchr(0,'\\'); - int loc2 = m_image_name.rchr(0,'/'); - int loc3 = m_image_name.rchr(0,':'); + int loc1 = m_image_name.find_last_of('\\'); + int loc2 = m_image_name.find_last_of('/'); + int loc3 = m_image_name.find_last_of(':'); int loc = MAX(loc1,MAX(loc2,loc3)); if (loc!=-1) { if (loc == loc3) { // temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart) - astring tmpstr = astring(m_basename.substr(0,loc)); - int tmploc = tmpstr.rchr(0,':'); + m_basename = m_basename.substr(0, loc); + std::string tmpstr = std::string(m_basename); + int tmploc = tmpstr.find_last_of(':'); m_basename = m_basename.substr(tmploc + 1,loc-tmploc); } else - m_basename = m_basename.substr(loc + 1,m_basename.len()-loc); + m_basename = m_basename.substr(loc + 1, m_basename.length() - loc); } - m_basename_noext = m_basename.cpy(m_basename); + m_basename_noext = m_basename.assign(m_basename); m_filetype = ""; - loc = m_basename_noext.rchr(0,'.'); + loc = m_basename_noext.find_last_of('.'); if (loc!=-1) { m_basename_noext = m_basename_noext.substr(0,loc); - m_filetype = m_basename.cpy(m_basename); - m_filetype = m_filetype.substr(loc + 1,m_filetype.len()-loc); + m_filetype = m_basename.assign(m_basename); + m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc); } return IMAGE_ERROR_SUCCESS; @@ -212,7 +213,7 @@ void device_image_interface::clear_error() m_err = IMAGE_ERROR_SUCCESS; if (!m_err_message.empty()) { - m_err_message.reset(); + m_err_message.clear(); } } @@ -500,13 +501,13 @@ UINT32 device_image_interface::crc() -------------------------------------------------*/ void device_image_interface::battery_load(void *buffer, int length, int fill) { - astring fname = astring(device().machine().system().name).cat(PATH_SEPARATOR).cat(m_basename_noext.c_str()).cat(".nv"); + std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv"); image_battery_load_by_name(device().machine().options(), fname.c_str(), buffer, length, fill); } void device_image_interface::battery_load(void *buffer, int length, void *def_buffer) { - astring fname = astring(device().machine().system().name).cat(PATH_SEPARATOR).cat(m_basename_noext.c_str()).cat(".nv"); + std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv"); image_battery_load_by_name(device().machine().options(), fname.c_str(), buffer, length, def_buffer); } @@ -518,7 +519,7 @@ void device_image_interface::battery_load(void *buffer, int length, void *def_bu -------------------------------------------------*/ void device_image_interface::battery_save(const void *buffer, int length) { - astring fname = astring(device().machine().system().name).cat(PATH_SEPARATOR).cat(m_basename_noext.c_str()).cat(".nv"); + std::string fname = std::string(device().machine().system().name).append(PATH_SEPARATOR).append(m_basename_noext.c_str()).append(".nv"); image_battery_save_by_name(device().machine().options(), fname.c_str(), buffer, length); } @@ -536,7 +537,7 @@ bool device_image_interface::uses_file_extension(const char *file_extension) con file_extension++; /* find the extensions */ - astring extensions(file_extensions()); + std::string extensions(file_extensions()); char *ext = strtok((char*)extensions.c_str(),","); while (ext != NULL) { @@ -703,7 +704,7 @@ void device_image_interface::determine_open_plan(int is_create, UINT32 *open_pla static void dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes) { - astring tempstr; + std::string tempstr; osd_printf_error(" EXPECTED: %s\n", hashes.macro_string(tempstr)); osd_printf_error(" FOUND: %s\n", acthashes.macro_string(tempstr)); } @@ -727,7 +728,7 @@ static int verify_length_and_hash(emu_file *file, const char *name, UINT32 exple } /* If there is no good dump known, write it */ - astring tempstr; + std::string tempstr; hash_collection &acthashes = file->hashes(hashes.hash_types(tempstr)); if (hashes.flag(hash_collection::FLAG_NO_DUMP)) { @@ -755,9 +756,9 @@ static int verify_length_and_hash(emu_file *file, const char *name, UINT32 exple bool device_image_interface::load_software(software_list_device &swlist, const char *swname, const rom_entry *start) { - astring locationtag, breakstr("%"); + std::string locationtag, breakstr("%"); const rom_entry *region; - astring regiontag; + std::string regiontag; bool retVal = FALSE; int warningcount = 0; for (region = start; region != NULL; region = rom_next_region(region)) @@ -784,40 +785,40 @@ bool device_image_interface::load_software(software_list_device &swlist, const c if (supported == SOFTWARE_SUPPORTED_NO) osd_printf_error("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); - // attempt reading up the chain through the parents and create a locationtag astring in the format + // attempt reading up the chain through the parents and create a locationtag std::string in the format // " swlist % clonename % parentname " // below, we have the code to split the elements and to create paths to load from while (swinfo != NULL) { - locationtag.cat(swinfo->shortname()).cat(breakstr); + locationtag.append(swinfo->shortname()).append(breakstr); const char *parentname = swinfo->parentname(); swinfo = (parentname != NULL) ? swlist.find(parentname) : NULL; } // strip the final '%' - locationtag.del(locationtag.len() - 1, 1); + locationtag.erase(locationtag.length() - 1, 1); // check if locationtag actually contains two locations separated by '%' // (i.e. check if we are dealing with a clone in softwarelist) - astring tag2, tag3, tag4(locationtag), tag5; - int separator = tag4.chr(0, '%'); + std::string tag2, tag3, tag4(locationtag), tag5; + int separator = tag4.find_first_of('%'); if (separator != -1) { - // we are loading a clone through softlists, split the setname from the parentname - tag5.cpysubstr(tag4, separator + 1, tag4.len() - separator + 1); - tag4.del(separator, tag4.len() - separator); + // we are loading a clone through softlists, split the setname from the parentname + tag5.assign(tag4.substr(separator + 1, tag4.length() - separator + 1)); + tag4.erase(separator, tag4.length() - separator); } // prepare locations where we have to load from: list/parentname & list/clonename - astring tag1(swlist.list_name()); - tag1.cat(PATH_SEPARATOR); - tag2.cpy(tag1.cat(tag4)); - tag1.cpy(swlist.list_name()); - tag1.cat(PATH_SEPARATOR); - tag3.cpy(tag1.cat(tag5)); - - if (tag5.chr(0, '%') != -1) + std::string tag1(swlist.list_name()); + tag1.append(PATH_SEPARATOR); + tag2.assign(tag1.append(tag4)); + tag1.assign(swlist.list_name()); + tag1.append(PATH_SEPARATOR); + tag3.assign(tag1.append(tag5)); + + if (tag5.find_first_of('%') != -1) fatalerror("We do not support clones of clones!\n"); // try to load from the available location(s): @@ -868,8 +869,8 @@ bool device_image_interface::load_internal(const char *path, bool is_create, int m_from_swlist = FALSE; // if the path contains no period, we are using softlists, so we won't create an image - astring pathstr(path); - bool filename_has_period = (pathstr.rchr(0, '.') != -1) ? TRUE : FALSE; + std::string pathstr(path); + bool filename_has_period = (pathstr.find_last_of('.') != -1) ? TRUE : FALSE; /* first unload the image */ unload(); @@ -895,8 +896,8 @@ bool device_image_interface::load_internal(const char *path, bool is_create, int if (softload) { m_software_info_ptr = &m_software_part_ptr->info(); - m_software_list_name.cpy(m_software_info_ptr->list().list_name()); - m_full_software_name.cpy(m_software_part_ptr->info().shortname()); + m_software_list_name.assign(m_software_info_ptr->list().list_name()); + m_full_software_name.assign(m_software_part_ptr->info().shortname()); // if we had launched from softlist with a specified part, e.g. "shortname:part" // we would have recorded the wrong name, so record it again based on software_info @@ -1094,21 +1095,21 @@ void device_image_interface::clear() } } - m_image_name.reset(); + m_image_name.clear(); m_readonly = false; m_created = false; - m_longname.reset(); - m_manufacturer.reset(); - m_year.reset(); - m_basename.reset(); - m_basename_noext.reset(); - m_filetype.reset(); + m_longname.clear(); + m_manufacturer.clear(); + m_year.clear(); + m_basename.clear(); + m_basename_noext.clear(); + m_filetype.clear(); - m_full_software_name.reset(); + m_full_software_name.clear(); m_software_info_ptr = NULL; m_software_part_ptr = NULL; - m_software_list_name.reset(); + m_software_list_name.clear(); } /*------------------------------------------------- @@ -1145,8 +1146,8 @@ void device_image_interface::update_names(const device_type device_type, const c const char *brief_name = (device_type!=NULL) ? brief : device_brieftypename(image_type()); if (count > 1) { - m_instance_name.printf("%s%d", inst_name , index + 1); - m_brief_instance_name.printf("%s%d", brief_name, index + 1); + strprintf(m_instance_name,"%s%d", inst_name, index + 1); + strprintf(m_brief_instance_name, "%s%d", brief_name, index + 1); } else { @@ -1276,8 +1277,8 @@ bool device_image_interface::load_software_part(const char *path, software_part bool result = call_softlist_load(swpart->info().list(), swpart->info().shortname(), swpart->romdata()); // Tell the world which part we actually loaded - astring full_sw_name; - full_sw_name.printf("%s:%s:%s", swpart->info().list().list_name(), swpart->info().shortname(), swpart->name()); + std::string full_sw_name; + strprintf(full_sw_name,"%s:%s:%s", swpart->info().list().list_name(), swpart->info().shortname(), swpart->name()); // check compatibility if (!swpart->is_compatible(swpart->info().list())) diff --git a/src/emu/diimage.h b/src/emu/diimage.h index 3d082af7b2e..b8a7038f6e3 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -87,10 +87,10 @@ public: private: image_device_format *m_next; - astring m_name; - astring m_description; - astring m_extensions; - astring m_optspec; + std::string m_name; + std::string m_description; + std::string m_extensions; + std::string m_optspec; }; @@ -269,29 +269,29 @@ protected: /* error related info */ image_error_t m_err; - astring m_err_message; + std::string m_err_message; /* variables that are only non-zero when an image is mounted */ core_file *m_file; emu_file *m_mame_file; - astring m_image_name; - astring m_basename; - astring m_basename_noext; - astring m_filetype; + std::string m_image_name; + std::string m_basename; + std::string m_basename_noext; + std::string m_filetype; /* working directory; persists across mounts */ std::string m_working_directory; /* Software information */ - astring m_full_software_name; + std::string m_full_software_name; software_info *m_software_info_ptr; software_part *m_software_part_ptr; - astring m_software_list_name; + std::string m_software_list_name; /* info read from the hash file/software list */ - astring m_longname; - astring m_manufacturer; - astring m_year; + std::string m_longname; + std::string m_manufacturer; + std::string m_year; UINT32 m_supported; /* flags */ @@ -306,8 +306,8 @@ protected: hash_collection m_hash; - astring m_brief_instance_name; - astring m_instance_name; + std::string m_brief_instance_name; + std::string m_instance_name; /* creation info */ simple_list m_formatlist; diff --git a/src/emu/dimemory.c b/src/emu/dimemory.c index 362c0fe8fda..f269c9caf21 100644 --- a/src/emu/dimemory.c +++ b/src/emu/dimemory.c @@ -326,13 +326,13 @@ void device_memory_interface::interface_validity_check(validity_checker &valid) // FIXME: This doesn't work! AMH_DEVICE_DELEGATE entries don't even set m_tag, the device tag is inside the proto-delegate if (entry->m_read.m_type == AMH_DEVICE_DELEGATE && entry->m_read.m_tag != NULL) { - astring temp(entry->m_read.m_tag); + std::string temp(entry->m_read.m_tag); if (device().siblingdevice(temp.c_str()) == NULL) osd_printf_error("%s space memory map entry references nonexistant device '%s'\n", spaceconfig->m_name, entry->m_read.m_tag); } if (entry->m_write.m_type == AMH_DEVICE_DELEGATE && entry->m_write.m_tag != NULL) { - astring temp(entry->m_write.m_tag); + std::string temp(entry->m_write.m_tag); if (device().siblingdevice(temp.c_str()) == NULL) osd_printf_error("%s space memory map entry references nonexistant device '%s'\n", spaceconfig->m_name, entry->m_write.m_tag); } diff --git a/src/emu/dislot.c b/src/emu/dislot.c index 22fc5c903f9..e0c07d206f1 100644 --- a/src/emu/dislot.c +++ b/src/emu/dislot.c @@ -64,7 +64,7 @@ device_t* device_slot_interface::get_card_device() { const char *subtag; device_t *dev = NULL; - astring temp; + std::string temp; if (!device().mconfig().options().exists(device().tag()+1)) { subtag = m_default_option; } else { diff --git a/src/emu/disound.h b/src/emu/disound.h index 3dd3737b35f..949d03ce29e 100644 --- a/src/emu/disound.h +++ b/src/emu/disound.h @@ -80,7 +80,7 @@ public: UINT32 m_input; // target input index UINT32 m_mixoutput; // target mixer output float m_gain; // gain - astring m_target; // target tag + std::string m_target; // target tag }; // construction/destruction diff --git a/src/emu/distate.c b/src/emu/distate.c index 9cafa069e37..79ec37e422b 100644 --- a/src/emu/distate.c +++ b/src/emu/distate.c @@ -78,13 +78,13 @@ device_state_entry::device_state_entry(int index, const char *symbol, void *data // override well-known symbols if (index == STATE_GENPC) - m_symbol.cpy("CURPC"); + m_symbol.assign("CURPC"); else if (index == STATE_GENPCBASE) - m_symbol.cpy("CURPCBASE"); + m_symbol.assign("CURPCBASE"); else if (index == STATE_GENSP) - m_symbol.cpy("CURSP"); + m_symbol.assign("CURSP"); else if (index == STATE_GENFLAGS) - m_symbol.cpy("CURFLAGS"); + m_symbol.assign("CURFLAGS"); } device_state_entry::device_state_entry(int index, device_state_interface *dev) @@ -108,12 +108,12 @@ device_state_entry::device_state_entry(int index, device_state_interface *dev) device_state_entry &device_state_entry::formatstr(const char *_format) { - m_format.cpy(_format); + m_format.assign(_format); m_default_format = false; // set the DSF_CUSTOM_STRING flag by formatting with a NULL string m_flags &= ~DSF_CUSTOM_STRING; - astring dummy; + std::string dummy; format(dummy, NULL); return *this; @@ -135,7 +135,7 @@ void device_state_entry::format_from_mask() int width = 0; for (UINT64 tempmask = m_datamask; tempmask != 0; tempmask >>= 4) width++; - m_format.printf("%%0%dX", width); + strprintf(m_format,"%%0%dX", width); } @@ -164,7 +164,7 @@ UINT64 device_state_entry::value() const // pieces of indexed state as a string //------------------------------------------------- -astring &device_state_entry::format(astring &dest, const char *string, bool maxout) const +std::string &device_state_entry::format(std::string &dest, const char *string, bool maxout) const { UINT64 result = value(); @@ -188,7 +188,7 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo // if we're not within a format, then anything other than a % outputs directly if (!percent && *fptr != '%') { - dest.cat(fptr, 1); + dest.append(fptr, 1); continue; } @@ -201,7 +201,7 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo percent = true; else { - dest.cat(fptr, 1); + dest.append(fptr, 1); percent = false; } break; @@ -232,7 +232,7 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo hitnonzero = false; while (leadzero && width > 16) { - dest.cat(" "); + dest.append(" "); width--; } for (int digitnum = 15; digitnum >= 0; digitnum--) @@ -241,11 +241,11 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo if (digit != 0) { static const char hexchars[] = "0123456789ABCDEF"; - dest.cat(&hexchars[digit], 1); + dest.append(&hexchars[digit], 1); hitnonzero = true; } else if (hitnonzero || (leadzero && digitnum < width) || digitnum == 0) - dest.cat("0"); + dest.append("0"); } reset = true; break; @@ -257,7 +257,7 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo hitnonzero = false; while (leadzero && width > 22) { - dest.cat(" "); + dest.append(" "); width--; } for (int digitnum = 21; digitnum >= 0; digitnum--) @@ -266,11 +266,11 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo if (digit != 0) { static const char octchars[] = "01234567"; - dest.cat(&octchars[digit], 1); + dest.append(&octchars[digit], 1); hitnonzero = true; } else if (hitnonzero || (leadzero && digitnum < width) || digitnum == 0) - dest.cat("0"); + dest.append("0"); } reset = true; break; @@ -282,12 +282,12 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo if ((result & m_datamask) > (m_datamask >> 1)) { result = -result & m_datamask; - dest.cat("-"); + dest.append("-"); width--; } else if (explicitsign) { - dest.cat("+"); + dest.append("+"); width--; } // fall through to unsigned case @@ -299,7 +299,7 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo hitnonzero = false; while (leadzero && width > ARRAY_LENGTH(k_decimal_divisor)) { - dest.cat(" "); + dest.append(" "); width--; } for (int digitnum = ARRAY_LENGTH(k_decimal_divisor) - 1; digitnum >= 0; digitnum--) @@ -308,11 +308,11 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo if (digit != 0) { static const char decchars[] = "0123456789"; - dest.cat(&decchars[digit], 1); + dest.append(&decchars[digit], 1); hitnonzero = true; } else if (hitnonzero || (leadzero && digitnum < width) || digitnum == 0) - dest.cat("0"); + dest.append("0"); } reset = true; break; @@ -328,13 +328,13 @@ astring &device_state_entry::format(astring &dest, const char *string, bool maxo } if (strlen(string) <= width) { - dest.cat(string); + dest.append(string); width -= strlen(string); while (width-- != 0) - dest.cat(" "); + dest.append(" "); } else - dest.cat(string, width); + dest.append(string, width); reset = true; break; @@ -436,15 +436,15 @@ UINT64 device_state_interface::state_int(int index) // pieces of indexed state as a string //------------------------------------------------- -astring &device_state_interface::state_string(int index, astring &dest) +std::string &device_state_interface::state_string(int index, std::string &dest) { // NULL or out-of-range entry returns bogus string const device_state_entry *entry = state_find_entry(index); if (entry == NULL) - return dest.cpy("???"); + return dest.assign("???"); // get the custom string if needed - astring custom; + std::string custom; if (entry->needs_custom_string()) state_string_export(*entry, custom); @@ -466,8 +466,8 @@ int device_state_interface::state_string_max_length(int index) return 3; // ask the entry to format itself maximally - astring tempstring; - return entry->format(tempstring, "", true).len(); + std::string tempstring; + return entry->format(tempstring, "", true).length(); } @@ -580,7 +580,7 @@ void device_state_interface::state_export(const device_state_entry &entry) // written to perform any post-processing //------------------------------------------------- -void device_state_interface::state_string_import(const device_state_entry &entry, astring &str) +void device_state_interface::state_string_import(const device_state_entry &entry, std::string &str) { // do nothing by default } @@ -591,7 +591,7 @@ void device_state_interface::state_string_import(const device_state_entry &entry // written to perform any post-processing //------------------------------------------------- -void device_state_interface::state_string_export(const device_state_entry &entry, astring &str) +void device_state_interface::state_string_export(const device_state_entry &entry, std::string &str) { // do nothing by default } diff --git a/src/emu/distate.h b/src/emu/distate.h index 8e660422be5..352a3c1337d 100644 --- a/src/emu/distate.h +++ b/src/emu/distate.h @@ -87,7 +87,7 @@ protected: // return the current value -- only for our friends who handle export bool needs_export() const { return ((m_flags & DSF_EXPORT) != 0); } UINT64 value() const; - astring &format(astring &dest, const char *string, bool maxout = false) const; + std::string &format(std::string &dest, const char *string, bool maxout = false) const; // set the current value -- only for our friends who handle import bool needs_import() const { return ((m_flags & DSF_IMPORT) != 0); } @@ -105,8 +105,8 @@ protected: UINT64 m_datamask; // mask that applies to the data UINT8 m_datasize; // size of the data UINT8 m_flags; // flags for this data - astring m_symbol; // symbol for display; all lower-case version for expressions - astring m_format; // supported formats + std::string m_symbol; // symbol for display; all lower-case version for expressions + std::string m_format; // supported formats bool m_default_format; // true if we are still using default format UINT64 m_sizemask; // mask derived from the data size }; @@ -128,7 +128,7 @@ public: // state getters UINT64 state_int(int index); - astring &state_string(int index, astring &dest); + std::string &state_string(int index, std::string &dest); int state_string_max_length(int index); offs_t pc() { return state_int(STATE_GENPC); } offs_t pcbase() { return state_int(STATE_GENPCBASE); } @@ -162,8 +162,8 @@ protected: // derived class overrides virtual void state_import(const device_state_entry &entry); virtual void state_export(const device_state_entry &entry); - virtual void state_string_import(const device_state_entry &entry, astring &str); - virtual void state_string_export(const device_state_entry &entry, astring &str); + virtual void state_string_import(const device_state_entry &entry, std::string &str); + virtual void state_string_export(const device_state_entry &entry, std::string &str); // internal operation overrides virtual void interface_post_start(); diff --git a/src/emu/emucore.h b/src/emu/emucore.h index 7183c3ca838..bffac6e0bf6 100644 --- a/src/emu/emucore.h +++ b/src/emu/emucore.h @@ -31,11 +31,9 @@ // standard C++ includes #include #include -#include // core system includes #include "osdcomm.h" -#include "astring.h" #include "emualloc.h" #include "corestr.h" #include "bitmap.h" diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c index 5ac2d8780d4..fb06caf7f6c 100644 --- a/src/emu/emuopts.c +++ b/src/emu/emuopts.c @@ -310,10 +310,10 @@ void emu_options::add_device_options(bool isfirstpass) first = false; // retrieve info about the device instance - astring option_name; - option_name.printf("%s;%s", image->instance_name(), image->brief_instance_name()); + std::string option_name; + strprintf(option_name, "%s;%s", image->instance_name(), image->brief_instance_name()); if (strcmp(image->device_typename(image->image_type()), image->instance_name()) == 0) - option_name.catprintf(";%s1;%s1", image->instance_name(), image->brief_instance_name()); + strprintf(option_name, ";%s1;%s1", image->instance_name(), image->brief_instance_name()); // add the option if (!exists(image->instance_name())) @@ -347,7 +347,7 @@ void emu_options::remove_device_options() // and update slot and image devices //------------------------------------------------- -bool emu_options::parse_slot_devices(int argc, char *argv[], astring &error_string, const char *name, const char *value) +bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name, const char *value) { // an initial parse to capture the initial set of values bool result = core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string); @@ -382,7 +382,7 @@ bool emu_options::parse_slot_devices(int argc, char *argv[], astring &error_stri // and update the devices //------------------------------------------------- -bool emu_options::parse_command_line(int argc, char *argv[], astring &error_string) +bool emu_options::parse_command_line(int argc, char *argv[], std::string &error_string) { // parse as normal core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string); @@ -395,10 +395,10 @@ bool emu_options::parse_command_line(int argc, char *argv[], astring &error_stri // of INI files //------------------------------------------------- -void emu_options::parse_standard_inis(astring &error_string) +void emu_options::parse_standard_inis(std::string &error_string) { // start with an empty string - error_string.reset(); + error_string.clear(); // parse the INI file defined by the platform (e.g., "mame.ini") // we do this twice so that the first file can change the INI path @@ -442,8 +442,8 @@ void emu_options::parse_standard_inis(astring &error_string) } // next parse "source/.ini"; if that doesn't exist, try .ini - astring sourcename; - core_filename_extract_base(sourcename, cursystem->source_file, true).ins(0, "source" PATH_SEPARATOR); + std::string sourcename; + core_filename_extract_base(sourcename, cursystem->source_file, true).insert(0, "source" PATH_SEPARATOR); if (!parse_one_ini(sourcename.c_str(), OPTION_PRIORITY_SOURCE_INI, &error_string)) { core_filename_extract_base(sourcename, cursystem->source_file, true); @@ -471,7 +471,7 @@ void emu_options::parse_standard_inis(astring &error_string) const game_driver *emu_options::system() const { - astring tempstr; + std::string tempstr; int index = driver_list::find(core_filename_extract_base(tempstr, system_name(), true).c_str()); return (index != -1) ? &driver_list::driver(index) : NULL; } @@ -490,7 +490,7 @@ void emu_options::set_system_name(const char *name) if (old_system_name.compare(name)!=0) { // first set the new name - astring error; + std::string error; set_value(OPTION_SYSTEMNAME, name, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); @@ -513,7 +513,7 @@ void emu_options::set_system_name(const char *name) // parse_one_ini - parse a single INI file //------------------------------------------------- -bool emu_options::parse_one_ini(const char *basename, int priority, astring *error_string) +bool emu_options::parse_one_ini(const char *basename, int priority, std::string *error_string) { // don't parse if it has been disabled if (!read_config()) @@ -527,39 +527,39 @@ bool emu_options::parse_one_ini(const char *basename, int priority, astring *err // parse the file osd_printf_verbose("Parsing %s.ini\n", basename); - astring error; + std::string error; bool result = parse_ini_file(file, priority, OPTION_PRIORITY_DRIVER_INI, error); // append errors if requested if (!error.empty() && error_string != NULL) - error_string->catprintf("While parsing %s:\n%s\n", file.fullpath(), error.c_str()); + strcatprintf(*error_string, "While parsing %s:\n%s\n", file.fullpath(), error.c_str()); return result; } -const char *emu_options::main_value(astring &buffer, const char *name) const +const char *emu_options::main_value(std::string &buffer, const char *name) const { buffer = value(name); - int pos = buffer.chr(0, ','); + int pos = buffer.find_first_of(','); if (pos != -1) buffer = buffer.substr(0, pos); return buffer.c_str(); } -const char *emu_options::sub_value(astring &buffer, const char *name, const char *subname) const +const char *emu_options::sub_value(std::string &buffer, const char *name, const char *subname) const { - astring tmp = astring(",").cat(subname).cat("="); + std::string tmp = std::string(",").append(subname).append("="); buffer = value(name); - int pos = buffer.find(0, tmp.c_str()); + int pos = buffer.find(tmp.c_str()); if (pos != -1) { - int endpos = buffer.chr(pos + 1, ','); + int endpos = buffer.find_first_of(',', pos + 1); if (endpos == -1) - endpos = buffer.len(); - buffer = buffer.substr(pos + tmp.len(), endpos - pos - tmp.len()); + endpos = buffer.length(); + buffer = buffer.substr(pos + tmp.length(), endpos - pos - tmp.length()); } else - buffer.reset(); + buffer.clear(); return buffer.c_str(); } diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h index aadb98a72c7..ac2f18ac767 100644 --- a/src/emu/emuopts.h +++ b/src/emu/emuopts.h @@ -203,9 +203,9 @@ public: emu_options(); // parsing wrappers - bool parse_command_line(int argc, char *argv[], astring &error_string); - void parse_standard_inis(astring &error_string); - bool parse_slot_devices(int argc, char *argv[], astring &error_string, const char *name, const char *value); + bool parse_command_line(int argc, char *argv[], std::string &error_string); + void parse_standard_inis(std::string &error_string); + bool parse_slot_devices(int argc, char *argv[], std::string &error_string, const char *name, const char *value); // core options const char *system_name() const { return value(OPTION_SYSTEMNAME); } @@ -358,8 +358,8 @@ public: // FIXME: Couriersud: This should be in image_device_exit void remove_device_options(); - const char *main_value(astring &buffer, const char *option) const; - const char *sub_value(astring &buffer, const char *name, const char *subname) const; + const char *main_value(std::string &buffer, const char *option) const; + const char *sub_value(std::string &buffer, const char *name, const char *subname) const; bool add_slot_options(bool isfirst); private: @@ -368,7 +368,7 @@ private: void update_slot_options(); // INI parsing helper - bool parse_one_ini(const char *basename, int priority, astring *error_string = NULL); + bool parse_one_ini(const char *basename, int priority, std::string *error_string = NULL); static const options_entry s_option_entries[]; }; diff --git a/src/emu/emupal.c b/src/emu/emupal.c index b5f0c128f6a..c4190456567 100644 --- a/src/emu/emupal.c +++ b/src/emu/emupal.c @@ -408,7 +408,7 @@ void palette_device::device_start() if (share != NULL) { // find the extended (split) memory, if present - astring tag_ext = astring(tag()).cat("_ext"); + std::string tag_ext = std::string(tag()).append("_ext"); const memory_share *share_ext = memshare(tag_ext.c_str()); // make sure we have specified a format diff --git a/src/emu/fileio.c b/src/emu/fileio.c index ddc225e67f3..2314e31564f 100644 --- a/src/emu/fileio.c +++ b/src/emu/fileio.c @@ -39,7 +39,7 @@ path_iterator::path_iterator(const char *rawsearchpath) // in a multipath sequence //------------------------------------------------- -bool path_iterator::next(astring &buffer, const char *name) +bool path_iterator::next(std::string &buffer, const char *name) { // if none left, return FALSE to indicate we are done if (m_index != 0 && *m_current == 0) @@ -49,16 +49,16 @@ bool path_iterator::next(astring &buffer, const char *name) const char *semi = strchr(m_current, ';'); if (semi == NULL) semi = m_current + strlen(m_current); - buffer.cpy(m_current, semi - m_current); + buffer.assign(m_current, semi - m_current); m_current = (*semi == 0) ? semi : semi + 1; // append the name if we have one if (name != NULL) { // compute the full pathname - if (buffer.len() > 0) - buffer.cat(PATH_SEPARATOR); - buffer.cat(name); + if (buffer.length() > 0) + buffer.append(PATH_SEPARATOR); + buffer.append(name); } // bump the index and return TRUE @@ -219,14 +219,14 @@ emu_file::operator core_file &() hash_collection &emu_file::hashes(const char *types) { // determine the hashes we already have - astring already_have; + std::string already_have; m_hashes.hash_types(already_have); // determine which hashes we need - astring needed; + std::string needed; for (const char *scan = types; *scan != 0; scan++) - if (already_have.chr(0, *scan) == -1) - needed.cat(*scan); + if (already_have.find_first_of(*scan) == -1) + needed.push_back(*scan); // if we need nothing, skip it if (needed.empty()) @@ -281,21 +281,21 @@ file_error emu_file::open(const char *name) file_error emu_file::open(const char *name1, const char *name2) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2); + std::string name = std::string(name1).append(name2); return open(name.c_str()); } file_error emu_file::open(const char *name1, const char *name2, const char *name3) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2).cat(name3); + std::string name = std::string(name1).append(name2).append(name3); return open(name.c_str()); } file_error emu_file::open(const char *name1, const char *name2, const char *name3, const char *name4) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2).cat(name3).cat(name4); + std::string name = std::string(name1).append(name2).append(name3).append(name4); return open(name.c_str()); } @@ -314,21 +314,21 @@ file_error emu_file::open(const char *name, UINT32 crc) file_error emu_file::open(const char *name1, const char *name2, UINT32 crc) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2); + std::string name = std::string(name1).append(name2); return open(name.c_str(), crc); } file_error emu_file::open(const char *name1, const char *name2, const char *name3, UINT32 crc) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2).cat(name3); + std::string name = std::string(name1).append(name2).append(name3); return open(name.c_str(), crc); } file_error emu_file::open(const char *name1, const char *name2, const char *name3, const char *name4, UINT32 crc) { // concatenate the strings and do a standard open - astring name = astring(name1).cat(name2).cat(name3).cat(name4); + std::string name = std::string(name1).append(name2).append(name3).append(name4); return open(name.c_str(), crc); } @@ -356,7 +356,7 @@ file_error emu_file::open_next() // if we're opening for read-only we have other options if ((m_openflags & (OPEN_FLAG_READ | OPEN_FLAG_WRITE)) == OPEN_FLAG_READ) { - astring tempfullpath = m_fullpath; + std::string tempfullpath = m_fullpath; filerr = attempt_zipped(); if (filerr == FILERR_NONE) @@ -418,7 +418,7 @@ void emu_file::close() // reset our hashes and path as well m_hashes.reset(); - m_fullpath.reset(); + m_fullpath.clear(); } @@ -657,14 +657,15 @@ int emu_file::vprintf(const char *fmt, va_list va) // any media path //------------------------------------------------- -bool emu_file::part_of_mediapath(astring path) +bool emu_file::part_of_mediapath(std::string path) { bool result = false; - astring mediapath; + std::string mediapath; m_mediapaths.reset(); - while (m_mediapaths.next(mediapath, NULL) && !result) - if (path.cmpsubstr(mediapath, 0, mediapath.len())) + while (m_mediapaths.next(mediapath, NULL) && !result) { + if (path.compare(mediapath.substr(0, mediapath.length()))) result = true; + } return result; } @@ -674,13 +675,13 @@ bool emu_file::part_of_mediapath(astring path) file_error emu_file::attempt_zipped() { - astring filename; + std::string filename; // loop over directory parts up to the start of filename while (1) { // find the final path separator - int dirsep = m_fullpath.rchr(0, PATH_SEPARATOR[0]); + int dirsep = m_fullpath.find_last_of(PATH_SEPARATOR[0]); if (dirsep == -1) return FILERR_NOT_FOUND; @@ -689,19 +690,19 @@ file_error emu_file::attempt_zipped() return FILERR_NOT_FOUND; // insert the part from the right of the separator into the head of the filename - if (filename.len() > 0) - filename.ins(0, "/"); - filename.inssubstr(0, m_fullpath, dirsep + 1, -1); + if (filename.length() > 0) + filename.insert(0, "/"); + filename.insert(0, m_fullpath.substr(dirsep + 1, -1)); // remove this part of the filename and append a .zip extension - m_fullpath.substr(0, dirsep).cat(".zip"); + m_fullpath = m_fullpath.substr(0, dirsep).append(".zip"); // attempt to open the ZIP file zip_file *zip; zip_error ziperr = zip_file_open(m_fullpath.c_str(), &zip); // chop the .zip back off the filename before continuing - m_fullpath.substr(0, dirsep); + m_fullpath = m_fullpath.substr(0, dirsep); // if we failed to open this file, continue scanning if (ziperr != ZIPERR_NONE) @@ -785,10 +786,11 @@ file_error emu_file::load_zipped_file() // to expected filename, ignoring any directory //------------------------------------------------- -bool emu_file::zip_filename_match(const zip_file_header &header, const astring &filename) +bool emu_file::zip_filename_match(const zip_file_header &header, const std::string &filename) { - const char *zipfile = header.filename + header.filename_length - filename.len(); - return (zipfile >= header.filename && filename.icmp(zipfile) == 0 && (zipfile == header.filename || zipfile[-1] == '/')); + const char *zipfile = header.filename + header.filename_length - filename.length(); + //FIXME: check if it should be case insensitive + return (zipfile >= header.filename && filename.compare(zipfile) == 0 && (zipfile == header.filename || zipfile[-1] == '/')); } @@ -809,13 +811,13 @@ bool emu_file::zip_header_is_path(const zip_file_header &header) file_error emu_file::attempt__7zped() { - astring filename; + std::string filename; // loop over directory parts up to the start of filename while (1) { // find the final path separator - int dirsep = m_fullpath.rchr(0, PATH_SEPARATOR[0]); + int dirsep = m_fullpath.find_last_of(PATH_SEPARATOR[0]); if (dirsep == -1) return FILERR_NOT_FOUND; @@ -824,19 +826,19 @@ file_error emu_file::attempt__7zped() return FILERR_NOT_FOUND; // insert the part from the right of the separator into the head of the filename - if (filename.len() > 0) - filename.ins(0, "/"); - filename.inssubstr(0, m_fullpath, dirsep + 1, -1); + if (filename.length() > 0) + filename.insert(0, "/"); + filename.insert(0, m_fullpath.substr(dirsep + 1, -1)); // remove this part of the filename and append a .7z extension - m_fullpath.substr(0, dirsep).cat(".7z"); + m_fullpath = m_fullpath.substr(0, dirsep).append(".7z"); // attempt to open the _7Z file _7z_file *_7z; _7z_error _7zerr = _7z_file_open(m_fullpath.c_str(), &_7z); // chop the ._7z back off the filename before continuing - m_fullpath.substr(0, dirsep); + m_fullpath = m_fullpath.substr(0, dirsep); // if we failed to open this file, continue scanning if (_7zerr != _7ZERR_NONE) @@ -845,16 +847,16 @@ file_error emu_file::attempt__7zped() int fileno = -1; // see if we can find a file with the right name and (if available) crc - if (m_openflags & OPEN_FLAG_HAS_CRC) fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.len(), true, true); + if (m_openflags & OPEN_FLAG_HAS_CRC) fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.length(), true, true); // if that failed, look for a file with the right crc, but the wrong filename if (fileno==-1) - if (m_openflags & OPEN_FLAG_HAS_CRC) fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.len(), true, false); + if (m_openflags & OPEN_FLAG_HAS_CRC) fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.length(), true, false); // if that failed, look for a file with the right name; reporting a bad checksum // is more helpful and less confusing than reporting "rom not found" if (fileno==-1) - fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.len(), false, true); + fileno = _7z_search_crc_match(_7z, m_crc, filename.c_str(), filename.length(), false, true); if (fileno != -1) { diff --git a/src/emu/fileio.h b/src/emu/fileio.h index 2f2dee57214..1377eca6bb9 100644 --- a/src/emu/fileio.h +++ b/src/emu/fileio.h @@ -42,7 +42,7 @@ public: path_iterator(const char *searchpath); // getters - bool next(astring &buffer, const char *name = NULL); + bool next(std::string &buffer, const char *name = NULL); // reset void reset() { m_current = m_base; m_index = 0; } @@ -73,7 +73,7 @@ private: // internal state path_iterator m_iterator; osd_directory * m_curdir; - astring m_pathbuffer; + std::string m_pathbuffer; //int m_buflen; }; @@ -98,7 +98,7 @@ public: UINT32 openflags() const { return m_openflags; } hash_collection &hashes(const char *types); bool restrict_to_mediapath() { return m_restrict_to_mediapath; } - bool part_of_mediapath(astring path); + bool part_of_mediapath(std::string path); // setters void remove_on_close() { m_remove_on_close = true; } @@ -143,15 +143,15 @@ private: // internal helpers file_error attempt_zipped(); file_error load_zipped_file(); - bool zip_filename_match(const zip_file_header &header, const astring &filename); + bool zip_filename_match(const zip_file_header &header, const std::string &filename); bool zip_header_is_path(const zip_file_header &header); file_error attempt__7zped(); file_error load__7zped_file(); // internal state - astring m_filename; // original filename provided - astring m_fullpath; // full filename + std::string m_filename; // original filename provided + std::string m_fullpath; // full filename core_file * m_file; // core file pointer path_iterator m_iterator; // iterator for paths path_iterator m_mediapaths; // media-path iterator @@ -168,7 +168,7 @@ private: UINT64 m__7zlength; // 7Z file length bool m_remove_on_close; // flag: remove the file when closing - bool m_restrict_to_mediapath; // flag: restrict to paths inside the media-path + bool m_restrict_to_mediapath; // flag: restrict to paths inside the media-path }; diff --git a/src/emu/hash.c b/src/emu/hash.c index 9b64d18f299..1d92458d139 100644 --- a/src/emu/hash.c +++ b/src/emu/hash.c @@ -115,13 +115,13 @@ bool hash_collection::operator==(const hash_collection &rhs) const // a string //------------------------------------------------- -const char *hash_collection::hash_types(astring &buffer) const +const char *hash_collection::hash_types(std::string &buffer) const { - buffer.reset(); + buffer.clear(); if (m_has_crc32) - buffer.cat(HASH_CRC); + buffer.push_back(HASH_CRC); if (m_has_sha1) - buffer.cat(HASH_SHA1); + buffer.push_back(HASH_SHA1); return buffer.c_str(); } @@ -133,7 +133,7 @@ const char *hash_collection::hash_types(astring &buffer) const void hash_collection::reset() { - m_flags.reset(); + m_flags.clear(); m_has_crc32 = m_has_sha1 = false; delete m_creator; m_creator = NULL; @@ -190,21 +190,24 @@ bool hash_collection::remove(char type) // format //------------------------------------------------- -const char *hash_collection::internal_string(astring &buffer) const +const char *hash_collection::internal_string(std::string &buffer) const { - buffer.reset(); + buffer.clear(); // handle CRCs - astring temp; - if (m_has_crc32) - buffer.cat(HASH_CRC).cat(m_crc32.as_string(temp)); - + std::string temp; + if (m_has_crc32) { + buffer.push_back(HASH_CRC); + buffer.append(m_crc32.as_string(temp)); + } // handle SHA1s - if (m_has_sha1) - buffer.cat(HASH_SHA1).cat(m_sha1.as_string(temp)); + if (m_has_sha1) { + buffer.push_back(HASH_SHA1); + buffer.append(m_sha1.as_string(temp)); + } // append flags - return buffer.cat(m_flags).c_str(); + return buffer.append(m_flags).c_str(); } @@ -213,25 +216,26 @@ const char *hash_collection::internal_string(astring &buffer) const // flags to a string in the macroized format //------------------------------------------------- -const char *hash_collection::macro_string(astring &buffer) const +const char *hash_collection::macro_string(std::string &buffer) const { - buffer.reset(); + buffer.clear(); // handle CRCs - astring temp; + std::string temp; if (m_has_crc32) - buffer.cat("CRC(").cat(m_crc32.as_string(temp)).cat(") "); + buffer.append("CRC(").append(m_crc32.as_string(temp)).append(") "); // handle SHA1s if (m_has_sha1) - buffer.cat("SHA1(").cat(m_sha1.as_string(temp)).cat(") "); + buffer.append("SHA1(").append(m_sha1.as_string(temp)).append(") "); // append flags if (flag(FLAG_NO_DUMP)) - buffer.cat("NO_DUMP "); + buffer.append("NO_DUMP "); if (flag(FLAG_BAD_DUMP)) - buffer.cat("BAD_DUMP "); - return buffer.trimspace().c_str(); + buffer.append("BAD_DUMP "); + strtrimspace(buffer); + return buffer.c_str(); } @@ -240,25 +244,26 @@ const char *hash_collection::macro_string(astring &buffer) const // flags to a string in XML attribute format //------------------------------------------------- -const char *hash_collection::attribute_string(astring &buffer) const +const char *hash_collection::attribute_string(std::string &buffer) const { - buffer.reset(); + buffer.clear(); // handle CRCs - astring temp; + std::string temp; if (m_has_crc32) - buffer.cat("crc=\"").cat(m_crc32.as_string(temp)).cat("\" "); + buffer.append("crc=\"").append(m_crc32.as_string(temp)).append("\" "); // handle SHA1s if (m_has_sha1) - buffer.cat("sha1=\"").cat(m_sha1.as_string(temp)).cat("\" "); + buffer.append("sha1=\"").append(m_sha1.as_string(temp)).append("\" "); // append flags if (flag(FLAG_NO_DUMP)) - buffer.cat("status=\"nodump\"" ); + buffer.append("status=\"nodump\""); if (flag(FLAG_BAD_DUMP)) - buffer.cat("status=\"baddump\"" ); - return buffer.trimspace().c_str(); + buffer.append("status=\"baddump\""); + strtrimspace(buffer); + return buffer.c_str(); } @@ -319,7 +324,7 @@ bool hash_collection::from_internal_string(const char *string) else if (skip_digits != 0) errors = true; else - m_flags.cat(c); + m_flags.push_back(c); } return !errors; } diff --git a/src/emu/hash.h b/src/emu/hash.h index f08fe27562b..9dc12af136b 100644 --- a/src/emu/hash.h +++ b/src/emu/hash.h @@ -66,8 +66,8 @@ public: bool operator!=(const hash_collection &rhs) const { return !(*this == rhs); } // getters - bool flag(char flag) const { return (m_flags.chr(0, flag) != -1); } - const char *hash_types(astring &buffer) const; + bool flag(char flag) const { return (m_flags.find_first_of(flag) != -1); } + const char *hash_types(std::string &buffer) const; // hash manipulators void reset(); @@ -83,9 +83,9 @@ public: void add_sha1(sha1_t sha1) { m_has_sha1 = true; m_sha1 = sha1; } // string conversion - const char *internal_string(astring &buffer) const; - const char *macro_string(astring &buffer) const; - const char *attribute_string(astring &buffer) const; + const char *internal_string(std::string &buffer) const; + const char *macro_string(std::string &buffer) const; + const char *attribute_string(std::string &buffer) const; bool from_internal_string(const char *string); // creation @@ -99,7 +99,7 @@ private: void copyfrom(const hash_collection &src); // internal state - astring m_flags; + std::string m_flags; bool m_has_crc32; crc32_t m_crc32; bool m_has_sha1; diff --git a/src/emu/image.c b/src/emu/image.c index 555294033bf..f17f2feb6c0 100644 --- a/src/emu/image.c +++ b/src/emu/image.c @@ -141,7 +141,7 @@ static int write_config(emu_options &options, const char *filename, const game_d file_error filerr = file.open(filename); if (filerr == FILERR_NONE) { - astring inistring; + std::string inistring; options.output_ini(inistring); file.puts(inistring.c_str()); retval = 0; @@ -167,7 +167,7 @@ static void image_options_extract(running_machine &machine) const char *filename = image->filename(); /* and set the option */ - astring error; + std::string error; machine.options().set_value(image->instance_name(), filename ? filename : "", OPTION_PRIORITY_CMDLINE, error); index++; @@ -224,8 +224,8 @@ void image_device_init(running_machine &machine) if (result) { /* retrieve image error message */ - astring image_err = astring(image->error()); - astring image_basename(image_name); + std::string image_err = std::string(image->error()); + std::string image_basename(image_name); /* unload all images */ image_unload_all(machine); @@ -244,15 +244,15 @@ void image_device_init(running_machine &machine) need an image to be loaded -------------------------------------------------*/ -astring &image_mandatory_scan(running_machine &machine, astring &mandatory) +std::string &image_mandatory_scan(running_machine &machine, std::string &mandatory) { - mandatory.reset(); + mandatory.clear(); // make sure that any required image has a mounted file image_interface_iterator iter(machine.root_device()); for (device_image_interface *image = iter.first(); image != NULL; image = iter.next()) { if (image->filename() == NULL && image->must_be_loaded()) - mandatory.cat("\"").cat(image->instance_name()).cat("\", "); + mandatory.append("\"").append(image->instance_name()).append("\", "); } return mandatory; } @@ -273,7 +273,7 @@ void image_postdevice_init(running_machine &machine) if (result) { /* retrieve image error message */ - astring image_err = astring(image->error()); + std::string image_err = std::string(image->error()); /* unload all images */ image_unload_all(machine); diff --git a/src/emu/image.h b/src/emu/image.h index 140a25473b7..a37012841b0 100644 --- a/src/emu/image.h +++ b/src/emu/image.h @@ -20,7 +20,7 @@ void image_init(running_machine &machine); void image_postdevice_init(running_machine &machine); -astring &image_mandatory_scan(running_machine &machine, astring &mandatory); +std::string &image_mandatory_scan(running_machine &machine, std::string &mandatory); extern struct io_procs image_ioprocs; diff --git a/src/emu/imagedev/cassette.c b/src/emu/imagedev/cassette.c index 60f5b0f4f57..5d204aa4613 100644 --- a/src/emu/imagedev/cassette.c +++ b/src/emu/imagedev/cassette.c @@ -273,14 +273,14 @@ bool cassette_image_device::call_load() { is_writable = !is_readonly(); cassette_flags = is_writable ? (CASSETTE_FLAG_READWRITE|CASSETTE_FLAG_SAVEONEXIT) : CASSETTE_FLAG_READONLY; - astring fname; + std::string fname; if (software_entry()==NULL) { extension = filetype(); } else { fname = m_mame_file->filename(); - int loc = fname.rchr(0,'.'); + int loc = fname.find_last_of('.'); if (loc!=-1) { - extension = fname.substr(loc + 1,fname.len()-loc).c_str(); + extension = fname.substr(loc + 1,fname.length()-loc).c_str(); } else { extension = ""; } diff --git a/src/emu/imagedev/diablo.c b/src/emu/imagedev/diablo.c index 43afc241471..10a763e8ba1 100644 --- a/src/emu/imagedev/diablo.c +++ b/src/emu/imagedev/diablo.c @@ -115,7 +115,7 @@ bool diablo_image_device::call_create(int create_format, option_resolution *crea int err; UINT32 sectorsize, hunksize; UINT32 cylinders, heads, sectors, totalsectors; - astring metadata; + std::string metadata; cylinders = option_resolution_lookup_int(create_args, 'C'); heads = option_resolution_lookup_int(create_args, 'H'); @@ -132,7 +132,7 @@ bool diablo_image_device::call_create(int create_format, option_resolution *crea goto error; /* if we created the image and hence, have metadata to set, set the metadata */ - metadata.format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); + strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); m_origchd.close(); @@ -170,7 +170,7 @@ void diablo_image_device::call_unload() static chd_error open_disk_diff(emu_options &options, const char *name, chd_file &source, chd_file &diff_chd) { - astring fname = astring(name).cat(".dif"); + std::string fname = std::string(name).append(".dif"); /* try to open the diff */ //printf("Opening differencing image file: %s\n", fname.c_str()); @@ -178,7 +178,7 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file file_error filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); //printf("Opening differencing image file: %s\n", fullpath.c_str()); @@ -191,7 +191,7 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); /* create the CHD */ diff --git a/src/emu/imagedev/harddriv.c b/src/emu/imagedev/harddriv.c index 48fa65500df..8520756fe22 100644 --- a/src/emu/imagedev/harddriv.c +++ b/src/emu/imagedev/harddriv.c @@ -135,7 +135,7 @@ bool harddisk_image_device::call_create(int create_format, option_resolution *cr int err; UINT32 sectorsize, hunksize; UINT32 cylinders, heads, sectors, totalsectors; - astring metadata; + std::string metadata; cylinders = option_resolution_lookup_int(create_args, 'C'); heads = option_resolution_lookup_int(create_args, 'H'); @@ -152,7 +152,7 @@ bool harddisk_image_device::call_create(int create_format, option_resolution *cr goto error; /* if we created the image and hence, have metadata to set, set the metadata */ - metadata.format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); + strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); m_origchd.close(); @@ -190,7 +190,7 @@ void harddisk_image_device::call_unload() static chd_error open_disk_diff(emu_options &options, const char *name, chd_file &source, chd_file &diff_chd) { - astring fname = astring(name).cat(".dif"); + std::string fname = std::string(name).append(".dif"); /* try to open the diff */ //printf("Opening differencing image file: %s\n", fname.c_str()); @@ -198,7 +198,7 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file file_error filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); //printf("Opening differencing image file: %s\n", fullpath.c_str()); @@ -211,11 +211,11 @@ static chd_error open_disk_diff(emu_options &options, const char *name, chd_file filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); /* create the CHD */ - //printf("Creating differencing image file: %s\n", fullpath.c_str()); + //printf("Creating differencing image file: %s\n", fupointllpath.c_str()); chd_codec_type compression[4] = { CHD_CODEC_NONE }; chd_error err = diff_chd.create(fullpath.c_str(), source.logical_bytes(), source.hunk_bytes(), compression, source); if (err != CHDERR_NONE) diff --git a/src/emu/info.c b/src/emu/info.c index 67a31eae63b..9cb59d5c0cc 100644 --- a/src/emu/info.c +++ b/src/emu/info.c @@ -193,9 +193,9 @@ void info_xml_creator::output(FILE *out) // output the DTD fprintf(m_output, "\n"); - astring dtd(s_dtd_string); - dtd.replace(0,"__XML_ROOT__", emulator_info::get_xml_root()); - dtd.replace(0,"__XML_TOP__", emulator_info::get_xml_top()); + std::string dtd(s_dtd_string); + strreplace(dtd, "__XML_ROOT__", emulator_info::get_xml_root()); + strreplace(dtd, "__XML_TOP__", emulator_info::get_xml_top()); fprintf(m_output, "%s\n\n", dtd.c_str()); @@ -239,7 +239,7 @@ void info_xml_creator::output_one() // allocate input ports machine_config &config = m_drivlist.config(); ioport_list portlist; - astring errors; + std::string errors; device_iterator iter(config.root_device()); for (device_t *device = iter.first(); device != NULL; device = iter.next()) portlist.append(*device, errors); @@ -325,7 +325,7 @@ void info_xml_creator::output_one_device(device_t &device, const char *devtag) has_speaker = TRUE; // generate input list ioport_list portlist; - astring errors; + std::string errors; device_iterator iptiter(device); for (device_t *dev = iptiter.first(); dev != NULL; dev = iptiter.next()) portlist.append(*dev, errors); @@ -341,8 +341,8 @@ void info_xml_creator::output_one_device(device_t &device, const char *devtag) // start to output info fprintf(m_output, "\t<%s", emulator_info::get_xml_top()); fprintf(m_output, " name=\"%s\"", xml_normalize_string(device.shortname())); - astring src(device.source()); - src.replace("../",""); + std::string src(device.source()); + strreplace(src,"../", ""); fprintf(m_output, " sourcefile=\"%s\"", xml_normalize_string(src.c_str())); fprintf(m_output, " isdevice=\"yes\""); fprintf(m_output, " runnable=\"no\""); @@ -402,8 +402,8 @@ void info_xml_creator::output_devices() { for (const device_slot_option *option = slot->first_option(); option != NULL; option = option->next()) { - astring temptag("_"); - temptag.cat(option->name()); + std::string temptag("_"); + temptag.append(option->name()); device_t *dev = const_cast(m_drivlist.config()).device_add(&m_drivlist.config().root_device(), temptag.c_str(), option->devtype(), 0); // notify this device and all its subdevices that they are now configured @@ -534,53 +534,53 @@ void info_xml_creator::output_rom(device_t &device) } } - astring output; + std::string output; // opening tag if (!is_disk) - output.cat("\t\t\n"); + output.append("/>\n"); fprintf(m_output, "%s", output.c_str()); } @@ -627,8 +627,8 @@ void info_xml_creator::output_chips(device_t &device, const char *root_tag) { if (strcmp(exec->device().tag(), device.tag())) { - astring newtag(exec->device().tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(exec->device().tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); fprintf(m_output, "\t\tdevice().tag(), device.tag())) { - astring newtag(sound->device().tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(sound->device().tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); fprintf(m_output, "\t\ttag(), device.tag())) { - astring newtag(screendev->tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(screendev->tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); fprintf(m_output, "\t\tfirst_field(); field != NULL; field = field->next()) if (field->type() == type) { - astring output; + std::string output; - astring newtag(port->tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(port->tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); // output the switch name information - astring normalized_field_name(xml_normalize_string(field->name())); - astring normalized_newtag(xml_normalize_string(newtag.c_str())); - output.catprintf("\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field->mask()); + std::string normalized_field_name(xml_normalize_string(field->name())); + std::string normalized_newtag(xml_normalize_string(newtag.c_str())); + strcatprintf(output,"\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field->mask()); // loop over settings for (ioport_setting *setting = field->first_setting(); setting != NULL; setting = setting->next()) { - output.catprintf("\t\t\t<%s name=\"%s\" value=\"%u\"%s/>\n", innertag, xml_normalize_string(setting->name()), setting->value(), setting->value() == field->defvalue() ? " default=\"yes\"" : ""); + strcatprintf(output,"\t\t\t<%s name=\"%s\" value=\"%u\"%s/>\n", innertag, xml_normalize_string(setting->name()), setting->value(), setting->value() == field->defvalue() ? " default=\"yes\"" : ""); } // terminate the switch entry - output.catprintf("\t\t\n", outertag); + strcatprintf(output,"\t\t\n", outertag); fprintf(m_output, "%s", output.c_str()); } @@ -1210,8 +1210,8 @@ void info_xml_creator::output_images(device_t &device, const char *root_tag) { if (strcmp(imagedev->device().tag(), device.tag())) { - astring newtag(imagedev->device().tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(imagedev->device().tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); // print m_output device type fprintf(m_output, "\t\timage_type_name())); @@ -1238,7 +1238,7 @@ void info_xml_creator::output_images(device_t &device, const char *root_tag) fprintf(m_output, " briefname=\"%s\"", xml_normalize_string(shortname)); fprintf(m_output, "/>\n"); - astring extensions(imagedev->file_extensions()); + std::string extensions(imagedev->file_extensions()); char *ext = strtok((char *)extensions.c_str(), ","); while (ext != NULL) @@ -1268,8 +1268,8 @@ void info_xml_creator::output_slots(device_t &device, const char *root_tag) if (strcmp(slot->device().tag(), device.tag())) { - astring newtag(slot->device().tag()), oldtag(":"); - newtag.substr(newtag.find(oldtag.cat(root_tag).c_str()) + oldtag.len()); + std::string newtag(slot->device().tag()), oldtag(":"); + newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length()); // print m_output device type fprintf(m_output, "\t\t\n", xml_normalize_string(newtag.c_str())); @@ -1341,11 +1341,11 @@ void info_xml_creator::output_ramoptions() if (ram->extra_options() != NULL) { - astring options(ram->extra_options()); - for (int start = 0, end = options.chr(0, ','); ; start = end + 1, end = options.chr(start, ',')) + std::string options(ram->extra_options()); + for (int start = 0, end = options.find_first_of(',');; start = end + 1, end = options.find_first_of(',', start)) { - astring option; - option.cpysubstr(options, start, (end == -1) ? -1 : end - start); + std::string option; + option.assign(options.substr(start, (end == -1) ? -1 : end - start)); fprintf(m_output, "\t\t%u\n", ram_device::parse_string(option.c_str())); if (end == -1) break; diff --git a/src/emu/input.c b/src/emu/input.c index f62ed6889c7..28337c7cf81 100644 --- a/src/emu/input.c +++ b/src/emu/input.c @@ -529,29 +529,29 @@ bool joystick_map::parse(const char *mapstring) // friendly display //------------------------------------------------- -const char *joystick_map::to_string(astring &str) const +const char *joystick_map::to_string(std::string &str) const { - str.printf("%s\n", m_origstring.c_str()); + strprintf(str, "%s\n", m_origstring.c_str()); for (int rownum = 0; rownum < 9; rownum++) { - str.catprintf(" "); + str.append(" "); for (int colnum = 0; colnum < 9; colnum++) switch (m_map[rownum][colnum]) { - case JOYSTICK_MAP_UP | JOYSTICK_MAP_LEFT: str.catprintf("7"); break; - case JOYSTICK_MAP_UP: str.catprintf("8"); break; - case JOYSTICK_MAP_UP | JOYSTICK_MAP_RIGHT: str.catprintf("9"); break; - case JOYSTICK_MAP_LEFT: str.catprintf("4"); break; - case JOYSTICK_MAP_NEUTRAL: str.catprintf("5"); break; - case JOYSTICK_MAP_RIGHT: str.catprintf("6"); break; - case JOYSTICK_MAP_DOWN | JOYSTICK_MAP_LEFT: str.catprintf("1"); break; - case JOYSTICK_MAP_DOWN: str.catprintf("2"); break; - case JOYSTICK_MAP_DOWN | JOYSTICK_MAP_RIGHT:str.catprintf("3"); break; - case JOYSTICK_MAP_STICKY: str.catprintf("s"); break; - default: str.catprintf("?"); break; + case JOYSTICK_MAP_UP | JOYSTICK_MAP_LEFT: str.append("7"); break; + case JOYSTICK_MAP_UP: str.append("8"); break; + case JOYSTICK_MAP_UP | JOYSTICK_MAP_RIGHT: str.append("9"); break; + case JOYSTICK_MAP_LEFT: str.append("4"); break; + case JOYSTICK_MAP_NEUTRAL: str.append("5"); break; + case JOYSTICK_MAP_RIGHT: str.append("6"); break; + case JOYSTICK_MAP_DOWN | JOYSTICK_MAP_LEFT: str.append("1"); break; + case JOYSTICK_MAP_DOWN: str.append("2"); break; + case JOYSTICK_MAP_DOWN | JOYSTICK_MAP_RIGHT:str.append("3"); break; + case JOYSTICK_MAP_STICKY: str.append("s"); break; + default: str.append("?"); break; } - str.catprintf("\n"); + str.append("\n"); } return str.c_str(); } @@ -808,7 +808,7 @@ input_device::input_device(input_class &_class, int devindex, const char *name, mapstring = joystick_map_8way; // parse it - astring tempstr; + std::string tempstr; if (!m_joymap.parse(mapstring)) { osd_printf_error("Invalid joystick map: %s\n", mapstring); @@ -1461,9 +1461,9 @@ input_code input_manager::code_from_itemid(input_item_id itemid) const // friendly name //------------------------------------------------- -const char *input_manager::code_name(astring &str, input_code code) const +const char *input_manager::code_name(std::string &str, input_code code) const { - str.reset(); + str.clear(); // if nothing there, return an empty string input_device_item *item = item_from_code(code); @@ -1474,19 +1474,19 @@ const char *input_manager::code_name(astring &str, input_code code) const const char *devclass = (*devclass_string_table)[code.device_class()]; // determine the devindex part - astring devindex; - devindex.printf("%d", code.device_index() + 1); + std::string devindex; + strprintf(devindex, "%d", code.device_index() + 1); // if we're unifying all devices, don't display a number if (!m_class[code.device_class()]->multi()) - devindex.reset(); + devindex.clear(); // keyboard 0 doesn't show a class or index if it is the only one input_device_class device_class = item->device().devclass(); if (device_class == DEVICE_CLASS_KEYBOARD && m_keyboard_class.maxindex() == 0) { devclass = ""; - devindex.reset(); + devindex.clear(); } // devcode part comes from the item name @@ -1501,16 +1501,17 @@ const char *input_manager::code_name(astring &str, input_code code) const devcode = ""; // concatenate the strings - str.cpy(devclass); + str.assign(devclass); if (!devindex.empty()) - str.cat(" ").cat(devindex); + str.append(" ").append(devindex); if (devcode[0] != 0) - str.cat(" ").cat(devcode); + str.append(" ").append(devcode); if (modifier != NULL) - str.cat(" ").cat(modifier); + str.append(" ").append(modifier); // delete any leading spaces - return str.trimspace().c_str(); + strtrimspace(str); + return str.c_str(); } @@ -1518,16 +1519,16 @@ const char *input_manager::code_name(astring &str, input_code code) const // code_to_token - create a token for a given code //------------------------------------------------- -const char *input_manager::code_to_token(astring &str, input_code code) const +const char *input_manager::code_to_token(std::string &str, input_code code) const { // determine the devclass part const char *devclass = (*devclass_token_table)[code.device_class()]; // determine the devindex part; keyboard 0 doesn't show an index - astring devindex; - devindex.printf("%d", code.device_index() + 1); + std::string devindex; + strprintf(devindex, "%d", code.device_index() + 1); if (code.device_class() == DEVICE_CLASS_KEYBOARD && code.device_index() == 0) - devindex.reset(); + devindex.clear(); // determine the itemid part; look up in the table if we don't have a token input_device_item *item = item_from_code(code); @@ -1542,15 +1543,15 @@ const char *input_manager::code_to_token(astring &str, input_code code) const itemclass = (*itemclass_token_table)[code.item_class()]; // concatenate the strings - str.cpy(devclass); + str.assign(devclass); if (!devindex.empty()) - str.cat("_").cat(devindex); + str.append("_").append(devindex); if (devcode[0] != 0) - str.cat("_").cat(devcode); + str.append("_").append(devcode); if (modifier != NULL) - str.cat("_").cat(modifier); + str.append("_").append(modifier); if (itemclass[0] != 0) - str.cat("_").cat(itemclass); + str.append("_").append(itemclass); return str.c_str(); } @@ -1563,13 +1564,13 @@ const char *input_manager::code_to_token(astring &str, input_code code) const input_code input_manager::code_from_token(const char *_token) { // copy the token and break it into pieces - astring token[6]; + std::string token[6]; int numtokens; for (numtokens = 0; numtokens < ARRAY_LENGTH(token); ) { // make a token up to the next underscore char *score = (char *)strchr(_token, '_'); - token[numtokens++].cpy(_token, (score == NULL) ? strlen(_token) : (score - _token)); + token[numtokens++].assign(_token, (score == NULL) ? strlen(_token) : (score - _token)); // if we hit the end, we're done, else advance our pointer if (score == NULL) @@ -1614,7 +1615,7 @@ input_code input_manager::code_from_token(const char *_token) for (itemid = ITEM_ID_FIRST_VALID; itemid <= device->maxitem(); itemid++) { input_device_item *item = device->item(itemid); - if (item != NULL && token[curtok].cmp(item->token()) == 0) + if (item != NULL && token[curtok].compare(item->token()) == 0) { // take the itemclass from the item itemclass = item->itemclass(); @@ -1925,12 +1926,12 @@ bool input_manager::seq_poll() // sequence //------------------------------------------------- -const char *input_manager::seq_name(astring &str, const input_seq &seq) const +const char *input_manager::seq_name(std::string &str, const input_seq &seq) const { // make a copy of our sequence, removing any invalid bits input_code clean_codes[sizeof(seq) / sizeof(input_code)]; int clean_index = 0; - astring codestr; + std::string codestr; for (int codenum = 0; seq[codenum] != input_seq::end_code; codenum++) { // if this is a code item which is not valid, don't copy it and remove any preceding ORs/NOTs @@ -1946,28 +1947,28 @@ const char *input_manager::seq_name(astring &str, const input_seq &seq) const // special case: empty if (clean_index == 0) - return str.cpy((seq.length() == 0) ? "None" : "n/a").c_str(); + return str.assign((seq.length() == 0) ? "None" : "n/a").c_str(); // start with an empty buffer - str.reset(); + str.clear(); // loop until we hit the end for (int codenum = 0; codenum < clean_index; codenum++) { // append a space if not the first code if (codenum != 0) - str.cat(" "); + str.append(" "); // handle OR/NOT codes here input_code code = clean_codes[codenum]; if (code == input_seq::or_code) - str.cat("or"); + str.append("or"); else if (code == input_seq::not_code) - str.cat("not"); + str.append("not"); // otherwise, assume it is an input code and ask the input system to generate it else - str.cat(code_name(codestr, code)); + str.append(code_name(codestr, code)); } return str.c_str(); } @@ -1978,31 +1979,31 @@ const char *input_manager::seq_name(astring &str, const input_seq &seq) const // a sequence //------------------------------------------------- -const char *input_manager::seq_to_tokens(astring &str, const input_seq &seq) const +const char *input_manager::seq_to_tokens(std::string &str, const input_seq &seq) const { // start with an empty buffer - str.reset(); + str.clear(); // loop until we hit the end - astring codestr; + std::string codestr; for (int codenum = 0; seq[codenum] != input_seq::end_code; codenum++) { // append a space if not the first code if (codenum != 0) - str.cat(" "); + str.append(" "); // handle OR/NOT codes here input_code code = seq[codenum]; if (code == input_seq::or_code) - str.cat("OR"); + str.append("OR"); else if (code == input_seq::not_code) - str.cat("NOT"); + str.append("NOT"); else if (code == input_seq::default_code) - str.cat("DEFAULT"); + str.append("DEFAULT"); // otherwise, assume it is an input code and ask the input system to generate it else - str.cat(code_to_token(codestr, code)); + str.append(code_to_token(codestr, code)); } return str.c_str(); } @@ -2019,7 +2020,7 @@ void input_manager::seq_from_tokens(input_seq &seq, const char *string) seq.reset(); // loop until we're done - astring strcopy = string; + std::string strcopy = string; char *str = const_cast(strcopy.c_str()); while (1) { @@ -2072,7 +2073,7 @@ bool input_manager::set_global_joystick_map(const char *mapstring) if (!map.parse(mapstring)) return false; - astring tempstr; + std::string tempstr; osd_printf_verbose("Input: Changing default joystick map = %s\n", map.to_string(tempstr)); // iterate over joysticks and set the map @@ -2107,11 +2108,15 @@ input_device_item::input_device_item(input_device &device, const char *name, voi { // use a standard token name for know item IDs if (itemid <= ITEM_ID_MAXIMUM && (*itemid_token_table)[itemid] != NULL) - m_token.cpy((*itemid_token_table)[itemid]); + m_token.assign((*itemid_token_table)[itemid]); // otherwise, create a tokenized name - else - m_token.cpy(name).makeupper().delchr(' ').delchr('_'); + else { + m_token.assign(name); + strmakeupper(m_token); + strdelchr(m_token, ' '); + strdelchr(m_token, '_'); + } } diff --git a/src/emu/input.h b/src/emu/input.h index 7db18199a9a..6a67685907a 100644 --- a/src/emu/input.h +++ b/src/emu/input.h @@ -365,7 +365,7 @@ public: bool parse(const char *mapstring); // create a friendly string - const char *to_string(astring &str) const; + const char *to_string(std::string &str) const; // update the state of a live map UINT8 update(INT32 xaxisval, INT32 yaxisval); @@ -390,7 +390,7 @@ private: // internal state UINT8 m_map[9][9]; // 9x9 grid UINT8 m_lastmap; // last value returned (for sticky tracking) - astring m_origstring; // originally parsed string + std::string m_origstring; // originally parsed string }; @@ -520,12 +520,12 @@ public: protected: // internal state input_device & m_device; // reference to our owning device - astring m_name; // string name of item + std::string m_name; // string name of item void * m_internal; // internal callback pointer input_item_id m_itemid; // originally specified item id input_item_class m_itemclass; // class of the item item_get_state_func m_getstate; // get state callback - astring m_token; // tokenized name for non-standard items + std::string m_token; // tokenized name for non-standard items // live state INT32 m_current; // current raw value @@ -569,7 +569,7 @@ public: private: // internal state input_class & m_class; // reference to our class - astring m_name; // string name of device + std::string m_name; // string name of device int m_devindex; // device index of this device auto_pointer m_item[ITEM_ID_ABSOLUTE_MAXIMUM+1]; // array of pointers to items input_item_id m_maxitem; // maximum item index @@ -655,8 +655,8 @@ public: input_device *device_from_code(input_code code) const; input_device_item *item_from_code(input_code code) const; input_code code_from_itemid(input_item_id itemid) const; - const char *code_name(astring &str, input_code code) const; - const char *code_to_token(astring &str, input_code code) const; + const char *code_name(std::string &str, input_code code) const; + const char *code_to_token(std::string &str, input_code code) const; input_code code_from_token(const char *_token); // input sequence readers @@ -669,8 +669,8 @@ public: const input_seq &seq_poll_final() const { return m_poll_seq; } // input sequence helpers - const char *seq_name(astring &str, const input_seq &seq) const; - const char *seq_to_tokens(astring &str, const input_seq &seq) const; + const char *seq_name(std::string &str, const input_seq &seq) const; + const char *seq_to_tokens(std::string &str, const input_seq &seq) const; void seq_from_tokens(input_seq &seq, const char *_token); // misc diff --git a/src/emu/ioport.c b/src/emu/ioport.c index 92d39a90eac..dec69cdb202 100644 --- a/src/emu/ioport.c +++ b/src/emu/ioport.c @@ -640,7 +640,7 @@ static const struct // to the current list //------------------------------------------------- -void ioport_list::append(device_t &device, astring &errorbuf) +void ioport_list::append(device_t &device, std::string &errorbuf) { // no constructor, no list ioport_constructor constructor = device.input_ports(); @@ -648,7 +648,7 @@ void ioport_list::append(device_t &device, astring &errorbuf) return; // reset error buffer - errorbuf.reset(); + errorbuf.clear(); // detokenize into the list (*constructor)(device, *this, errorbuf); @@ -897,7 +897,7 @@ void natural_keyboard::post(unicode_char ch) if (LOG_NATURAL_KEYBOARD) { const keycode_map_entry *code = find_code(ch); - astring tempstr; + std::string tempstr; logerror("natural_keyboard::post(): code=%i (%s) field->name='%s'\n", int(ch), unicode_to_string(tempstr, ch), (code != NULL && code->field[0] != NULL) ? code->field[0]->name() : ""); } @@ -1101,7 +1101,7 @@ void natural_keyboard::build_codes(ioport_manager &manager) if (LOG_NATURAL_KEYBOARD) { - astring tempstr; + std::string tempstr; logerror("natural_keyboard: code=%i (%s) port=%p field->name='%s'\n", int(code), unicode_to_string(tempstr, code), port, field->name()); } } @@ -1234,23 +1234,23 @@ void natural_keyboard::timer(void *ptr, int param) // logging and debugging //------------------------------------------------- -const char *natural_keyboard::unicode_to_string(astring &buffer, unicode_char ch) +const char *natural_keyboard::unicode_to_string(std::string &buffer, unicode_char ch) { - buffer.reset(); + buffer.clear(); switch (ch) { // check some magic values - case '\0': buffer.cpy("\\0"); break; - case '\r': buffer.cpy("\\r"); break; - case '\n': buffer.cpy("\\n"); break; - case '\t': buffer.cpy("\\t"); break; + case '\0': buffer.assign("\\0"); break; + case '\r': buffer.assign("\\r"); break; + case '\n': buffer.assign("\\n"); break; + case '\t': buffer.assign("\\t"); break; default: // seven bit ASCII is easy if (ch >= 32 && ch < 128) { char temp[2] = { char(ch), 0 }; - buffer.cpy(temp); + buffer.assign(temp); } else if (ch >= UCHAR_MAMEKEY_BEGIN) { @@ -1260,8 +1260,8 @@ const char *natural_keyboard::unicode_to_string(astring &buffer, unicode_char ch } // did we fail to resolve? if so, we have a last resort - if (buffer.len() == 0) - buffer.format("U+%04X", unsigned(ch)); + if (buffer.length() == 0) + strprintf(buffer,"U+%04X", unsigned(ch)); break; } return buffer.c_str(); @@ -1307,13 +1307,13 @@ void natural_keyboard::frame_update(ioport_port &port, ioport_value &digital) // key_name - returns the name of a specific key //------------------------------------------------- -const char *natural_keyboard::key_name(astring &str, unicode_char ch) +const char *natural_keyboard::key_name(std::string &str, unicode_char ch) { // attempt to get the string from the character info table const char_info *ci = char_info::find(ch); const char *result = (ci != NULL) ? ci->name : NULL; if (result != NULL) - str.cpy(result); + str.assign(result); // if that doesn't work, convert to UTF-8 else if (ch > 0x7F || isprint(ch)) @@ -1321,12 +1321,12 @@ const char *natural_keyboard::key_name(astring &str, unicode_char ch) char buf[10]; int count = utf8_from_uchar(buf, ARRAY_LENGTH(buf), ch); buf[count] = 0; - str.cpy(buf); + str.assign(buf); } // otherwise, opt for question marks else - str.cpy("???"); + str.assign("???"); return str.c_str(); } @@ -1335,9 +1335,9 @@ const char *natural_keyboard::key_name(astring &str, unicode_char ch) // dump - dumps info to string //------------------------------------------------- -astring natural_keyboard::dump() +std::string natural_keyboard::dump() { - astring buffer, tempstr; + std::string buffer, tempstr; const size_t left_column_width = 24; // loop through all codes @@ -1345,18 +1345,18 @@ astring natural_keyboard::dump() { // describe the character code const natural_keyboard::keycode_map_entry &code = m_keycode_map[index]; - buffer.catprintf("%08X (%s) ", code.ch, unicode_to_string(tempstr, code.ch)); + strcatprintf(buffer,"%08X (%s) ", code.ch, unicode_to_string(tempstr, code.ch)); // pad with spaces - while (buffer.len() < left_column_width) - buffer.cat(' '); + while (buffer.length() < left_column_width) + buffer.push_back(' '); // identify the keys used for (int field = 0; field < ARRAY_LENGTH(code.field) && code.field[field] != 0; field++) - buffer.catprintf("%s'%s'", (field > 0) ? ", " : "", code.field[field]->name()); + strcatprintf(buffer, "%s'%s'", (field > 0) ? ", " : "", code.field[field]->name()); // carriage return - buffer.cat('\n'); + buffer.push_back('\n'); } return buffer; @@ -2041,7 +2041,7 @@ void ioport_field::crosshair_position(float &x, float &y, bool &gotx, bool &goty // descriptions //------------------------------------------------- -void ioport_field::expand_diplocation(const char *location, astring &errorbuf) +void ioport_field::expand_diplocation(const char *location, std::string &errorbuf) { // if nothing present, bail if (location == NULL) @@ -2050,7 +2050,7 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) m_diploclist.reset(); // parse the string - astring name; // Don't move this variable inside the loop, lastname's lifetime depends on it being outside + std::string name; // Don't move this variable inside the loop, lastname's lifetime depends on it being outside const char *lastname = NULL; const char *curentry = location; int entries = 0; @@ -2062,8 +2062,8 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) comma = curentry + strlen(curentry); // extract it to tempbuf - astring tempstr; - tempstr.cpy(curentry, comma - curentry); + std::string tempstr; + tempstr.assign(curentry, comma - curentry); // first extract the switch name if present const char *number = tempstr.c_str(); @@ -2072,7 +2072,7 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) // allocate and copy the name if it is present if (colon != NULL) { - lastname = name.cpy(number, colon - number).c_str(); + lastname = name.assign(number, colon - number).c_str(); number = colon + 1; } @@ -2081,10 +2081,10 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) { if (lastname == NULL) { - errorbuf.catprintf("Switch location '%s' missing switch name!\n", location); + strcatprintf(errorbuf, "Switch location '%s' missing switch name!\n", location); lastname = (char *)"UNK"; } - name.cpy(lastname); + name.assign(lastname); } // if the number is preceded by a '!' it's active high @@ -2098,7 +2098,7 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) // now scan the switch number int swnum = -1; if (sscanf(number, "%d", &swnum) != 1) - errorbuf.catprintf("Switch location '%s' has invalid format!\n", location); + strcatprintf(errorbuf, "Switch location '%s' has invalid format!\n", location); // allocate a new entry m_diploclist.append(*global_alloc(ioport_diplocation(name.c_str(), swnum, invert))); @@ -2116,7 +2116,7 @@ void ioport_field::expand_diplocation(const char *location, astring &errorbuf) for (bits = 0, temp = m_mask; temp != 0 && bits < 32; bits++) temp &= temp - 1; if (bits != entries) - errorbuf.catprintf("Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask); + strcatprintf(errorbuf, "Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask); } @@ -2174,21 +2174,21 @@ ioport_field_live::ioport_field_live(ioport_field &field, analog_field *analog) if (field.type_class() == INPUT_CLASS_KEYBOARD && field.specific_name() == NULL) { // loop through each character on the field - astring tempstr; + std::string tempstr; for (int which = 0; ; which++) { unicode_char ch = field.keyboard_code(which); if (ch == 0) break; - name.catprintf("%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(tempstr, ch)); + strcatprintf(name, "%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(tempstr, ch)); } // trim extra spaces - name.trimspace(); + strtrimspace(name); // special case - if (name.len() == 0) - name.cpy("Unnamed Key"); + if (name.length() == 0) + name.assign("Unnamed Key"); } } @@ -2321,7 +2321,7 @@ void ioport_port::frame_update(ioport_field *mouse_field) // wholly overlapped by other fields //------------------------------------------------- -void ioport_port::collapse_fields(astring &errorbuf) +void ioport_port::collapse_fields(std::string &errorbuf) { ioport_value maskbits = 0; int lastmodcount = -1; @@ -2350,13 +2350,13 @@ void ioport_port::collapse_fields(astring &errorbuf) // for errors //------------------------------------------------- -void ioport_port::insert_field(ioport_field &newfield, ioport_value &disallowedbits, astring &errorbuf) +void ioport_port::insert_field(ioport_field &newfield, ioport_value &disallowedbits, std::string &errorbuf) { // verify against the disallowed bits, but only if we are condition-free if (newfield.condition().none()) { if ((newfield.mask() & disallowedbits) != 0) - errorbuf.catprintf("INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask()); + strcatprintf(errorbuf, "INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask()); disallowedbits |= newfield.mask(); } @@ -2479,7 +2479,7 @@ time_t ioport_manager::initialize() device_iterator iter(machine().root_device()); for (device_t *device = iter.first(); device != NULL; device = iter.next()) { - astring errors; + std::string errors; m_portlist.append(*device, errors); if (!errors.empty()) osd_printf_error("Input port errors:\n%s", errors.c_str()); @@ -3169,9 +3169,9 @@ void ioport_manager::save_config(int config_type, xml_data_node *parentnode) void ioport_manager::save_sequence(xml_data_node *parentnode, input_seq_type type, ioport_type porttype, const input_seq &seq) { // get the string for the sequence - astring seqstring; + std::string seqstring; if (seq.length() == 0) - seqstring.cpy("NONE"); + seqstring.assign("NONE"); else machine().input().seq_to_tokens(seqstring, seq); @@ -3231,7 +3231,7 @@ void ioport_manager::save_default_inputs(xml_data_node *parentnode) if (portnode != NULL) { // add the port information and attributes - astring tempstr; + std::string tempstr; xml_set_attribute(portnode, "type", input_type_to_token(tempstr, entry->type(), entry->player())); // add only the sequences that have changed from the defaults @@ -3286,7 +3286,7 @@ void ioport_manager::save_game_inputs(xml_data_node *parentnode) if (portnode != NULL) { // add the identifying information and attributes - astring tempstr; + std::string tempstr; xml_set_attribute(portnode, "tag", port->tag()); xml_set_attribute(portnode, "type", input_type_to_token(tempstr, field->type(), field->player())); xml_set_attribute_int(portnode, "mask", field->mask()); @@ -3629,7 +3629,7 @@ void ioport_manager::record_port(ioport_port &port) // ioport_configurer - constructor //------------------------------------------------- -ioport_configurer::ioport_configurer(device_t &owner, ioport_list &portlist, astring &errorbuf) +ioport_configurer::ioport_configurer(device_t &owner, ioport_list &portlist, std::string &errorbuf) : m_owner(owner), m_portlist(portlist), m_errorbuf(errorbuf), @@ -4397,15 +4397,15 @@ ioport_type ioport_manager::token_to_input_type(const char *string, int &player) // type and player to a string token //------------------------------------------------- -const char *ioport_manager::input_type_to_token(astring &str, ioport_type type, int player) +const char *ioport_manager::input_type_to_token(std::string &str, ioport_type type, int player) { // look up the port and return the token input_type_entry *entry = m_type_to_entry[type][player]; if (entry != NULL) - return str.cpy(entry->token()).c_str(); + return str.assign(entry->token()).c_str(); // if that fails, carry on - return str.format("TYPE_OTHER(%d,%d)", type, player).c_str(); + return strformat(str, "TYPE_OTHER(%d,%d)", type, player).c_str(); } diff --git a/src/emu/ioport.h b/src/emu/ioport.h index 49058ab061d..27f1e22b71f 100644 --- a/src/emu/ioport.h +++ b/src/emu/ioport.h @@ -667,7 +667,7 @@ struct xml_data_node; class analog_field; // constructor function pointer -typedef void (*ioport_constructor)(device_t &owner, ioport_list &portlist, astring &errorbuf); +typedef void(*ioport_constructor)(device_t &owner, ioport_list &portlist, std::string &errorbuf); // I/O port callback function delegates typedef device_delegate ioport_field_read_delegate; @@ -830,10 +830,10 @@ public: void post_coded(const char *text, size_t length = 0, const attotime &rate = attotime::zero); void frame_update(ioport_port &port, ioport_value &digital); - const char *key_name(astring &str, unicode_char ch); + const char *key_name(std::string &str, unicode_char ch); // debugging - astring dump(); + std::string dump(); private: // internal keyboard code information @@ -850,7 +850,7 @@ private: attotime choose_delay(unicode_char ch); void internal_post(unicode_char ch); void timer(void *ptr, int param); - const char *unicode_to_string(astring &buffer, unicode_char ch); + const char *unicode_to_string(std::string &buffer, unicode_char ch); const keycode_map_entry *find_code(unicode_char ch) const; // internal state @@ -975,7 +975,7 @@ public: private: ioport_diplocation * m_next; // pointer to the next bit - astring m_name; // name of the physical DIP switch + std::string m_name; // name of the physical DIP switch UINT8 m_number; // physical switch number bool m_invert; // is this an active-high DIP? }; @@ -1093,7 +1093,7 @@ public: void set_user_settings(const user_settings &settings); private: - void expand_diplocation(const char *location, astring &errorbuf); + void expand_diplocation(const char *location, std::string &errorbuf); // internal state ioport_field * m_next; // pointer to next field in sequence @@ -1158,7 +1158,7 @@ struct ioport_field_live bool last; // were we pressed last time? bool toggle; // current toggle setting digital_joystick::direction_t joydir; // digital joystick direction index - astring name; // overridden name + std::string name; // overridden name }; @@ -1173,7 +1173,7 @@ public: ioport_list() { } using tagged_list::append; - void append(device_t &device, astring &errorbuf); + void append(device_t &device, std::string &errorbuf); }; @@ -1211,18 +1211,18 @@ public: // other operations ioport_field *field(ioport_value mask); - void collapse_fields(astring &errorbuf); + void collapse_fields(std::string &errorbuf); void frame_update(ioport_field *mouse_field); void init_live_state(); private: - void insert_field(ioport_field &newfield, ioport_value &disallowedbits, astring &errorbuf); + void insert_field(ioport_field &newfield, ioport_value &disallowedbits, std::string &errorbuf); // internal state ioport_port * m_next; // pointer to next port device_t & m_device; // associated device simple_list m_fieldlist; // list of ioport_fields - astring m_tag; // copy of this port's tag + std::string m_tag; // copy of this port's tag int m_modcount; // modification count ioport_value m_active; // mask of active bits in the port auto_pointer m_live; // live state of port (NULL if not live) @@ -1397,7 +1397,7 @@ public: void setup_natural_keyboard(ioport_queue_chars_delegate queue_chars, ioport_accept_char_delegate accept_char, ioport_charqueue_empty_delegate charqueue_empty); INT32 frame_interpolate(INT32 oldval, INT32 newval); ioport_type token_to_input_type(const char *string, int &player) const; - const char *input_type_to_token(astring &str, ioport_type type, int player); + const char *input_type_to_token(std::string &str, ioport_type type, int player); private: // internal helpers @@ -1473,7 +1473,7 @@ class ioport_configurer { public: // construction/destruction - ioport_configurer(device_t &owner, ioport_list &portlist, astring &errorbuf); + ioport_configurer(device_t &owner, ioport_list &portlist, std::string &errorbuf); // static helpers static const char *string_from_token(const char *string); @@ -1521,7 +1521,7 @@ private: // internal state device_t & m_owner; ioport_list & m_portlist; - astring & m_errorbuf; + std::string & m_errorbuf; ioport_port * m_curport; ioport_field * m_curfield; @@ -1566,7 +1566,7 @@ private: // start of table #define INPUT_PORTS_START(_name) \ -ATTR_COLD void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, astring &errorbuf) \ +ATTR_COLD void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, std::string &errorbuf) \ { \ ioport_configurer configurer(owner, portlist, errorbuf); // end of table @@ -1575,7 +1575,7 @@ ATTR_COLD void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, a // aliasing #define INPUT_PORTS_EXTERN(_name) \ - extern void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, astring &errorbuf) + extern void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, std::string &errorbuf) // including #define PORT_INCLUDE(_name) \ diff --git a/src/emu/luaengine.c b/src/emu/luaengine.c index 9084a97dc46..027d9731346 100644 --- a/src/emu/luaengine.c +++ b/src/emu/luaengine.c @@ -802,9 +802,9 @@ int lua_engine::luaopen_ioport(lua_State *L) } struct msg { - astring text; + std::string text; int ready; - astring response; + std::string response; int status; int done; } msg; @@ -817,7 +817,7 @@ void lua_engine::serve_lua() printf("%s v%s - %s\n%s\n%s\n\n", emulator_info::get_applongname(),build_version,emulator_info::get_fulllongname(),emulator_info::get_copyright_info(),LUA_COPYRIGHT); fflush(stdout); char buff[LUA_MAXINPUT]; - astring oldbuff; + std::string oldbuff; const char *b = LUA_PROMPT; @@ -830,8 +830,8 @@ void lua_engine::serve_lua() osd_lock_acquire(lock); if (msg.ready == 0) { msg.text = oldbuff; - if (oldbuff.len()!=0) msg.text.cat("\n"); - msg.text.cat(buff); + if (oldbuff.length()!=0) msg.text.append("\n"); + msg.text.append(buff); msg.ready = 1; msg.done = 0; } diff --git a/src/emu/machine.c b/src/emu/machine.c index fd397757baf..d225dda1a27 100644 --- a/src/emu/machine.c +++ b/src/emu/machine.c @@ -190,10 +190,10 @@ const char *running_machine::describe_context() { cpu_device *cpu = dynamic_cast(&executing->device()); if (cpu != NULL) - m_context.printf("'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), cpu->space(AS_PROGRAM).logaddrchars(), cpu->is_octal())); + strprintf(m_context, "'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), cpu->space(AS_PROGRAM).logaddrchars(), cpu->is_octal())); } else - m_context.cpy("(no context)"); + m_context.assign("(no context)"); return m_context.c_str(); } @@ -204,9 +204,9 @@ TIMER_CALLBACK_MEMBER(running_machine::autoboot_callback) manager().lua()->load_script(options().autoboot_script()); } else if (strlen(options().autoboot_command())!=0) { - astring cmd = astring(options().autoboot_command()); - cmd.replace("'","\\'"); - astring val = astring("emu.keypost('").cat(cmd.c_str()).cat("')").c_str(); + std::string cmd = std::string(options().autoboot_command()); + strreplace(cmd, "'", "\\'"); + std::string val = std::string("emu.keypost('").append(cmd.c_str()).append("')").c_str(); manager().lua()->load_string(val.c_str()); } } @@ -545,36 +545,36 @@ void running_machine::schedule_soft_reset() // software //------------------------------------------------- -astring running_machine::get_statename(const char *option) +std::string running_machine::get_statename(const char *option) { - astring statename_str(""); + std::string statename_str(""); if (option == NULL || option[0] == 0) - statename_str.cpy("%g"); + statename_str.assign("%g"); else - statename_str.cpy(option); + statename_str.assign(option); // strip any extension in the provided statename - int index = statename_str.rchr(0, '.'); + int index = statename_str.find_last_of('.'); if (index != -1) - statename_str.substr(0, index); + statename_str = statename_str.substr(0, index); // handle %d in the template (for image devices) - astring statename_dev("%d_"); - int pos = statename_str.find(0, statename_dev.c_str()); + std::string statename_dev("%d_"); + int pos = statename_str.find(statename_dev.c_str()); if (pos != -1) { // if more %d are found, revert to default and ignore them all - if (statename_str.find(pos + 3, statename_dev.c_str()) != -1) - statename_str.cpy("%g"); + if (statename_str.find(statename_dev.c_str(), pos + 3) != -1) + statename_str.assign("%g"); // else if there is a single %d, try to create the correct snapname else { int name_found = 0; // find length of the device name - int end1 = statename_str.find(pos + 3, "/"); - int end2 = statename_str.find(pos + 3, "%"); + int end1 = statename_str.find("/", pos + 3); + int end2 = statename_str.find("%", pos + 3); int end = -1; if ((end1 != -1) && (end2 != -1)) @@ -584,14 +584,14 @@ astring running_machine::get_statename(const char *option) else if (end2 != -1) end = end2; else - end = statename_str.len(); + end = statename_str.length(); if (end - pos < 3) fatalerror("Something very wrong is going on!!!\n"); - // copy the device name to an astring - astring devname_str; - devname_str.cpysubstr(statename_str, pos + 3, end - pos - 3); + // copy the device name to an std::string + std::string devname_str; + devname_str.assign(statename_str.substr(pos + 3, end - pos - 3)); //printf("check template: %s\n", devname_str.c_str()); // verify that there is such a device for this system @@ -599,19 +599,19 @@ astring running_machine::get_statename(const char *option) for (device_image_interface *image = iter.first(); image != NULL; image = iter.next()) { // get the device name - astring tempdevname(image->brief_instance_name()); + std::string tempdevname(image->brief_instance_name()); //printf("check device: %s\n", tempdevname.c_str()); - if (devname_str.cmp(tempdevname) == 0) + if (devname_str.compare(tempdevname) == 0) { // verify that such a device has an image mounted if (image->basename_noext() != NULL) { - astring filename(image->basename_noext()); + std::string filename(image->basename_noext()); // setup snapname and remove the %d_ - statename_str.replace(0, devname_str.c_str(), filename.c_str()); - statename_str.del(pos, 3); + strreplace(statename_str, devname_str.c_str(), filename.c_str()); + statename_str.erase(pos, 3); //printf("check image: %s\n", filename.c_str()); name_found = 1; @@ -621,13 +621,13 @@ astring running_machine::get_statename(const char *option) // or fallback to default if (name_found == 0) - statename_str.cpy("%g"); + statename_str.assign("%g"); } } // substitute path and gamename up front - statename_str.replace(0, "/", PATH_SEPARATOR); - statename_str.replace(0, "%g", basename()); + strreplace(statename_str, "/", PATH_SEPARATOR); + strreplace(statename_str, "%g", basename()); return statename_str; } @@ -643,15 +643,15 @@ void running_machine::set_saveload_filename(const char *filename) if (osd_is_absolute_path(filename)) { m_saveload_searchpath = NULL; - m_saveload_pending_file.cpy(filename); + m_saveload_pending_file.assign(filename); } else { m_saveload_searchpath = options().state_directory(); // take into account the statename option const char *stateopt = options().state_name(); - astring statename = get_statename(stateopt); - m_saveload_pending_file.cpy(statename.c_str()).cat(PATH_SEPARATOR).cat(filename).cat(".sta"); + std::string statename = get_statename(stateopt); + m_saveload_pending_file.assign(statename.c_str()).append(PATH_SEPARATOR).append(filename).append(".sta"); } } @@ -955,7 +955,7 @@ void running_machine::handle_saveload() // unschedule the operation cancel: - m_saveload_pending_file.reset(); + m_saveload_pending_file.clear(); m_saveload_searchpath = NULL; m_saveload_schedule = SLS_NONE; } @@ -1203,12 +1203,12 @@ const char *running_machine::image_parent_basename(device_t *device) NVRAM depending of selected BIOS -------------------------------------------------*/ -astring &running_machine::nvram_filename(astring &result, device_t &device) +std::string &running_machine::nvram_filename(std::string &result, device_t &device) { // start with either basename or basename_biosnum - result.cpy(basename()); + result.assign(basename()); if (root_device().system_bios() != 0 && root_device().default_bios() != root_device().system_bios()) - result.catprintf("_%d", root_device().system_bios() - 1); + strcatprintf(result, "_%d", root_device().system_bios() - 1); // device-based NVRAM gets its own name in a subdirectory if (&device != &root_device()) @@ -1217,11 +1217,12 @@ astring &running_machine::nvram_filename(astring &result, device_t &device) const char *software = image_parent_basename(&device); if (software!=NULL && strlen(software)>0) { - result.cat(PATH_SEPARATOR).cat(software); + result.append(PATH_SEPARATOR).append(software); } - astring tag(device.tag()); - tag.del(0, 1).replacechr(':', '_'); - result.cat(PATH_SEPARATOR).cat(tag); + std::string tag(device.tag()); + tag.erase(0, 1); + strreplacechr(tag,':', '_'); + result.append(PATH_SEPARATOR).append(tag); } return result; } @@ -1235,7 +1236,7 @@ void running_machine::nvram_load() nvram_interface_iterator iter(root_device()); for (device_nvram_interface *nvram = iter.first(); nvram != NULL; nvram = iter.next()) { - astring filename; + std::string filename; emu_file file(options().nvram_directory(), OPEN_FLAG_READ); if (file.open(nvram_filename(filename, nvram->device()).c_str()) == FILERR_NONE) { @@ -1257,7 +1258,7 @@ void running_machine::nvram_save() nvram_interface_iterator iter(root_device()); for (device_nvram_interface *nvram = iter.first(); nvram != NULL; nvram = iter.next()) { - astring filename; + std::string filename; emu_file file(options().nvram_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (file.open(nvram_filename(filename, nvram->device()).c_str()) == FILERR_NONE) { diff --git a/src/emu/machine.h b/src/emu/machine.h index b045d37700a..a989ba2c874 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -253,14 +253,14 @@ private: // internal helpers void start(); void set_saveload_filename(const char *filename); - astring get_statename(const char *statename_opt); + std::string get_statename(const char *statename_opt); void fill_systime(system_time &systime, time_t t); void handle_saveload(); void soft_reset(void *ptr = NULL, INT32 param = 0); void watchdog_fired(void *ptr = NULL, INT32 param = 0); void watchdog_vblank(screen_device &screen, bool vblank_state); const char *image_parent_basename(device_t *device); - astring &nvram_filename(astring &result, device_t &device); + std::string &nvram_filename(std::string &result, device_t &device); void nvram_load(); void nvram_save(); @@ -306,8 +306,8 @@ private: UINT32 m_rand_seed; // current random number seed bool m_ui_active; // ui active or not (useful for games / systems with keyboard inputs) time_t m_base_time; // real time at initial emulation time - astring m_basename; // basename used for game-related paths - astring m_context; // context string buffer + std::string m_basename; // basename used for game-related paths + std::string m_context; // context string buffer int m_sample_rate; // the digital audio sample rate auto_pointer m_logfile; // pointer to the active log file @@ -320,7 +320,7 @@ private: }; saveload_schedule m_saveload_schedule; attotime m_saveload_schedule_time; - astring m_saveload_pending_file; + std::string m_saveload_pending_file; const char * m_saveload_searchpath; // notifier callbacks diff --git a/src/emu/machine/fdc_pll.c b/src/emu/machine/fdc_pll.c index 0efb48b813e..e0cd8338ef2 100644 --- a/src/emu/machine/fdc_pll.c +++ b/src/emu/machine/fdc_pll.c @@ -1,6 +1,6 @@ #include "fdc_pll.h" -astring fdc_pll_t::tts(attotime t) +std::string fdc_pll_t::tts(attotime t) { char buf[256]; bool neg = t.seconds < 0; diff --git a/src/emu/machine/fdc_pll.h b/src/emu/machine/fdc_pll.h index 4a356616126..7bb04e0be33 100644 --- a/src/emu/machine/fdc_pll.h +++ b/src/emu/machine/fdc_pll.h @@ -25,7 +25,7 @@ public: void commit(floppy_image_device *floppy, const attotime &tm); void stop_writing(floppy_image_device *floppy, const attotime &tm); - astring tts(attotime tm); + std::string tts(attotime tm); }; #endif diff --git a/src/emu/machine/hdc9234.c b/src/emu/machine/hdc9234.c index be924040fde..f3b6077db3f 100644 --- a/src/emu/machine/hdc9234.c +++ b/src/emu/machine/hdc9234.c @@ -1767,7 +1767,7 @@ void hdc9234_device::write_sectors() =========================================================================== */ -astring hdc9234_device::tts(const attotime &t) +std::string hdc9234_device::tts(const attotime &t) { char buf[256]; int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND; @@ -1775,7 +1775,7 @@ astring hdc9234_device::tts(const attotime &t) return buf; } -astring hdc9234_device::ttsn() +std::string hdc9234_device::ttsn() { return tts(machine().time()); } diff --git a/src/emu/machine/hdc9234.h b/src/emu/machine/hdc9234.h index e4efd35ad3e..a933f6b1959 100644 --- a/src/emu/machine/hdc9234.h +++ b/src/emu/machine/hdc9234.h @@ -184,10 +184,10 @@ private: void wait_line(int line, line_state level, int substate, bool stopwrite); // Converts attotime to a string - astring tts(const attotime &t); + std::string tts(const attotime &t); // Current time - astring ttsn(); + std::string ttsn(); // Utility routine to set or reset bits void set_bits(UINT8& byte, int mask, bool set); diff --git a/src/emu/machine/laserdsc.c b/src/emu/machine/laserdsc.c index 809422871a4..a027ac62271 100644 --- a/src/emu/machine/laserdsc.c +++ b/src/emu/machine/laserdsc.c @@ -755,7 +755,7 @@ void laserdisc_device::init_disc() throw emu_fatalerror("Laserdisc video must be compressed with the A/V codec!"); // read the metadata - astring metadata; + std::string metadata; chd_error err = m_disc->read_metadata(AV_METADATA_TAG, 0, metadata); if (err != CHDERR_NONE) throw emu_fatalerror("Non-A/V CHD file specified"); diff --git a/src/emu/machine/netlist.h b/src/emu/machine/netlist.h index 214b95c4b92..5b08b04a9dc 100644 --- a/src/emu/machine/netlist.h +++ b/src/emu/machine/netlist.h @@ -268,14 +268,14 @@ protected: // device_state_interface overrides - virtual void state_string_export(const device_state_entry &entry, astring &str) + virtual void state_string_export(const device_state_entry &entry, std::string &str) { if (entry.index() >= 0) { if (entry.index() & 1) - str.format("%10.6f", *((double *)entry.dataptr())); + strprintf(str,"%10.6f", *((double *)entry.dataptr())); else - str.format("%d", *((netlist_sig_t *)entry.dataptr())); + strprintf(str, "%d", *((netlist_sig_t *)entry.dataptr())); } } diff --git a/src/emu/machine/ram.c b/src/emu/machine/ram.c index d777ab9d064..6f5d3c4ec27 100644 --- a/src/emu/machine/ram.c +++ b/src/emu/machine/ram.c @@ -154,19 +154,19 @@ void ram_device::device_validity_check(validity_checker &valid) const if (!is_valid) { - astring output; - output.catprintf("Cannot recognize the RAM option %s", ramsize_string); - output.catprintf(" (valid options are %s", m_default_size); + std::string output; + strcatprintf(output, "Cannot recognize the RAM option %s", ramsize_string); + strcatprintf(output, " (valid options are %s", m_default_size); if (m_extra_options != NULL) - output.catprintf(",%s).\n", m_extra_options); + strcatprintf(output, ",%s).\n", m_extra_options); else - output.catprintf(").\n"); + strcatprintf(output, ").\n"); osd_printf_error("%s", output.c_str()); osd_printf_warning("Setting value to default %s\n",m_default_size); - astring error; + std::string error; mconfig().options().set_value(OPTION_RAMSIZE, m_default_size, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } diff --git a/src/emu/machine/upd765.c b/src/emu/machine/upd765.c index 214e10f8614..84aa7e1ae85 100644 --- a/src/emu/machine/upd765.c +++ b/src/emu/machine/upd765.c @@ -2181,7 +2181,7 @@ bool upd765_family_device::get_irq() const return cur_irq; } -astring upd765_family_device::tts(attotime t) +std::string upd765_family_device::tts(attotime t) { char buf[256]; const char *sign = ""; @@ -2194,7 +2194,7 @@ astring upd765_family_device::tts(attotime t) return buf; } -astring upd765_family_device::ttsn() +std::string upd765_family_device::ttsn() { return tts(machine().time()); } diff --git a/src/emu/machine/upd765.h b/src/emu/machine/upd765.h index 27ed83a7122..d692686be65 100644 --- a/src/emu/machine/upd765.h +++ b/src/emu/machine/upd765.h @@ -329,8 +329,8 @@ protected: emu_timer *poll_timer; - static astring tts(attotime t); - astring ttsn(); + static std::string tts(attotime t); + std::string ttsn(); enum { C_CONFIGURE, diff --git a/src/emu/machine/wd_fdc.c b/src/emu/machine/wd_fdc.c index 6205f92f973..79e766da362 100644 --- a/src/emu/machine/wd_fdc.c +++ b/src/emu/machine/wd_fdc.c @@ -188,7 +188,7 @@ void wd_fdc_t::dden_w(bool _dden) } } -astring wd_fdc_t::tts(const attotime &t) +std::string wd_fdc_t::tts(const attotime &t) { char buf[256]; int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND; @@ -196,7 +196,7 @@ astring wd_fdc_t::tts(const attotime &t) return buf; } -astring wd_fdc_t::ttsn() +std::string wd_fdc_t::ttsn() { return tts(machine().time()); } diff --git a/src/emu/machine/wd_fdc.h b/src/emu/machine/wd_fdc.h index 36cf9f63edf..39467ffd2c4 100644 --- a/src/emu/machine/wd_fdc.h +++ b/src/emu/machine/wd_fdc.h @@ -368,10 +368,10 @@ private: UINT8 format_last_byte; int format_last_byte_count; - astring format_description_string; + std::string format_description_string; - static astring tts(const attotime &t); - astring ttsn(); + static std::string tts(const attotime &t); + std::string ttsn(); void delay_cycles(emu_timer *tm, int cycles); diff --git a/src/emu/mame.c b/src/emu/mame.c index 297fe1c6d9b..1af6ccff012 100644 --- a/src/emu/mame.c +++ b/src/emu/mame.c @@ -199,7 +199,7 @@ int machine_manager::execute() if (m_options.read_config()) { m_options.revert(OPTION_PRIORITY_INI); - astring errors; + std::string errors; m_options.parse_standard_inis(errors); } @@ -236,7 +236,7 @@ int machine_manager::execute() // third: if we scheduled a new system, take also care of ramsize options if (new_system) { - astring error_string; + std::string error_string; m_options.set_value(OPTION_RAMSIZE, "", OPTION_PRIORITY_CMDLINE, error_string); } firstrun = true; @@ -276,16 +276,16 @@ void CLIB_DECL popmessage(const char *format, ...) // otherwise, generate the buffer and call the UI to display the message else { - astring temp; + std::string temp; va_list arg; // dump to the buffer va_start(arg, format); - temp.vprintf(format, arg); + strvprintf(temp,format, arg); va_end(arg); // pop it in the UI - machine_manager::instance()->machine()->ui().popup_time(temp.len() / 40 + 2, "%s", temp.c_str()); + machine_manager::instance()->machine()->ui().popup_time(temp.length() / 40 + 2, "%s", temp.c_str()); /* // also write to error.log diff --git a/src/emu/mconfig.c b/src/emu/mconfig.c index b05c33653e9..55dd19148f3 100644 --- a/src/emu/mconfig.c +++ b/src/emu/mconfig.c @@ -38,7 +38,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) for (device_slot_interface *slot = slotiter.first(); slot != NULL; slot = slotiter.next()) { device_t &owner = slot->device(); - astring temp; + std::string temp; const char *selval = options.main_value(temp, owner.tag()+1); bool isdefault = (options.priority(owner.tag()+1)==OPTION_PRIORITY_DEFAULT); if (!is_selected_driver || !options.exists(owner.tag()+1)) diff --git a/src/emu/memory.c b/src/emu/memory.c index 3defdf6fe53..a61456b4e7b 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -1932,7 +1932,7 @@ void address_space::populate_from_map(address_map *map) void address_space::populate_map_entry(const address_map_entry &entry, read_or_write readorwrite) { const map_handler_data &data = (readorwrite == ROW_READ) ? entry.m_read : entry.m_write; - astring fulltag; + std::string fulltag; // based on the handler type, alter the bits, name, funcptr, and object switch (data.m_type) @@ -2679,9 +2679,11 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst // if no tag, create a unique one membank = global_alloc(memory_bank(*this, banknum, bytestart, byteend, tag)); - astring temptag; - if (tag == NULL) - tag = temptag.format("anon_%p", membank).c_str(); + std::string temptag; + if (tag == NULL) { + strprintf(temptag, "anon_%p", membank); + tag = temptag.c_str(); + } manager().m_banklist.append(tag, *membank); } @@ -3877,8 +3879,8 @@ memory_block::memory_block(address_space &space, offs_t bytestart, offs_t byteen if (region == NULL) { int bytes_per_element = space.data_width() / 8; - astring name; - name.printf("%08x-%08x", bytestart, byteend); + std::string name; + strprintf(name,"%08x-%08x", bytestart, byteend); space.machine().save().save_memory(NULL, "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (UINT32)(byteend + 1 - bytestart) / bytes_per_element); } } @@ -3916,13 +3918,13 @@ memory_bank::memory_bank(address_space &space, int index, offs_t bytestart, offs // generate an internal tag if we don't have one if (tag == NULL) { - m_tag.printf("~%d~", index); - m_name.printf("Internal bank #%d", index); + strprintf(m_tag,"~%d~", index); + strprintf(m_name,"Internal bank #%d", index); } else { - m_tag.cpy(tag); - m_name.printf("Bank '%s'", tag); + m_tag.assign(tag); + strprintf(m_name,"Bank '%s'", tag); } if (!m_anonymous && space.machine().save().registration_allowed()) diff --git a/src/emu/memory.h b/src/emu/memory.h index fff49dd6d0c..7503301453e 100644 --- a/src/emu/memory.h +++ b/src/emu/memory.h @@ -626,9 +626,9 @@ private: offs_t m_bytestart; // byte-adjusted start offset offs_t m_byteend; // byte-adjusted end offset int m_curentry; // current entry - std::vector m_entry; // array of entries (dynamically allocated) - astring m_name; // friendly name for this bank - astring m_tag; // tag for this bank + std::vector m_entry; // array of entries (dynamically allocated) + std::string m_name; // friendly name for this bank + std::string m_tag; // tag for this bank simple_list m_reflist; // linked list of address spaces referencing this bank }; @@ -712,7 +712,7 @@ private: // internal data running_machine & m_machine; memory_region * m_next; - astring m_name; + std::string m_name; dynamic_buffer m_buffer; endianness_t m_endianness; UINT8 m_bitwidth; diff --git a/src/emu/output.c b/src/emu/output.c index 842473b25cc..883a3922b2a 100644 --- a/src/emu/output.c +++ b/src/emu/output.c @@ -45,7 +45,7 @@ public: struct output_item { output_item * next; /* next item in list */ - astring name; /* string name of the item */ + std::string name; /* string name of the item */ UINT32 hash; /* hash for this item name */ UINT32 id; /* unique ID for this item */ INT32 value; /* current value */ @@ -117,7 +117,7 @@ INLINE output_item *create_new_item(const char *outname, INT32 value) /* fill in the data */ item->next = itemtable[hash % HASH_SIZE]; - item->name.cpy(outname); + item->name.assign(outname); item->hash = hash; item->id = uniqueid++; item->value = value; diff --git a/src/emu/profiler.c b/src/emu/profiler.c index 6da529325f0..50e289e8d46 100644 --- a/src/emu/profiler.c +++ b/src/emu/profiler.c @@ -112,7 +112,7 @@ void real_profiler_state::reset(bool enabled) //------------------------------------------------- -// text - return the current text in an astring +// text - return the current text in an std::string //------------------------------------------------- const char *real_profiler_state::text(running_machine &machine) @@ -136,7 +136,7 @@ const char *real_profiler_state::text(running_machine &machine) //------------------------------------------------- -// update_text - update the current astring +// update_text - update the current std::string //------------------------------------------------- void real_profiler_state::update_text(running_machine &machine) @@ -185,7 +185,7 @@ void real_profiler_state::update_text(running_machine &machine) // this becomes the total; if we end up with 0 for anything, we were just started, so return empty UINT64 total = computed; - m_text.reset(); + m_text.clear(); if (total == 0 || normalize == 0) { return; @@ -202,25 +202,25 @@ void real_profiler_state::update_text(running_machine &machine) if (computed != 0) { // start with the un-normalized percentage - m_text.catprintf("%02d%% ", (int)((computed * 100 + total/2) / total)); + strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + total / 2) / total)); // followed by the normalized percentage for everything but profiler and idle if (curtype < PROFILER_PROFILER) - m_text.catprintf("%02d%% ", (int)((computed * 100 + normalize/2) / normalize)); + strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + normalize / 2) / normalize)); // and then the text if (curtype >= PROFILER_DEVICE_FIRST && curtype <= PROFILER_DEVICE_MAX) - m_text.catprintf("'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag()); + strcatprintf(m_text, "'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag()); else for (int nameindex = 0; nameindex < ARRAY_LENGTH(names); nameindex++) if (names[nameindex].type == curtype) { - m_text.cat(names[nameindex].string); + m_text.append(names[nameindex].string); break; } // followed by a carriage return - m_text.cat("\n"); + m_text.append("\n"); } } diff --git a/src/emu/profiler.h b/src/emu/profiler.h index ee4292f24b9..25cd2b4d7ce 100644 --- a/src/emu/profiler.h +++ b/src/emu/profiler.h @@ -167,7 +167,7 @@ private: // internal state filo_entry * m_filoptr; // current FILO index - astring m_text; // profiler text + std::string m_text; // profiler text attotime m_text_time; // profiler text last update filo_entry m_filo[32]; // array of FILO entries osd_ticks_t m_data[PROFILER_TOTAL + 1]; // array of data diff --git a/src/emu/render.c b/src/emu/render.c index ed4a7b7d1a0..30a0b992215 100644 --- a/src/emu/render.c +++ b/src/emu/render.c @@ -1571,9 +1571,9 @@ bool render_target::load_layout_file(const char *dirname, const char *filename) else { // build the path and optionally prepend the directory - astring fname = astring(filename).cat(".lay"); + std::string fname = std::string(filename).append(".lay"); if (dirname != NULL) - fname.ins(0, PATH_SEPARATOR).ins(0, dirname); + fname.insert(0, PATH_SEPARATOR).insert(0, dirname); // attempt to open the file; bail if we can't emu_file layoutfile(manager().machine().options().art_path(), OPEN_FLAG_READ); diff --git a/src/emu/rendfont.c b/src/emu/rendfont.c index 62a0581f9ab..2011119979c 100644 --- a/src/emu/rendfont.c +++ b/src/emu/rendfont.c @@ -392,8 +392,8 @@ bool render_font::load_cached_bdf(const char *filename) UINT32 hash = crc32(0, (const UINT8 *)&m_rawdata[0], bytes) ^ (UINT32)m_rawsize; // create the cached filename, changing the 'F' to a 'C' on the extension - astring cachedname(filename); - cachedname.del(cachedname.len() - 3, 3).cat("bdc"); + std::string cachedname(filename); + cachedname.erase(cachedname.length() - 3, 3).append("bdc"); // attempt to open the cached version of the font { diff --git a/src/emu/rendlay.c b/src/emu/rendlay.c index 397e7a704ec..a3b5f48e8b1 100644 --- a/src/emu/rendlay.c +++ b/src/emu/rendlay.c @@ -626,19 +626,19 @@ layout_element::component::component(running_machine &machine, xml_data_node &co { m_type = CTYPE_REEL; - astring symbollist = xml_get_attribute_string_with_subst(machine, compnode, "symbollist", "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"); + std::string symbollist = xml_get_attribute_string_with_subst(machine, compnode, "symbollist", "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"); // split out position names from string and figure out our number of symbols int location = -1; m_numstops = 0; - location=symbollist.find(0,","); + location=symbollist.find(","); while (location!=-1) { m_stopnames[m_numstops] = symbollist; - m_stopnames[m_numstops].substr(0, location); - symbollist.substr(location+1, symbollist.len()-(location-1)); + m_stopnames[m_numstops] = m_stopnames[m_numstops].substr(0, location); + symbollist = symbollist.substr(location+1, symbollist.length()-(location-1)); m_numstops++; - location=symbollist.find(0,","); + location=symbollist.find(","); } m_stopnames[m_numstops++] = symbollist; @@ -648,12 +648,12 @@ layout_element::component::component(running_machine &machine, xml_data_node &co for (int i=0;i m_file[MAX_BITMAPS]; // file object for reading image/alpha files - astring m_imagefile[MAX_BITMAPS]; // name of the image file (for lazy loading) - astring m_alphafile[MAX_BITMAPS]; // name of the alpha file (for lazy loading) + std::string m_imagefile[MAX_BITMAPS]; // name of the image file (for lazy loading) + std::string m_alphafile[MAX_BITMAPS]; // name of the alpha file (for lazy loading) bool m_hasalpha[MAX_BITMAPS]; // is there any alpha component present? // stuff for fruit machine reels // basically made up of multiple text strings / gfx int m_numstops; - astring m_stopnames[MAX_BITMAPS]; + std::string m_stopnames[MAX_BITMAPS]; int m_stateoffset; int m_reelreversed; int m_numsymbolsvisible; @@ -172,7 +172,7 @@ private: // internal state layout_element * m_next; // link to next element running_machine & m_machine; // reference to the owning machine - astring m_name; // name of this element + std::string m_name; // name of this element simple_list m_complist; // list of components int m_defstate; // default state of this element int m_maxstate; // maximum state value for all components @@ -217,8 +217,8 @@ public: // internal state item * m_next; // link to next item layout_element * m_element; // pointer to the associated element (non-screens only) - astring m_output_name; // name of this item - astring m_input_tag; // input tag of this item + std::string m_output_name; // name of this item + std::string m_input_tag; // input tag of this item ioport_value m_input_mask; // input mask of this item screen_device * m_screen; // pointer to screen int m_orientation; // orientation of this item @@ -248,7 +248,7 @@ public: private: // internal state layout_view * m_next; // pointer to next layout in the list - astring m_name; // name of the layout + std::string m_name; // name of the layout float m_aspect; // X/Y of the layout float m_scraspect; // X/Y of the screen areas render_screen_list m_screens; // list of active screens diff --git a/src/emu/rendutil.c b/src/emu/rendutil.c index 59f4fb4b55d..5eb7c012521 100644 --- a/src/emu/rendutil.c +++ b/src/emu/rendutil.c @@ -537,11 +537,11 @@ bool render_load_png(bitmap_argb32 &bitmap, emu_file &file, const char *dirname, bitmap.reset(); // open the file - astring fname; + std::string fname; if (dirname == NULL) - fname.cpy(filename); + fname.assign(filename); else - fname.cpy(dirname).cat(PATH_SEPARATOR).cat(filename); + fname.assign(dirname).append(PATH_SEPARATOR).append(filename); file_error filerr = file.open(fname.c_str()); if (filerr != FILERR_NONE) return false; diff --git a/src/emu/romload.c b/src/emu/romload.c index a6a0764c110..b9a003d1c5a 100644 --- a/src/emu/romload.c +++ b/src/emu/romload.c @@ -51,7 +51,7 @@ public: private: open_chd * m_next; /* pointer to next in the list */ - astring m_region; /* disk region we came from */ + std::string m_region; /* disk region we came from */ chd_file m_origchd; /* handle to the original CHD */ chd_file m_diffchd; /* handle to the diff CHD */ }; @@ -77,8 +77,8 @@ struct romload_private memory_region * region; /* info about current region */ - astring errorstring; /* error string */ - astring softwarningstring; /* software warning string */ + std::string errorstring; /* error string */ + std::string softwarningstring; /* software warning string */ }; @@ -373,7 +373,7 @@ static void determine_bios_rom(romload_private *romdata, device_t *device, const /* if we got neither an empty string nor 'default' then warn the user */ if (specbios[0] != 0 && strcmp(specbios, "default") != 0 && romdata != NULL) { - romdata->errorstring.catprintf("%s: invalid bios\n", specbios); + strcatprintf(romdata->errorstring, "%s: invalid bios\n", specbios); romdata->errors++; } @@ -428,12 +428,12 @@ static void fill_random(running_machine &machine, UINT8 *base, UINT32 length) for missing files -------------------------------------------------*/ -static void handle_missing_file(romload_private *romdata, const rom_entry *romp, astring tried_file_names, chd_error chderr) +static void handle_missing_file(romload_private *romdata, const rom_entry *romp, std::string tried_file_names, chd_error chderr) { - if(tried_file_names.len() != 0) + if(tried_file_names.length() != 0) tried_file_names = " (tried in " + tried_file_names + ")"; - astring name(ROM_GETNAME(romp)); + std::string name(ROM_GETNAME(romp)); bool is_chd = (chderr != CHDERR_NONE); if (is_chd) @@ -441,13 +441,13 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp, bool is_chd_error = (is_chd && chderr != CHDERR_FILE_NOT_FOUND); if (is_chd_error) - romdata->errorstring.catprintf("%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr)); + strcatprintf(romdata->errorstring, "%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr)); /* optional files are okay */ if (ROM_ISOPTIONAL(romp)) { if (!is_chd_error) - romdata->errorstring.catprintf("OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); + strcatprintf(romdata->errorstring, "OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); romdata->warnings++; } @@ -455,7 +455,7 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp, else if (hash_collection(ROM_GETHASHDATA(romp)).flag(hash_collection::FLAG_NO_DUMP)) { if (!is_chd_error) - romdata->errorstring.catprintf("%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str()); + strcatprintf(romdata->errorstring, "%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str()); romdata->knownbad++; } @@ -463,7 +463,7 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp, else { if (!is_chd_error) - romdata->errorstring.catprintf("%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); + strcatprintf(romdata->errorstring, "%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); romdata->errors++; } } @@ -477,9 +477,9 @@ static void handle_missing_file(romload_private *romdata, const rom_entry *romp, static void dump_wrong_and_correct_checksums(romload_private *romdata, const hash_collection &hashes, const hash_collection &acthashes) { - astring tempstr; - romdata->errorstring.catprintf(" EXPECTED: %s\n", hashes.macro_string(tempstr)); - romdata->errorstring.catprintf(" FOUND: %s\n", acthashes.macro_string(tempstr)); + std::string tempstr; + strcatprintf(romdata->errorstring, " EXPECTED: %s\n", hashes.macro_string(tempstr)); + strcatprintf(romdata->errorstring, " FOUND: %s\n", acthashes.macro_string(tempstr)); } @@ -498,30 +498,30 @@ static void verify_length_and_hash(romload_private *romdata, const char *name, U UINT32 actlength = romdata->file->size(); if (explength != actlength) { - romdata->errorstring.catprintf("%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength); + strcatprintf(romdata->errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength); romdata->warnings++; } /* If there is no good dump known, write it */ - astring tempstr; + std::string tempstr; hash_collection &acthashes = romdata->file->hashes(hashes.hash_types(tempstr)); if (hashes.flag(hash_collection::FLAG_NO_DUMP)) { - romdata->errorstring.catprintf("%s NO GOOD DUMP KNOWN\n", name); + strcatprintf(romdata->errorstring, "%s NO GOOD DUMP KNOWN\n", name); romdata->knownbad++; } /* verify checksums */ else if (hashes != acthashes) { /* otherwise, it's just bad */ - romdata->errorstring.catprintf("%s WRONG CHECKSUMS:\n", name); + strcatprintf(romdata->errorstring, "%s WRONG CHECKSUMS:\n", name); dump_wrong_and_correct_checksums(romdata, hashes, acthashes); romdata->warnings++; } /* If it matches, but it is actually a bad dump, write it */ else if (hashes.flag(hash_collection::FLAG_BAD_DUMP)) { - romdata->errorstring.catprintf("%s ROM NEEDS REDUMP\n",name); + strcatprintf(romdata->errorstring, "%s ROM NEEDS REDUMP\n",name); romdata->knownbad++; } } @@ -567,9 +567,9 @@ static void display_rom_load_results(romload_private *romdata, bool from_list) /* if we had warnings, output them, but continue */ if ((romdata-> warnings) || (romdata->knownbad)) { - romdata->errorstring.cat("WARNING: the "); - romdata->errorstring.cat(emulator_info::get_gamenoun()); - romdata->errorstring.cat(" might not run correctly."); + romdata->errorstring.append("WARNING: the "); + romdata->errorstring.append(emulator_info::get_gamenoun()); + romdata->errorstring.append(" might not run correctly."); osd_printf_warning("%s\n", romdata->errorstring.c_str()); } } @@ -622,7 +622,7 @@ static void region_post_process(romload_private *romdata, const char *rgntag, bo up the parent and loading by checksum -------------------------------------------------*/ -static int open_rom_file(romload_private *romdata, const char *regiontag, const rom_entry *romp, astring &tried_file_names, bool from_list) +static int open_rom_file(romload_private *romdata, const char *regiontag, const rom_entry *romp, std::string &tried_file_names, bool from_list) { file_error filerr = FILERR_NOT_FOUND; UINT32 romsize = rom_file_size(romp); @@ -639,7 +639,7 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const attempts any kind of load by checksum supported by the archives. */ romdata->file = NULL; for (int drv = driver_list::find(romdata->machine().system()); romdata->file == NULL && drv != -1; drv = driver_list::clone(drv)) { - if(tried_file_names.len() != 0) + if (tried_file_names.length() != 0) tried_file_names += " "; tried_file_names += driver_list::driver(drv).name; filerr = common_process_file(romdata->machine().options(), driver_list::driver(drv).name, has_crc, crc, romp, &romdata->file); @@ -651,42 +651,42 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const // check if we are dealing with softwarelists. if so, locationtag // is actually a concatenation of: listname + setname + parentname // separated by '%' (parentname being present only for clones) - astring tag1(regiontag), tag2, tag3, tag4, tag5; + std::string tag1(regiontag), tag2, tag3, tag4, tag5; bool is_list = FALSE; bool has_parent = FALSE; - int separator1 = tag1.chr(0, '%'); + int separator1 = tag1.find_first_of('%'); if (separator1 != -1) { is_list = TRUE; // we are loading through softlists, split the listname from the regiontag - tag4.cpysubstr(tag1, separator1 + 1, tag1.len() - separator1 + 1); - tag1.del(separator1, tag1.len() - separator1); - tag1.cat(PATH_SEPARATOR); + tag4.assign(tag1.substr(separator1 + 1, tag1.length() - separator1 + 1)); + tag1.erase(separator1, tag1.length() - separator1); + tag1.append(PATH_SEPARATOR); // check if we are loading a clone (if this is the case also tag1 have a separator '%') - int separator2 = tag4.chr(0, '%'); + int separator2 = tag4.find_first_of('%'); if (separator2 != -1) { has_parent = TRUE; // we are loading a clone through softlists, split the setname from the parentname - tag5.cpysubstr(tag4, separator2 + 1, tag4.len() - separator2 + 1); - tag4.del(separator2, tag4.len() - separator2); + tag5.assign(tag4.substr(separator2 + 1, tag4.length() - separator2 + 1)); + tag4.erase(separator2, tag4.length() - separator2); } // prepare locations where we have to load from: list/parentname & list/clonename - astring swlist(tag1.c_str()); - tag2.cpy(swlist.cat(tag4)); + std::string swlist(tag1.c_str()); + tag2.assign(swlist.append(tag4)); if (has_parent) { - swlist.cpy(tag1); - tag3.cpy(swlist.cat(tag5)); + swlist.assign(tag1); + tag3.assign(swlist.append(tag5)); } } - if (tag5.chr(0, '%') != -1) + if (tag5.find_first_of('%') != -1) fatalerror("We do not support clones of clones!\n"); // try to load from the available location(s): @@ -966,7 +966,7 @@ static void process_rom_entries(romload_private *romdata, const char *regiontag, /* open the file if it is a non-BIOS or matches the current BIOS */ LOG(("Opening ROM file: %s\n", ROM_GETNAME(romp))); - astring tried_file_names; + std::string tried_file_names; if (!irrelevantbios && !open_rom_file(romdata, regiontag, romp, tried_file_names, from_list)) handle_missing_file(romdata, romp, tried_file_names, CHDERR_NONE); @@ -1052,42 +1052,42 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ // check if we are dealing with softwarelists. if so, locationtag // is actually a concatenation of: listname + setname + parentname // separated by '%' (parentname being present only for clones) - astring tag1(locationtag), tag2, tag3, tag4, tag5; + std::string tag1(locationtag), tag2, tag3, tag4, tag5; bool is_list = FALSE; bool has_parent = FALSE; - int separator1 = tag1.chr(0, '%'); + int separator1 = tag1.find_first_of('%'); if (separator1 != -1) { is_list = TRUE; // we are loading through softlists, split the listname from the regiontag - tag4.cpysubstr(tag1, separator1 + 1, tag1.len() - separator1 + 1); - tag1.del(separator1, tag1.len() - separator1); - tag1.cat(PATH_SEPARATOR); + tag4.assign(tag1.substr(separator1 + 1, tag1.length() - separator1 + 1)); + tag1.erase(separator1, tag1.length() - separator1); + tag1.append(PATH_SEPARATOR); // check if we are loading a clone (if this is the case also tag1 have a separator '%') - int separator2 = tag4.chr(0, '%'); + int separator2 = tag4.find_first_of('%'); if (separator2 != -1) { has_parent = TRUE; // we are loading a clone through softlists, split the setname from the parentname - tag5.cpysubstr(tag4, separator2 + 1, tag4.len() - separator2 + 1); - tag4.del(separator2, tag4.len() - separator2); + tag5.assign(tag4.substr(separator2 + 1, tag4.length() - separator2 + 1)); + tag4.erase(separator2, tag4.length() - separator2); } // prepare locations where we have to load from: list/parentname (if any) & list/clonename - astring swlist(tag1.c_str()); - tag2.cpy(swlist.cat(tag4)); + std::string swlist(tag1.c_str()); + tag2.assign(swlist.append(tag4)); if (has_parent) { - swlist.cpy(tag1); - tag3.cpy(swlist.cat(tag5)); + swlist.assign(tag1); + tag3.assign(swlist.append(tag5)); } } - if (tag5.chr(0, '%') != -1) + if (tag5.find_first_of('%') != -1) fatalerror("We do not support clones of clones!\n"); // try to load from the available location(s): @@ -1112,7 +1112,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ // only for CHD we also try to load from list/ if ((filerr != FILERR_NONE) && (tag1.c_str() != NULL)) { - tag1.del(tag1.len() - 1, 1); // remove the PATH_SEPARATOR + tag1.erase(tag1.length() - 1, 1); // remove the PATH_SEPARATOR filerr = common_process_file(options, tag1.c_str(), ".chd", romp, image_file); } } @@ -1121,7 +1121,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ /* did the file open succeed? */ if (filerr == FILERR_NONE) { - astring fullpath(image_file.fullpath()); + std::string fullpath(image_file.fullpath()); image_file.close(); /* try to open the CHD */ @@ -1159,7 +1159,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ /* did the file open succeed? */ if (filerr == FILERR_NONE) { - astring fullpath(image_file.fullpath()); + std::string fullpath(image_file.fullpath()); image_file.close(); /* try to open the CHD */ @@ -1179,7 +1179,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_ static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd_file &source, chd_file &diff_chd) { - astring fname = astring(ROM_GETNAME(romp)).cat(".dif"); + std::string fname = std::string(ROM_GETNAME(romp)).append(".dif"); /* try to open the diff */ LOG(("Opening differencing image file: %s\n", fname.c_str())); @@ -1187,7 +1187,7 @@ static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd file_error filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); LOG(("Opening differencing image file: %s\n", fullpath.c_str())); @@ -1200,7 +1200,7 @@ static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd filerr = diff_file.open(fname.c_str()); if (filerr == FILERR_NONE) { - astring fullpath(diff_file.fullpath()); + std::string fullpath(diff_file.fullpath()); diff_file.close(); /* create the CHD */ @@ -1236,14 +1236,14 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag chd_error err; /* make the filename of the source */ - astring filename = astring(ROM_GETNAME(romp)).cat(".chd"); + std::string filename = std::string(ROM_GETNAME(romp)).append(".chd"); /* first open the source drive */ LOG(("Opening disk image: %s\n", filename.c_str())); err = chd_error(open_disk_image(romdata->machine().options(), &romdata->machine().system(), romp, chd->orig_chd(), locationtag)); if (err != CHDERR_NONE) { - handle_missing_file(romdata, romp, astring(), err); + handle_missing_file(romdata, romp, std::string(), err); global_free(chd); continue; } @@ -1255,13 +1255,13 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag /* verify the hash */ if (hashes != acthashes) { - romdata->errorstring.catprintf("%s WRONG CHECKSUMS:\n", filename.c_str()); + strcatprintf(romdata->errorstring, "%s WRONG CHECKSUMS:\n", filename.c_str()); dump_wrong_and_correct_checksums(romdata, hashes, acthashes); romdata->warnings++; } else if (hashes.flag(hash_collection::FLAG_BAD_DUMP)) { - romdata->errorstring.catprintf("%s CHD NEEDS REDUMP\n", filename.c_str()); + strcatprintf(romdata->errorstring, "%s CHD NEEDS REDUMP\n", filename.c_str()); romdata->knownbad++; } @@ -1272,7 +1272,7 @@ static void process_disk_entries(romload_private *romdata, const char *regiontag err = open_disk_diff(romdata->machine().options(), romp, chd->orig_chd(), chd->diff_chd()); if (err != CHDERR_NONE) { - romdata->errorstring.catprintf("%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err)); + strcatprintf(romdata->errorstring, "%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err)); romdata->errors++; global_free(chd); continue; @@ -1335,13 +1335,13 @@ static void normalize_flags_for_device(running_machine &machine, const char *rgn void load_software_part_region(device_t &device, software_list_device &swlist, const char *swname, const rom_entry *start_region) { - astring locationtag(swlist.list_name()), breakstr("%"); + std::string locationtag(swlist.list_name()), breakstr("%"); romload_private *romdata = device.machine().romload_data; const rom_entry *region; std::string regiontag; - romdata->errorstring.reset(); - romdata->softwarningstring.reset(); + romdata->errorstring.clear(); + romdata->softwarningstring.clear(); romdata->romstotal = 0; romdata->romstotalsize = 0; @@ -1353,29 +1353,29 @@ void load_software_part_region(device_t &device, software_list_device &swlist, c UINT32 supported = swinfo->supported(); if (supported == SOFTWARE_SUPPORTED_PARTIAL) { - romdata->errorstring.catprintf("WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); - romdata->softwarningstring.catprintf("Support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); + strcatprintf(romdata->errorstring, "WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); + strcatprintf(romdata->softwarningstring, "Support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); } if (supported == SOFTWARE_SUPPORTED_NO) { - romdata->errorstring.catprintf("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); - romdata->softwarningstring.catprintf("Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); + strcatprintf(romdata->errorstring, "WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); + strcatprintf(romdata->softwarningstring, "Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); } - // attempt reading up the chain through the parents and create a locationtag astring in the format + // attempt reading up the chain through the parents and create a locationtag std::string in the format // " swlist % clonename % parentname " // open_rom_file contains the code to split the elements and to create paths to load from - locationtag.cat(breakstr); + locationtag.append(breakstr); while (swinfo != NULL) { - locationtag.cat(swinfo->shortname()).cat(breakstr); + locationtag.append(swinfo->shortname()).append(breakstr); const char *parentname = swinfo->parentname(); swinfo = (parentname != NULL) ? swlist.find(parentname) : NULL; } // strip the final '%' - locationtag.del(locationtag.len() - 1, 1); + locationtag.erase(locationtag.length() - 1, 1); } @@ -1542,7 +1542,7 @@ void rom_init(running_machine &machine) for (device_t *device = deviter.first(); device != NULL; device = deviter.next()) { if (device->rom_region()) { const char *specbios; - astring temp; + std::string temp; if (strcmp(device->tag(),":")==0) { specbios = romdata->machine().options().bios(); } else { @@ -1594,7 +1594,7 @@ int rom_load_warnings(running_machine &machine) software load warnings we generated -------------------------------------------------*/ -astring& software_load_warnings_message(running_machine &machine) +std::string& software_load_warnings_message(running_machine &machine) { return machine.romload_data->softwarningstring; } diff --git a/src/emu/romload.h b/src/emu/romload.h index a533bc12120..d5dd211cccf 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -268,7 +268,7 @@ void rom_init(running_machine &machine); /* return the number of warnings we generated */ int rom_load_warnings(running_machine &machine); -astring& software_load_warnings_message(running_machine &machine); +std::string& software_load_warnings_message(running_machine &machine); /* return the number of BAD_DUMP/NO_DUMP warnings we generated */ int rom_load_knownbad(running_machine &machine); diff --git a/src/emu/save.c b/src/emu/save.c index 03f0859ef6a..3efeea2856d 100644 --- a/src/emu/save.c +++ b/src/emu/save.c @@ -162,23 +162,23 @@ void save_manager::save_memory(device_t *device, const char *module, const char } // create the full name - astring totalname; + std::string totalname; if (tag != NULL) - totalname.printf("%s/%s/%X/%s", module, tag, index, name); + strprintf(totalname, "%s/%s/%X/%s", module, tag, index, name); else - totalname.printf("%s/%X/%s", module, index, name); + strprintf(totalname, "%s/%X/%s", module, index, name); // look for duplicates and an entry to insert in front of state_entry *insert_after = NULL; for (state_entry *entry = m_entry_list.first(); entry != NULL; entry = entry->next()) { // stop when we find an entry whose name is after ours - if (entry->m_name.cmp(totalname)>0) + if (entry->m_name.compare(totalname)>0) break; insert_after = entry; // error if we are equal - if (entry->m_name.cmp(totalname)==0) + if (entry->m_name.compare(totalname)==0) fatalerror("Duplicate save state registration entry (%s)\n", totalname.c_str()); } @@ -333,7 +333,7 @@ UINT32 save_manager::signature() const for (state_entry *entry = m_entry_list.first(); entry != NULL; entry = entry->next()) { // add the entry name to the CRC - crc = crc32(crc, (UINT8 *)entry->m_name.c_str(), entry->m_name.len()); + crc = crc32(crc, (UINT8 *)entry->m_name.c_str(), entry->m_name.length()); // add the type and size to the CRC UINT32 temp[2]; diff --git a/src/emu/save.h b/src/emu/save.h index 0c9553e1d5b..e541514b2ee 100644 --- a/src/emu/save.h +++ b/src/emu/save.h @@ -84,10 +84,10 @@ public: // state state_entry * m_next; // pointer to next entry void * m_data; // pointer to the memory to save/restore - astring m_name; // full name + std::string m_name; // full name device_t * m_device; // associated device, NULL if none - astring m_module; // module name - astring m_tag; // tag name + std::string m_module; // module name + std::string m_tag; // tag name int m_index; // index UINT8 m_typesize; // size of the raw data type UINT32 m_typecount; // number of items @@ -260,9 +260,9 @@ inline void save_manager::save_item(device_t *device, const char *module, const template<> inline void save_manager::save_item(device_t *device, const char *module, const char *tag, int index, attotime &value, const char *name) { - astring tempstr = astring(name).cat(".attoseconds"); + std::string tempstr = std::string(name).append(".attoseconds"); save_memory(device, module, tag, index, tempstr.c_str(), &value.attoseconds, sizeof(value.attoseconds)); - tempstr.cpy(name).cat(".seconds"); + tempstr.assign(name).append(".seconds"); save_memory(device, module, tag, index, tempstr.c_str(), &value.seconds, sizeof(value.seconds)); } diff --git a/src/emu/schedule.c b/src/emu/schedule.c index c4aa618caee..1695936fa26 100644 --- a/src/emu/schedule.c +++ b/src/emu/schedule.c @@ -239,7 +239,7 @@ void emu_timer::register_save() { // determine our instance number and name int index = 0; - astring name; + std::string name; // for non-device timers, it is an index based on the callback function name if (m_device == NULL) @@ -253,7 +253,7 @@ void emu_timer::register_save() // for device timers, it is an index based on the device and timer ID else { - name.printf("%s/%d", m_device->tag(), m_id); + strprintf(name,"%s/%d", m_device->tag(), m_id); for (emu_timer *curtimer = machine().scheduler().first_timer(); curtimer != NULL; curtimer = curtimer->next()) if (!curtimer->m_temporary && curtimer->m_device != NULL && curtimer->m_device == m_device && curtimer->m_id == m_id) index++; diff --git a/src/emu/screen.c b/src/emu/screen.c index 9648eef6069..0690695efd5 100644 --- a/src/emu/screen.c +++ b/src/emu/screen.c @@ -1046,11 +1046,11 @@ void screen_device::finalize_burnin() void screen_device::load_effect_overlay(const char *filename) { // ensure that there is a .png extension - astring fullname(filename); - int extension = fullname.rchr(0, '.'); + std::string fullname(filename); + int extension = fullname.find_last_of('.'); if (extension != -1) - fullname.del(extension, -1); - fullname.cat(".png"); + fullname.erase(extension, -1); + fullname.append(".png"); // load the file emu_file file(machine().options().art_path(), OPEN_FLAG_READ); diff --git a/src/emu/softlist.c b/src/emu/softlist.c index 1528304339d..ed41ca05560 100644 --- a/src/emu/softlist.c +++ b/src/emu/softlist.c @@ -30,7 +30,7 @@ class softlist_parser { public: // construction (== execution) - softlist_parser(software_list_device &list, astring &errors); + softlist_parser(software_list_device &list, std::string &errors); private: enum parse_position @@ -76,11 +76,11 @@ private: // internal parsing state software_list_device & m_list; - astring & m_errors; + std::string & m_errors; XML_Parser m_parser; bool m_done; bool m_data_accum_expected; - astring m_data_accum; + std::string m_data_accum; software_info * m_current_info; software_part * m_current_part; parse_position m_pos; @@ -149,14 +149,14 @@ bool software_part::is_compatible(const software_list_device &swlistdev) const return true; // copy the comma-delimited strings and ensure they end with a final comma - astring comp = astring(compatibility).cat(","); - astring filt = astring(filter).cat(","); + std::string comp = std::string(compatibility).append(","); + std::string filt = std::string(filter).append(","); // iterate over filter items and see if they exist in the compatibility list; if so, return true - for (int start = 0, end = filt.chr(start, ','); end != -1; start = end + 1, end = filt.chr(start, ',')) + for (int start = 0, end = filt.find_first_of(',',start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) { - astring token(filt, start, end - start + 1); - if (comp.find(0, token.c_str()) != -1) + std::string token(filt, start, end - start + 1); + if (comp.find(token.c_str()) != -1) return true; } return false; @@ -175,11 +175,11 @@ bool software_part::matches_interface(const char *interface_list) const return true; // copy the comma-delimited interface list and ensure it ends with a final comma - astring interfaces = astring(interface_list).cat(","); + std::string interfaces = std::string(interface_list).append(","); // then add a comma to the end of our interface and return true if we find it in the list string - astring our_interface = astring(m_interface).cat(","); - return (interfaces.find(0, our_interface.c_str()) != -1); + std::string our_interface = std::string(m_interface).append(","); + return (interfaces.find(our_interface.c_str()) != -1); } @@ -290,7 +290,7 @@ software_list_device::software_list_device(const machine_config &mconfig, const void software_list_device::static_set_type(device_t &device, const char *list, softlist_type list_type) { software_list_device &swlistdev = downcast(device); - swlistdev.m_list_name.cpy(list); + swlistdev.m_list_name.assign(list); swlistdev.m_list_type = list_type; } @@ -376,7 +376,7 @@ void software_list_device::release() osd_printf_verbose("Resetting %s\n", m_file.filename()); m_parsed = false; m_description = NULL; - m_errors.reset(); + m_errors.clear(); m_infolist.reset(); m_stringpool.reset(); } @@ -473,7 +473,7 @@ void software_list_device::parse() return; // reset the errors - m_errors.reset(); + m_errors.clear(); // attempt to open the file file_error filerr = m_file.open(m_list_name.c_str(), ".xml"); @@ -484,7 +484,7 @@ void software_list_device::parse() m_file.close(); } else - m_errors.printf("Error opening file: %s\n", filename()); + strprintf(m_errors, "Error opening file: %s\n", filename()); // indicate that we've been parsed m_parsed = true; @@ -500,7 +500,7 @@ void software_list_device::device_validity_check(validity_checker &valid) const { // add to the global map whenever we check a list so we don't re-check // it in the future - if (valid.already_checked(astring("softlist/").cat(m_list_name.c_str()).c_str())) + if (valid.already_checked(std::string("softlist/").append(m_list_name.c_str()).c_str())) return; // do device validation only in case of validate command @@ -526,7 +526,7 @@ void software_list_device::internal_validity_check(validity_checker &valid) for (software_info *swinfo = first_software_info(); swinfo != NULL; swinfo = swinfo->next()) { // first parse and output core errors if any - if (m_errors.len() > 0) + if (m_errors.length() > 0) { osd_printf_error("%s: Errors parsing software list:\n%s", filename(), errors_string()); break; @@ -565,7 +565,8 @@ void software_list_device::internal_validity_check(validity_checker &valid) } // check for duplicate descriptions - if (descriptions.add(astring(swinfo->longname()).makelower().c_str(), swinfo, false) == TMERR_DUPLICATE) + std::string longname = std::string(swinfo->longname()); + if (descriptions.add(strmakelower(longname).c_str(), swinfo, false) == TMERR_DUPLICATE) osd_printf_error("%s: %s is a duplicate description (%s)\n", filename(), swinfo->longname(), swinfo->shortname()); bool is_clone = false; @@ -645,7 +646,7 @@ void software_list_device::internal_validity_check(validity_checker &valid) // softlist_parser - constructor //------------------------------------------------- -softlist_parser::softlist_parser(software_list_device &list, astring &errors) +softlist_parser::softlist_parser(software_list_device &list, std::string &errors) : m_list(list), m_errors(errors), m_done(false), @@ -724,16 +725,16 @@ void softlist_parser::expat_free(void *ptr) void ATTR_PRINTF(2,3) softlist_parser::parse_error(const char *fmt, ...) { // always start with filename(line.column): - m_errors.catprintf("%s(%d.%d): ", filename(), line(), column()); + strcatprintf(m_errors, "%s(%d.%d): ", filename(), line(), column()); // append the remainder of the string va_list va; va_start(va, fmt); - m_errors.catvprintf(fmt, va); + strcatvprintf(m_errors, fmt, va); va_end(va); // append a newline at the end - m_errors.cat("\n"); + m_errors.append("\n"); } @@ -867,7 +868,7 @@ void softlist_parser::end_handler(void *data, const char *name) // stop accumulating state->m_data_accum_expected = false; - state->m_data_accum.reset(); + state->m_data_accum.clear(); } @@ -879,9 +880,9 @@ void softlist_parser::data_handler(void *data, const XML_Char *s, int len) { softlist_parser *state = reinterpret_cast(data); - // if we have an astring to accumulate data in, do it + // if we have an std::string to accumulate data in, do it if (state->m_data_accum_expected) - state->m_data_accum.cat(s, len); + state->m_data_accum.append(s, len); // otherwise, report an error if the data is non-blank else @@ -1146,17 +1147,17 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu bool baddump = (status != NULL && strcmp(status, "baddump") == 0); bool nodump = (status != NULL && strcmp(status, "nodump") == 0); - astring hashdata; + std::string hashdata; if (nodump) { - hashdata.printf("%s", NO_DUMP); + strprintf(hashdata, "%s", NO_DUMP); if (crc != NULL && sha1 != NULL) parse_error("No need for hash definition"); } else { if (crc != NULL && sha1 != NULL) - hashdata.printf("%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : "")); + strprintf(hashdata, "%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : "")); else parse_error("Incomplete rom hash definition"); } @@ -1199,8 +1200,8 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu bool baddump = (status != NULL && strcmp(status, "baddump") == 0); bool nodump = (status != NULL && strcmp(status, "nodump" ) == 0); bool writeable = (writeablestr != NULL && strcmp(writeablestr, "yes") == 0); - astring hashdata; - hashdata.printf( "%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : ""))); + std::string hashdata; + strprintf(hashdata, "%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : ""))); add_rom_entry(name, hashdata.c_str(), 0, 0, ROMENTRYTYPE_ROM | (writeable ? DISK_READWRITE : DISK_READONLY)); } diff --git a/src/emu/softlist.h b/src/emu/softlist.h index 7e6abc19246..77ed72437b2 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -227,7 +227,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const ATTR_COLD; // configuration state - astring m_list_name; + std::string m_list_name; softlist_type m_list_type; const char * m_filter; @@ -235,7 +235,7 @@ protected: bool m_parsed; emu_file m_file; const char * m_description; - astring m_errors; + std::string m_errors; simple_list m_infolist; const_string_pool m_stringpool; }; diff --git a/src/emu/sound.c b/src/emu/sound.c index 02211325158..b4179336582 100644 --- a/src/emu/sound.c +++ b/src/emu/sound.c @@ -75,8 +75,8 @@ sound_stream::sound_stream(device_t &device, int inputs, int outputs, int sample m_callback = stream_update_delegate(FUNC(device_sound_interface::sound_stream_update),(device_sound_interface *)sound); // create a unique tag for saving - astring state_tag; - state_tag.printf("%d", m_device.machine().sound().m_stream_list.count()); + std::string state_tag; + strprintf(state_tag, "%d", m_device.machine().sound().m_stream_list.count()); m_device.machine().save().save_item(&m_device, "stream", state_tag.c_str(), 0, NAME(m_sample_rate)); m_device.machine().save().register_postload(save_prepost_delegate(FUNC(sound_stream::postload), this)); @@ -163,17 +163,17 @@ float sound_stream::output_gain(int outputnum) const // on a given stream's input //------------------------------------------------- -const char *sound_stream::input_name(int inputnum, astring &str) const +const char *sound_stream::input_name(int inputnum, std::string &str) const { // start with our device name and tag assert(inputnum >= 0 && inputnum < m_input.size()); - str.printf("%s '%s': ", m_device.name(), m_device.tag()); + strprintf(str, "%s '%s': ", m_device.name(), m_device.tag()); // if we have a source, indicate where the sound comes from by device name and tag if (m_input[inputnum].m_source != NULL && m_input[inputnum].m_source->m_stream != NULL) { device_t &source = m_input[inputnum].m_source->m_stream->device(); - str.catprintf("%s '%s'", source.name(), source.tag()); + strcatprintf(str, "%s '%s'", source.name(), source.tag()); // get the sound interface; if there is more than 1 output we need to figure out which one device_sound_interface *sound; @@ -186,7 +186,7 @@ const char *sound_stream::input_name(int inputnum, astring &str) const for (int outputnum = 0; (outstream = sound->output_to_stream_output(outputnum, streamoutputnum)) != NULL; outputnum++) if (outstream == m_input[inputnum].m_source->m_stream && m_input[inputnum].m_source == &outstream->m_output[streamoutputnum]) { - str.catprintf(" Ch.%d", outputnum); + strcatprintf(str, " Ch.%d", outputnum); break; } } diff --git a/src/emu/sound.h b/src/emu/sound.h index f025f70787d..557d4242fa6 100644 --- a/src/emu/sound.h +++ b/src/emu/sound.h @@ -106,7 +106,7 @@ public: attotime sample_period() const { return attotime(0, m_attoseconds_per_sample); } int input_count() const { return m_input.size(); } int output_count() const { return m_output.size(); } - const char *input_name(int inputnum, astring &str) const; + const char *input_name(int inputnum, std::string &str) const; device_t *input_source_device(int inputnum) const; int input_source_outputnum(int inputnum) const; float user_gain(int inputnum) const; diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c index 4d1ec2cba5f..6f61210355b 100644 --- a/src/emu/tilemap.c +++ b/src/emu/tilemap.c @@ -1787,7 +1787,7 @@ void tilemap_device::device_start() m_basemem.set(*share, m_bytes_per_entry); // look for an extension entry - astring tag_ext = astring(tag()).cat("_ext"); + std::string tag_ext = std::string(tag()).append("_ext"); share = memshare(tag_ext.c_str()); if (share != NULL) m_extmem.set(*share, m_bytes_per_entry); diff --git a/src/emu/ui/barcode.c b/src/emu/ui/barcode.c index ee556b305f2..ef26c6244a4 100644 --- a/src/emu/ui/barcode.c +++ b/src/emu/ui/barcode.c @@ -52,7 +52,7 @@ void ui_menu_barcode_reader::populate() { if (current_device()) { - astring buffer; + std::string buffer; const char *new_barcode; // selected device @@ -61,7 +61,7 @@ void ui_menu_barcode_reader::populate() // append the "New Barcode" item if (get_selection() == ITEMREF_NEW_BARCODE) { - buffer.cat(m_barcode_buffer); + buffer.append(m_barcode_buffer); new_barcode = buffer.c_str(); } else @@ -112,13 +112,13 @@ void ui_menu_barcode_reader::handle() case IPT_UI_SELECT: if (event->itemref == ITEMREF_ENTER_BARCODE) { - astring tmp_file(m_barcode_buffer); + std::string tmp_file(m_barcode_buffer); //printf("code %s\n", m_barcode_buffer); - if (!current_device()->is_valid(tmp_file.len())) + if (!current_device()->is_valid(tmp_file.length())) machine().ui().popup_time(5, "Barcode length invalid!"); else { - current_device()->write_code(tmp_file.c_str(), tmp_file.len()); + current_device()->write_code(tmp_file.c_str(), tmp_file.length()); // if sending was successful, reset char buffer if (m_barcode_buffer[0] != '\0') memset(m_barcode_buffer, '\0', ARRAY_LENGTH(m_barcode_buffer)); diff --git a/src/emu/ui/cheatopt.c b/src/emu/ui/cheatopt.c index b14ae03a963..4932fc23133 100644 --- a/src/emu/ui/cheatopt.c +++ b/src/emu/ui/cheatopt.c @@ -109,8 +109,8 @@ ui_menu_cheat::ui_menu_cheat(running_machine &machine, render_container *contain void ui_menu_cheat::populate() { /* iterate over cheats */ - astring text; - astring subtext; + std::string text; + std::string subtext; for (cheat_entry *curcheat = machine().cheat().first(); curcheat != NULL; curcheat = curcheat->next()) { UINT32 flags; diff --git a/src/emu/ui/devctrl.h b/src/emu/ui/devctrl.h index 81fe091315b..b5b008e4baa 100644 --- a/src/emu/ui/devctrl.h +++ b/src/emu/ui/devctrl.h @@ -37,7 +37,7 @@ protected: int current_index(); void previous(); void next(); - astring current_display_name(); + std::string current_display_name(); UINT32 current_display_flags(); private: @@ -122,15 +122,15 @@ void ui_menu_device_control<_DeviceType>::next() //------------------------------------------------- template -astring ui_menu_device_control<_DeviceType>::current_display_name() +std::string ui_menu_device_control<_DeviceType>::current_display_name() { - astring display_name; - display_name.cpy(current_device()->name()); + std::string display_name; + display_name.assign(current_device()->name()); if (count() > 1) { - astring temp; - temp.printf(" %d", current_index() + 1); - display_name.cat(temp); + std::string temp; + strprintf(temp, " %d", current_index() + 1); + display_name.append(temp); } return display_name; } diff --git a/src/emu/ui/devopt.c b/src/emu/ui/devopt.c index c1e26ed9049..c009dc539db 100644 --- a/src/emu/ui/devopt.c +++ b/src/emu/ui/devopt.c @@ -20,8 +20,8 @@ ui_menu_device_config::ui_menu_device_config(running_machine &machine, render_container *container, device_slot_interface *slot, device_slot_option *option) : ui_menu(machine, container) { - astring tmp_tag; - tmp_tag.cpy(slot->device().tag()).cat(":").cat(option->name()); + std::string tmp_tag; + tmp_tag.assign(slot->device().tag()).append(":").append(option->name()); m_option = option; m_owner = slot; m_mounted = false; @@ -39,25 +39,25 @@ ui_menu_device_config::ui_menu_device_config(running_machine &machine, render_co void ui_menu_device_config::populate() { - astring str; + std::string str; device_t *dev; - str.printf("[This option is%s currently mounted in the running system]\n\n", m_mounted ? "" : " NOT"); - str.catprintf("Option: %s\n", m_option->name()); + strprintf(str,"[This option is%s currently mounted in the running system]\n\n", m_mounted ? "" : " NOT"); + strcatprintf(str,"Option: %s\n", m_option->name()); dev = const_cast(machine().config()).device_add(&machine().config().root_device(), m_option->name(), m_option->devtype(), 0); - str.catprintf("Device: %s\n", dev->name()); + strcatprintf(str,"Device: %s\n", dev->name()); if (!m_mounted) - str.cat("\nIf you select this option, the following items will be enabled:\n"); + str.append("\nIf you select this option, the following items will be enabled:\n"); else - str.cat("\nThe selected option enables the following items:\n"); + str.append("\nThe selected option enables the following items:\n"); // loop over all CPUs execute_interface_iterator execiter(*dev); if (execiter.count() > 0) { - str.cat("* CPU:\n"); + str.append("* CPU:\n"); tagmap_t exectags; for (device_execute_interface *exec = execiter.first(); exec != NULL; exec = execiter.next()) { @@ -80,16 +80,16 @@ void ui_menu_device_config::populate() // if more than one, prepend a #x in front of the CPU name if (count > 1) - str.catprintf(" %d" UTF8_MULTIPLY, count); + strcatprintf(str," %d" UTF8_MULTIPLY, count); else - str.cat(" "); - str.cat(name); + str.append(" "); + str.append(name); // display clock in kHz or MHz if (clock >= 1000000) - str.catprintf(" %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else - str.catprintf(" %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); } } @@ -97,18 +97,18 @@ void ui_menu_device_config::populate() screen_device_iterator scriter(*dev); if (scriter.count() > 0) { - str.cat("* Video:\n"); + str.append("* Video:\n"); for (screen_device *screen = scriter.first(); screen != NULL; screen = scriter.next()) { - str.catprintf(" Screen '%s': ", screen->tag()); + strcatprintf(str," Screen '%s': ", screen->tag()); if (screen->screen_type() == SCREEN_TYPE_VECTOR) - str.cat("Vector\n"); + str.append("Vector\n"); else { const rectangle &visarea = screen->visible_area(); - str.catprintf("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", + strcatprintf(str,"%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", visarea.width(), visarea.height(), (machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H", ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds)); @@ -120,7 +120,7 @@ void ui_menu_device_config::populate() sound_interface_iterator snditer(*dev); if (snditer.count() > 0) { - str.cat("* Sound:\n"); + str.append("* Sound:\n"); tagmap_t soundtags; for (device_sound_interface *sound = snditer.first(); sound != NULL; sound = snditer.next()) { @@ -138,19 +138,19 @@ void ui_menu_device_config::populate() } // if more than one, prepend a #x in front of the CPU name if (count > 1) - str.catprintf(" %d" UTF8_MULTIPLY, count); + strcatprintf(str," %d" UTF8_MULTIPLY, count); else - str.cat(" "); - str.cat(sound->device().name()); + str.append(" "); + str.append(sound->device().name()); // display clock in kHz or MHz int clock = sound->device().clock(); if (clock >= 1000000) - str.catprintf(" %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else if (clock != 0) - str.catprintf(" %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); else - str.cat("\n"); + str.append("\n"); } } @@ -176,12 +176,12 @@ void ui_menu_device_config::populate() } if (bios) - str.catprintf("* BIOS settings:\n %d options [default: %s]\n", bios, bios_str.c_str()); + strcatprintf(str,"* BIOS settings:\n %d options [default: %s]\n", bios, bios_str.c_str()); } int input = 0, input_mj = 0, input_hana = 0, input_gamble = 0, input_analog = 0, input_adjust = 0; int input_keypad = 0, input_keyboard = 0, dips = 0, confs = 0; - astring errors, dips_opt, confs_opt; + std::string errors, dips_opt, confs_opt; ioport_list portlist; device_iterator iptiter(*dev); for (device_t *iptdev = iptiter.first(); iptdev != NULL; iptdev = iptiter.next()) @@ -210,12 +210,12 @@ void ui_menu_device_config::populate() else if (field->type() == IPT_DIPSWITCH) { dips++; - dips_opt.cat(" ").cat(field->name()); + dips_opt.append(" ").append(field->name()); for (ioport_setting *setting = field->first_setting(); setting != NULL; setting = setting->next()) { if (setting->value() == field->defvalue()) { - dips_opt.catprintf(" [default: %s]\n", setting->name()); + strcatprintf(dips_opt, " [default: %s]\n", setting->name()); break; } } @@ -223,12 +223,12 @@ void ui_menu_device_config::populate() else if (field->type() == IPT_CONFIG) { confs++; - confs_opt.cat(" ").cat(field->name()); + confs_opt.append(" ").append(field->name()); for (ioport_setting *setting = field->first_setting(); setting != NULL; setting = setting->next()) { if (setting->value() == field->defvalue()) { - confs_opt.catprintf(" [default: %s]\n", setting->name()); + strcatprintf(confs_opt," [default: %s]\n", setting->name()); break; } } @@ -236,47 +236,47 @@ void ui_menu_device_config::populate() } if (dips) - str.cat("* Dispwitch settings:\n").cat(dips_opt); + str.append("* Dispwitch settings:\n").append(dips_opt); if (confs) - str.cat("* Configuration settings:\n").cat(confs_opt); + str.append("* Configuration settings:\n").append(confs_opt); if (input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) - str.cat("* Input device(s):\n"); + str.append("* Input device(s):\n"); if (input) - str.catprintf(" User inputs [%d inputs]\n", input); + strcatprintf(str," User inputs [%d inputs]\n", input); if (input_mj) - str.catprintf(" Mahjong inputs [%d inputs]\n", input_mj); + strcatprintf(str," Mahjong inputs [%d inputs]\n", input_mj); if (input_hana) - str.catprintf(" Hanafuda inputs [%d inputs]\n", input_hana); + strcatprintf(str," Hanafuda inputs [%d inputs]\n", input_hana); if (input_gamble) - str.catprintf(" Gambling inputs [%d inputs]\n", input_gamble); + strcatprintf(str," Gambling inputs [%d inputs]\n", input_gamble); if (input_analog) - str.catprintf(" Analog inputs [%d inputs]\n", input_analog); + strcatprintf(str," Analog inputs [%d inputs]\n", input_analog); if (input_adjust) - str.catprintf(" Adjuster inputs [%d inputs]\n", input_adjust); + strcatprintf(str," Adjuster inputs [%d inputs]\n", input_adjust); if (input_keypad) - str.catprintf(" Keypad inputs [%d inputs]\n", input_keypad); + strcatprintf(str," Keypad inputs [%d inputs]\n", input_keypad); if (input_keyboard) - str.catprintf(" Keyboard inputs [%d inputs]\n", input_keyboard); + strcatprintf(str," Keyboard inputs [%d inputs]\n", input_keyboard); image_interface_iterator imgiter(*dev); if (imgiter.count() > 0) { - str.cat("* Media Options:\n"); + str.append("* Media Options:\n"); for (const device_image_interface *imagedev = imgiter.first(); imagedev != NULL; imagedev = imgiter.next()) - str.catprintf(" %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag()); + strcatprintf(str," %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag()); } slot_interface_iterator slotiter(*dev); if (slotiter.count() > 0) { - str.cat("* Slot Options:\n"); + str.append("* Slot Options:\n"); for (const device_slot_interface *slot = slotiter.first(); slot != NULL; slot = slotiter.next()) - str.catprintf(" %s [default: %s]\n", slot->device().tag(), slot->default_option() ? slot->default_option() : "----"); + strcatprintf(str," %s [default: %s]\n", slot->device().tag(), slot->default_option() ? slot->default_option() : "----"); } if ((execiter.count() + scriter.count() + snditer.count() + imgiter.count() + slotiter.count() + bios + dips + confs + input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) == 0) - str.cat("[None]\n"); + str.append("[None]\n"); const_cast(machine().config()).device_remove(&machine().config().root_device(), m_option->name()); item_append(str.c_str(), NULL, MENU_FLAG_MULTILINE, NULL); diff --git a/src/emu/ui/filemngr.c b/src/emu/ui/filemngr.c index 55da5ba86bf..578721b233b 100644 --- a/src/emu/ui/filemngr.c +++ b/src/emu/ui/filemngr.c @@ -30,9 +30,9 @@ ui_menu_file_manager::ui_menu_file_manager(running_machine &machine, render_cont // This warning string is used when accessing from the force_file_manager call, i.e. // when the file manager is loaded top front in the case of mandatory image devices if (warnings) - m_warnings.cpy(warnings); + m_warnings.assign(warnings); else - m_warnings.reset(); + m_warnings.clear(); m_curr_selected = FALSE; } @@ -62,15 +62,15 @@ void ui_menu_file_manager::custom_render(void *selectedref, float top, float bot } -void ui_menu_file_manager::fill_image_line(device_image_interface *img, astring &instance, astring &filename) +void ui_menu_file_manager::fill_image_line(device_image_interface *img, std::string &instance, std::string &filename) { // get the image type/id - instance.printf("%s (%s)", img->instance_name(), img->brief_instance_name()); + strprintf(instance,"%s (%s)", img->instance_name(), img->brief_instance_name()); // get the base name if (img->basename() != NULL) { - filename.cpy(img->basename()); + filename.assign(img->basename()); // if the image has been loaded through softlist, also show the loaded part if (img->part_entry() != NULL) @@ -78,20 +78,20 @@ void ui_menu_file_manager::fill_image_line(device_image_interface *img, astring const software_part *tmp = img->part_entry(); if (tmp->name() != NULL) { - filename.cat(" ("); - filename.cat(tmp->name()); + filename.append(" ("); + filename.append(tmp->name()); // also check if this part has a specific part_id (e.g. "Map Disc", "Bonus Disc", etc.), and in case display it if (img->get_feature("part_id") != NULL) { - filename.cat(": "); - filename.cat(img->get_feature("part_id")); + filename.append(": "); + filename.append(img->get_feature("part_id")); } - filename.cat(")"); + filename.append(")"); } } } else - filename.cpy("---"); + filename.assign("---"); } //------------------------------------------------- @@ -100,9 +100,9 @@ void ui_menu_file_manager::fill_image_line(device_image_interface *img, astring void ui_menu_file_manager::populate() { - astring buffer, tmp_inst, tmp_name; + std::string buffer, tmp_inst, tmp_name; bool first_entry = true; - astring prev_owner; + std::string prev_owner; if (!m_warnings.empty()) { @@ -138,7 +138,7 @@ void ui_menu_file_manager::populate() first_entry = false; else item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL); - buffer.printf("[root%s]", dev->tag()); + strprintf(buffer, "[root%s]", dev->tag()); item_append(buffer.c_str(), NULL, 0, NULL); tag_appended = true; } diff --git a/src/emu/ui/filemngr.h b/src/emu/ui/filemngr.h index a2d7fbca74f..dbc4c72e50d 100644 --- a/src/emu/ui/filemngr.h +++ b/src/emu/ui/filemngr.h @@ -16,8 +16,8 @@ class ui_menu_file_manager : public ui_menu { public: - astring current_directory; - astring current_file; + std::string current_directory; + std::string current_file; device_image_interface *selected_device; static void force_file_manager(running_machine &machine, render_container *container, const char *warnings); @@ -28,10 +28,10 @@ public: virtual void handle(); virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2); - void fill_image_line(device_image_interface *img, astring &instance, astring &filename); + void fill_image_line(device_image_interface *img, std::string &instance, std::string &filename); private: - astring m_warnings; + std::string m_warnings; bool m_curr_selected; }; diff --git a/src/emu/ui/info.c b/src/emu/ui/info.c index 8ff2c7d50fb..caee68b8bce 100644 --- a/src/emu/ui/info.c +++ b/src/emu/ui/info.c @@ -29,7 +29,7 @@ ui_menu_game_info::~ui_menu_game_info() void ui_menu_game_info::populate() { - astring tempstring; + std::string tempstring; item_append(machine().ui().game_info_astring(tempstring).c_str(), NULL, MENU_FLAG_MULTILINE, NULL); } @@ -85,13 +85,13 @@ void ui_menu_image_info::image_info(device_image_interface *image) // if image has been loaded through softlist, let's add some more info if (image->software_entry()) { - astring str; + std::string str; // display long filename item_append(image->longname(), "", MENU_FLAG_DISABLE, NULL); // display manufacturer and year - str.catprintf("%s, %s", image->manufacturer(), image->year()); + strcatprintf(str, "%s, %s", image->manufacturer(), image->year()); item_append(str.c_str(), "", MENU_FLAG_DISABLE, NULL); // display supported information, if available diff --git a/src/emu/ui/inputmap.c b/src/emu/ui/inputmap.c index 06f1fa748d0..129d933ae92 100644 --- a/src/emu/ui/inputmap.c +++ b/src/emu/ui/inputmap.c @@ -92,7 +92,7 @@ void ui_menu_input_general::populate() { input_item_data *itemlist = NULL; int suborder[SEQ_TYPE_TOTAL]; - astring tempstring; + std::string tempstring; int sortorder = 1; /* create a mini lookup table for sort order based on sequence type */ @@ -155,7 +155,7 @@ void ui_menu_input_specific::populate() { input_item_data *itemlist = NULL; int suborder[SEQ_TYPE_TOTAL]; - astring tempstring; + std::string tempstring; int port_count = 0; /* create a mini lookup table for sort order based on sequence type */ @@ -382,9 +382,9 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist) const char *nameformat[INPUT_TYPE_TOTAL] = { 0 }; input_item_data **itemarray, *item; int numitems = 0, curitem; - astring text; - astring subtext; - astring prev_owner; + std::string text; + std::string subtext; + std::string prev_owner; bool first_entry = true; /* create a mini lookup table for name format based on type */ @@ -420,17 +420,17 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist) first_entry = false; else item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL); - text.printf("[root%s]", item->owner_name); + strprintf(text, "[root%s]", item->owner_name); item_append(text.c_str(), NULL, 0, NULL); - prev_owner.cpy(item->owner_name); + prev_owner.assign(item->owner_name); } - text.printf(nameformat[item->type], item->name); + strprintf(text, nameformat[item->type], item->name); /* if we're polling this item, use some spaces with left/right arrows */ if (pollingref == item->ref) { - subtext.cpy(" "); + subtext.assign(" "); flags |= MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW; } @@ -545,7 +545,7 @@ void ui_menu_settings::populate() ioport_field *field; ioport_port *port; dip_descriptor **diplist_tailptr; - astring prev_owner; + std::string prev_owner; bool first_entry = true; /* reset the dip switch tracking */ @@ -559,7 +559,7 @@ void ui_menu_settings::populate() if (field->type() == type && field->enabled()) { UINT32 flags = 0; - astring name; + std::string name; /* set the left/right flags appropriately */ if (field->has_previous_setting()) @@ -574,12 +574,12 @@ void ui_menu_settings::populate() first_entry = false; else item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL); - name.printf("[root%s]", field->device().tag()); + strprintf(name, "[root%s]", field->device().tag()); item_append(name.c_str(), NULL, 0, NULL); - prev_owner.cpy(field->device().tag()); + prev_owner.assign(field->device().tag()); } - name.cpy(field->name()); + name.assign(field->name()); item_append(name.c_str(), field->setting_name(), flags, (void *)field); @@ -825,9 +825,9 @@ void ui_menu_analog::populate() { ioport_field *field; ioport_port *port; - astring text; - astring subtext; - astring prev_owner; + std::string text; + std::string subtext; + std::string prev_owner; bool first_entry = true; /* loop over input ports and add the items */ @@ -871,19 +871,19 @@ void ui_menu_analog::populate() { analog_item_data *data; UINT32 flags = 0; - astring name; + std::string name; if (strcmp(field->device().tag(), prev_owner.c_str()) != 0) { if (first_entry) first_entry = false; else item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL); - name.printf("[root%s]", field->device().tag()); + strprintf(name,"[root%s]", field->device().tag()); item_append(name.c_str(), NULL, 0, NULL); - prev_owner.cpy(field->device().tag()); + prev_owner.assign(field->device().tag()); } - name.cpy(field->name()); + name.assign(field->name()); /* allocate a data item for tracking what this menu item refers to */ data = (analog_item_data *)m_pool_alloc(sizeof(*data)); @@ -895,8 +895,8 @@ void ui_menu_analog::populate() { default: case ANALOG_ITEM_KEYSPEED: - text.printf("%s Digital Speed", name.c_str()); - subtext.printf("%d", settings.delta); + strprintf(text, "%s Digital Speed", name.c_str()); + strprintf(subtext, "%d", settings.delta); data->min = 0; data->max = 255; data->cur = settings.delta; @@ -904,8 +904,8 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_CENTERSPEED: - text.printf("%s Autocenter Speed", name.c_str()); - subtext.printf("%d", settings.centerdelta); + strprintf(text, "%s Autocenter Speed", name.c_str()); + strprintf(subtext, "%d", settings.centerdelta); data->min = 0; data->max = 255; data->cur = settings.centerdelta; @@ -913,8 +913,8 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_REVERSE: - text.printf("%s Reverse", name.c_str()); - subtext.cpy(settings.reverse ? "On" : "Off"); + strprintf(text, "%s Reverse", name.c_str()); + subtext.assign(settings.reverse ? "On" : "Off"); data->min = 0; data->max = 1; data->cur = settings.reverse; @@ -922,8 +922,8 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_SENSITIVITY: - text.printf("%s Sensitivity", name.c_str()); - subtext.printf("%d", settings.sensitivity); + strprintf(text, "%s Sensitivity", name.c_str()); + strprintf(subtext, "%d", settings.sensitivity); data->min = 1; data->max = 255; data->cur = settings.sensitivity; diff --git a/src/emu/ui/mainmenu.c b/src/emu/ui/mainmenu.c index be8ca14f9a3..9e122ba7a2b 100644 --- a/src/emu/ui/mainmenu.c +++ b/src/emu/ui/mainmenu.c @@ -50,12 +50,12 @@ ui_menu_main::ui_menu_main(running_machine &machine, render_container *container void ui_menu_main::populate() { - astring menu_text; + std::string menu_text; /* add input menu items */ item_append("Input (general)", NULL, 0, (void *)INPUT_GROUPS); - menu_text.printf("Input (this %s)",emulator_info::get_capstartgamenoun()); + strprintf(menu_text, "Input (this %s)", emulator_info::get_capstartgamenoun()); item_append(menu_text.c_str(), NULL, 0, (void *)INPUT_SPECIFIC); /* add optional input-related menus */ @@ -65,7 +65,7 @@ void ui_menu_main::populate() item_append("Dip Switches", NULL, 0, (void *)SETTINGS_DIP_SWITCHES); if (machine().ioport().has_configs()) { - menu_text.printf("%s Configuration",emulator_info::get_capstartgamenoun()); + strprintf(menu_text, "%s Configuration", emulator_info::get_capstartgamenoun()); item_append(menu_text.c_str(), NULL, 0, (void *)SETTINGS_DRIVER_CONFIG); } @@ -73,7 +73,7 @@ void ui_menu_main::populate() item_append("Bookkeeping Info", NULL, 0, (void *)BOOKKEEPING); /* add game info menu */ - menu_text.printf("%s Information",emulator_info::get_capstartgamenoun()); + strprintf(menu_text, "%s Information", emulator_info::get_capstartgamenoun()); item_append(menu_text.c_str(), NULL, 0, (void *)GAME_INFO); image_interface_iterator imgiter(machine().root_device()); @@ -134,7 +134,7 @@ void ui_menu_main::populate() item_append("Cheat", NULL, 0, (void *)CHEAT); /* add reset and exit menus */ - menu_text.printf("Select New %s",emulator_info::get_capstartgamenoun()); + strprintf(menu_text, "Select New %s", emulator_info::get_capstartgamenoun()); item_append(menu_text.c_str(), NULL, 0, (void *)SELECT_GAME); } diff --git a/src/emu/ui/menu.c b/src/emu/ui/menu.c index 1ae7c2d2145..906aa507087 100644 --- a/src/emu/ui/menu.c +++ b/src/emu/ui/menu.c @@ -180,8 +180,8 @@ void ui_menu::reset(ui_menu_reset_options options) numitems = 0; visitems = 0; selected = 0; - astring backtext; - backtext.printf("Return to %s",emulator_info::get_capstartgamenoun()); + std::string backtext; + strprintf(backtext, "Return to %s", emulator_info::get_capstartgamenoun()); // add an item to return if (parent == NULL) diff --git a/src/emu/ui/miscmenu.c b/src/emu/ui/miscmenu.c index 431261cee78..e06b8933de0 100644 --- a/src/emu/ui/miscmenu.c +++ b/src/emu/ui/miscmenu.c @@ -120,14 +120,14 @@ void ui_menu_bios_selection::handle() if (val>cnt) val=1; dev->set_system_bios(val); if (strcmp(dev->tag(),":")==0) { - astring error; + std::string error; machine().options().set_value("bios", val-1, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } else { - astring error; - astring value; - astring temp; - value.printf("%s,bios=%d",machine().options().main_value(temp,dev->owner()->tag()+1),val-1); + std::string error; + std::string value; + std::string temp; + strprintf(value,"%s,bios=%d",machine().options().main_value(temp,dev->owner()->tag()+1),val-1); machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } @@ -233,18 +233,18 @@ ui_menu_bookkeeping::~ui_menu_bookkeeping() void ui_menu_bookkeeping::populate() { int tickets = get_dispensed_tickets(machine()); - astring tempstring; + std::string tempstring; int ctrnum; /* show total time first */ if (prevtime.seconds >= 60 * 60) - tempstring.catprintf("Uptime: %d:%02d:%02d\n\n", prevtime.seconds / (60*60), (prevtime.seconds / 60) % 60, prevtime.seconds % 60); + strcatprintf(tempstring, "Uptime: %d:%02d:%02d\n\n", prevtime.seconds / (60 * 60), (prevtime.seconds / 60) % 60, prevtime.seconds % 60); else - tempstring.catprintf("Uptime: %d:%02d\n\n", (prevtime.seconds / 60) % 60, prevtime.seconds % 60); + strcatprintf(tempstring,"Uptime: %d:%02d\n\n", (prevtime.seconds / 60) % 60, prevtime.seconds % 60); /* show tickets at the top */ if (tickets > 0) - tempstring.catprintf("Tickets dispensed: %d\n\n", tickets); + strcatprintf(tempstring,"Tickets dispensed: %d\n\n", tickets); /* loop over coin counters */ for (ctrnum = 0; ctrnum < COIN_COUNTERS; ctrnum++) @@ -252,18 +252,18 @@ void ui_menu_bookkeeping::populate() int count = coin_counter_get_count(machine(), ctrnum); /* display the coin counter number */ - tempstring.catprintf("Coin %c: ", ctrnum + 'A'); + strcatprintf(tempstring,"Coin %c: ", ctrnum + 'A'); /* display how many coins */ if (count == 0) - tempstring.cat("NA"); + tempstring.append("NA"); else - tempstring.catprintf("%d", count); + strcatprintf(tempstring, "%d", count); /* display whether or not we are locked out */ if (coin_lockout_get_state(machine(), ctrnum)) - tempstring.cat(" (locked)"); - tempstring.cat("\n"); + tempstring.append(" (locked)"); + tempstring.append("\n"); } /* append the single item */ diff --git a/src/emu/ui/selgame.c b/src/emu/ui/selgame.c index 8a78d8a5c4f..45faeac207a 100644 --- a/src/emu/ui/selgame.c +++ b/src/emu/ui/selgame.c @@ -232,8 +232,8 @@ void ui_menu_select_game::populate() // if nothing there, add a single multiline item and return if (matchcount == 0) { - astring txt; - txt.printf("No %s found. Please check the rompath specified in the %s.ini file.\n\n" + std::string txt; + strprintf(txt, "No %s found. Please check the rompath specified in the %s.ini file.\n\n" "If this is your first time using %s, please see the config.txt file in " "the docs directory for information on configuring %s.", emulator_info::get_gamesnoun(), @@ -282,15 +282,15 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott const game_driver *driver; float width, maxwidth; float x1, y1, x2, y2; - astring tempbuf[5]; + std::string tempbuf[5]; rgb_t color; int line; // display the current typeahead if (m_search[0] != 0) - tempbuf[0].printf("Type name or select: %s_", m_search); + strprintf(tempbuf[0], "Type name or select: %s_", m_search); else - tempbuf[0].printf("Type name or select: (random)"); + strprintf(tempbuf[0],"Type name or select: (random)"); // get the size of the text machine().ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE, @@ -324,21 +324,21 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott const char *gfxstat, *soundstat; // first line is game name - tempbuf[0].printf("%-.100s", driver->description); + strprintf(tempbuf[0],"%-.100s", driver->description); // next line is year, manufacturer - tempbuf[1].printf("%s, %-.100s", driver->year, driver->manufacturer); + strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer); // next line source path - tempbuf[2].printf("Driver: %-.100s", core_filename_extract_base(tempbuf[3], driver->source_file).c_str()); + strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(tempbuf[3], driver->source_file).c_str()); // next line is overall driver status if (driver->flags & GAME_NOT_WORKING) - tempbuf[3].cpy("Overall: NOT WORKING"); + tempbuf[3].assign("Overall: NOT WORKING"); else if (driver->flags & GAME_UNEMULATED_PROTECTION) - tempbuf[3].cpy("Overall: Unemulated Protection"); + tempbuf[3].assign("Overall: Unemulated Protection"); else - tempbuf[3].cpy("Overall: Working"); + tempbuf[3].assign("Overall: Working"); // next line is graphics, sound status if (driver->flags & (GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS)) @@ -353,7 +353,7 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott else soundstat = "OK"; - tempbuf[4].printf("Gfx: %s, Sound: %s", gfxstat, soundstat); + strprintf(tempbuf[4], "Gfx: %s, Sound: %s", gfxstat, soundstat); } else { @@ -361,13 +361,13 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott line = 0; // first line is version string - tempbuf[line++].printf("%s %s", emulator_info::get_applongname(), build_version); + strprintf(tempbuf[line++], "%s %s", emulator_info::get_applongname(), build_version); // output message while (line < ARRAY_LENGTH(tempbuf)) { if (!(*s == 0 || *s == '\n')) - tempbuf[line].cat(*s); + tempbuf[line].push_back(*s); if (*s == '\n') { diff --git a/src/emu/ui/sliders.c b/src/emu/ui/sliders.c index 73b077e7c08..e547538bc76 100644 --- a/src/emu/ui/sliders.c +++ b/src/emu/ui/sliders.c @@ -130,7 +130,7 @@ void ui_menu_sliders::handle() void ui_menu_sliders::populate() { - astring tempstring; + std::string tempstring; /* add UI sliders */ for (const slider_state *curslider = machine().ui().get_slider_list(); curslider != NULL; curslider = curslider->next) @@ -175,7 +175,7 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, float bar_left, bar_area_top, bar_width, bar_area_height, bar_top, bar_bottom, default_x, current_x; float line_height = machine().ui().get_line_height(); float percentage, default_percentage; - astring tempstring; + std::string tempstring; float text_height; INT32 curval; @@ -187,7 +187,7 @@ void ui_menu_sliders::custom_render(void *selectedref, float top, float bottom, default_percentage = (float)(curslider->defval - curslider->minval) / (float)(curslider->maxval - curslider->minval); /* assemble the text */ - tempstring.ins(0, " ").ins(0, curslider->description); + tempstring.insert(0, " ").insert(0, curslider->description); /* move us to the bottom of the screen, and expand to full width */ y2 = 1.0f - UI_BOX_TB_BORDER; diff --git a/src/emu/ui/slotopt.c b/src/emu/ui/slotopt.c index 99fa9b32699..5a2314591a6 100644 --- a/src/emu/ui/slotopt.c +++ b/src/emu/ui/slotopt.c @@ -28,7 +28,7 @@ device_slot_option *ui_menu_slot_devices::slot_get_current_option(device_slot_in } else { - astring temp; + std::string temp; current = machine().options().main_value(temp, slot->device().tag() + 1); } @@ -134,7 +134,7 @@ const char *ui_menu_slot_devices::slot_get_option(device_slot_interface *slot, i void ui_menu_slot_devices::set_slot_device(device_slot_interface *slot, const char *val) { - astring error; + std::string error; machine().options().set_value(slot->device().tag()+1, val, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } @@ -156,14 +156,14 @@ void ui_menu_slot_devices::populate() { /* record the menu item */ const device_slot_option *option = slot_get_current_option(slot); - astring opt_name; + std::string opt_name; if (option == NULL) - opt_name.cpy("------"); + opt_name.assign("------"); else { - opt_name.cpy(option->name()); + opt_name.assign(option->name()); if (slot->fixed() || slot_get_length(slot) == 0) - opt_name.cat(" [internal]"); + opt_name.append(" [internal]"); } item_append(slot->device().tag() + 1, opt_name.c_str(), (slot->fixed() || slot_get_length(slot) == 0) ? 0 : (MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW), (void *)slot); diff --git a/src/emu/ui/swlist.c b/src/emu/ui/swlist.c index ff3d5771b76..847483edcc1 100644 --- a/src/emu/ui/swlist.c +++ b/src/emu/ui/swlist.c @@ -82,9 +82,9 @@ void ui_menu_software_parts::populate() software_part_menu_entry *entry = (software_part_menu_entry *) m_pool_alloc(sizeof(*entry)); // check if the available parts have specific part_id to be displayed (e.g. "Map Disc", "Bonus Disc", etc.) // if not, we simply display "part_name"; if yes we display "part_name (part_id)" - astring menu_part_name(swpart->name()); + std::string menu_part_name(swpart->name()); if (swpart->feature("part_id") != NULL) - menu_part_name.cat(" (").cat(swpart->feature("part_id")).cat(")"); + menu_part_name.append(" (").append(swpart->feature("part_id")).append(")"); entry->type = T_ENTRY; entry->part = swpart; item_append(m_info->shortname(), menu_part_name.c_str(), 0, entry); diff --git a/src/emu/ui/tapectrl.c b/src/emu/ui/tapectrl.c index 2de59a87767..c4bd850e232 100644 --- a/src/emu/ui/tapectrl.c +++ b/src/emu/ui/tapectrl.c @@ -62,7 +62,7 @@ void ui_menu_tape_control::populate() if (current_device()->exists()) { - astring timepos; + std::string timepos; cassette_state state; double t0 = current_device()->get_position(); double t1 = current_device()->get_length(); @@ -163,7 +163,7 @@ void ui_menu_tape_control::handle() // representation of the time //------------------------------------------------- -void ui_menu_tape_control::get_time_string(astring &dest, cassette_image_device *cassette, int *curpos, int *endpos) +void ui_menu_tape_control::get_time_string(std::string &dest, cassette_image_device *cassette, int *curpos, int *endpos) { double t0, t1; @@ -171,9 +171,9 @@ void ui_menu_tape_control::get_time_string(astring &dest, cassette_image_device t1 = cassette->get_length(); if (t1) - dest.printf("%04d/%04d", (int) t0, (int) t1); + strprintf(dest, "%04d/%04d", (int)t0, (int)t1); else - dest.printf("%04d/%04d", 0, (int) t1); + strprintf(dest, "%04d/%04d", 0, (int)t1); if (curpos != NULL) *curpos = t0; diff --git a/src/emu/ui/tapectrl.h b/src/emu/ui/tapectrl.h index b1c36c73dcd..dadaca63f6a 100644 --- a/src/emu/ui/tapectrl.h +++ b/src/emu/ui/tapectrl.h @@ -25,7 +25,7 @@ public: virtual void handle(); private: - static void get_time_string(astring &dest, cassette_image_device *cassette, int *curpos, int *endpos); + static void get_time_string(std::string &dest, cassette_image_device *cassette, int *curpos, int *endpos); }; #endif /* __UI_TAPECTRL_H__ */ diff --git a/src/emu/ui/ui.c b/src/emu/ui/ui.c index 8c43d20181c..5ca1b3ddb13 100644 --- a/src/emu/ui/ui.c +++ b/src/emu/ui/ui.c @@ -92,7 +92,7 @@ static const input_item_id non_char_keys[] = ***************************************************************************/ // messagebox buffer -static astring messagebox_text; +static std::string messagebox_text; static rgb_t messagebox_backcolor; // slider info @@ -107,28 +107,28 @@ static slider_state *slider_current; // slider controls static slider_state *slider_alloc(running_machine &machine, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg); static slider_state *slider_init(running_machine &machine); -static INT32 slider_volume(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_mixervol(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_adjuster(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_overclock(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_refresh(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_brightness(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_contrast(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_gamma(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_xscale(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_yscale(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_xoffset(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_yoffset(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_overxscale(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_overyscale(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_flicker(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_beam(running_machine &machine, void *arg, astring *str, INT32 newval); +static INT32 slider_volume(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_mixervol(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_adjuster(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_overclock(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_refresh(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_brightness(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_contrast(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_gamma(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_xscale(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_yscale(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_xoffset(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_yoffset(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_overxscale(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_overyscale(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_overxoffset(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_overyoffset(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_flicker(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_beam(running_machine &machine, void *arg, std::string *str, INT32 newval); static char *slider_get_screen_desc(screen_device &screen); #ifdef MAME_DEBUG -static INT32 slider_crossscale(running_machine &machine, void *arg, astring *str, INT32 newval); -static INT32 slider_crossoffset(running_machine &machine, void *arg, astring *str, INT32 newval); +static INT32 slider_crossscale(running_machine &machine, void *arg, std::string *str, INT32 newval); +static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string *str, INT32 newval); #endif @@ -335,12 +335,12 @@ void ui_manager::display_startup_screens(bool first_time, bool show_disclaimer) switch (state) { case 0: - if (show_disclaimer && disclaimer_string(messagebox_text).len() > 0) + if (show_disclaimer && disclaimer_string(messagebox_text).length() > 0) set_handler(handler_messagebox_ok, 0); break; case 1: - if (show_warnings && warnings_string(messagebox_text).len() > 0) + if (show_warnings && warnings_string(messagebox_text).length() > 0) { set_handler(handler_messagebox_ok, 0); if (machine().system().flags & (GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND)) @@ -351,15 +351,15 @@ void ui_manager::display_startup_screens(bool first_time, bool show_disclaimer) break; case 2: - if (show_gameinfo && game_info_astring(messagebox_text).len() > 0) + if (show_gameinfo && game_info_astring(messagebox_text).length() > 0) set_handler(handler_messagebox_anykey, 0); break; case 3: - if (show_mandatory_fileman && image_mandatory_scan(machine(), messagebox_text).len() > 0) + if (show_mandatory_fileman && image_mandatory_scan(machine(), messagebox_text).length() > 0) { - astring warning; - warning.cpy("This driver requires images to be loaded in the following device(s): ").cat(messagebox_text.substr(0, messagebox_text.len() - 2)); + std::string warning; + warning.assign("This driver requires images to be loaded in the following device(s): ").append(messagebox_text.substr(0, messagebox_text.length() - 2)); ui_menu_file_manager::force_file_manager(machine(), &machine().render().ui_container(), warning.c_str()); } break; @@ -398,7 +398,7 @@ void ui_manager::set_startup_text(const char *text, bool force) osd_ticks_t curtime = osd_ticks(); // copy in the new text - messagebox_text.cpy(text); + messagebox_text.assign(text); messagebox_backcolor = UI_BACKGROUND_COLOR; // don't update more than 4 times/second @@ -869,7 +869,7 @@ void CLIB_DECL ui_manager::popup_time(int seconds, const char *text, ...) // extract the text va_start(arg,text); - messagebox_text.vprintf(text, arg); + strvprintf(messagebox_text, text, arg); messagebox_backcolor = UI_BACKGROUND_COLOR; va_end(arg); @@ -992,11 +992,11 @@ bool ui_manager::is_menu_active(void) // text to the given buffer //------------------------------------------------- -astring &ui_manager::disclaimer_string(astring &str) +std::string &ui_manager::disclaimer_string(std::string &str) { - str.cpy("Usage of emulators in conjunction with ROMs you don't own is forbidden by copyright law.\n\n"); - str.catprintf("IF YOU ARE NOT LEGALLY ENTITLED TO PLAY \"%s\" ON THIS EMULATOR, PRESS ESC.\n\n", machine().system().description); - str.cat("Otherwise, type OK or move the joystick left then right to continue"); + str.assign("Usage of emulators in conjunction with ROMs you don't own is forbidden by copyright law.\n\n"); + strcatprintf(str, "IF YOU ARE NOT LEGALLY ENTITLED TO PLAY \"%s\" ON THIS EMULATOR, PRESS ESC.\n\n", machine().system().description); + str.append("Otherwise, type OK or move the joystick left then right to continue"); return str; } @@ -1006,7 +1006,7 @@ astring &ui_manager::disclaimer_string(astring &str) // text to the given buffer //------------------------------------------------- -astring &ui_manager::warnings_string(astring &str) +std::string &ui_manager::warnings_string(std::string &str) { #define WARNING_FLAGS ( GAME_NOT_WORKING | \ GAME_UNEMULATED_PROTECTION | \ @@ -1020,79 +1020,79 @@ astring &ui_manager::warnings_string(astring &str) GAME_IMPERFECT_KEYBOARD | \ GAME_NO_COCKTAIL) - str.reset(); + str.clear(); // if no warnings, nothing to return - if (rom_load_warnings(machine()) == 0 && rom_load_knownbad(machine()) == 0 && !(machine().system().flags & WARNING_FLAGS) && software_load_warnings_message(machine()).len()==0) + if (rom_load_warnings(machine()) == 0 && rom_load_knownbad(machine()) == 0 && !(machine().system().flags & WARNING_FLAGS) && software_load_warnings_message(machine()).length() == 0) return str; // add a warning if any ROMs were loaded with warnings if (rom_load_warnings(machine()) > 0) { - str.cat("One or more ROMs/CHDs for this game are incorrect. The "); - str.cat(emulator_info::get_gamenoun()); - str.cat(" may not run correctly.\n"); + str.append("One or more ROMs/CHDs for this game are incorrect. The "); + str.append(emulator_info::get_gamenoun()); + str.append(" may not run correctly.\n"); if (machine().system().flags & WARNING_FLAGS) - str.cat("\n"); + str.append("\n"); } - if (software_load_warnings_message(machine()).len()>0) { - str.cat(software_load_warnings_message(machine())); + if (software_load_warnings_message(machine()).length()>0) { + str.append(software_load_warnings_message(machine())); if (machine().system().flags & WARNING_FLAGS) - str.cat("\n"); + str.append("\n"); } // if we have at least one warning flag, print the general header if ((machine().system().flags & WARNING_FLAGS) || rom_load_knownbad(machine()) > 0) { - str.cat("There are known problems with this "); - str.cat(emulator_info::get_gamenoun()); - str.cat("\n\n"); + str.append("There are known problems with this "); + str.append(emulator_info::get_gamenoun()); + str.append("\n\n"); // add a warning if any ROMs are flagged BAD_DUMP/NO_DUMP if (rom_load_knownbad(machine()) > 0) { - str.cat("One or more ROMs/CHDs for this "); - str.cat(emulator_info::get_gamenoun()); - str.cat(" have not been correctly dumped.\n"); + str.append("One or more ROMs/CHDs for this "); + str.append(emulator_info::get_gamenoun()); + str.append(" have not been correctly dumped.\n"); } // add one line per warning flag if (machine().system().flags & GAME_IMPERFECT_KEYBOARD) - str.cat("The keyboard emulation may not be 100% accurate.\n"); + str.append("The keyboard emulation may not be 100% accurate.\n"); if (machine().system().flags & GAME_IMPERFECT_COLORS) - str.cat("The colors aren't 100% accurate.\n"); + str.append("The colors aren't 100% accurate.\n"); if (machine().system().flags & GAME_WRONG_COLORS) - str.cat("The colors are completely wrong.\n"); + str.append("The colors are completely wrong.\n"); if (machine().system().flags & GAME_IMPERFECT_GRAPHICS) - str.cat("The video emulation isn't 100% accurate.\n"); + str.append("The video emulation isn't 100% accurate.\n"); if (machine().system().flags & GAME_IMPERFECT_SOUND) - str.cat("The sound emulation isn't 100% accurate.\n"); + str.append("The sound emulation isn't 100% accurate.\n"); if (machine().system().flags & GAME_NO_SOUND) - str.cat("The game lacks sound.\n"); + str.append("The game lacks sound.\n"); if (machine().system().flags & GAME_NO_COCKTAIL) - str.cat("Screen flipping in cocktail mode is not supported.\n"); + str.append("Screen flipping in cocktail mode is not supported.\n"); // check if external artwork is present before displaying this warning? if (machine().system().flags & GAME_REQUIRES_ARTWORK) - str.cat("The game requires external artwork files\n"); + str.append("The game requires external artwork files\n"); // if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger if (machine().system().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL)) { // add the strings for these warnings if (machine().system().flags & GAME_UNEMULATED_PROTECTION) - str.cat("The game has protection which isn't fully emulated.\n"); + str.append("The game has protection which isn't fully emulated.\n"); if (machine().system().flags & GAME_NOT_WORKING) { - str.cat("\nTHIS "); - str.cat(emulator_info::get_capgamenoun()); - str.cat(" DOESN'T WORK. The emulation for this game is not yet complete. " + str.append("\nTHIS "); + str.append(emulator_info::get_capgamenoun()); + str.append(" DOESN'T WORK. The emulation for this game is not yet complete. " "There is nothing you can do to fix this problem except wait for the developers to improve the emulation.\n"); } if (machine().system().flags & GAME_MECHANICAL) { - str.cat("\nCertain elements of this "); - str.cat(emulator_info::get_gamenoun()); - str.cat(" cannot be emulated as it requires actual physical interaction or consists of mechanical devices. " + str.append("\nCertain elements of this "); + str.append(emulator_info::get_gamenoun()); + str.append(" cannot be emulated as it requires actual physical interaction or consists of mechanical devices. " "It is not possible to fully play this "); - str.cat(emulator_info::get_gamenoun()); - str.cat(".\n"); + str.append(emulator_info::get_gamenoun()); + str.append(".\n"); } // find the parent of this driver @@ -1110,34 +1110,34 @@ astring &ui_manager::warnings_string(astring &str) { // this one works, add a header and display the name of the clone if (!foundworking) - str.cat("\n\nThere are working clones of this game: "); + str.append("\n\nThere are working clones of this game: "); else - str.cat(", "); - str.cat(drivlist.driver().name); + str.append(", "); + str.append(drivlist.driver().name); foundworking = true; } if (foundworking) - str.cat("\n"); + str.append("\n"); } } // add the 'press OK' string - str.cat("\n\nType OK or move the joystick left then right to continue"); + str.append("\n\nType OK or move the joystick left then right to continue"); return str; } //------------------------------------------------- -// game_info_astring - populate an allocated +// game_info_std::string - populate an allocated // string with the game info text //------------------------------------------------- -astring &ui_manager::game_info_astring(astring &str) +std::string &ui_manager::game_info_astring(std::string &str) { // print description, manufacturer, and CPU: - astring tempstr; - str.printf("%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(tempstr, machine().system().source_file).c_str()); + std::string tempstr; + strprintf(str, "%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(tempstr, machine().system().source_file).c_str()); // loop over all CPUs execute_interface_iterator execiter(machine().root_device()); @@ -1162,14 +1162,14 @@ astring &ui_manager::game_info_astring(astring &str) // if more than one, prepend a #x in front of the CPU name if (count > 1) - str.catprintf("%d" UTF8_MULTIPLY, count); - str.cat(name); + strcatprintf(str, "%d" UTF8_MULTIPLY, count); + str.append(name); // display clock in kHz or MHz if (clock >= 1000000) - str.catprintf(" %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else - str.catprintf(" %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); } // loop over all sound chips @@ -1183,7 +1183,7 @@ astring &ui_manager::game_info_astring(astring &str) // append the Sound: string if (!found_sound) - str.cat("\nSound:\n"); + str.append("\nSound:\n"); found_sound = true; // count how many identical sound chips we have @@ -1197,42 +1197,42 @@ astring &ui_manager::game_info_astring(astring &str) } // if more than one, prepend a #x in front of the CPU name if (count > 1) - str.catprintf("%d" UTF8_MULTIPLY, count); - str.cat(sound->device().name()); + strcatprintf(str, "%d" UTF8_MULTIPLY, count); + str.append(sound->device().name()); // display clock in kHz or MHz int clock = sound->device().clock(); if (clock >= 1000000) - str.catprintf(" %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else if (clock != 0) - str.catprintf(" %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); else - str.cat("\n"); + str.append("\n"); } // display screen information - str.cat("\nVideo:\n"); + str.append("\nVideo:\n"); screen_device_iterator scriter(machine().root_device()); int scrcount = scriter.count(); if (scrcount == 0) - str.cat("None\n"); + str.append("None\n"); else { for (screen_device *screen = scriter.first(); screen != NULL; screen = scriter.next()) { if (scrcount > 1) { - str.cat(slider_get_screen_desc(*screen)); - str.cat(": "); + str.append(slider_get_screen_desc(*screen)); + str.append(": "); } if (screen->screen_type() == SCREEN_TYPE_VECTOR) - str.cat("Vector\n"); + str.append("Vector\n"); else { const rectangle &visarea = screen->visible_area(); - str.catprintf("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", + strcatprintf(str, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", visarea.width(), visarea.height(), (machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H", ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds)); @@ -1471,7 +1471,7 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co // first draw the FPS counter if (machine.ui().show_fps_counter()) { - astring tempstring; + std::string tempstring; machine.ui().draw_text_full(container, machine.video().speed_text(tempstring).c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, NULL, NULL); } @@ -1751,16 +1751,16 @@ void ui_manager::request_quit() UINT32 ui_manager::handler_confirm_quit(running_machine &machine, render_container *container, UINT32 state) { // get the text for 'UI Select' - astring ui_select_text; + std::string ui_select_text; machine.input().seq_name(ui_select_text, machine.ioport().type_seq(IPT_UI_SELECT, 0, SEQ_TYPE_STANDARD)); // get the text for 'UI Cancel' - astring ui_cancel_text; + std::string ui_cancel_text; machine.input().seq_name(ui_cancel_text, machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD)); // assemble the quit message - astring quit_message; - quit_message.printf( + std::string quit_message; + strprintf(quit_message, "Are you sure you want to quit?\n\n" "Press ''%s'' to quit,\n" "Press ''%s'' to return to emulation.", @@ -1831,7 +1831,7 @@ static slider_state *slider_init(running_machine &machine) ioport_port *port; slider_state *listhead = NULL; slider_state **tailptr = &listhead; - astring str; + std::string str; int item; // add overall volume @@ -1846,7 +1846,7 @@ static slider_state *slider_init(running_machine &machine) INT32 defval = 1000; info.stream->input_name(info.inputnum, str); - str.cat(" Volume"); + str.append(" Volume"); *tailptr = slider_alloc(machine, str.c_str(), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item); tailptr = &(*tailptr)->next; } @@ -1868,7 +1868,7 @@ static slider_state *slider_init(running_machine &machine) for (device_execute_interface *exec = iter.first(); exec != NULL; exec = iter.next()) { void *param = (void *)&exec->device(); - str.printf("Overclock CPU %s", exec->device().tag()); + strprintf(str, "Overclock CPU %s", exec->device().tag()); *tailptr = slider_alloc(machine, str.c_str(), 10, 1000, 2000, 1, slider_overclock, param); tailptr = &(*tailptr)->next; } @@ -1887,33 +1887,33 @@ static slider_state *slider_init(running_machine &machine) // add refresh rate tweaker if (machine.options().cheat()) { - str.printf("%s Refresh Rate", slider_get_screen_desc(*screen)); + strprintf(str, "%s Refresh Rate", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), -10000, 0, 10000, 1000, slider_refresh, param); tailptr = &(*tailptr)->next; } // add standard brightness/contrast/gamma controls per-screen - str.printf("%s Brightness", slider_get_screen_desc(*screen)); + strprintf(str, "%s Brightness", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 10, slider_brightness, param); tailptr = &(*tailptr)->next; - str.printf("%s Contrast", slider_get_screen_desc(*screen)); + strprintf(str, "%s Contrast", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 50, slider_contrast, param); tailptr = &(*tailptr)->next; - str.printf("%s Gamma", slider_get_screen_desc(*screen)); + strprintf(str,"%s Gamma", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 3000, 50, slider_gamma, param); tailptr = &(*tailptr)->next; // add scale and offset controls per-screen - str.printf("%s Horiz Stretch", slider_get_screen_desc(*screen)); + strprintf(str,"%s Horiz Stretch", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), 500, defxscale, 1500, 2, slider_xscale, param); tailptr = &(*tailptr)->next; - str.printf("%s Horiz Position", slider_get_screen_desc(*screen)); + strprintf(str,"%s Horiz Position", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_xoffset, param); tailptr = &(*tailptr)->next; - str.printf("%s Vert Stretch", slider_get_screen_desc(*screen)); + strprintf(str,"%s Vert Stretch", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), 500, defyscale, 1500, 2, slider_yscale, param); tailptr = &(*tailptr)->next; - str.printf("%s Vert Position", slider_get_screen_desc(*screen)); + strprintf(str,"%s Vert Position", slider_get_screen_desc(*screen)); *tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_yoffset, param); tailptr = &(*tailptr)->next; } @@ -1931,16 +1931,16 @@ static slider_state *slider_init(running_machine &machine) void *param = (void *)laserdisc; // add scale and offset controls per-overlay - str.printf("Laserdisc '%s' Horiz Stretch", laserdisc->tag()); + strprintf(str,"Laserdisc '%s' Horiz Stretch", laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param); tailptr = &(*tailptr)->next; - str.printf("Laserdisc '%s' Horiz Position", laserdisc->tag()); + strprintf(str,"Laserdisc '%s' Horiz Position", laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_overxoffset, param); tailptr = &(*tailptr)->next; - str.printf("Laserdisc '%s' Vert Stretch", laserdisc->tag()); + strprintf(str,"Laserdisc '%s' Vert Stretch", laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param); tailptr = &(*tailptr)->next; - str.printf("Laserdisc '%s' Vert Position", laserdisc->tag()); + strprintf(str,"Laserdisc '%s' Vert Position", laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_overyoffset, param); tailptr = &(*tailptr)->next; } @@ -1963,10 +1963,10 @@ static slider_state *slider_init(running_machine &machine) if (field->crosshair_axis() != CROSSHAIR_AXIS_NONE && field->player() == 0) { void *param = (void *)field; - str.printf("Crosshair Scale %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); + strprintf(str,"Crosshair Scale %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); *tailptr = slider_alloc(machine, str.c_str(), -3000, 1000, 3000, 100, slider_crossscale, param); tailptr = &(*tailptr)->next; - str.printf("Crosshair Offset %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); + strprintf(str,"Crosshair Offset %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); *tailptr = slider_alloc(machine, str.c_str(), -3000, 0, 3000, 100, slider_crossoffset, param); tailptr = &(*tailptr)->next; } @@ -1980,12 +1980,12 @@ static slider_state *slider_init(running_machine &machine) // slider_volume - global volume slider callback //------------------------------------------------- -static INT32 slider_volume(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_volume(running_machine &machine, void *arg, std::string *str, INT32 newval) { if (newval != SLIDER_NOCHANGE) machine.sound().set_attenuation(newval); if (str != NULL) - str->printf("%3ddB", machine.sound().attenuation()); + strprintf(*str,"%3ddB", machine.sound().attenuation()); return machine.sound().attenuation(); } @@ -1995,7 +1995,7 @@ static INT32 slider_volume(running_machine &machine, void *arg, astring *str, IN // slider callback //------------------------------------------------- -static INT32 slider_mixervol(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_mixervol(running_machine &machine, void *arg, std::string *str, INT32 newval) { mixer_input info; if (!machine.sound().indexed_mixer_input((FPTR)arg, info)) @@ -2007,7 +2007,7 @@ static INT32 slider_mixervol(running_machine &machine, void *arg, astring *str, info.stream->set_user_gain(info.inputnum, (float)newval * 0.001f); } if (str != NULL) - str->printf("%4.2f", info.stream->user_gain(info.inputnum)); + strprintf(*str,"%4.2f", info.stream->user_gain(info.inputnum)); return floor(info.stream->user_gain(info.inputnum) * 1000.0f + 0.5f); } @@ -2017,7 +2017,7 @@ static INT32 slider_mixervol(running_machine &machine, void *arg, astring *str, // callback //------------------------------------------------- -static INT32 slider_adjuster(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_adjuster(running_machine &machine, void *arg, std::string *str, INT32 newval) { ioport_field *field = (ioport_field *)arg; ioport_field::user_settings settings; @@ -2029,7 +2029,7 @@ static INT32 slider_adjuster(running_machine &machine, void *arg, astring *str, field->set_user_settings(settings); } if (str != NULL) - str->printf("%d%%", settings.value); + strprintf(*str,"%d%%", settings.value); return settings.value; } @@ -2039,13 +2039,13 @@ static INT32 slider_adjuster(running_machine &machine, void *arg, astring *str, // callback //------------------------------------------------- -static INT32 slider_overclock(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_overclock(running_machine &machine, void *arg, std::string *str, INT32 newval) { device_t *cpu = (device_t *)arg; if (newval != SLIDER_NOCHANGE) cpu->set_clock_scale((float)newval * 0.001f); if (str != NULL) - str->printf("%3.0f%%", floor(cpu->clock_scale() * 100.0f + 0.5f)); + strprintf(*str,"%3.0f%%", floor(cpu->clock_scale() * 100.0f + 0.5f)); return floor(cpu->clock_scale() * 1000.0f + 0.5f); } @@ -2054,7 +2054,7 @@ static INT32 slider_overclock(running_machine &machine, void *arg, astring *str, // slider_refresh - refresh rate slider callback //------------------------------------------------- -static INT32 slider_refresh(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_refresh(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); double defrefresh = ATTOSECONDS_TO_HZ(screen->refresh_attoseconds()); @@ -2068,7 +2068,7 @@ static INT32 slider_refresh(running_machine &machine, void *arg, astring *str, I screen->configure(width, height, visarea, HZ_TO_ATTOSECONDS(defrefresh + (double)newval * 0.001)); } if (str != NULL) - str->printf("%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds)); + strprintf(*str,"%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds)); refresh = ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds); return floor((refresh - defrefresh) * 1000.0f + 0.5f); } @@ -2079,7 +2079,7 @@ static INT32 slider_refresh(running_machine &machine, void *arg, astring *str, I // callback //------------------------------------------------- -static INT32 slider_brightness(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_brightness(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2091,7 +2091,7 @@ static INT32 slider_brightness(running_machine &machine, void *arg, astring *str screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_brightness); + strprintf(*str,"%.3f", settings.m_brightness); return floor(settings.m_brightness * 1000.0f + 0.5f); } @@ -2101,7 +2101,7 @@ static INT32 slider_brightness(running_machine &machine, void *arg, astring *str // callback //------------------------------------------------- -static INT32 slider_contrast(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_contrast(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2113,7 +2113,7 @@ static INT32 slider_contrast(running_machine &machine, void *arg, astring *str, screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_contrast); + strprintf(*str,"%.3f", settings.m_contrast); return floor(settings.m_contrast * 1000.0f + 0.5f); } @@ -2122,7 +2122,7 @@ static INT32 slider_contrast(running_machine &machine, void *arg, astring *str, // slider_gamma - screen gamma slider callback //------------------------------------------------- -static INT32 slider_gamma(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_gamma(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2134,7 +2134,7 @@ static INT32 slider_gamma(running_machine &machine, void *arg, astring *str, INT screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_gamma); + strprintf(*str,"%.3f", settings.m_gamma); return floor(settings.m_gamma * 1000.0f + 0.5f); } @@ -2144,7 +2144,7 @@ static INT32 slider_gamma(running_machine &machine, void *arg, astring *str, INT // callback //------------------------------------------------- -static INT32 slider_xscale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_xscale(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2156,7 +2156,7 @@ static INT32 slider_xscale(running_machine &machine, void *arg, astring *str, IN screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_xscale); + strprintf(*str,"%.3f", settings.m_xscale); return floor(settings.m_xscale * 1000.0f + 0.5f); } @@ -2166,7 +2166,7 @@ static INT32 slider_xscale(running_machine &machine, void *arg, astring *str, IN // callback //------------------------------------------------- -static INT32 slider_yscale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_yscale(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2178,7 +2178,7 @@ static INT32 slider_yscale(running_machine &machine, void *arg, astring *str, IN screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_yscale); + strprintf(*str,"%.3f", settings.m_yscale); return floor(settings.m_yscale * 1000.0f + 0.5f); } @@ -2188,7 +2188,7 @@ static INT32 slider_yscale(running_machine &machine, void *arg, astring *str, IN // slider callback //------------------------------------------------- -static INT32 slider_xoffset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_xoffset(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2200,7 +2200,7 @@ static INT32 slider_xoffset(running_machine &machine, void *arg, astring *str, I screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_xoffset); + strprintf(*str,"%.3f", settings.m_xoffset); return floor(settings.m_xoffset * 1000.0f + 0.5f); } @@ -2210,7 +2210,7 @@ static INT32 slider_xoffset(running_machine &machine, void *arg, astring *str, I // slider callback //------------------------------------------------- -static INT32 slider_yoffset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_yoffset(running_machine &machine, void *arg, std::string *str, INT32 newval) { screen_device *screen = reinterpret_cast(arg); render_container::user_settings settings; @@ -2222,7 +2222,7 @@ static INT32 slider_yoffset(running_machine &machine, void *arg, astring *str, I screen->container().set_user_settings(settings); } if (str != NULL) - str->printf("%.3f", settings.m_yoffset); + strprintf(*str,"%.3f", settings.m_yoffset); return floor(settings.m_yoffset * 1000.0f + 0.5f); } @@ -2232,7 +2232,7 @@ static INT32 slider_yoffset(running_machine &machine, void *arg, astring *str, I // callback //------------------------------------------------- -static INT32 slider_overxscale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_overxscale(running_machine &machine, void *arg, std::string *str, INT32 newval) { laserdisc_device *laserdisc = (laserdisc_device *)arg; laserdisc_overlay_config settings; @@ -2244,7 +2244,7 @@ static INT32 slider_overxscale(running_machine &machine, void *arg, astring *str laserdisc->set_overlay_config(settings); } if (str != NULL) - str->printf("%.3f", settings.m_overscalex); + strprintf(*str,"%.3f", settings.m_overscalex); return floor(settings.m_overscalex * 1000.0f + 0.5f); } @@ -2254,7 +2254,7 @@ static INT32 slider_overxscale(running_machine &machine, void *arg, astring *str // callback //------------------------------------------------- -static INT32 slider_overyscale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_overyscale(running_machine &machine, void *arg, std::string *str, INT32 newval) { laserdisc_device *laserdisc = (laserdisc_device *)arg; laserdisc_overlay_config settings; @@ -2266,7 +2266,7 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, astring *str laserdisc->set_overlay_config(settings); } if (str != NULL) - str->printf("%.3f", settings.m_overscaley); + strprintf(*str,"%.3f", settings.m_overscaley); return floor(settings.m_overscaley * 1000.0f + 0.5f); } @@ -2276,7 +2276,7 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, astring *str // slider callback //------------------------------------------------- -static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_overxoffset(running_machine &machine, void *arg, std::string *str, INT32 newval) { laserdisc_device *laserdisc = (laserdisc_device *)arg; laserdisc_overlay_config settings; @@ -2288,7 +2288,7 @@ static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *st laserdisc->set_overlay_config(settings); } if (str != NULL) - str->printf("%.3f", settings.m_overposx); + strprintf(*str,"%.3f", settings.m_overposx); return floor(settings.m_overposx * 1000.0f + 0.5f); } @@ -2298,7 +2298,7 @@ static INT32 slider_overxoffset(running_machine &machine, void *arg, astring *st // slider callback //------------------------------------------------- -static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_overyoffset(running_machine &machine, void *arg, std::string *str, INT32 newval) { laserdisc_device *laserdisc = (laserdisc_device *)arg; laserdisc_overlay_config settings; @@ -2310,7 +2310,7 @@ static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *st laserdisc->set_overlay_config(settings); } if (str != NULL) - str->printf("%.3f", settings.m_overposy); + strprintf(*str,"%.3f", settings.m_overposy); return floor(settings.m_overposy * 1000.0f + 0.5f); } @@ -2320,13 +2320,13 @@ static INT32 slider_overyoffset(running_machine &machine, void *arg, astring *st // callback //------------------------------------------------- -static INT32 slider_flicker(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_flicker(running_machine &machine, void *arg, std::string *str, INT32 newval) { vector_device *vector = NULL; if (newval != SLIDER_NOCHANGE) vector->set_flicker((float)newval * 0.1f); if (str != NULL) - str->printf("%1.2f", vector->get_flicker()); + strprintf(*str,"%1.2f", vector->get_flicker()); return floor(vector->get_flicker() * 10.0f + 0.5f); } @@ -2336,13 +2336,13 @@ static INT32 slider_flicker(running_machine &machine, void *arg, astring *str, I // callback //------------------------------------------------- -static INT32 slider_beam(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_beam(running_machine &machine, void *arg, std::string *str, INT32 newval) { vector_device *vector = NULL; if (newval != SLIDER_NOCHANGE) vector->set_beam((float)newval * 0.01f); if (str != NULL) - str->printf("%1.2f", vector->get_beam()); + strprintf(*str,"%1.2f", vector->get_beam()); return floor(vector->get_beam() * 100.0f + 0.5f); } @@ -2372,14 +2372,14 @@ static char *slider_get_screen_desc(screen_device &screen) //------------------------------------------------- #ifdef MAME_DEBUG -static INT32 slider_crossscale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_crossscale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ioport_field *field = (ioport_field *)arg; if (newval != SLIDER_NOCHANGE) field->set_crosshair_scale(float(newval) * 0.001); if (str != NULL) - str->printf("%s %s %1.3f", "Crosshair Scale", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); + strprintf(*str,"%s %s %1.3f", "Crosshair Scale", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); return floor(field->crosshair_scale() * 1000.0f + 0.5f); } #endif @@ -2391,14 +2391,14 @@ static INT32 slider_crossscale(running_machine &machine, void *arg, astring *str //------------------------------------------------- #ifdef MAME_DEBUG -static INT32 slider_crossoffset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ioport_field *field = (ioport_field *)arg; if (newval != SLIDER_NOCHANGE) field->set_crosshair_offset(float(newval) * 0.001f); if (str != NULL) - str->printf("%s %s %1.3f", "Crosshair Offset", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); + strprintf(*str,"%s %s %1.3f", "Crosshair Offset", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); return field->crosshair_offset(); } #endif @@ -2423,7 +2423,7 @@ bool ui_manager::use_natural_keyboard() const void ui_manager::set_use_natural_keyboard(bool use_natural_keyboard) { m_use_natural_keyboard = use_natural_keyboard; - astring error; + std::string error; machine().options().set_value(OPTION_NATURAL_KEYBOARD, use_natural_keyboard, OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } diff --git a/src/emu/ui/ui.h b/src/emu/ui/ui.h index e63b00339df..3f74eac6097 100644 --- a/src/emu/ui/ui.h +++ b/src/emu/ui/ui.h @@ -93,7 +93,7 @@ enum typedef UINT32 (*ui_callback)(running_machine &, render_container *, UINT32); -typedef INT32 (*slider_update)(running_machine &machine, void *arg, astring *str, INT32 newval); +typedef INT32(*slider_update)(running_machine &machine, void *arg, std::string *str, INT32 newval); struct slider_state { @@ -160,7 +160,7 @@ public: void request_quit(); // print the game info string into a buffer - astring &game_info_astring(astring &str); + std::string &game_info_astring(std::string &str); // slider controls const slider_state *get_slider_list(void); @@ -185,8 +185,8 @@ private: bool m_mouse_show; // text generators - astring &disclaimer_string(astring &buffer); - astring &warnings_string(astring &buffer); + std::string &disclaimer_string(std::string &buffer); + std::string &warnings_string(std::string &buffer); // UI handlers static UINT32 handler_messagebox(running_machine &machine, render_container *container, UINT32 state); diff --git a/src/emu/ui/videoopt.c b/src/emu/ui/videoopt.c index d0788527b2e..57e25ce5edc 100644 --- a/src/emu/ui/videoopt.c +++ b/src/emu/ui/videoopt.c @@ -174,7 +174,7 @@ ui_menu_video_options::ui_menu_video_options(running_machine &machine, render_co void ui_menu_video_options::populate() { const char *subtext = ""; - astring tempstring; + std::string tempstring; int viewnum; int enabled; @@ -186,7 +186,8 @@ void ui_menu_video_options::populate() break; /* create a string for the item, replacing underscores with spaces */ - tempstring.cpy(name).replace(0, "_", " "); + tempstring.assign(name); + strreplace(tempstring, "_", " "); item_append(tempstring.c_str(), NULL, 0, (void *)(FPTR)(VIDEO_ITEM_VIEW + viewnum)); } diff --git a/src/emu/validity.c b/src/emu/validity.c index 887dd76e123..bd5c0702662 100644 --- a/src/emu/validity.c +++ b/src/emu/validity.c @@ -198,16 +198,16 @@ void validity_checker::check_all() // if we had warnings or errors, output if (m_errors > 0 || m_warnings > 0) { - astring tempstr; + std::string tempstr; output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Core: %d errors, %d warnings\n", m_errors, m_warnings); if (m_errors > 0) { - m_error_text.replace("\n", "\n "); + strreplace(m_error_text, "\n", "\n "); output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Errors:\n %s", m_error_text.c_str()); } if (m_warnings > 0) { - m_warning_text.replace("\n", "\n "); + strreplace(m_warning_text, "\n", "\n "); output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Warnings:\n %s", m_warning_text.c_str()); } output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n"); @@ -276,8 +276,8 @@ void validity_checker::validate_one(const game_driver &driver) // reset error/warning state int start_errors = m_errors; int start_warnings = m_warnings; - m_error_text.reset(); - m_warning_text.reset(); + m_error_text.clear(); + m_warning_text.clear(); // wrap in try/except to catch fatalerrors try @@ -298,16 +298,16 @@ void validity_checker::validate_one(const game_driver &driver) // if we had warnings or errors, output if (m_errors > start_errors || m_warnings > start_warnings) { - astring tempstr; + std::string tempstr; output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Driver %s (file %s): %d errors, %d warnings\n", driver.name, core_filename_extract_base(tempstr, driver.source_file).c_str(), m_errors - start_errors, m_warnings - start_warnings); if (m_errors > start_errors) { - m_error_text.replace("\n", "\n "); + strreplace(m_error_text, "\n", "\n "); output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Errors:\n %s", m_error_text.c_str()); } if (m_warnings > start_warnings) { - m_warning_text.replace("\n", "\n "); + strreplace(m_warning_text, "\n", "\n "); output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Warnings:\n %s", m_warning_text.c_str()); } output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "\n"); @@ -519,7 +519,7 @@ void validity_checker::validate_inlines() void validity_checker::validate_driver() { // check for duplicate names - astring tempstr; + std::string tempstr; if (m_names_map.add(m_current_driver->name, m_current_driver, false) == TMERR_DUPLICATE) { const game_driver *match = m_names_map.find(m_current_driver->name); @@ -878,7 +878,7 @@ void validity_checker::validate_inputs() // allocate the input ports ioport_list portlist; - astring errorbuf; + std::string errorbuf; portlist.append(*device, errorbuf); // report any errors during construction @@ -1008,8 +1008,8 @@ void validity_checker::validate_devices() { for (const device_slot_option *option = slot->first_option(); option != NULL; option = option->next()) { - astring temptag("_"); - temptag.cat(option->name()); + std::string temptag("_"); + temptag.append(option->name()); device_t *dev = const_cast(*m_current_config).device_add(&m_current_config->root_device(), temptag.c_str(), option->devtype(), 0); // notify this device and all its subdevices that they are now configured @@ -1036,18 +1036,18 @@ void validity_checker::validate_devices() // and device //------------------------------------------------- -void validity_checker::build_output_prefix(astring &str) +void validity_checker::build_output_prefix(std::string &str) { // start empty - str.reset(); + str.clear(); // if we have a current device, indicate that if (m_current_device != NULL) - str.cat(m_current_device->name()).cat(" device '").cat(m_current_device->tag()).cat("': "); + str.append(m_current_device->name()).append(" device '").append(m_current_device->tag()).append("': "); // if we have a current port, indicate that as well if (m_current_ioport != NULL) - str.cat("ioport '").cat(m_current_ioport).cat("': "); + str.append("ioport '").append(m_current_ioport).append("': "); } @@ -1057,7 +1057,7 @@ void validity_checker::build_output_prefix(astring &str) void validity_checker::output_callback(osd_output_channel channel, const char *msg, va_list args) { - astring output; + std::string output; switch (channel) { case OSD_OUTPUT_CHANNEL_ERROR: @@ -1068,8 +1068,8 @@ void validity_checker::output_callback(osd_output_channel channel, const char *m build_output_prefix(output); // generate the string - output.catvprintf(msg, args); - m_error_text.cat(output); + strcatvprintf(output, msg, args); + m_error_text.append(output); break; case OSD_OUTPUT_CHANNEL_WARNING: // count the error @@ -1079,8 +1079,8 @@ void validity_checker::output_callback(osd_output_channel channel, const char *m build_output_prefix(output); // generate the string and output to the original target - output.catvprintf(msg, args); - m_warning_text.cat(output); + strcatvprintf(output, msg, args); + m_warning_text.append(output); break; default: chain_output(channel, msg, args); diff --git a/src/emu/validity.h b/src/emu/validity.h index 6ba3f1ad6c7..64984433ecf 100644 --- a/src/emu/validity.h +++ b/src/emu/validity.h @@ -79,7 +79,7 @@ private: void validate_devices(); // output helpers - void build_output_prefix(astring &str); + void build_output_prefix(std::string &str); void output_via_delegate(osd_output_channel channel, const char *format, ...) ATTR_PRINTF(3,4); // internal driver list @@ -88,8 +88,8 @@ private: // error tracking int m_errors; int m_warnings; - astring m_error_text; - astring m_warning_text; + std::string m_error_text; + std::string m_warning_text; // maps for finding duplicates game_driver_map m_names_map; diff --git a/src/emu/video.c b/src/emu/video.c index caa0138455f..bee4f24282d 100644 --- a/src/emu/video.c +++ b/src/emu/video.c @@ -257,30 +257,30 @@ void video_manager::frame_update(bool debug) // into a string buffer //------------------------------------------------- -astring &video_manager::speed_text(astring &str) +std::string &video_manager::speed_text(std::string &str) { - str.reset(); + str.clear(); // if we're paused, just display Paused bool paused = machine().paused(); if (paused) - str.cat("paused"); + str.append("paused"); // if we're fast forwarding, just display Fast-forward else if (m_fastforward) - str.cat("fast "); + str.append("fast "); // if we're auto frameskipping, display that plus the level else if (effective_autoframeskip()) - str.catprintf("auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP); + strcatprintf(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP); // otherwise, just display the frameskip plus the level else - str.catprintf("skip %d/%d", effective_frameskip(), MAX_FRAMESKIP); + strcatprintf(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP); // append the speed for all cases except paused if (!paused) - str.catprintf("%4d%%", (int)(100 * m_speed_percent + 0.5)); + strcatprintf(str, "%4d%%", (int)(100 * m_speed_percent + 0.5)); // display the number of partial updates as well int partials = 0; @@ -288,7 +288,7 @@ astring &video_manager::speed_text(astring &str) for (screen_device *screen = iter.first(); screen != NULL; screen = iter.next()) partials += screen->partial_updates(); if (partials > 1) - str.catprintf("\n%d partial updates", partials); + strcatprintf(str, "\n%d partial updates", partials); return str; } @@ -308,8 +308,8 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file) create_snapshot_bitmap(screen); // add two text entries describing the image - astring text1 = astring(emulator_info::get_appname()).cat(" ").cat(build_version); - astring text2 = astring(machine().system().manufacturer).cat(" ").cat(machine().system().description); + std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(build_version); + std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description); png_info pnginfo = { 0 }; png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); @@ -398,7 +398,7 @@ void video_manager::begin_recording(const char *name, movie_format format) // create a new temporary movie file file_error filerr; - astring fullpath; + std::string fullpath; { emu_file tempfile(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (name != NULL) @@ -1117,30 +1117,30 @@ file_error video_manager::open_next(emu_file &file, const char *extension) if (snapname == NULL || snapname[0] == 0) snapname = "%g/%i"; - astring snapstr(snapname); + std::string snapstr(snapname); // strip any extension in the provided name - int index = snapstr.rchr(0, '.'); + int index = snapstr.find_last_of('.'); if (index != -1) - snapstr.substr(0, index); + snapstr = snapstr.substr(0, index); // handle %d in the template (for image devices) - astring snapdev("%d_"); - int pos = snapstr.find(0, snapdev.c_str()); + std::string snapdev("%d_"); + int pos = snapstr.find(snapdev.c_str()); if (pos != -1) { // if more %d are found, revert to default and ignore them all - if (snapstr.find(pos + 3, snapdev.c_str()) != -1) - snapstr.cpy("%g/%i"); + if (snapstr.find(snapdev.c_str(), pos + 3) != -1) + snapstr.assign("%g/%i"); // else if there is a single %d, try to create the correct snapname else { int name_found = 0; // find length of the device name - int end1 = snapstr.find(pos + 3, "/"); - int end2 = snapstr.find(pos + 3, "%"); + int end1 = snapstr.find("/", pos + 3); + int end2 = snapstr.find("%", pos + 3); int end = -1; if ((end1 != -1) && (end2 != -1)) @@ -1150,14 +1150,14 @@ file_error video_manager::open_next(emu_file &file, const char *extension) else if (end2 != -1) end = end2; else - end = snapstr.len(); + end = snapstr.length(); if (end - pos < 3) fatalerror("Something very wrong is going on!!!\n"); - // copy the device name to an astring - astring snapdevname; - snapdevname.cpysubstr(snapstr, pos + 3, end - pos - 3); + // copy the device name to an std::string + std::string snapdevname; + snapdevname.assign(snapstr.substr(pos + 3, end - pos - 3)); //printf("check template: %s\n", snapdevname.c_str()); // verify that there is such a device for this system @@ -1165,22 +1165,22 @@ file_error video_manager::open_next(emu_file &file, const char *extension) for (device_image_interface *image = iter.first(); image != NULL; image = iter.next()) { // get the device name - astring tempdevname(image->brief_instance_name()); + std::string tempdevname(image->brief_instance_name()); //printf("check device: %s\n", tempdevname.c_str()); - if (snapdevname.cmp(tempdevname) == 0) + if (snapdevname.compare(tempdevname) == 0) { // verify that such a device has an image mounted if (image->basename() != NULL) { - astring filename(image->basename()); + std::string filename(image->basename()); // strip extension - filename.substr(0, filename.rchr(0, '.')); + filename = filename.substr(0, filename.find_last_of('.')); // setup snapname and remove the %d_ - snapstr.replace(0, snapdevname.c_str(), filename.c_str()); - snapstr.del(pos, 3); + strreplace(snapstr, snapdevname.c_str(), filename.c_str()); + snapstr.erase(pos, 3); //printf("check image: %s\n", filename.c_str()); name_found = 1; @@ -1190,32 +1190,34 @@ file_error video_manager::open_next(emu_file &file, const char *extension) // or fallback to default if (name_found == 0) - snapstr.cpy("%g/%i"); + snapstr.assign("%g/%i"); } } // add our own extension - snapstr.cat(".").cat(extension); + snapstr.append(".").append(extension); // substitute path and gamename up front - snapstr.replace(0, "/", PATH_SEPARATOR); - snapstr.replace(0, "%g", machine().basename()); + strreplace(snapstr, "/", PATH_SEPARATOR); + strreplace(snapstr, "%g", machine().basename()); // determine if the template has an index; if not, we always use the same name - astring fname; - if (snapstr.find(0, "%i") == -1) - fname.cpy(snapstr); + std::string fname; + if (snapstr.find("%i") == -1) + fname.assign(snapstr); // otherwise, we scan for the next available filename else { // try until we succeed - astring seqtext; + std::string seqtext; file.set_openflags(OPEN_FLAG_READ); for (int seq = 0; ; seq++) { // build up the filename - fname.cpy(snapstr).replace(0, "%i", seqtext.format("%04d", seq).c_str()); + fname.assign(snapstr); + strprintf(seqtext, "%04d", seq); + strreplace(fname, "%i", seqtext.c_str()); // try to open the file; stop when we fail file_error filerr = file.open(fname.c_str()); @@ -1278,8 +1280,8 @@ void video_manager::record_frame() png_info pnginfo = { 0 }; if (m_mng_frame == 0) { - astring text1 = astring(emulator_info::get_appname()).cat(" ").cat(build_version); - astring text2 = astring(machine().system().manufacturer).cat(" ").cat(machine().system().description); + std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(build_version); + std::string text2 = std::string(machine().system().manufacturer).append(" ").append(machine().system().description); png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); } diff --git a/src/emu/video.h b/src/emu/video.h index a26c7e468bf..4286f774d03 100644 --- a/src/emu/video.h +++ b/src/emu/video.h @@ -81,7 +81,7 @@ public: void frame_update(bool debug = false); // current speed helpers - astring &speed_text(astring &str); + std::string &speed_text(std::string &str); double speed_percent() const { return m_speed_percent; } // snapshots diff --git a/src/emu/webengine.c b/src/emu/webengine.c index 70c6e50f43b..6c04722a5c1 100644 --- a/src/emu/webengine.c +++ b/src/emu/webengine.c @@ -88,7 +88,7 @@ int web_engine::json_game_handler(struct mg_connection *conn) int web_engine::json_slider_handler(struct mg_connection *conn) { const slider_state *curslider; - astring tempstring; + std::string tempstring; Json::Value array(Json::arrayValue); // add all sliders @@ -260,7 +260,7 @@ static int filename_endswith(const char *str, const char *suffix) // This function will be called by mongoose on every new request. int web_engine::begin_request_handler(struct mg_connection *conn) { - astring file_path = astring(mg_get_option(m_server, "document_root")).cat(PATH_SEPARATOR).cat(conn->uri); + std::string file_path = std::string(mg_get_option(m_server, "document_root")).append(PATH_SEPARATOR).append(conn->uri); if (filename_endswith(file_path.c_str(), ".lp")) { FILE *fp = NULL; @@ -440,7 +440,7 @@ int web_engine::begin_request_handler(struct mg_connection *conn) return 0; } - astring fname("screenshot.png"); + std::string fname("screenshot.png"); emu_file file(m_machine->options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); file_error filerr = file.open(fname.c_str()); @@ -450,7 +450,7 @@ int web_engine::begin_request_handler(struct mg_connection *conn) } m_machine->video().save_snapshot(screen, file); - astring fullpath(file.fullpath()); + std::string fullpath(file.fullpath()); file.close(); mg_send_header(conn, "Cache-Control", "no-cache, no-store, must-revalidate"); mg_send_header(conn, "Pragma", "no-cache"); diff --git a/src/lib/formats/ccvf_dsk.c b/src/lib/formats/ccvf_dsk.c index 03ee6fd0dbc..44d919bc88e 100644 --- a/src/lib/formats/ccvf_dsk.c +++ b/src/lib/formats/ccvf_dsk.c @@ -93,18 +93,18 @@ bool ccvf_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) dynamic_buffer img(size); io_generic_read(io, &img[0], 0, size); - astring ccvf = astring((const char *)&img[0], size); + std::string ccvf = std::string((const char *)&img[0], size); dynamic_buffer bytes(78720); int start = 0, end = 0; - astring line; + std::string line; UINT32 byteoffs = 0; char hex[3] = {0}; do { - end = ccvf.chr(start, 10); - line.cpysubstr(ccvf, start, end); - if (line.find(0, "Compucolor Virtual Floppy Disk Image") && line.find(0, "Label") && line.find(0, "Track")) { + end = ccvf.find_first_of(10, start); + line.assign(ccvf.substr(start, end)); + if (line.find("Compucolor Virtual Floppy Disk Image") != std::string::npos && line.find("Label") != std::string::npos && line.find("Track") != std::string::npos) { for (int byte = 0; byte < 32; byte++) { if (byteoffs==78720) break; hex[0]=line[byte * 2]; diff --git a/src/lib/util/astring.c b/src/lib/util/astring.c deleted file mode 100644 index 7f2b3411adf..00000000000 --- a/src/lib/util/astring.c +++ /dev/null @@ -1,483 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - astring.c - - Allocated string manipulation functions. - -****************************************************************************/ - -#include "astring.h" -#include "osdcore.h" - -#include -#include -#include -#include -#include - - -/*************************************************************************** - GLOBAL VARIABLES -***************************************************************************/ - -static const astring dummy_astring; - - - -//************************************************************************** -// INLINE FUNCTIONS -//************************************************************************** - -//------------------------------------------------- -// ensure_room - ensure we have room for a -// given string, or else reallocate our buffer -//------------------------------------------------- - -bool astring::ensure_room(int length) -{ - // always fail to expand the dummy - if (this == &dummy_astring) - return false; - - // if we have the room, do nothing - if (m_alloclen >= length + 1) - return true; - - // allocate a new buffer with some slop - int alloclen = length + 256; - char *newbuf = new char[alloclen]; - - // swap in the new buffer and free the old one - char *oldbuf = (m_text == m_smallbuf) ? NULL : m_text; - m_text = strcpy(newbuf, m_text); - m_len = strlen(m_text); - m_alloclen = alloclen; - delete[] oldbuf; - - return true; -} - - -//------------------------------------------------- -// safe_string_base - return a "safe" string -// base for a given start index -//------------------------------------------------- - -inline char *astring::safe_string_base(int start) const -{ - int max = len(); - return (start >= 0 && start < max) ? m_text + start : m_text + max; -} - - -//------------------------------------------------- -// normalize_substr - normalize substr parameters -//------------------------------------------------- - -inline void astring::normalize_substr(int &start, int &count, int length) const -{ - // limit start - if (start < 0) - start = 0; - else if (start > length) - start = length; - - // update count - if (count == -1 || start + count > length) - count = length - start; -} - - - -//************************************************************************** -// ASTRING ALLOCATION -//************************************************************************** - -//------------------------------------------------- -// init - constructor helper -//------------------------------------------------- - -astring &astring::init() -{ - // initialize ourselves to point to the internal buffer - m_text = m_smallbuf; - m_alloclen = ARRAY_LENGTH(m_smallbuf); - m_smallbuf[0] = 0; - m_len = 0; - return *this; -} - - -//------------------------------------------------- -// ~astring - destructor -//------------------------------------------------- - -astring::~astring() -{ - if (m_text != m_smallbuf) - delete[] m_text; -} - - - -/*************************************************************************** - INLINE ASTRING CHANGES -***************************************************************************/ - -//------------------------------------------------- -// cpy - copy a character array into an astring -//------------------------------------------------- - -astring &astring::cpy(const char *src, int count) -{ - // make room; if we fail or if we are the dummy, do nothing - if (!ensure_room(count)) - return *this; - - // copy the raw data and NULL-terminate - if (count > 0 && m_text != src) - memcpy(m_text, src, count); - m_text[count] = 0; - m_len = count; - return *this; -} - - -//------------------------------------------------- -// cpysubstr - copy a substring of one string to -// another -//------------------------------------------------- - -astring &astring::cpysubstr(const astring &src, int start, int count) -{ - normalize_substr(start, count, src.len()); - return cpy(src.m_text + start, count); -} - - -//------------------------------------------------- -// ins - insert a character array into an astring -//------------------------------------------------- - -astring &astring::ins(int insbefore, const char *src, int count) -{ - // make room; if we fail or if we are the dummy, do nothing - int dstlength = len(); - if (!ensure_room(dstlength + count)) - return *this; - - // adjust insbefore to be logical - if (insbefore < 0 || insbefore > dstlength) - insbefore = dstlength; - - // copy the data an NULL-terminate - if (insbefore < dstlength) - memmove(m_text + insbefore + count, m_text + insbefore, dstlength - insbefore); - memcpy(m_text + insbefore, src, count); - m_text[dstlength + count] = 0; - m_len = dstlength + count; - return *this; -} - - -//------------------------------------------------- -// inssubstr - insert a substring of one string -// into another -//------------------------------------------------- - -astring &astring::inssubstr(int insbefore, const astring &src, int start, int count) -{ - normalize_substr(start, count, src.len()); - return ins(insbefore, src.m_text + start, count); -} - - -//------------------------------------------------- -// substr - extract a substring of ourself, -// removing everything else -//------------------------------------------------- - -astring &astring::substr(int start, int count) -{ - // ignore attempts to do this on the dummy - if (this == &dummy_astring) - return *this; - - // normalize parameters - normalize_substr(start, count, len()); - - // move the data and NULL-terminate - if (count > 0 && start > 0) - memmove(m_text, m_text + start, count); - m_text[count] = 0; - m_len = count; - return *this; -} - - -//------------------------------------------------- -// del - delete a substring of ourself, keeping -// everything else -//------------------------------------------------- - -astring &astring::del(int start, int count) -{ - // ignore attempts to do this on the dummy - if (this == &dummy_astring) - return *this; - - // normalize parameters - int strlength = len(); - normalize_substr(start, count, strlength); - - // move the data and NULL-terminate - if (count > 0) - memmove(m_text + start, m_text + start + count, strlength - (start + count)); - m_text[strlength - count] = 0; - m_len = strlength - count; - return *this; -} - - -//------------------------------------------------- -// vprintf - vprintf text into an astring -//-------------------------------------------------*/ - -int astring::vprintf(const char *format, va_list args) -{ - // sprintf into the temporary buffer - char tempbuf[4096]; - int result = vsprintf(tempbuf, format, args); - - // set the result - cpy(tempbuf); - return result; -} - - -//------------------------------------------------- -// catprintf - formatted vprintf to the end of -// an astring -//------------------------------------------------- - -int astring::catvprintf(const char *format, va_list args) -{ - // sprintf into the temporary buffer - char tempbuf[4096]; - int result = vsprintf(tempbuf, format, args); - - // append the result - cat(tempbuf); - return result; -} - - - -/*************************************************************************** - ASTRING QUERIES -***************************************************************************/ - -//------------------------------------------------- -// cmp - compare a character array to an astring -//------------------------------------------------- - -int astring::cmp(const char *str2, int count) const -{ - // loop while equal until we hit the end of strings - int index; - for (index = 0; index < count; index++) - if (m_text[index] == 0 || m_text[index] != str2[index]) - break; - - // determine the final result - if (index < count) - return m_text[index] - str2[index]; - if (m_text[index] == 0) - return 0; - return 1; -} - - -//------------------------------------------------- -// cmpsubstr - compare a substring to an astring -//------------------------------------------------- - -int astring::cmpsubstr(const astring &str2, int start, int count) const -{ - normalize_substr(start, count, str2.len()); - return cmp(str2.m_text + start, count); -} - - -//------------------------------------------------- -// icmp - compare a character array to an astring -//------------------------------------------------- - -int astring::icmp(const char *str2, int count) const -{ - // loop while equal until we hit the end of strings - int index; - for (index = 0; index < count; index++) - if (m_text[index] == 0 || tolower(m_text[index]) != tolower(str2[index])) - break; - - // determine the final result - if (index < count) - return tolower(m_text[index]) - tolower(str2[index]); - if (m_text[index] == 0) - return 0; - return 1; -} - - -//------------------------------------------------- -// icmpsubstr - compare a substring to an astring -//------------------------------------------------- - -int astring::icmpsubstr(const astring &str2, int start, int count) const -{ - normalize_substr(start, count, str2.len()); - return icmp(str2.m_text + start, count); -} - - -//------------------------------------------------- -// chr - return the index of a character in an -// astring -//------------------------------------------------- - -int astring::chr(int start, int ch) const -{ - char *result = strchr(safe_string_base(start), ch); - return (result != NULL) ? (result - m_text) : -1; -} - - -//------------------------------------------------- -// rchr - return the index of a character in an -// astring, searching from the end -//------------------------------------------------- - -int astring::rchr(int start, int ch) const -{ - char *result = strrchr(safe_string_base(start), ch); - return (result != NULL) ? (result - m_text) : -1; -} - - -//------------------------------------------------- -// find - find a C string in an astring -//-------------------------------------------------*/ - -int astring::find(int start, const char *search) const -{ - char *result = strstr(safe_string_base(start), search); - return (result != NULL) ? (result - m_text) : -1; -} - - -//------------------------------------------------- -// replacec - search in an astring for a C string, -// replacing all instances with another C string -// and returning the number of matches -//------------------------------------------------- - -int astring::replace(int start, const char *search, const char *replace) -{ - int searchlen = strlen(search); - int replacelen = strlen(replace); - int matches = 0; - - for (int curindex = find(start, search); curindex != -1; curindex = find(curindex + replacelen, search)) - { - matches++; - del(curindex, searchlen).ins(curindex, replace); - } - return matches; -} - - - -//************************************************************************** -// ASTRING UTILITIES -//************************************************************************** - -//------------------------------------------------- -// delchr - delete all instances of 'ch' -//------------------------------------------------- - -astring &astring::delchr(int ch) -{ - // simple deletion - char *dst = m_text; - for (char *src = m_text; *src != 0; src++) - if (*src != ch) - *dst++ = *src; - *dst = 0; - m_len = strlen(m_text); - return *this; -} - - -//------------------------------------------------- -// replacechr - replace all instances of 'ch' -// with 'newch' -//------------------------------------------------- - -astring &astring::replacechr(int ch, int newch) -{ - // simple replacement - for (char *text = m_text; *text != 0; text++) - if (*text == ch) - *text = newch; - return *this; -} - - -//------------------------------------------------- -// makeupper - convert string to all upper-case -//------------------------------------------------- - -astring &astring::makeupper() -{ - // just makeupper() on all characters - for (char *text = m_text; *text != 0; text++) - *text = toupper((UINT8)*text); - return *this; -} - - -//------------------------------------------------- -// makelower - convert string to all lower-case -//------------------------------------------------- - -astring &astring::makelower() -{ - // just tolower() on all characters - for (char *text = m_text; *text != 0; text++) - *text = tolower((UINT8)*text); - return *this; -} - - -//------------------------------------------------- -// trimspace - remove all space characters from -// beginning/end -//------------------------------------------------- - -astring &astring::trimspace() -{ - // first remove stuff from the end - for (char *ptr = m_text + len() - 1; ptr >= m_text && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr--) - *ptr = 0; - - // then count how much to remove from the beginning - char *ptr; - for (ptr = m_text; *ptr != 0 && (!(*ptr & 0x80) && isspace(UINT8(*ptr))); ptr++) ; - if (ptr > m_text) - substr(ptr - m_text); - m_len = strlen(m_text); - return *this; -} diff --git a/src/lib/util/astring.h b/src/lib/util/astring.h deleted file mode 100644 index 1988f73840d..00000000000 --- a/src/lib/util/astring.h +++ /dev/null @@ -1,157 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles -/*************************************************************************** - - astring.h - - Allocated string manipulation functions. - -***************************************************************************/ - -#pragma once - -#ifndef __ASTRING_H__ -#define __ASTRING_H__ - -#include -#include -#include "osdcomm.h" - - - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// basic allocated string class -class astring -{ -public: - // simple construction/destruction - astring() { init(); } - ~astring(); - - // construction with copy - astring(const char *string) { init(); if(string) cpy(string); } - astring(const char *string, int length) { init().cpy(string, length); } - astring(const astring &string) { init().cpy(string); } - astring(const astring &string, int start, int count = -1) { init().cpysubstr(string, start, count); } - - // assignment operators - astring &operator=(const char *string) { return cpy(string); } - astring &operator=(const astring &string) { return cpy(string); } - - // concatenation operators - astring& operator+=(const astring &string) { return cat(string); } - friend astring operator+(const astring &lhs, const astring &rhs) { return astring(lhs) += rhs; } - friend astring operator+(const astring &lhs, const char *rhs) { return astring(lhs) += rhs; } - friend astring operator+(const char *lhs, const astring &rhs) { return astring(lhs) += rhs; } - - // comparison operators -// bool operator==(const char *string) const { return (cmp(string) == 0); } -// bool operator==(const astring &string) const { return (cmp(string) == 0); } -// bool operator!=(const char *string) const { return (cmp(string) != 0); } -// bool operator!=(const astring &string) const { return (cmp(string) != 0); } -// bool operator<(const char *string) const { return (cmp(string) < 0); } -// bool operator<(const astring &string) const { return (cmp(string) < 0); } -// bool operator<=(const char *string) const { return (cmp(string) <= 0); } -// bool operator<=(const astring &string) const { return (cmp(string) <= 0); } -// bool operator>(const char *string) const { return (cmp(string) > 0); } -// bool operator>(const astring &string) const { return (cmp(string) > 0); } -// bool operator>=(const char *string) const { return (cmp(string) >= 0); } -// bool operator>=(const astring &string) const { return (cmp(string) >= 0); } - - // character access operators - char operator[](int index) const { return (index < len()) ? m_text[index] : 0; } - - // implicit boolean conversion operators - //operator bool() { return m_text[0] != 0; } - //operator bool() const { return m_text[0] != 0; } - - // C string conversion operators and helpers - const char *c_str() const { return m_text; } - - // buffer management - astring &reset() { return cpy(""); } - astring &expand(int length) { ensure_room(length); return *this; } - - // length query - int len() const { return m_len; } - bool empty() const { return m_len==0; } - - // copy helpers - astring &cpy(const char *src, int count); - astring &cpysubstr(const astring &src, int start, int count = -1); - astring &cpy(const astring &src) { return cpy(src.c_str(), src.len()); } - astring &cpy(const char *src) { return cpy(src, strlen(src)); } - - // insertion helpers - astring &ins(int insbefore, const char *src, int count); - astring &inssubstr(int insbefore, const astring &src, int start, int count = -1); - astring &ins(int insbefore, const astring &src) { return ins(insbefore, src.c_str(), src.len()); } - astring &ins(int insbefore, const char *src) { return ins(insbefore, src, strlen(src)); } - - // concatenation helpers (== insert at end) - astring &cat(const char *src, int count) { return ins(-1, src, count); } - astring &catsubstr(const astring &src, int start, int count = -1) { return inssubstr(-1, src, start, count); } - astring &cat(const astring &src) { return ins(-1, src.c_str(), src.len()); } - astring &cat(const char *src) { return ins(-1, src, strlen(src)); } - astring &cat(char ch) { return ins(-1, &ch, 1); } - - // substring helpers - astring &substr(int start, int count = -1); - astring &del(int start, int count = -1); - - // formatted string helpers - int vprintf(const char *format, va_list args); - int catvprintf(const char *format, va_list args); - int printf(const char *format, ...) ATTR_PRINTF(2,3) { va_list ap; va_start(ap, format); int result = this->vprintf(format, ap); va_end(ap); return result; } - int catprintf(const char *format, ...) ATTR_PRINTF(2,3) { va_list ap; va_start(ap, format); int result = catvprintf(format, ap); va_end(ap); return result; } - astring &format(const char *format, ...) ATTR_PRINTF(2,3) { va_list ap; va_start(ap, format); this->vprintf(format, ap); va_end(ap); return *this; } - astring &catformat(const char *format, ...) ATTR_PRINTF(2,3) { va_list ap; va_start(ap, format); catvprintf(format, ap); va_end(ap); return *this; } - - // comparison helpers - int cmp(const char *str2, int count) const; - int cmpsubstr(const astring &str2, int start, int count = -1) const; - int cmp(const astring &str2) const { return cmp(str2.c_str(), str2.len()); } - int cmp(const char *str2) const { return cmp(str2, strlen(str2)); } - - // case-insensitive comparison helpers - int icmp(const char *str2, int count) const; - int icmpsubstr(const astring &str2, int start, int count = -1) const; - int icmp(const astring &str2) const { return icmp(str2.c_str(), str2.len()); } - int icmp(const char *str2) const { return icmp(str2, strlen(str2)); } - - // character searching helpers - int chr(int start, int ch) const; - int rchr(int start, int ch) const; - - // string searching/replacing helpers - int find(int start, const char *search) const; - int find(const char *search) const { return find(0, search); } - int replace(int start, const char *search, const char *replace); - int replace(const char *search, const char *_replace) { return replace(0, search, _replace); } - - // misc utilities - astring &delchr(int ch); - astring &replacechr(int ch, int newch); - astring &makeupper(); - astring &makelower(); - astring &trimspace(); - -private: - // internal helpers - astring &init(); - char *safe_string_base(int start) const; - bool ensure_room(int length); - void normalize_substr(int &start, int &count, int length) const; - - // internal state - char * m_text; - int m_alloclen; - char m_smallbuf[64]; - int m_len; -}; - - -#endif /* __ASTRING_H__ */ diff --git a/src/lib/util/cdrom.c b/src/lib/util/cdrom.c index ce9a0e7b130..6655418583a 100644 --- a/src/lib/util/cdrom.c +++ b/src/lib/util/cdrom.c @@ -811,7 +811,7 @@ const char *cdrom_get_subtype_string(UINT32 subtype) chd_error cdrom_parse_metadata(chd_file *chd, cdrom_toc *toc) { - astring metadata; + std::string metadata; chd_error err; int i; @@ -983,7 +983,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) /* write the metadata */ for (i = 0; i < toc->numtrks; i++) { - astring metadata; + std::string metadata; if (!(toc->flags & CD_FLAG_GDROM)) { char submode[32]; @@ -998,7 +998,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) strcpy(submode, cdrom_get_type_string(toc->tracks[i].pgtype)); } - metadata.format(CDROM_TRACK_METADATA2_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), + strprintf(metadata, CDROM_TRACK_METADATA2_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].pregap, submode, cdrom_get_subtype_string(toc->tracks[i].pgsub), toc->tracks[i].postgap); @@ -1006,7 +1006,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) } else { - metadata.format(GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), + strprintf(metadata, GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].padframes, toc->tracks[i].pregap, cdrom_get_type_string(toc->tracks[i].pgtype), cdrom_get_subtype_string(toc->tracks[i].pgsub), toc->tracks[i].postgap); diff --git a/src/lib/util/chd.c b/src/lib/util/chd.c index 9c5674e7559..3dd088c0121 100644 --- a/src/lib/util/chd.c +++ b/src/lib/util/chd.c @@ -1039,7 +1039,7 @@ chd_error chd_file::write_bytes(UINT64 offset, const void *buffer, UINT32 bytes) // of the given type //------------------------------------------------- -chd_error chd_file::read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, astring &output) +chd_error chd_file::read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, std::string &output) { // wrap this for clean reporting try @@ -1054,7 +1054,7 @@ chd_error chd_file::read_metadata(chd_metadata_tag searchtag, UINT32 searchindex char* metabuf = new char[metaentry.length+1]; memset(metabuf, 0x00, metaentry.length+1); file_read(metaentry.offset + METADATA_HEADER_SIZE, metabuf, metaentry.length); - output.cpy(metabuf); + output.assign(metabuf); delete[] metabuf; return CHDERR_NONE; } @@ -1409,7 +1409,7 @@ const char *chd_file::error_string(chd_error err) UINT32 chd_file::guess_unitbytes() { // look for hard disk metadata; if found, then the unit size == sector size - astring metadata; + std::string metadata; int i0, i1, i2, i3; if (read_metadata(HARD_DISK_METADATA_TAG, 0, metadata) == CHDERR_NONE && sscanf(metadata.c_str(), HARD_DISK_METADATA_FORMAT, &i0, &i1, &i2, &i3) == 4) return i3; diff --git a/src/lib/util/chd.h b/src/lib/util/chd.h index 5062ca9c23a..d767c0889e0 100644 --- a/src/lib/util/chd.h +++ b/src/lib/util/chd.h @@ -15,7 +15,8 @@ #include "osdcore.h" #include "coretmpl.h" -#include "astring.h" +#include "corestr.h" +#include #include "bitmap.h" #include "corefile.h" #include "hashing.h" @@ -347,12 +348,12 @@ public: chd_error write_bytes(UINT64 offset, const void *buffer, UINT32 bytes); // metadata management - chd_error read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, astring &output); + chd_error read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, std::string &output); chd_error read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, dynamic_buffer &output); chd_error read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, void *output, UINT32 outputlen, UINT32 &resultlen); chd_error read_metadata(chd_metadata_tag searchtag, UINT32 searchindex, dynamic_buffer &output, chd_metadata_tag &resulttag, UINT8 &resultflags); chd_error write_metadata(chd_metadata_tag metatag, UINT32 metaindex, const void *inputbuf, UINT32 inputlen, UINT8 flags = CHD_MDFLAGS_CHECKSUM); - chd_error write_metadata(chd_metadata_tag metatag, UINT32 metaindex, const astring &input, UINT8 flags = CHD_MDFLAGS_CHECKSUM) { return write_metadata(metatag, metaindex, input.c_str(), input.len() + 1, flags); } + chd_error write_metadata(chd_metadata_tag metatag, UINT32 metaindex, const std::string &input, UINT8 flags = CHD_MDFLAGS_CHECKSUM) { return write_metadata(metatag, metaindex, input.c_str(), input.length() + 1, flags); } chd_error write_metadata(chd_metadata_tag metatag, UINT32 metaindex, const dynamic_buffer &input, UINT8 flags = CHD_MDFLAGS_CHECKSUM) { return write_metadata(metatag, metaindex, &input[0], input.size(), flags); } chd_error delete_metadata(chd_metadata_tag metatag, UINT32 metaindex); chd_error clone_all_metadata(chd_file &source); diff --git a/src/lib/util/chdcd.c b/src/lib/util/chdcd.c index bd2cf2a3837..992c95bfeae 100644 --- a/src/lib/util/chdcd.c +++ b/src/lib/util/chdcd.c @@ -38,13 +38,13 @@ static char linebuffer[512]; IMPLEMENTATION ***************************************************************************/ -static astring get_file_path(astring &path) +static std::string get_file_path(std::string &path) { - int pos = path.rchr( 0, '\\'); + int pos = path.find_last_of('\\'); if (pos!=-1) { path = path.substr(0,pos+1); } else { - pos = path.rchr( 0, '/'); + pos = path.find_last_of('/'); path = path.substr(0,pos+1); } return path; @@ -360,7 +360,7 @@ chd_error chdcd_parse_nero(const char *tocfname, cdrom_toc &outtoc, chdcd_track_ UINT32 chain_offs, chunk_size; int done = 0; - astring path = astring(tocfname); + std::string path = std::string(tocfname); infile = fopen(tocfname, "rb"); path = get_file_path(path); @@ -437,7 +437,7 @@ chd_error chdcd_parse_nero(const char *tocfname, cdrom_toc &outtoc, chdcd_track_ track_end = read_uint64(infile); // printf("Track %d: sector size %d mode %x index0 %llx index1 %llx track_end %llx (pregap %d sectors, length %d sectors)\n", track, size, mode, index0, index1, track_end, (UINT32)(index1-index0)/size, (UINT32)(track_end-index1)/size); - outinfo.track[track-1].fname.cpy(tocfname); + outinfo.track[track-1].fname.assign(tocfname); outinfo.track[track-1].offset = offset + (UINT32)(index1-index0); outinfo.track[track-1].idx0offs = 0; outinfo.track[track-1].idx1offs = 0; @@ -530,7 +530,7 @@ chd_error chdcd_parse_nero(const char *tocfname, cdrom_toc &outtoc, chdcd_track_ chd_error chdcd_parse_iso(const char *tocfname, cdrom_toc &outtoc, chdcd_track_input_info &outinfo) { FILE *infile; - astring path = astring(tocfname); + std::string path = std::string(tocfname); infile = fopen(tocfname, "rb"); path = get_file_path(path); @@ -597,7 +597,7 @@ static chd_error chdcd_parse_gdi(const char *tocfname, cdrom_toc &outtoc, chdcd_ FILE *infile; int i, numtracks; - astring path = astring(tocfname); + std::string path = std::string(tocfname); infile = fopen(tocfname, "rt"); path = get_file_path(path); @@ -663,7 +663,7 @@ static chd_error chdcd_parse_gdi(const char *tocfname, cdrom_toc &outtoc, chdcd_ outinfo.track[trknum].swap = true; } - astring name; + std::string name; tok=strtok(NULL," "); name = tok; @@ -675,9 +675,9 @@ static chd_error chdcd_parse_gdi(const char *tocfname, cdrom_toc &outtoc, chdcd_ name += tok; } } while(tok!=NULL && (strrchr(tok,'"')-tok !=(strlen(tok)-1))); - name = name.delchr('"'); + strdelchr(name,'"'); } - outinfo.track[trknum].fname.cpy(path).cat(name); + outinfo.track[trknum].fname.assign(path).append(name); sz = get_file_size(outinfo.track[trknum].fname.c_str()); @@ -717,9 +717,9 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i FILE *infile; int i, trknum; static char token[512]; - astring lastfname; + std::string lastfname; UINT32 wavlen, wavoffs; - astring path = astring(tocfname); + std::string path = std::string(tocfname); infile = fopen(tocfname, "rt"); path = get_file_path(path); @@ -753,7 +753,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i TOKENIZE /* keep the filename */ - lastfname.cpy(path).cat(token); + lastfname.assign(path).append(token); /* get the file type */ TOKENIZE @@ -810,7 +810,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i outinfo.track[trknum].idx0offs = -1; outinfo.track[trknum].idx1offs = 0; - outinfo.track[trknum].fname.cpy(lastfname); // default filename to the last one + outinfo.track[trknum].fname.assign(lastfname); // default filename to the last one // printf("trk %d: fname %s offset %d\n", trknum, outinfo.track[trknum].fname.c_str(), outinfo.track[trknum].offset); @@ -925,7 +925,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i if (trknum == (outtoc.numtrks-1)) { /* if we have the same filename as the last track, do it that way */ - if (trknum != 0 && (outinfo.track[trknum].fname.cmp(outinfo.track[trknum-1].fname)==0)) + if (trknum != 0 && (outinfo.track[trknum].fname.compare(outinfo.track[trknum-1].fname)==0)) { tlen = get_file_size(outinfo.track[trknum].fname.c_str()); if (tlen == 0) @@ -952,7 +952,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i else { /* if we have the same filename as the next track, do it that way */ - if (outinfo.track[trknum].fname.cmp(outinfo.track[trknum+1].fname)==0) + if (outinfo.track[trknum].fname.compare(outinfo.track[trknum+1].fname)==0) { outtoc.tracks[trknum].frames = outinfo.track[trknum+1].idx0offs - outinfo.track[trknum].idx0offs; @@ -1028,7 +1028,7 @@ chd_error chdcd_parse_toc(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i return chdcd_parse_iso(tocfname, outtoc, outinfo); } - astring path = astring(tocfname); + std::string path = std::string(tocfname); infile = fopen(tocfname, "rt"); path = get_file_path(path); @@ -1064,7 +1064,7 @@ chd_error chdcd_parse_toc(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i TOKENIZE /* keep the filename */ - outinfo.track[trknum].fname.cpy(path).cat(token); + outinfo.track[trknum].fname.assign(path).append(token); /* get either the offset or the length */ TOKENIZE diff --git a/src/lib/util/chdcd.h b/src/lib/util/chdcd.h index d32fc6c0c73..b0f3623ce61 100644 --- a/src/lib/util/chdcd.h +++ b/src/lib/util/chdcd.h @@ -17,9 +17,9 @@ struct chdcd_track_input_entry { chdcd_track_input_entry() { reset(); } - void reset() { fname.reset(); offset = idx0offs = idx1offs = 0; swap = false; } + void reset() { fname.clear(); offset = idx0offs = idx1offs = 0; swap = false; } - astring fname; // filename for each track + std::string fname; // filename for each track UINT32 offset; // offset in the data file for each track bool swap; // data needs to be byte swapped UINT32 idx0offs; diff --git a/src/lib/util/chdcodec.c b/src/lib/util/chdcodec.c index df253489f7e..3a7781fced8 100644 --- a/src/lib/util/chdcodec.c +++ b/src/lib/util/chdcodec.c @@ -1619,7 +1619,7 @@ UINT32 chd_avhuff_compressor::compress(const UINT8 *src, UINT32 srclen, UINT8 *d void chd_avhuff_compressor::postinit() { // get the metadata - astring metadata; + std::string metadata; chd_error err = chd().read_metadata(AV_METADATA_TAG, 0, metadata); if (err != CHDERR_NONE) throw err; diff --git a/src/lib/util/corefile.c b/src/lib/util/corefile.c index 491c35cacbf..4ada0f36aae 100644 --- a/src/lib/util/corefile.c +++ b/src/lib/util/corefile.c @@ -888,7 +888,7 @@ int CLIB_DECL core_fprintf(core_file *f, const char *fmt, ...) assumptions about path separators -------------------------------------------------*/ -astring &core_filename_extract_base(astring &result, const char *name, bool strip_extension) +std::string &core_filename_extract_base(std::string &result, const char *name, bool strip_extension) { /* find the start of the name */ const char *start = name + strlen(name); @@ -896,11 +896,11 @@ astring &core_filename_extract_base(astring &result, const char *name, bool stri start--; /* copy the rest into an astring */ - result.cpy(start); + result.assign(start); /* chop the extension if present */ if (strip_extension) - result.substr(0, result.rchr(0, '.')); + result = result.substr(0, result.find_last_of('.')); return result; } diff --git a/src/lib/util/corefile.h b/src/lib/util/corefile.h index 07ac491e1f2..42dfd70aef8 100644 --- a/src/lib/util/corefile.h +++ b/src/lib/util/corefile.h @@ -14,7 +14,8 @@ #define __COREFILE_H__ #include -#include "astring.h" +#include "corestr.h" +#include #include "coretmpl.h" @@ -121,7 +122,7 @@ int CLIB_DECL core_fprintf(core_file *f, const char *fmt, ...) ATTR_PRINTF(2,3); /* ----- filename utilities ----- */ /* extract the base part of a filename (remove extensions and paths) */ -astring &core_filename_extract_base(astring &result, const char *name, bool strip_extension = false); +std::string &core_filename_extract_base(std::string &result, const char *name, bool strip_extension = false); /* true if the given filename ends with a particular extension */ int core_filename_ends_with(const char *filename, const char *extension); diff --git a/src/lib/util/corestr.c b/src/lib/util/corestr.c index a8e49f9b1f6..84feda50939 100644 --- a/src/lib/util/corestr.c +++ b/src/lib/util/corestr.c @@ -191,3 +191,125 @@ char *core_i64_format(UINT64 value, UINT8 mindigits, bool is_octal) { return is_octal ? core_i64_oct_format(value,mindigits) : core_i64_hex_format(value,mindigits); } + +/*------------------------------------------------- + std::string helpers +-------------------------------------------------*/ + +#include + +int strvprintf(std::string &str, const char *format, va_list args) +{ + char tempbuf[4096]; + int result = vsprintf(tempbuf, format, args); + + // set the result + str.assign(tempbuf); + return result; +} + +int strprintf(std::string &str, const char *format, ...) +{ + va_list ap; + va_start(ap, format); + int retVal = strvprintf(str, format, ap); + va_end(ap); + return retVal; +} + +std::string strformat(std::string &str, const char *format, ...) +{ + std::string retVal; + va_list ap; + va_start(ap, format); + strvprintf(str, format, ap); + va_end(ap); + retVal.assign(str); + return retVal; +} + +int strcatvprintf(std::string &str, const char *format, va_list args) +{ + char tempbuf[4096]; + int result = vsprintf(tempbuf, format, args); + + // set the result + str.append(tempbuf); + return result; +} + +int strcatprintf(std::string &str, const char *format, ...) +{ + va_list ap; + va_start(ap, format); + int retVal = strcatvprintf(str, format, ap); + va_end(ap); + return retVal; +} + +void strdelchr(std::string& str, char chr) +{ + for (size_t i = 0; i < str.length(); i++) + { + if (str[i] == chr) + { + str.erase(i, 1); + i--; + } + } +} + +void strreplacechr(std::string& str, char ch, char newch) +{ + for (size_t i = 0; i < str.length(); i++) + { + if (str[i] == ch) str[i] = newch; + } +} + +std::string strtrimspace(std::string& str) +{ + int start = 0; + for (size_t i = 0; i < str.length(); i++) + { + if (!isspace(UINT8(str[i]))) break; + start++; + } + int end = str.length(); + if (end > 0) + { + for (size_t i = str.length() - 1; i > 0; i--) + { + if (!isspace(UINT8(str[i]))) break; + end--; + } + } + str = str.substr(start, end-start); + return str; +} + +std::string strmakeupper(std::string& str) +{ + std::transform(str.begin(), str.end(), str.begin(), ::toupper); + return str; +} + +std::string strmakelower(std::string& str) +{ + std::transform(str.begin(), str.end(), str.begin(), ::tolower); + return str; +} + +int strreplace(std::string str, const std::string& search, const std::string& replace) +{ + int searchlen = search.length(); + int replacelen = replace.length(); + int matches = 0; + + for (int curindex = str.find(search, 0); curindex != -1; curindex = str.find(search, curindex + replacelen)) + { + matches++; + str.erase(curindex, searchlen).insert(curindex, replace); + } + return matches; +} \ No newline at end of file diff --git a/src/lib/util/corestr.h b/src/lib/util/corestr.h index e9750b5f85f..b875b25db02 100644 --- a/src/lib/util/corestr.h +++ b/src/lib/util/corestr.h @@ -62,4 +62,19 @@ char *core_i64_format(UINT64 value, UINT8 mindigits, bool is_octal); char *core_i64_hex_format(UINT64 value, UINT8 mindigits); char *core_i64_oct_format(UINT64 value, UINT8 mindigits); +#include + +int strvprintf(std::string &str, const char *format, va_list args); +int strcatvprintf(std::string &str, const char *format, va_list args); +int strprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3); +int strcatprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3); +std::string strformat(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3); + +void strdelchr(std::string& str, char chr); +void strreplacechr(std::string& str, char ch, char newch); +std::string strtrimspace(std::string& str); +std::string strmakeupper(std::string& str); +std::string strmakelower(std::string& str); +int strreplace(std::string str, const std::string& search, const std::string& replace); + #endif /* __CORESTR_H__ */ diff --git a/src/lib/util/harddisk.c b/src/lib/util/harddisk.c index 7fce13ca638..4760a5fd51f 100644 --- a/src/lib/util/harddisk.c +++ b/src/lib/util/harddisk.c @@ -40,7 +40,7 @@ hard_disk_file *hard_disk_open(chd_file *chd) { int cylinders, heads, sectors, sectorbytes; hard_disk_file *file; - astring metadata; + std::string metadata; chd_error err; /* punt if no CHD */ diff --git a/src/lib/util/hashing.c b/src/lib/util/hashing.c index d7be3af1427..b4e2b7a9d6d 100644 --- a/src/lib/util/hashing.c +++ b/src/lib/util/hashing.c @@ -79,11 +79,11 @@ bool sha1_t::from_string(const char *string, int length) // as_string - convert to a string //------------------------------------------------- -const char *sha1_t::as_string(astring &buffer) const +const char *sha1_t::as_string(std::string &buffer) const { - buffer.reset(); + buffer.clear(); for (int i = 0; i < ARRAY_LENGTH(m_raw); i++) - buffer.catformat("%02x", m_raw[i]); + strcatprintf(buffer, "%02x", m_raw[i]); return buffer.c_str(); } @@ -122,11 +122,11 @@ bool md5_t::from_string(const char *string, int length) // as_string - convert to a string //------------------------------------------------- -const char *md5_t::as_string(astring &buffer) const +const char *md5_t::as_string(std::string &buffer) const { - buffer.reset(); + buffer.clear(); for (int i = 0; i < ARRAY_LENGTH(m_raw); i++) - buffer.catformat("%02x", m_raw[i]); + strcatprintf(buffer, "%02x", m_raw[i]); return buffer.c_str(); } @@ -166,9 +166,10 @@ bool crc32_t::from_string(const char *string, int length) // as_string - convert to a string //------------------------------------------------- -const char *crc32_t::as_string(astring &buffer) const -{ - return buffer.format("%08x", m_raw).c_str(); +const char *crc32_t::as_string(std::string &buffer) const +{ + strprintf(buffer, "%08x", m_raw); + return buffer.c_str(); } @@ -218,9 +219,10 @@ bool crc16_t::from_string(const char *string, int length) // as_string - convert to a string //------------------------------------------------- -const char *crc16_t::as_string(astring &buffer) const +const char *crc16_t::as_string(std::string &buffer) const { - return buffer.format("%04x", m_raw).c_str(); + strprintf(buffer, "%04x", m_raw); + return buffer.c_str(); } diff --git a/src/lib/util/hashing.h b/src/lib/util/hashing.h index 78e02c6e145..b0de6a5c3c8 100644 --- a/src/lib/util/hashing.h +++ b/src/lib/util/hashing.h @@ -14,7 +14,8 @@ #define __HASHING_H__ #include "osdcore.h" -#include "astring.h" +#include "corestr.h" +#include #include "md5.h" #include "sha1.h" @@ -33,7 +34,7 @@ struct sha1_t bool operator!=(const sha1_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; } operator UINT8 *() { return m_raw; } bool from_string(const char *string, int length = -1); - const char *as_string(astring &buffer) const; + const char *as_string(std::string &buffer) const; UINT8 m_raw[20]; static const sha1_t null; }; @@ -84,7 +85,7 @@ struct md5_t bool operator!=(const md5_t &rhs) const { return memcmp(m_raw, rhs.m_raw, sizeof(m_raw)) != 0; } operator UINT8 *() { return m_raw; } bool from_string(const char *string, int length = -1); - const char *as_string(astring &buffer) const; + const char *as_string(std::string &buffer) const; UINT8 m_raw[16]; static const md5_t null; }; @@ -135,7 +136,7 @@ struct crc32_t crc32_t &operator=(const UINT32 crc) { m_raw = crc; return *this; } operator UINT32() const { return m_raw; } bool from_string(const char *string, int length = -1); - const char *as_string(astring &buffer) const; + const char *as_string(std::string &buffer) const; UINT32 m_raw; static const crc32_t null; }; @@ -181,7 +182,7 @@ struct crc16_t crc16_t &operator=(const UINT16 crc) { m_raw = crc; return *this; } operator UINT16() const { return m_raw; } bool from_string(const char *string, int length = -1); - const char *as_string(astring &buffer) const; + const char *as_string(std::string &buffer) const; UINT16 m_raw; static const crc16_t null; }; diff --git a/src/lib/util/options.c b/src/lib/util/options.c index 3ba8956eb3f..d229624017a 100644 --- a/src/lib/util/options.c +++ b/src/lib/util/options.c @@ -13,7 +13,8 @@ #include #include #include "options.h" -#include "astring.h" +#include "corestr.h" +#include @@ -63,24 +64,24 @@ core_options::entry::entry(const char *name, const char *description, UINT32 fla if (name != NULL) { // first extract any range - astring namestr(name); - int lparen = namestr.chr(0, '('); - int dash = namestr.chr(lparen + 1, '-'); - int rparen = namestr.chr(dash + 1, ')'); + std::string namestr(name); + int lparen = namestr.find_first_of('(',0); + int dash = namestr.find_first_of('-',lparen + 1); + int rparen = namestr.find_first_of(')',dash + 1); if (lparen != -1 && dash != -1 && rparen != -1) { - m_minimum.cpysubstr(namestr, lparen + 1, dash - (lparen + 1)).trimspace(); - m_maximum.cpysubstr(namestr, dash + 1, rparen - (dash + 1)).trimspace(); - namestr.del(lparen, rparen + 1 - lparen); + strtrimspace(m_minimum.assign(namestr.substr(lparen + 1, dash - (lparen + 1)))); + strtrimspace(m_maximum.assign(namestr.substr(dash + 1, rparen - (dash + 1)))); + namestr.erase(lparen, rparen + 1 - lparen); } // then chop up any semicolon-separated names int semi; int nameindex = 0; - while ((semi = namestr.chr(0, ';')) != -1 && nameindex < ARRAY_LENGTH(m_name)) + while ((semi = namestr.find_first_of(';')) != -1 && nameindex < ARRAY_LENGTH(m_name)) { - m_name[nameindex++].cpysubstr(namestr, 0, semi); - namestr.del(0, semi + 1); + m_name[nameindex++].assign(namestr.substr(0, semi)); + namestr.erase(0, semi + 1); } // finally add the last item @@ -332,11 +333,11 @@ void core_options::set_description(const char *name, const char *description) // command line arguments //------------------------------------------------- -bool core_options::parse_command_line(int argc, char **argv, int priority, astring &error_string) +bool core_options::parse_command_line(int argc, char **argv, int priority, std::string &error_string) { // reset the errors and the command - error_string.reset(); - m_command.reset(); + error_string.clear(); + m_command.clear(); // iterate through arguments int unadorned_index = 0; @@ -352,7 +353,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, astri entry *curentry = m_entrymap.find(optionname); if (curentry == NULL) { - error_string.catprintf("Error: unknown option: %s\n", curarg); + strcatprintf(error_string, "Error: unknown option: %s\n", curarg); retval = false; if (!is_unadorned) arg++; continue; @@ -364,7 +365,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, astri // can only have one command if (!m_command.empty()) { - error_string.catprintf("Error: multiple commands specified -%s and %s\n", m_command.c_str(), curarg); + strcatprintf(error_string,"Error: multiple commands specified -%s and %s\n", m_command.c_str(), curarg); return false; } m_command = curentry->name(); @@ -381,7 +382,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, astri newdata = argv[++arg]; else { - error_string.catprintf("Error: option %s expected a parameter\n", curarg); + strcatprintf(error_string, "Error: option %s expected a parameter\n", curarg); return false; } @@ -397,7 +398,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, astri // an INI file //------------------------------------------------- -bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_priority, astring &error_string) +bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_priority, std::string &error_string) { // loop over lines in the file char buffer[4096]; @@ -422,7 +423,7 @@ bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_p // if we hit the end early, print a warning and continue if (*temp == 0) { - error_string.catprintf("Warning: invalid line in INI: %s", buffer); + strcatprintf(error_string,"Warning: invalid line in INI: %s", buffer); continue; } @@ -446,7 +447,7 @@ bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_p if (curentry == NULL) { if (priority >= ignore_priority) - error_string.catprintf("Warning: unknown option in INI: %s\n", optionname); + strcatprintf(error_string, "Warning: unknown option in INI: %s\n", optionname); continue; } @@ -476,10 +477,10 @@ void core_options::revert(int priority) // the optional diff //------------------------------------------------- -const char *core_options::output_ini(astring &buffer, const core_options *diff) +const char *core_options::output_ini(std::string &buffer, const core_options *diff) { // INI files are complete, so always start with a blank buffer - buffer.reset(); + buffer.clear(); int num_valid_headers = 0; int unadorned_index = 0; @@ -515,8 +516,8 @@ const char *core_options::output_ini(astring &buffer, const core_options *diff) if (last_header != NULL) { if (num_valid_headers++) - buffer.catprintf("\n"); - buffer.catprintf("#\n# %s\n#\n", last_header); + strcatprintf(buffer,"\n"); + strcatprintf(buffer, "#\n# %s\n#\n", last_header); last_header = NULL; } @@ -524,9 +525,9 @@ const char *core_options::output_ini(astring &buffer, const core_options *diff) if (!is_unadorned) { if (strchr(value, ' ') != NULL) - buffer.catprintf("%-25s \"%s\"\n", name, value); + strcatprintf(buffer,"%-25s \"%s\"\n", name, value); else - buffer.catprintf("%-25s %s\n", name, value); + strcatprintf(buffer,"%-25s %s\n", name, value); } } } @@ -540,21 +541,21 @@ const char *core_options::output_ini(astring &buffer, const core_options *diff) // output_help - output option help to a string //------------------------------------------------- -const char *core_options::output_help(astring &buffer) +const char *core_options::output_help(std::string &buffer) { // start empty - buffer.reset(); + buffer.clear(); // loop over all items for (entry *curentry = m_entrylist.first(); curentry != NULL; curentry = curentry->next()) { // header: just print if (curentry->is_header()) - buffer.catprintf("\n#\n# %s\n#\n", curentry->description()); + strcatprintf(buffer,"\n#\n# %s\n#\n", curentry->description()); // otherwise, output entries for all non-deprecated items else if (curentry->description() != NULL) - buffer.catprintf("-%-20s%s\n", curentry->name(), curentry->description()); + strcatprintf(buffer,"-%-20s%s\n", curentry->name(), curentry->description()); } return buffer.c_str(); } @@ -617,13 +618,13 @@ bool core_options::exists(const char *name) const // set_value - set the raw option value //------------------------------------------------- -bool core_options::set_value(const char *name, const char *value, int priority, astring &error_string) +bool core_options::set_value(const char *name, const char *value, int priority, std::string &error_string) { // find the entry first entry *curentry = m_entrymap.find(name); if (curentry == NULL) { - error_string.catprintf("Attempted to set unknown option %s\n", name); + strcatprintf(error_string, "Attempted to set unknown option %s\n", name); return false; } @@ -631,17 +632,17 @@ bool core_options::set_value(const char *name, const char *value, int priority, return validate_and_set_data(*curentry, value, priority, error_string); } -bool core_options::set_value(const char *name, int value, int priority, astring &error_string) +bool core_options::set_value(const char *name, int value, int priority, std::string &error_string) { - astring tempstr; - tempstr.printf("%d", value); + std::string tempstr; + strprintf(tempstr,"%d", value); return set_value(name, tempstr.c_str(), priority, error_string); } -bool core_options::set_value(const char *name, float value, int priority, astring &error_string) +bool core_options::set_value(const char *name, float value, int priority, std::string &error_string) { - astring tempstr; - tempstr.printf("%f", value); + std::string tempstr; + strprintf(tempstr, "%f", value); return set_value(name, tempstr.c_str(), priority, error_string); } @@ -687,7 +688,7 @@ void core_options::append_entry(core_options::entry &newentry) // for boolean options add a "no" variant as well if (newentry.type() == OPTION_BOOLEAN) - m_entrymap.add(astring("no").cat(newentry.name(name)).c_str(), &newentry); + m_entrymap.add(std::string("no").append(newentry.name(name)).c_str(), &newentry); } } @@ -730,17 +731,18 @@ void core_options::copyfrom(const core_options &src) // then set it //------------------------------------------------- -bool core_options::validate_and_set_data(core_options::entry &curentry, const char *newdata, int priority, astring &error_string) +bool core_options::validate_and_set_data(core_options::entry &curentry, const char *newdata, int priority, std::string &error_string) { // trim any whitespace - astring data(newdata); - data.trimspace(); + std::string data(newdata); + strtrimspace(data); + // trim quotes - if (data.chr(0, '"') == 0 && data.rchr(0, '"') == data.len() - 1) + if (data.find_first_of('"') == 0 && data.find_last_of('"') == data.length() - 1) { - data.del(0, 1); - data.del(data.len() - 1, 1); + data.erase(0, 1); + data.erase(data.length() - 1, 1); } // validate the type of data and optionally the range @@ -752,7 +754,7 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch case OPTION_BOOLEAN: if (sscanf(data.c_str(), "%d", &ival) != 1 || ival < 0 || ival > 1) { - error_string.catprintf("Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); + strcatprintf(error_string, "Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); return false; } break; @@ -761,12 +763,12 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch case OPTION_INTEGER: if (sscanf(data.c_str(), "%d", &ival) != 1) { - error_string.catprintf("Illegal integer value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); + strcatprintf(error_string, "Illegal integer value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); return false; } if (curentry.has_range() && (ival < atoi(curentry.minimum()) || ival > atoi(curentry.maximum()))) { - error_string.catprintf("Out-of-range integer value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()); + strcatprintf(error_string, "Out-of-range integer value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()); return false; } break; @@ -775,12 +777,12 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch case OPTION_FLOAT: if (sscanf(data.c_str(), "%f", &fval) != 1) { - error_string.catprintf("Illegal float value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); + strcatprintf(error_string, "Illegal float value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); return false; } if (curentry.has_range() && (fval < atof(curentry.minimum()) || fval > atof(curentry.maximum()))) { - error_string.catprintf("Out-of-range float value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()); + strcatprintf(error_string, "Out-of-range float value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()); return false; } break; @@ -793,7 +795,7 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch case OPTION_INVALID: case OPTION_HEADER: default: - error_string.catprintf("Attempted to set invalid option %s\n", curentry.name()); + strcatprintf(error_string, "Attempted to set invalid option %s\n", curentry.name()); return false; } diff --git a/src/lib/util/options.h b/src/lib/util/options.h index dafd2214dab..1ef4636e1e6 100644 --- a/src/lib/util/options.h +++ b/src/lib/util/options.h @@ -105,11 +105,11 @@ public: bool m_error_reported; // have we reported an error on this option yet? int m_priority; // priority of the data set const char * m_description; // description for this item - astring m_name[4]; // up to 4 names for the item - astring m_data; // data for this item - astring m_defdata; // default data for this item - astring m_minimum; // minimum value - astring m_maximum; // maximum value + std::string m_name[4]; // up to 4 names for the item + std::string m_data; // data for this item + std::string m_defdata; // default data for this item + std::string m_minimum; // minimum value + std::string m_maximum; // maximum value }; // construction/destruction @@ -138,15 +138,15 @@ public: void remove_entry(entry &delentry); // parsing/input - bool parse_command_line(int argc, char **argv, int priority, astring &error_string); - bool parse_ini_file(core_file &inifile, int priority, int ignore_priority, astring &error_string); + bool parse_command_line(int argc, char **argv, int priority, std::string &error_string); + bool parse_ini_file(core_file &inifile, int priority, int ignore_priority, std::string &error_string); // reverting void revert(int priority = OPTION_PRIORITY_MAXIMUM); // output - const char *output_ini(astring &buffer, const core_options *diff = NULL); - const char *output_help(astring &buffer); + const char *output_ini(std::string &buffer, const core_options *diff = NULL); + const char *output_help(std::string &buffer); // reading const char *value(const char *option) const; @@ -160,9 +160,9 @@ public: // setting void set_command(const char *command); - bool set_value(const char *name, const char *value, int priority, astring &error_string); - bool set_value(const char *name, int value, int priority, astring &error_string); - bool set_value(const char *name, float value, int priority, astring &error_string); + bool set_value(const char *name, const char *value, int priority, std::string &error_string); + bool set_value(const char *name, int value, int priority, std::string &error_string); + bool set_value(const char *name, float value, int priority, std::string &error_string); void set_flag(const char *name, UINT32 mask, UINT32 flags); // misc @@ -174,12 +174,12 @@ private: void reset(); void append_entry(entry &newentry); void copyfrom(const core_options &src); - bool validate_and_set_data(entry &curentry, const char *newdata, int priority, astring &error_string); + bool validate_and_set_data(entry &curentry, const char *newdata, int priority, std::string &error_string); // internal state simple_list m_entrylist; // head of list of entries tagmap_t m_entrymap; // map for fast lookup - astring m_command; // command found + std::string m_command; // command found static const char *const s_option_unadorned[]; // array of unadorned option "names" }; diff --git a/src/lib/util/zippath.c b/src/lib/util/zippath.c index b2097689ac7..fdb5a3b957d 100644 --- a/src/lib/util/zippath.c +++ b/src/lib/util/zippath.c @@ -328,17 +328,21 @@ file_error zippath_fopen(const char *filename, UINT32 openflags, core_file *&fil if (subpath.length() > 0) { std::string temp2; - temp2.assign(mainpath.substr(temp.length()).append(PATH_SEPARATOR).append(subpath)); + mainpath = mainpath.substr(temp.length()); + temp2.assign(mainpath).append(PATH_SEPARATOR).append(subpath); subpath.assign(temp2); } - else - subpath.assign(mainpath.substr(temp.length())); - + else + { + mainpath = mainpath.substr(temp.length()); + subpath.assign(mainpath); + } /* get the new main path, truncating path separators */ len = temp.length(); while (len > 0 && is_zip_file_separator(temp[len - 1])) len--; - mainpath.assign(temp.substr(0, len)); + temp = temp.substr(0, len); + mainpath.assign(temp); } } @@ -562,7 +566,8 @@ static file_error zippath_resolve(const char *path, osd_dir_entry_type &entry_ty i = apath.length(); while (i > 1 && is_path_separator(apath[i - 1])) i--; - apath_trimmed.assign(apath.substr(0, i)); + apath = apath.substr(0, i); + apath_trimmed.assign(apath); /* stat the path */ current_entry = osd_stat(apath_trimmed.c_str()); diff --git a/src/mame/drivers/bfm_sc45_helper.c b/src/mame/drivers/bfm_sc45_helper.c index d46afca2d12..ce7d40f7e9d 100644 --- a/src/mame/drivers/bfm_sc45_helper.c +++ b/src/mame/drivers/bfm_sc45_helper.c @@ -126,7 +126,7 @@ int find_project_string(running_machine &machine, int addrxor, int mode) struct sc4inputinfo { - astring name; + std::string name; bool used; }; @@ -193,7 +193,7 @@ int find_input_strings(running_machine &machine) UINT32 stringaddr = (rom[j + 2] << 16) | rom[j + 3]; sc45helperlog("(port %02x position %02x) unk %04x addr %08x ", port,pos, unk2, stringaddr); - astring tempstring; + std::string tempstring; for (int k = stringaddr; k < stringaddr + 6; k++) { @@ -205,13 +205,13 @@ int find_input_strings(running_machine &machine) } else { - tempstring.cat(chr); + tempstring.push_back(chr); } } - tempstring.trimspace(); - tempstring.makelower(); + strtrimspace(tempstring); + strmakelower(tempstring); //if (pos <= 5) @@ -226,8 +226,8 @@ int find_input_strings(running_machine &machine) { printf("position already used?\n"); - sc4inputs[port][pos].name.cat(" OR "); - sc4inputs[port][pos].name.cat(tempstring); + sc4inputs[port][pos].name.append(" OR "); + sc4inputs[port][pos].name.append(tempstring); } } //else @@ -371,20 +371,20 @@ int find_input_strings(running_machine &machine) struct lampinfo { - astring lampname; - astring lampname_alt; + std::string lampname; + std::string lampname_alt; bool used; int x, y; int width, height; bool draw_label; - astring lamptypename; + std::string lamptypename; int clickport; int clickmask; }; lampinfo lamps[16][16]; -void set_clickable_temp(running_machine &machine, const astring &teststring, int clickport, int clickmask) +void set_clickable_temp(running_machine &machine, const std::string &teststring, int clickport, int clickmask) { for (int y = 0; y < 16; y++) { @@ -438,7 +438,7 @@ int find_lamp_strings(running_machine &machine) sprintf(tmp, "(%02d:%02d)", y, x); - lamps[y][x].lampname = astring(tmp); + lamps[y][x].lampname = std::string(tmp); lamps[y][x].used = false; lamps[y][x].y = (y * 28); lamps[y][x].x = 380 + (x * 24); @@ -476,7 +476,7 @@ int find_lamp_strings(running_machine &machine) //sc45helperlog("(row %02d, col %02d, unused %02x) addr %08x ", row,col, (portpos&0xff00)>>8, stringaddr); - astring tempstring; + std::string tempstring; for (int k = stringaddr; k < stringaddr + 10; k++) { @@ -488,7 +488,7 @@ int find_lamp_strings(running_machine &machine) } else { - tempstring.cat(chr); + tempstring.push_back(chr); } } @@ -499,8 +499,8 @@ int find_lamp_strings(running_machine &machine) lamps[row][col].lampname = tempstring; lamps[row][col].lamptypename = "matrixlamp"; - lamps[row][col].lampname.trimspace(); - lamps[row][col].lampname.makelower(); + strtrimspace(lamps[row][col].lampname); + strmakelower(lamps[row][col].lampname); } else { @@ -879,7 +879,7 @@ int find_reel_strings(running_machine &machine) //sc45helperlog("addr %08x ", stringaddr); - astring tempstring; + std::string tempstring; for (int k = stringaddr; k < stringaddr + 10; k++) { @@ -891,18 +891,18 @@ int find_reel_strings(running_machine &machine) } else { - tempstring.cat(chr); + tempstring.push_back(chr); } } - tempstring.trimspace(); - tempstring.makelower(); + strtrimspace(tempstring); + strmakelower(tempstring); if (tempstring[0] == '!') { - tempstring.delchr('!'); - tempstring.cat("PND"); + strdelchr(tempstring,'!'); + tempstring.append("PND"); } sc45helperlog("%s", tempstring.c_str()); diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c index 21a05f72d53..9df931edfe4 100644 --- a/src/mame/drivers/cps3.c +++ b/src/mame/drivers/cps3.c @@ -777,10 +777,10 @@ void cps3_state::init_common(void) m_nops[0] = 0x00090009; // flash roms - astring tempstr; + std::string tempstr; for (int simmnum = 0; simmnum < 7; simmnum++) for (int chipnum = 0; chipnum < 8; chipnum++) - m_simm[simmnum][chipnum] = machine().device(tempstr.format("simm%d.%d", simmnum + 1, chipnum).c_str()); + m_simm[simmnum][chipnum] = machine().device(strformat(tempstr,"simm%d.%d", simmnum + 1, chipnum).c_str()); m_eeprom = auto_alloc_array(machine(), UINT32, 0x400/4); machine().device("eeprom")->set_base(m_eeprom, 0x400); diff --git a/src/mame/etc/template_cpu.c b/src/mame/etc/template_cpu.c index ee76f8fefbd..4c3e3cac81e 100644 --- a/src/mame/etc/template_cpu.c +++ b/src/mame/etc/template_cpu.c @@ -107,12 +107,12 @@ xxx_cpu_device::xxx_cpu_device(const machine_config &mconfig, const char *tag, d } -void xxx_cpu_device::state_string_export(const device_state_entry &entry, astring &str) +void xxx_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) { switch (entry.index()) { case STATE_GENFLAGS: - str.printf("%c%c%c%c", + strprintf(str, "%c%c%c%c", m_flags & 0x80 ? 'S':'.', m_flags & 0x40 ? 'Z':'.', m_flags & 0x20 ? 'V':'.', diff --git a/src/mame/etc/template_cpu.h b/src/mame/etc/template_cpu.h index ff3cadc646c..82900d37406 100644 --- a/src/mame/etc/template_cpu.h +++ b/src/mame/etc/template_cpu.h @@ -42,7 +42,7 @@ protected: virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_PROGRAM) ? &m_program_config : ( (spacenum == AS_DATA) ? &m_data_config : NULL ); } // device_state_interface overrides - void state_string_export(const device_state_entry &entry, astring &str); + void state_string_export(const device_state_entry &entry, std::string &str); // device_disasm_interface overrides virtual UINT32 disasm_min_opcode_bytes() const { return 4; } diff --git a/src/mess/drivers/aim65.c b/src/mess/drivers/aim65.c index 951c0204792..933b0b642ca 100644 --- a/src/mess/drivers/aim65.c +++ b/src/mess/drivers/aim65.c @@ -156,8 +156,8 @@ int aim65_state::load_cart(device_image_interface &image, generic_slot_device *s if (image.software_entry() != NULL && image.get_software_region(slot_tag) == NULL) { - astring errmsg; - errmsg.printf("Attempted to load file with wrong extension\nSocket '%s' only accepts files with '.%s' extension", + std::string errmsg; + strprintf(errmsg,"Attempted to load file with wrong extension\nSocket '%s' only accepts files with '.%s' extension", slot_tag, slot_tag); image.seterror(IMAGE_ERROR_UNSPECIFIED, errmsg.c_str()); return IMAGE_INIT_FAIL; diff --git a/src/mess/drivers/pegasus.c b/src/mess/drivers/pegasus.c index 3971ea51613..dc74d93eff0 100644 --- a/src/mess/drivers/pegasus.c +++ b/src/mess/drivers/pegasus.c @@ -433,8 +433,8 @@ int pegasus_state::load_cart(device_image_interface &image, generic_slot_device if (size == 0) { - astring errmsg; - errmsg.printf("Attempted to load a file that does not work in this socket.\nPlease check \"Usage\" field in the software list for the correct socket(s) to use."); + std::string errmsg; + strprintf(errmsg,"Attempted to load a file that does not work in this socket.\nPlease check \"Usage\" field in the software list for the correct socket(s) to use."); image.seterror(IMAGE_ERROR_UNSPECIFIED, errmsg.c_str()); return IMAGE_INIT_FAIL; } diff --git a/src/mess/machine/spec_snqk.c b/src/mess/machine/spec_snqk.c index dfc8ce696f5..480c6188e18 100644 --- a/src/mess/machine/spec_snqk.c +++ b/src/mess/machine/spec_snqk.c @@ -46,22 +46,22 @@ static void log_quickload(running_machine &machine, const char *type, UINT32 start, UINT32 length, UINT32 exec, const char *exec_format) { - astring tempstring; + std::string tempstring; logerror("Loading %04X bytes of RAM at %04X\n", length, start); - tempstring.catprintf("Quickload type: %s Length: %d bytes\n", type, length); - tempstring.catprintf("Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1); + strcatprintf(tempstring,"Quickload type: %s Length: %d bytes\n", type, length); + strcatprintf(tempstring,"Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1); logerror("Quickload loaded.\n"); if (!core_stricmp(exec_format, EXEC_NA)) - tempstring.cat("N/A"); + tempstring.append("N/A"); else { logerror("Execution can resume with "); logerror(exec_format, exec); logerror("\n"); - tempstring.catprintf(exec_format, exec); + strcatprintf(tempstring,exec_format, exec); } machine.ui().popup_time(10, "%s", tempstring.c_str()); diff --git a/src/mess/machine/thomson.c b/src/mess/machine/thomson.c index ad18eed60cc..19be7a86354 100644 --- a/src/mess/machine/thomson.c +++ b/src/mess/machine/thomson.c @@ -375,8 +375,8 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, to7_cartridge ) m_thom_cart_nb_banks = 4; else { - astring errmsg; - errmsg.printf("Invalid cartridge size %u", size); + std::string errmsg; + strprintf(errmsg,"Invalid cartridge size %u", size); image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str()); return IMAGE_INIT_FAIL; } @@ -1516,8 +1516,8 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, mo5_cartridge ) m_thom_cart_nb_banks = 4; else { - astring errmsg; - errmsg.printf("Invalid cartridge size %" I64FMT "d", size); + std::string errmsg; + strprintf(errmsg,"Invalid cartridge size %" I64FMT "d", size); image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str()); return IMAGE_INIT_FAIL; } diff --git a/src/mess/tools/imgtool/imghd.c b/src/mess/tools/imgtool/imghd.c index e96ecc8f51c..f07334d68ef 100644 --- a/src/mess/tools/imgtool/imghd.c +++ b/src/mess/tools/imgtool/imghd.c @@ -52,7 +52,7 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind chd_error rc; UINT64 logicalbytes; int hunknum, totalhunks; - astring metadata; + std::string metadata; chd_codec_type compression[4] = { CHD_CODEC_NONE }; /* sanity check args */ @@ -92,7 +92,7 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind } /* write the metadata */ - metadata.format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen); + strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen); err = (imgtoolerr_t)chd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); if (rc != CHDERR_NONE) { diff --git a/src/osd/modules/debugger/debugint.c b/src/osd/modules/debugger/debugint.c index cbb7a627466..1d25453f443 100644 --- a/src/osd/modules/debugger/debugint.c +++ b/src/osd/modules/debugger/debugint.c @@ -157,7 +157,7 @@ public: { } int active; render_container * container; - astring str; + std::string str; }; /*************************************************************************** @@ -222,7 +222,7 @@ public: rectangle bounds; int ofs_x; int ofs_y; - astring title; + std::string title; int last_x; int last_y; // Scrollbars @@ -459,9 +459,9 @@ static void dview_draw_size(DView *dv) r.width(),r.height(), rgb_t(0xff, 0xff, 0xff, 0x00)); } -static void dview_set_title(DView *dv, astring title) +static void dview_set_title(DView *dv, std::string title) { - if (dv->title.cmp(title) != 0) + if (dv->title.compare(title) != 0) { dv->title = title; dview_set_state(dv, VIEW_STATE_NEEDS_UPDATE, TRUE); @@ -1155,7 +1155,7 @@ static void CreateMainMenu(running_machine &machine) { const char *subtext = ""; int rc; - astring title; + std::string title; if (menu) global_free( menu); @@ -1180,7 +1180,7 @@ static void CreateMainMenu(running_machine &machine) break; } - menu->item_append(title.cat(focus_view->title).c_str(), NULL, MENU_FLAG_DISABLE, NULL); + menu->item_append(title.append(focus_view->title).c_str(), NULL, MENU_FLAG_DISABLE, NULL); menu->item_append(MENU_SEPARATOR_ITEM, NULL, 0, NULL); switch (focus_view->type) @@ -1295,11 +1295,11 @@ static void handle_editor(running_machine &machine) { case UI_EVENT_CHAR: /* if it's a backspace and we can handle it, do so */ - if ((event.ch == 8 || event.ch == 0x7f) && focus_view->editor.str.len() > 0) + if ((event.ch == 8 || event.ch == 0x7f) && focus_view->editor.str.length() > 0) { /* autoschow */ cur_editor = &focus_view->editor; - cur_editor->str = cur_editor->str.substr(0, cur_editor->str.len()-1); + cur_editor->str = cur_editor->str.substr(0, cur_editor->str.length()-1); } /* if it's any other key and we're not maxed out, update */ else if (event.ch >= ' ' && event.ch < 0x7f) @@ -1310,7 +1310,7 @@ static void handle_editor(running_machine &machine) cur_editor = &focus_view->editor; ret = utf8_from_uchar(buf, 10, event.ch); buf[ret] = 0; - cur_editor->str = cur_editor->str.cat(buf); + cur_editor->str = cur_editor->str.append(buf); } break; default: @@ -1380,7 +1380,7 @@ static void handle_menus(running_machine &machine) static void followers_set_cpu(device_t *device) { - astring title; + std::string title; for (DView *dv = list; dv != NULL; dv = dv->next) { @@ -1392,7 +1392,7 @@ static void followers_set_cpu(device_t *device) case DVT_DISASSEMBLY: case DVT_STATE: dv->view->set_source(*source); - title.printf("%s", source->name()); + strprintf(title, "%s", source->name()); dview_set_title(dv, title); break; } diff --git a/src/osd/modules/debugger/qt/deviceinformationwindow.h b/src/osd/modules/debugger/qt/deviceinformationwindow.h index eb32398e9b3..58fcb764cc8 100644 --- a/src/osd/modules/debugger/qt/deviceinformationwindow.h +++ b/src/osd/modules/debugger/qt/deviceinformationwindow.h @@ -34,7 +34,7 @@ private: class DeviceInformationWindowQtConfig : public WindowQtConfig { public: - astring m_device_tag; + std::string m_device_tag; DeviceInformationWindowQtConfig() : WindowQtConfig(WIN_TYPE_DEVICE_INFORMATION) diff --git a/src/osd/modules/debugger/qt/mainwindow.c b/src/osd/modules/debugger/qt/mainwindow.c index 8e07cd09c3e..45e82504ccf 100644 --- a/src/osd/modules/debugger/qt/mainwindow.c +++ b/src/osd/modules/debugger/qt/mainwindow.c @@ -136,7 +136,7 @@ void MainWindow::setProcessor(device_t* processor) m_dasmFrame->view()->verticalScrollBar()->setValue(m_dasmFrame->view()->view()->visible_position().y); // Window title - astring title; + std::string title; title.printf("Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag()); setWindowTitle(title.c_str()); } @@ -225,7 +225,7 @@ void MainWindow::toggleBreakpointAtCursor(bool changedTo) } // If none exists, add a new one - astring command; + std::string command; if (bpindex == -1) { command.printf("bpset 0x%X", address); @@ -257,7 +257,7 @@ void MainWindow::enableBreakpointAtCursor(bool changedTo) if (bp != NULL) { INT32 const bpindex = bp->index(); - astring command; + std::string command; command.printf(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex); debug_console_execute_command(*m_machine, command.c_str(), 1); } @@ -273,7 +273,7 @@ void MainWindow::runToCursor(bool changedTo) if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device())) { offs_t address = downcast(dasmView)->selected_address(); - astring command; + std::string command; command.printf("go 0x%X", address); debug_console_execute_command(*m_machine, command.c_str(), 1); } @@ -463,7 +463,7 @@ void MainWindow::createImagesMenu() image_interface_iterator iter(m_machine->root_device()); for (device_image_interface *img = iter.first(); img != NULL; img = iter.next()) { - astring menuName; + std::string menuName; menuName.format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[empty slot]"); QMenu* interfaceMenu = imagesMenu->addMenu(menuName.c_str()); diff --git a/src/osd/modules/debugger/win/consolewininfo.c b/src/osd/modules/debugger/win/consolewininfo.c index 892eec0768f..a55c7b7885f 100644 --- a/src/osd/modules/debugger/win/consolewininfo.c +++ b/src/osd/modules/debugger/win/consolewininfo.c @@ -44,8 +44,8 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) : m_devices_menu = CreatePopupMenu(); for ( ; img != NULL; img = iter.next()) { - astring temp; - temp.format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[no image]"); + std::string temp; + strprintf(temp,"%s : %s", img->device().name(), img->exists() ? img->filename() : "[no image]"); TCHAR *tc_buf = tstring_from_utf8(temp.c_str()); if (tc_buf != NULL) { @@ -107,11 +107,11 @@ void consolewin_info::set_cpu(device_t &device) // then update the caption char curtitle[256]; - astring title; + std::string title; - title.printf("Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag()); + strprintf(title, "Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag()); win_get_window_text_utf8(window(), curtitle, ARRAY_LENGTH(curtitle)); - if (title.cmp(curtitle) != 0) + if (title.compare(curtitle) != 0) win_set_window_text_utf8(window(), title.c_str()); // and recompute the children @@ -201,8 +201,8 @@ void consolewin_info::update_menu() AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, TEXT("Fast Forward")); } - astring temp; - temp.format("%s :%s", img->device().name(), img->exists() ? img->filename() : "[empty slot]"); + std::string temp; + strprintf(temp,"%s :%s", img->device().name(), img->exists() ? img->filename() : "[empty slot]"); TCHAR *tc_buf = tstring_from_utf8(temp.c_str()); if (tc_buf != NULL) { @@ -227,7 +227,7 @@ bool consolewin_info::handle_command(WPARAM wparam, LPARAM lparam) { case DEVOPTION_OPEN : { - astring filter; + std::string filter; build_generic_filter(img, false, filter); LPTSTR t_filter = tstring_from_utf8(filter.c_str()); if (t_filter) @@ -314,41 +314,41 @@ void consolewin_info::process_string(char const *string) } -void consolewin_info::build_generic_filter(device_image_interface *img, bool is_save, astring &filter) +void consolewin_info::build_generic_filter(device_image_interface *img, bool is_save, std::string &filter) { // common image types add_filter_entry(filter, "Common image types", img->file_extensions()); // compressed if (!is_save) - filter.cat("Compressed Images (*.zip)|*.zip|"); + filter.append("Compressed Images (*.zip)|*.zip|"); // all files - filter.cat("All files (*.*)|*.*|"); + filter.append("All files (*.*)|*.*|"); } -void consolewin_info::add_filter_entry(astring &dest, const char *description, const char *extensions) +void consolewin_info::add_filter_entry(std::string &dest, const char *description, const char *extensions) { // add the description - dest.cat(description); - dest.catformat(" ("); + dest.append(description); + dest.append(" ("); // add the extensions to the description copy_extension_list(dest, extensions); // add the trailing rparen and '|' character - dest.cat(")|"); + dest.append(")|"); // now add the extension list itself copy_extension_list(dest, extensions); // append a '|' - dest.cat('|'); + dest.append("|"); } -void consolewin_info::copy_extension_list(astring &dest, const char *extensions) +void consolewin_info::copy_extension_list(std::string &dest, const char *extensions) { // our extension lists are comma delimited; Win32 expects to see lists // delimited by semicolons @@ -357,14 +357,14 @@ void consolewin_info::copy_extension_list(astring &dest, const char *extensions) { // append a semicolon if not at the beginning if (s != extensions) - dest.cat(';'); + dest.push_back(';'); // append ".*" - dest.cat("*."); + dest.append("*."); // append the file extension while (*s && (*s != ',')) - dest.cat(*s++); + dest.push_back(*s++); // if we found a comma, advance while(*s == ',') diff --git a/src/osd/modules/debugger/win/consolewininfo.h b/src/osd/modules/debugger/win/consolewininfo.h index b74a189657d..f788b044873 100644 --- a/src/osd/modules/debugger/win/consolewininfo.h +++ b/src/osd/modules/debugger/win/consolewininfo.h @@ -43,9 +43,9 @@ private: virtual void process_string(char const *string); - static void build_generic_filter(device_image_interface *img, bool is_save, astring &filter); - static void add_filter_entry(astring &dest, char const *description, char const *extensions); - static void copy_extension_list(astring &dest, char const *extensions); + static void build_generic_filter(device_image_interface *img, bool is_save, std::string &filter); + static void add_filter_entry(std::string &dest, char const *description, char const *extensions); + static void copy_extension_list(std::string &dest, char const *extensions); HMENU m_devices_menu; }; diff --git a/src/osd/modules/debugger/win/disasmbasewininfo.c b/src/osd/modules/debugger/win/disasmbasewininfo.c index c06c6cf1326..783cc8d75fa 100644 --- a/src/osd/modules/debugger/win/disasmbasewininfo.c +++ b/src/osd/modules/debugger/win/disasmbasewininfo.c @@ -195,11 +195,11 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) } else if (dasmview->source_is_visible_cpu()) { - astring command; + std::string command; if (bpindex == -1) - command.printf("bpset 0x%X", address); + strprintf(command, "bpset 0x%X", address); else - command.printf("bpclear 0x%X", bpindex); + strprintf(command, "bpclear 0x%X", bpindex); debug_console_execute_command(machine(), command.c_str(), 1); } } @@ -228,8 +228,8 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) } else if (dasmview->source_is_visible_cpu()) { - astring command; - command.printf(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index()); + std::string command; + strprintf(command, bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index()); debug_console_execute_command(machine(), command.c_str(), 1); } } @@ -242,8 +242,8 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) offs_t const address = dasmview->selected_address(); if (dasmview->source_is_visible_cpu()) { - astring command; - command.printf("go 0x%X", address); + std::string command; + strprintf(command, "go 0x%X", address); debug_console_execute_command(machine(), command.c_str(), 1); } else diff --git a/src/osd/modules/debugger/win/disasmwininfo.c b/src/osd/modules/debugger/win/disasmwininfo.c index 7b9097a1e67..5d9c72f3fc6 100644 --- a/src/osd/modules/debugger/win/disasmwininfo.c +++ b/src/osd/modules/debugger/win/disasmwininfo.c @@ -145,5 +145,5 @@ void disasmwin_info::process_string(char const *string) void disasmwin_info::update_caption() { - win_set_window_text_utf8(window(), astring("Disassembly: ").cat(m_views[0]->source_name()).c_str()); + win_set_window_text_utf8(window(), std::string("Disassembly: ").append(m_views[0]->source_name()).c_str()); } diff --git a/src/osd/modules/debugger/win/editwininfo.h b/src/osd/modules/debugger/win/editwininfo.h index ff5e20f03ec..f1b729a1f59 100644 --- a/src/osd/modules/debugger/win/editwininfo.h +++ b/src/osd/modules/debugger/win/editwininfo.h @@ -46,7 +46,7 @@ private: static int const HISTORY_LENGTH = 20; HWND m_editwnd; - astring m_edit_defstr; + std::string m_edit_defstr; WNDPROC m_original_editproc; TCHAR m_history[HISTORY_LENGTH][MAX_EDIT_STRING]; int m_history_count; diff --git a/src/osd/modules/debugger/win/logwininfo.c b/src/osd/modules/debugger/win/logwininfo.c index 6621048ac48..c623245db72 100644 --- a/src/osd/modules/debugger/win/logwininfo.c +++ b/src/osd/modules/debugger/win/logwininfo.c @@ -12,7 +12,7 @@ logwin_info::logwin_info(debugger_windows_interface &debugger) : - debugwin_info(debugger, false, astring("Errorlog: ").cat(debugger.machine().system().description).cat(" [").cat(debugger.machine().system().name).cat("]").c_str(), NULL) + debugwin_info(debugger, false, std::string("Errorlog: ").append(debugger.machine().system().description).append(" [").append(debugger.machine().system().name).append("]").c_str(), NULL) { if (!window()) return; diff --git a/src/osd/modules/debugger/win/memorywininfo.c b/src/osd/modules/debugger/win/memorywininfo.c index 1610e2b6002..0c67bdf01da 100644 --- a/src/osd/modules/debugger/win/memorywininfo.c +++ b/src/osd/modules/debugger/win/memorywininfo.c @@ -275,5 +275,5 @@ void memorywin_info::process_string(char const *string) void memorywin_info::update_caption() { - win_set_window_text_utf8(window(), astring("Memory: ").cat(m_views[0]->source_name()).c_str()); + win_set_window_text_utf8(window(), std::string("Memory: ").append(m_views[0]->source_name()).c_str()); } diff --git a/src/osd/modules/debugger/win/pointswininfo.c b/src/osd/modules/debugger/win/pointswininfo.c index 6395603ec6e..5ed28a17e16 100644 --- a/src/osd/modules/debugger/win/pointswininfo.c +++ b/src/osd/modules/debugger/win/pointswininfo.c @@ -14,7 +14,7 @@ pointswin_info::pointswin_info(debugger_windows_interface &debugger) : - debugwin_info(debugger, false, astring("All Breakpoints").c_str(), NULL) + debugwin_info(debugger, false, std::string("All Breakpoints").c_str(), NULL) { if (!window()) return; diff --git a/src/osd/modules/font/font_sdl.c b/src/osd/modules/font/font_sdl.c index ec823243b9f..12571623583 100644 --- a/src/osd/modules/font/font_sdl.c +++ b/src/osd/modules/font/font_sdl.c @@ -18,7 +18,7 @@ #endif -#include "astring.h" +#include "std::string.h" #include "corealloc.h" #include "fileio.h" @@ -39,10 +39,10 @@ public: virtual bool get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, INT32 &width, INT32 &xoffs, INT32 &yoffs); private: #ifndef SDLMAME_HAIKU - TTF_Font *search_font_config(astring name, bool bold, bool italic, bool underline, bool &bakedstyles); + TTF_Font *search_font_config(std::string name, bool bold, bool italic, bool underline, bool &bakedstyles); #endif - bool BDF_Check_Magic(astring name); - TTF_Font * TTF_OpenFont_Magic(astring name, int fsize); + bool BDF_Check_Magic(std::string name); + TTF_Font * TTF_OpenFont_Magic(std::string name, int fsize); TTF_Font *m_font; }; @@ -53,7 +53,7 @@ bool osd_font_sdl::open(const char *font_path, const char *_name, int &height) int style = 0; // accept qualifiers from the name - astring name(_name); + std::string name(_name); if (name.cmp("default")==0) { @@ -77,7 +77,7 @@ bool osd_font_sdl::open(const char *font_path, const char *_name, int &height) emu_file file(font_path, OPEN_FLAG_READ); if (file.open(name.c_str()) == FILERR_NONE) { - astring full_name = file.fullpath(); + std::string full_name = file.fullpath(); font = TTF_OpenFont_Magic(full_name, POINT_SIZE); if (font) osd_printf_verbose("Found font %s\n", full_name.c_str()); @@ -184,7 +184,7 @@ bool osd_font_sdl::get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, INT32 & return bitmap.valid(); } -TTF_Font * osd_font_sdl::TTF_OpenFont_Magic(astring name, int fsize) +TTF_Font * osd_font_sdl::TTF_OpenFont_Magic(std::string name, int fsize) { emu_file file(OPEN_FLAG_READ); if (file.open(name.c_str()) == FILERR_NONE) @@ -198,7 +198,7 @@ TTF_Font * osd_font_sdl::TTF_OpenFont_Magic(astring name, int fsize) return TTF_OpenFont(name.c_str(), POINT_SIZE); } -bool osd_font_sdl::BDF_Check_Magic(astring name) +bool osd_font_sdl::BDF_Check_Magic(std::string name) { emu_file file(OPEN_FLAG_READ); if (file.open(name.c_str()) == FILERR_NONE) @@ -215,7 +215,7 @@ bool osd_font_sdl::BDF_Check_Magic(astring name) } #ifndef SDLMAME_HAIKU -TTF_Font *osd_font_sdl::search_font_config(astring name, bool bold, bool italic, bool underline, bool &bakedstyles) +TTF_Font *osd_font_sdl::search_font_config(std::string name, bool bold, bool italic, bool underline, bool &bakedstyles) { TTF_Font *font = (TTF_Font *)NULL; FcConfig *config; @@ -269,7 +269,7 @@ TTF_Font *osd_font_sdl::search_font_config(astring name, bool bold, bool italic, osd_printf_verbose("Matching font: %s\n", val.u.s); { - astring match_name((const char*)val.u.s); + std::string match_name((const char*)val.u.s); font = TTF_OpenFont_Magic(match_name, POINT_SIZE); } @@ -306,7 +306,7 @@ TTF_Font *osd_font_sdl::search_font_config(astring name, bool bold, bool italic, osd_printf_verbose("Matching unstyled font: %s\n", val.u.s); { - astring match_name((const char*)val.u.s); + std::string match_name((const char*)val.u.s); font = TTF_OpenFont_Magic(match_name, POINT_SIZE); } diff --git a/src/osd/modules/font/font_windows.c b/src/osd/modules/font/font_windows.c index 162a8956f89..5b0b57823ab 100644 --- a/src/osd/modules/font/font_windows.c +++ b/src/osd/modules/font/font_windows.c @@ -19,7 +19,7 @@ #include "modules/osdmodule.h" #include "strconv.h" -#include "astring.h" +#include "corestr.h" #include "corealloc.h" #include "fileio.h" @@ -46,10 +46,10 @@ private: bool osd_font_windows::open(const char *font_path, const char *_name, int &height) { // accept qualifiers from the name - astring name(_name); - if (name.cmp("default")==0) name = "Tahoma"; - bool bold = (name.replace(0, "[B]", "") + name.replace(0, "[b]", "") > 0); - bool italic = (name.replace(0, "[I]", "") + name.replace(0, "[i]", "") > 0); + std::string name(_name); + if (name.compare("default")==0) name = "Tahoma"; + bool bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0); + bool italic = (strreplace(name, "[I]", "") + strreplace(name, "[i]", "") > 0); // build a basic LOGFONT description of what we want LOGFONT logfont; diff --git a/src/osd/modules/lib/osdobj_common.c b/src/osd/modules/lib/osdobj_common.c index 41f9d4396ba..903ee072d36 100644 --- a/src/osd/modules/lib/osdobj_common.c +++ b/src/osd/modules/lib/osdobj_common.c @@ -245,22 +245,22 @@ void osd_common_t::register_options() void osd_common_t::update_option(const char * key, std::vector &values) { - astring current_value(m_options.description(key)); - astring new_option_value(""); + std::string current_value(m_options.description(key)); + std::string new_option_value(""); for (unsigned int index = 0; index < values.size(); index++) { - astring t(values[index]); - if (new_option_value.len() > 0) + std::string t(values[index]); + if (new_option_value.length() > 0) { if( index != (values.size()-1)) - new_option_value.cat(", "); + new_option_value.append(", "); else - new_option_value.cat(" or "); + new_option_value.append(" or "); } - new_option_value.cat(t); + new_option_value.append(t); } // TODO: core_strdup() is leaked - m_options.set_description(key, core_strdup(current_value.cat(new_option_value).c_str())); + m_options.set_description(key, core_strdup(current_value.append(new_option_value).c_str())); } diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index 366e832fd03..d46463b414d 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -113,10 +113,10 @@ public: const char *aspect() const { return value(OSDOPTION_ASPECT); } const char *resolution() const { return value(OSDOPTION_RESOLUTION); } const char *view() const { return value(OSDOPTION_VIEW); } - const char *screen(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_SCREEN, index).c_str()); } - const char *aspect(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_ASPECT, index).c_str()); } - const char *resolution(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_RESOLUTION, index).c_str()); } - const char *view(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_VIEW, index).c_str()); } + const char *screen(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SCREEN, index); return value(temp.c_str()); } + const char *aspect(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_ASPECT, index); return value(temp.c_str()); } + const char *resolution(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_RESOLUTION, index); return value(temp.c_str()); } + const char *view(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_VIEW, index); return value(temp.c_str()); } // full screen options bool switch_res() const { return bool_value(OSDOPTION_SWITCHRES); } @@ -136,12 +136,12 @@ public: bool gl_pbo() const { return bool_value(OSDOPTION_GL_PBO); } bool gl_glsl() const { return bool_value(OSDOPTION_GL_GLSL); } bool glsl_filter() const { return bool_value(OSDOPTION_GLSL_FILTER); } - const char *shader_mame(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_SHADER_MAME, index).c_str()); } - const char *shader_screen(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_SHADER_SCREEN, index).c_str()); } + const char *shader_mame(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SHADER_MAME, index); return value(temp.c_str()); } + const char *shader_screen(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SHADER_SCREEN, index); return value(temp.c_str()); } // CoreAudio specific options const char *audio_output() const { return value(OSDOPTION_AUDIO_OUTPUT); } - const char *audio_effect(int index) const { astring temp; return value(temp.format("%s%d", OSDOPTION_AUDIO_EFFECT, index).c_str()); } + const char *audio_effect(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_AUDIO_EFFECT, index); return value(temp.c_str()); } private: static const options_entry s_option_entries[]; @@ -238,7 +238,7 @@ private: void update_option(const char * key, std::vector &values); // FIXME: should be elsewhere - osd_module *select_module_options(const core_options &opts, const astring &opt_name) + osd_module *select_module_options(const core_options &opts, const std::string &opt_name) { std::string opt_val = opts.value(opt_name.c_str()); if (opt_val.compare("auto")==0) @@ -252,7 +252,7 @@ private: } template - C select_module_options(const core_options &opts, const astring &opt_name) + C select_module_options(const core_options &opts, const std::string &opt_name) { return dynamic_cast(select_module_options(opts, opt_name)); } diff --git a/src/osd/modules/osdmodule.h b/src/osd/modules/osdmodule.h index f8378fb6dcb..64f0f3c99e6 100644 --- a/src/osd/modules/osdmodule.h +++ b/src/osd/modules/osdmodule.h @@ -41,8 +41,8 @@ public: virtual void exit() { } private: - astring m_name; - astring m_type; + std::string m_name; + std::string m_type; }; // a module_type is simply a pointer to its alloc function diff --git a/src/osd/modules/render/d3d/d3dhlsl.c b/src/osd/modules/render/d3d/d3dhlsl.c index b76c3365528..733ccfe0723 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.c +++ b/src/osd/modules/render/d3d/d3dhlsl.c @@ -370,8 +370,8 @@ void shaders::render_snapshot(surface *surface) return; // add two text entries describing the image - astring text1 = astring(emulator_info::get_appname()).cat(" ").cat(build_version); - astring text2 = astring(machine->system().manufacturer).cat(" ").cat(machine->system().description); + std::string text1 = std::string(emulator_info::get_appname()).append(" ").append(build_version); + std::string text2 = std::string(machine->system().manufacturer).append(" ").append(machine->system().description); png_info pnginfo = { 0 }; png_add_text(&pnginfo, "Software", text1.c_str()); png_add_text(&pnginfo, "System", text2.c_str()); @@ -540,7 +540,7 @@ void shaders::begin_avi_recording(const char *name) // create a new temporary movie file file_error filerr; - astring fullpath; + std::string fullpath; { emu_file tempfile(machine->options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); if (name != NULL) @@ -2394,415 +2394,415 @@ static slider_state *slider_alloc(running_machine &machine, const char *title, I // assorted global slider accessors //============================================================ -static INT32 slider_set(float *option, float scale, const char *fmt, astring *str, INT32 newval) +static INT32 slider_set(float *option, float scale, const char *fmt, std::string *str, INT32 newval) { if (option != NULL && newval != SLIDER_NOCHANGE) *option = (float)newval * scale; - if (str != NULL) str->printf(fmt, *option); + if (str != NULL) strprintf(*str, fmt, *option); return floor(*option / scale + 0.5f); } -static INT32 slider_shadow_mask_alpha(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_shadow_mask_alpha(running_machine &machine, void *arg, std::string *str, INT32 newval) { return slider_set(&(((hlsl_options*)arg)->shadow_mask_alpha), 0.01f, "%2.2f", str, newval); } -static INT32 slider_shadow_mask_x_count(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_shadow_mask_x_count(running_machine &machine, void *arg, std::string *str, INT32 newval) { hlsl_options *options = (hlsl_options*)arg; if (newval != SLIDER_NOCHANGE) options->shadow_mask_count_x = newval; - if (str != NULL) str->printf("%d", options->shadow_mask_count_x); + if (str != NULL) strprintf(*str, "%d", options->shadow_mask_count_x); options->params_dirty = true; return options->shadow_mask_count_x; } -static INT32 slider_shadow_mask_y_count(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_shadow_mask_y_count(running_machine &machine, void *arg, std::string *str, INT32 newval) { hlsl_options *options = (hlsl_options*)arg; if (newval != SLIDER_NOCHANGE) options->shadow_mask_count_y = newval; - if (str != NULL) str->printf("%d", options->shadow_mask_count_y); + if (str != NULL) strprintf(*str, "%d", options->shadow_mask_count_y); options->params_dirty = true; return options->shadow_mask_count_y; } -static INT32 slider_shadow_mask_usize(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_shadow_mask_usize(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->shadow_mask_u_size), 1.0f / 32.0f, "%2.5f", str, newval); } -static INT32 slider_shadow_mask_vsize(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_shadow_mask_vsize(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->shadow_mask_v_size), 1.0f / 32.0f, "%2.5f", str, newval); } -static INT32 slider_curvature(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_curvature(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->curvature), 0.01f, "%2.2f", str, newval); } -static INT32 slider_pincushion(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_pincushion(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->pincushion), 0.01f, "%2.2f", str, newval); } -static INT32 slider_scanline_alpha(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_alpha(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_alpha), 0.01f, "%2.2f", str, newval); } -static INT32 slider_scanline_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_scale), 0.05f, "%2.2f", str, newval); } -static INT32 slider_scanline_height(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_height(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_height), 0.05f, "%2.2f", str, newval); } -static INT32 slider_scanline_bright_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_bright_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_bright_scale), 0.05f, "%2.2f", str, newval); } -static INT32 slider_scanline_bright_offset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_bright_offset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_bright_offset), 0.05f, "%2.2f", str, newval); } -static INT32 slider_scanline_offset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_scanline_offset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scanline_offset), 0.05f, "%2.2f", str, newval); } -static INT32 slider_defocus_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_defocus_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->defocus[0]), 0.5f, "%2.1f", str, newval); } -static INT32 slider_defocus_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_defocus_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->defocus[1]), 0.5f, "%2.1f", str, newval); } -static INT32 slider_red_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_x[0]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_red_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_y[0]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_green_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_x[1]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_green_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_y[1]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_blue_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_x[2]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_blue_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->converge_y[2]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_red_radial_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_radial_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_x[0]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_red_radial_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_radial_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_y[0]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_green_radial_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_radial_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_x[1]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_green_radial_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_radial_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_y[1]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_blue_radial_converge_x(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_radial_converge_x(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_x[2]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_blue_radial_converge_y(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_radial_converge_y(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->radial_converge_y[2]), 0.1f, "%3.1f", str, newval); } -static INT32 slider_red_from_r(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_from_r(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->red_ratio[0]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_red_from_g(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_from_g(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->red_ratio[1]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_red_from_b(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_from_b(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->red_ratio[2]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_green_from_r(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_from_r(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->grn_ratio[0]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_green_from_g(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_from_g(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->grn_ratio[1]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_green_from_b(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_from_b(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->grn_ratio[2]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_blue_from_r(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_from_r(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->blu_ratio[0]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_blue_from_g(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_from_g(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->blu_ratio[1]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_blue_from_b(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_from_b(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->blu_ratio[2]), 0.005f, "%2.3f", str, newval); } -static INT32 slider_red_offset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_offset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->offset[0]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_green_offset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_offset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->offset[1]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_blue_offset(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_offset(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->offset[2]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_red_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scale[0]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_green_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scale[1]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_blue_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->scale[2]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_red_power(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_power(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->power[0]), 0.05f, "%2.2f", str, newval); } -static INT32 slider_green_power(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_power(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->power[1]), 0.05f, "%2.2f", str, newval); } -static INT32 slider_blue_power(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_power(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->power[2]), 0.05f, "%2.2f", str, newval); } -static INT32 slider_red_floor(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_floor(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->floor[0]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_green_floor(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_floor(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->floor[1]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_blue_floor(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_floor(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->floor[2]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_red_phosphor_life(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_red_phosphor_life(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->phosphor[0]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_green_phosphor_life(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_green_phosphor_life(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->phosphor[1]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_blue_phosphor_life(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_blue_phosphor_life(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->phosphor[2]), 0.01f, "%2.2f", str, newval); } -static INT32 slider_saturation(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_saturation(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->saturation), 0.01f, "%2.2f", str, newval); } -static INT32 slider_vector_attenuation(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_vector_attenuation(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->vector_length_scale), 0.01f, "%1.2f", str, newval); } -static INT32 slider_vector_length_max(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_vector_length_max(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->vector_length_ratio), 1.0f, "%4f", str, newval); } -static INT32 slider_vector_bloom_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_vector_bloom_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->vector_bloom_scale), 0.001f, "%1.3f", str, newval); } -static INT32 slider_raster_bloom_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_raster_bloom_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->raster_bloom_scale), 0.001f, "%1.3f", str, newval); } -static INT32 slider_bloom_lvl0_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl0_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level0_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl1_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl1_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level1_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl2_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl2_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level2_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl3_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl3_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level3_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl4_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl4_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level4_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl5_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl5_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level5_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl6_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl6_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level6_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl7_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl7_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level7_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl8_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl8_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level8_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl9_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl9_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level9_weight), 0.01f, "%1.2f", str, newval); } -static INT32 slider_bloom_lvl10_scale(running_machine &machine, void *arg, astring *str, INT32 newval) +static INT32 slider_bloom_lvl10_scale(running_machine &machine, void *arg, std::string *str, INT32 newval) { ((hlsl_options*)arg)->params_dirty = true; return slider_set(&(((hlsl_options*)arg)->bloom_level10_weight), 0.01f, "%1.2f", str, newval); @@ -3393,30 +3393,30 @@ static file_error open_next(d3d::renderer *d3d, emu_file &file, const char *temp if (snapname == NULL || snapname[0] == 0) snapname = "%g/%i"; - astring snapstr(snapname); + std::string snapstr(snapname); // strip any extension in the provided name - int index = snapstr.rchr(0, '.'); + int index = snapstr.find_last_of('.'); if (index != -1) snapstr.substr(0, index); // handle %d in the template (for image devices) - astring snapdev("%d_"); - int pos = snapstr.find(0, snapdev.c_str()); + std::string snapdev("%d_"); + int pos = snapstr.find(snapdev,0); if (pos != -1) { // if more %d are found, revert to default and ignore them all - if (snapstr.find(pos + 3, snapdev.c_str()) != -1) - snapstr.cpy("%g/%i"); + if (snapstr.find(snapdev, pos + 3) != -1) + snapstr.assign("%g/%i"); // else if there is a single %d, try to create the correct snapname else { int name_found = 0; // find length of the device name - int end1 = snapstr.find(pos + 3, "/"); - int end2 = snapstr.find(pos + 3, "%"); + int end1 = snapstr.find("/", pos + 3); + int end2 = snapstr.find("%", pos + 3); int end = -1; if ((end1 != -1) && (end2 != -1)) @@ -3426,35 +3426,35 @@ static file_error open_next(d3d::renderer *d3d, emu_file &file, const char *temp else if (end2 != -1) end = end2; else - end = snapstr.len(); + end = snapstr.length(); if (end - pos < 3) fatalerror("Something very wrong is going on!!!\n"); // copy the device name to an astring - astring snapdevname; - snapdevname.cpysubstr(snapstr, pos + 3, end - pos - 3); + std::string snapdevname; + snapdevname.assign(snapstr.substr(pos + 3, end - pos - 3)); // verify that there is such a device for this system image_interface_iterator iter(d3d->window().machine().root_device()); for (device_image_interface *image = iter.first(); image != NULL; iter.next()) { // get the device name - astring tempdevname(image->brief_instance_name()); + std::string tempdevname(image->brief_instance_name()); - if (snapdevname.cmp(tempdevname) == 0) + if (snapdevname.compare(tempdevname) == 0) { // verify that such a device has an image mounted if (image->basename() != NULL) { - astring filename(image->basename()); + std::string filename(image->basename()); // strip extension - filename.substr(0, filename.rchr(0, '.')); + filename.substr(0, filename.find_last_of('.')); // setup snapname and remove the %d_ - snapstr.replace(0, snapdevname.c_str(), filename.c_str()); - snapstr.del(pos, 3); + strreplace(snapstr, snapdevname.c_str(), filename.c_str()); + snapstr.erase(pos, 3); name_found = 1; } @@ -3463,33 +3463,34 @@ static file_error open_next(d3d::renderer *d3d, emu_file &file, const char *temp // or fallback to default if (name_found == 0) - snapstr.cpy("%g/%i"); + snapstr.assign("%g/%i"); } } // add our own index // add our own extension - snapstr.cat(".").cat(extension); + snapstr.append(".").append(extension); // substitute path and gamename up front - snapstr.replace(0, "/", PATH_SEPARATOR); - snapstr.replace(0, "%g", d3d->window().machine().basename()); + strreplace(snapstr, "/", PATH_SEPARATOR); + strreplace(snapstr, "%g", d3d->window().machine().basename()); // determine if the template has an index; if not, we always use the same name - astring fname; - if (snapstr.find(0, "%i") == -1) - fname.cpy(snapstr); + std::string fname; + if (snapstr.find("%i") == -1) + fname.assign(snapstr); // otherwise, we scan for the next available filename else { // try until we succeed - astring seqtext; + std::string seqtext; file.set_openflags(OPEN_FLAG_READ); for (int seq = 0; ; seq++) { // build up the filename - fname.cpy(snapstr).replace(0, "%i", seqtext.format("%04d_%d", seq, idx).c_str()); + strprintf(seqtext, "%04d_%d", seq, idx); + strreplace(fname.assign(snapstr), "%i", seqtext.c_str()); // try to open the file; stop when we fail file_error filerr = file.open(fname.c_str()); diff --git a/src/osd/modules/render/d3d/d3dhlsl.h b/src/osd/modules/render/d3d/d3dhlsl.h index 8b8904123b2..b86af5a1bac 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.h +++ b/src/osd/modules/render/d3d/d3dhlsl.h @@ -302,7 +302,7 @@ public: int defval; int maxval; int step; - INT32 (*adjustor)(running_machine &, void *, astring *, INT32); + INT32(*adjustor)(running_machine &, void *, std::string *, INT32); }; private: diff --git a/src/osd/sdl/input.c b/src/osd/sdl/input.c index 5fab6a71fde..e2fd01298bf 100644 --- a/src/osd/sdl/input.c +++ b/src/osd/sdl/input.c @@ -132,7 +132,7 @@ struct device_info // device information device_info ** head; device_info * next; - astring name; + std::string name; // MAME information input_device * device; diff --git a/src/osd/sdl/osdsdl.h b/src/osd/sdl/osdsdl.h index c1dd01cd837..6e58053d778 100644 --- a/src/osd/sdl/osdsdl.h +++ b/src/osd/sdl/osdsdl.h @@ -119,12 +119,12 @@ public: const char *ui_mode_key() const { return value(SDLOPTION_UIMODEKEY); } // joystick mapping - const char *joy_index(int index) const { astring temp; return value(temp.format("%s%d", SDLOPTION_JOYINDEX, index).c_str()); } + const char *joy_index(int index) const { std::string temp; return value(temp.format("%s%d", SDLOPTION_JOYINDEX, index).c_str()); } bool sixaxis() const { return bool_value(SDLOPTION_SIXAXIS); } #if (SDLMAME_SDL2) - const char *mouse_index(int index) const { astring temp; return value(temp.format("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); } - const char *keyboard_index(int index) const { astring temp; return value(temp.format("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); } + const char *mouse_index(int index) const { std::string temp; return value(temp.format("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); } + const char *keyboard_index(int index) const { std::string temp; return value(temp.format("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); } #endif const char *video_driver() const { return value(SDLOPTION_VIDEODRIVER); } diff --git a/src/osd/sdl/sdlmain.c b/src/osd/sdl/sdlmain.c index c4c2e8a1d36..823b20fc561 100644 --- a/src/osd/sdl/sdlmain.c +++ b/src/osd/sdl/sdlmain.c @@ -209,7 +209,7 @@ void MorphToPM() sdl_options::sdl_options() : osd_options() { - astring ini_path(INI_PATH); + std::string ini_path(INI_PATH); add_entries(sdl_options::s_option_entries); ini_path.replace(0, "APP_NAME", emulator_info::get_appname_lower()); set_default_value(SDLOPTION_INIPATH, ini_path.c_str()); @@ -493,7 +493,7 @@ void sdl_osd_interface::init(running_machine &machine) // determine if we are benchmarking, and adjust options appropriately int bench = options().bench(); - astring error_string; + std::string error_string; if (bench > 0) { options().set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string); diff --git a/src/osd/windows/winmain.c b/src/osd/windows/winmain.c index 7cd0fb6bfcb..cc6fd4c2dd9 100644 --- a/src/osd/windows/winmain.c +++ b/src/osd/windows/winmain.c @@ -134,8 +134,8 @@ private: // internal helpers bool query_system_for_address(FPTR address); void scan_file_for_address(FPTR address, bool create_cache); - bool parse_sym_line(const char *line, FPTR &address, astring &symbol); - bool parse_map_line(const char *line, FPTR &address, astring &symbol); + bool parse_sym_line(const char *line, FPTR &address, std::string &symbol); + bool parse_map_line(const char *line, FPTR &address, std::string &symbol); void scan_cache_for_address(FPTR address); void format_symbol(const char *name, UINT32 displacement, const char *filename = NULL, int linenumber = 0); @@ -149,13 +149,13 @@ private: cache_entry * m_next; FPTR m_address; - astring m_name; + std::string m_name; }; simple_list m_cache; - astring m_mapfile; - astring m_symfile; - astring m_buffer; + std::string m_mapfile; + std::string m_symfile; + std::string m_buffer; HANDLE m_process; FPTR m_last_base; FPTR m_text_base; @@ -544,7 +544,7 @@ void windows_osd_interface::init(running_machine &machine) // determine if we are benchmarking, and adjust options appropriately int bench = options.bench(); - astring error_string; + std::string error_string; if (bench > 0) { options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string); @@ -587,10 +587,10 @@ void windows_osd_interface::init(running_machine &machine) osd_common_t::init_subsystems(); // notify listeners of screen configuration - astring tempstring; + std::string tempstring; for (win_window_info *info = win_window_list; info != NULL; info = info->m_next) { - tempstring.printf("Orientation(%s)", info->m_monitor->devicename()); + strprintf(tempstring, "Orientation(%s)", info->m_monitor->devicename()); output_set_value(tempstring.c_str(), info->m_targetorient); } @@ -1010,23 +1010,23 @@ symbol_manager::symbol_manager(const char *argv0) { #ifdef __GNUC__ // compute the name of the mapfile - int extoffs = m_mapfile.rchr(0, '.'); + int extoffs = m_mapfile.find_last_of('.'); if (extoffs != -1) m_mapfile.substr(0, extoffs); - m_mapfile.cat(".map"); + m_mapfile.append(".map"); // and the name of the symfile - extoffs = m_symfile.rchr(0, '.'); + extoffs = m_symfile.find_last_of('.'); if (extoffs != -1) - m_symfile.substr(0, extoffs); - m_symfile.cat(".sym"); + m_symfile = m_symfile.substr(0, extoffs); + m_symfile.append(".sym"); // figure out the base of the .text section m_text_base = get_text_section_base(); #endif // expand the buffer to be decently large up front - m_buffer.printf("%500s", ""); + strprintf(m_buffer,"%500s", ""); } @@ -1048,7 +1048,7 @@ symbol_manager::~symbol_manager() const char *symbol_manager::symbol_for_address(FPTR address) { // default the buffer - m_buffer.cpy(" (not found)"); + m_buffer.assign(" (not found)"); m_last_base = 0; // first try to do it using system APIs @@ -1129,11 +1129,11 @@ void symbol_manager::scan_file_for_address(FPTR address, bool create_cache) return; // reset the best info - astring best_symbol; + std::string best_symbol; FPTR best_addr = 0; // parse the file, looking for valid entries - astring symbol; + std::string symbol; char line[1024]; while (fgets(line, sizeof(line) - 1, srcfile)) { @@ -1174,7 +1174,7 @@ void symbol_manager::scan_file_for_address(FPTR address, bool create_cache) void symbol_manager::scan_cache_for_address(FPTR address) { // reset the best info - astring best_symbol; + std::string best_symbol; FPTR best_addr = 0; // walk the cache, looking for valid entries @@ -1198,7 +1198,7 @@ void symbol_manager::scan_cache_for_address(FPTR address) // which is just the output of objdump //------------------------------------------------- -bool symbol_manager::parse_sym_line(const char *line, FPTR &address, astring &symbol) +bool symbol_manager::parse_sym_line(const char *line, FPTR &address, std::string &symbol) { #ifdef __GNUC__ /* @@ -1238,8 +1238,8 @@ bool symbol_manager::parse_sym_line(const char *line, FPTR &address, astring &sy chptr++; // extract the symbol name - symbol.cpy(chptr).trimspace(); - return (symbol.len() > 0); + strtrimspace(symbol.assign(chptr)); + return (symbol.length() > 0); } } #endif @@ -1252,7 +1252,7 @@ bool symbol_manager::parse_sym_line(const char *line, FPTR &address, astring &sy // generated map file //------------------------------------------------- -bool symbol_manager::parse_map_line(const char *line, FPTR &address, astring &symbol) +bool symbol_manager::parse_map_line(const char *line, FPTR &address, std::string &symbol) { #ifdef __GNUC__ /* @@ -1278,8 +1278,8 @@ bool symbol_manager::parse_map_line(const char *line, FPTR &address, astring &sy chptr++; // extract the symbol name - symbol.cpy(chptr).trimspace(); - return (symbol.len() > 0); + strtrimspace(symbol.assign(chptr)); + return (symbol.length() > 0); } #endif return false; @@ -1293,16 +1293,16 @@ bool symbol_manager::parse_map_line(const char *line, FPTR &address, astring &sy void symbol_manager::format_symbol(const char *name, UINT32 displacement, const char *filename, int linenumber) { // start with the address and offset - m_buffer.printf(" (%s", name); + strprintf(m_buffer, " (%s", name); if (displacement != 0) - m_buffer.catprintf("+0x%04x", (UINT32)displacement); + strcatprintf(m_buffer, "+0x%04x", (UINT32)displacement); // append file/line if present if (filename != NULL) - m_buffer.catprintf(", %s:%d", filename, linenumber); + strcatprintf(m_buffer, ", %s:%d", filename, linenumber); // close up the string - m_buffer.cat(")"); + m_buffer.append(")"); } diff --git a/src/tools/chdman.c b/src/tools/chdman.c index 4e73fc5f9f8..3ea0a31f752 100644 --- a/src/tools/chdman.c +++ b/src/tools/chdman.c @@ -96,7 +96,7 @@ const int MODE_GDI = 2; // FUNCTION PROTOTYPES //************************************************************************** -typedef tagmap_t parameters_t; +typedef tagmap_t parameters_t; static void report_error(int error, const char *format, ...) ATTR_PRINTF(2,3); static void do_info(parameters_t ¶ms); @@ -320,7 +320,7 @@ public: if (offset >= startoffs && offset < endoffs) { // if we don't already have this file open, open it now - if (m_file == NULL || m_lastfile.cmp(m_info.track[tracknum].fname)!=0) + if (m_file == NULL || m_lastfile.compare(m_info.track[tracknum].fname)!=0) { if (m_file != NULL) core_fclose(m_file); @@ -381,7 +381,7 @@ public: private: // internal state - astring m_lastfile; + std::string m_lastfile; core_file * m_file; cdrom_toc & m_toc; chdcd_track_input_info & m_info; @@ -826,27 +826,27 @@ static int print_help(const char *argv0, const command_description &desc, const // big_int_string - create a 64-bit string //------------------------------------------------- -const char *big_int_string(astring &str, UINT64 intvalue) +const char *big_int_string(std::string &str, UINT64 intvalue) { // 0 is a special case if (intvalue == 0) - return str.cpy("0").c_str(); + return str.assign("0").c_str(); // loop until all chunks are done - str.reset(); + str.clear(); bool first = true; while (intvalue != 0) { int chunk = intvalue % 1000; intvalue /= 1000; - astring insert; - insert.format((intvalue != 0) ? "%03d" : "%d", chunk); + std::string insert; + strprintf(insert, (intvalue != 0) ? "%03d" : "%d", chunk); if (!first) - str.ins(0, ",").c_str(); + str.insert(0, ",").c_str(); first = false; - str.ins(0, insert); + str.insert(0, insert); } return str.c_str(); } @@ -857,9 +857,10 @@ const char *big_int_string(astring &str, UINT64 intvalue) // number of frames in M:S:F format //------------------------------------------------- -const char *msf_string_from_frames(astring &str, UINT32 frames) +const char *msf_string_from_frames(std::string &str, UINT32 frames) { - return str.format("%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75).c_str(); + strprintf(str, "%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75); + return str.c_str(); } @@ -900,7 +901,7 @@ UINT64 parse_number(const char *string) // compute a best guess CHS value set //------------------------------------------------- -static void guess_chs(astring *filename, UINT64 filesize, int sectorsize, UINT32 &cylinders, UINT32 &heads, UINT32 §ors, UINT32 &bps) +static void guess_chs(std::string *filename, UINT64 filesize, int sectorsize, UINT32 &cylinders, UINT32 &heads, UINT32 §ors, UINT32 &bps) { // if this is a direct physical drive read, handle it specially if (filename != NULL && osd_get_physical_drive_geometry(filename->c_str(), &cylinders, &heads, §ors, &bps)) @@ -939,7 +940,7 @@ static void guess_chs(astring *filename, UINT64 filesize, int sectorsize, UINT32 static void parse_input_chd_parameters(const parameters_t ¶ms, chd_file &input_chd, chd_file &input_parent_chd, bool writeable = false) { // process input parent file - astring *input_chd_parent_str = params.find(OPTION_INPUT_PARENT); + std::string *input_chd_parent_str = params.find(OPTION_INPUT_PARENT); if (input_chd_parent_str != NULL) { chd_error err = input_parent_chd.open(input_chd_parent_str->c_str()); @@ -948,7 +949,7 @@ static void parse_input_chd_parameters(const parameters_t ¶ms, chd_file &inp } // process input file - astring *input_chd_str = params.find(OPTION_INPUT); + std::string *input_chd_str = params.find(OPTION_INPUT); if (input_chd_str != NULL) { chd_error err = input_chd.open(input_chd_str->c_str(), writeable, input_parent_chd.opened() ? &input_parent_chd : NULL); @@ -970,9 +971,9 @@ static void parse_input_start_end(const parameters_t ¶ms, UINT64 logical_siz input_end = logical_size; // process input start - astring *input_start_byte_str = params.find(OPTION_INPUT_START_BYTE); - astring *input_start_hunk_str = params.find(OPTION_INPUT_START_HUNK); - astring *input_start_frame_str = params.find(OPTION_INPUT_START_FRAME); + std::string *input_start_byte_str = params.find(OPTION_INPUT_START_BYTE); + std::string *input_start_hunk_str = params.find(OPTION_INPUT_START_HUNK); + std::string *input_start_frame_str = params.find(OPTION_INPUT_START_FRAME); if (input_start_byte_str != NULL) input_start = parse_number(input_start_byte_str->c_str()); if (input_start_hunk_str != NULL) @@ -983,9 +984,9 @@ static void parse_input_start_end(const parameters_t ¶ms, UINT64 logical_siz report_error(1, "Input start offset greater than input file size"); // process input length - astring *input_length_bytes_str = params.find(OPTION_INPUT_LENGTH_BYTES); - astring *input_length_hunks_str = params.find(OPTION_INPUT_LENGTH_HUNKS); - astring *input_length_frames_str = params.find(OPTION_INPUT_LENGTH_FRAMES); + std::string *input_length_bytes_str = params.find(OPTION_INPUT_LENGTH_BYTES); + std::string *input_length_hunks_str = params.find(OPTION_INPUT_LENGTH_HUNKS); + std::string *input_length_frames_str = params.find(OPTION_INPUT_LENGTH_FRAMES); UINT64 input_length = input_end; if (input_length_bytes_str != NULL) input_length = parse_number(input_length_bytes_str->c_str()); @@ -1024,10 +1025,10 @@ static void check_existing_output_file(const parameters_t ¶ms, const char *f // standard set of output CHD parameters //------------------------------------------------- -static astring *parse_output_chd_parameters(const parameters_t ¶ms, chd_file &output_parent_chd) +static std::string *parse_output_chd_parameters(const parameters_t ¶ms, chd_file &output_parent_chd) { // process output parent file - astring *output_chd_parent_str = params.find(OPTION_OUTPUT_PARENT); + std::string *output_chd_parent_str = params.find(OPTION_OUTPUT_PARENT); if (output_chd_parent_str != NULL) { chd_error err = output_parent_chd.open(output_chd_parent_str->c_str()); @@ -1036,7 +1037,7 @@ static astring *parse_output_chd_parameters(const parameters_t ¶ms, chd_file } // process output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) check_existing_output_file(params, output_chd_str->c_str()); return output_chd_str; @@ -1050,7 +1051,7 @@ static astring *parse_output_chd_parameters(const parameters_t ¶ms, chd_file static void parse_hunk_size(const parameters_t ¶ms, UINT32 required_granularity, UINT32 &hunk_size) { - astring *hunk_size_str = params.find(OPTION_HUNK_SIZE); + std::string *hunk_size_str = params.find(OPTION_HUNK_SIZE); if (hunk_size_str != NULL) { hunk_size = parse_number(hunk_size_str->c_str()); @@ -1070,12 +1071,12 @@ static void parse_hunk_size(const parameters_t ¶ms, UINT32 required_granular static void parse_compression(const parameters_t ¶ms, chd_codec_type compression[4]) { // see if anything was specified - astring *compression_str = params.find(OPTION_COMPRESSION); + std::string *compression_str = params.find(OPTION_COMPRESSION); if (compression_str == NULL) return; // special case: 'none' - if (compression_str->cmp("none")==0) + if (compression_str->compare("none")==0) { compression[0] = compression[1] = compression[2] = compression[3] = CHD_CODEC_NONE; return; @@ -1083,10 +1084,10 @@ static void parse_compression(const parameters_t ¶ms, chd_codec_type compres // iterate through compressors int index = 0; - for (int start = 0, end = compression_str->chr(0, ','); index < 4; start = end + 1, end = compression_str->chr(end + 1, ',')) + for (int start = 0, end = compression_str->find_first_of(','); index < 4; start = end + 1, end = compression_str->find_first_of(',', end + 1)) { - astring name(*compression_str, start, (end == -1) ? -1 : end - start); - if (name.len() != 4) + std::string name(*compression_str, start, (end == -1) ? -1 : end - start); + if (name.length() != 4) report_error(1, "Invalid compressor '%s' specified", name.c_str()); chd_codec_type type = CHD_MAKE_TAG(name[0], name[1], name[2], name[3]); if (!chd_codec_list::codec_exists(type)) @@ -1110,7 +1111,7 @@ static void parse_compression(const parameters_t ¶ms, chd_codec_type compres static void parse_numprocessors(const parameters_t ¶ms) { - astring *numprocessors_str = params.find(OPTION_NUMPROCESSORS); + std::string *numprocessors_str = params.find(OPTION_NUMPROCESSORS); if (numprocessors_str == NULL) return; @@ -1128,12 +1129,12 @@ static void parse_numprocessors(const parameters_t ¶ms) // describing a set of compressors //------------------------------------------------- -static const char *compression_string(astring &str, chd_codec_type compression[4]) +static const char *compression_string(std::string &str, chd_codec_type compression[4]) { // output compression types - str.reset(); + str.clear(); if (compression[0] == CHD_CODEC_NONE) - return str.cpy("none").c_str(); + return str.assign("none").c_str(); // iterate over types for (int index = 0; index < 4; index++) @@ -1142,9 +1143,12 @@ static const char *compression_string(astring &str, chd_codec_type compression[4 if (type == CHD_CODEC_NONE) break; if (index != 0) - str.cat(", "); - str.cat((type >> 24) & 0xff).cat((type >> 16) & 0xff).cat((type >> 8) & 0xff).cat(type & 0xff); - str.cat(" (").cat(chd_codec_list::codec_name(type)).cat(")"); + str.append(", "); + str.push_back((type >> 24) & 0xff); + str.push_back((type >> 16) & 0xff); + str.push_back((type >> 8) & 0xff); + str.push_back(type & 0xff); + str.append(" (").append(chd_codec_list::codec_name(type)).append(")"); } return str.c_str(); } @@ -1240,12 +1244,12 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ core_fprintf(file, "FILE \"%s\" BINARY\n", filename); // determine submode - astring tempstr; + std::string tempstr; switch (info.trktype) { case CD_TRACK_MODE1: case CD_TRACK_MODE1_RAW: - tempstr.format("MODE1/%04d", info.datasize); + strprintf(tempstr,"MODE1/%04d", info.datasize); break; case CD_TRACK_MODE2: @@ -1253,11 +1257,11 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ case CD_TRACK_MODE2_FORM2: case CD_TRACK_MODE2_FORM_MIX: case CD_TRACK_MODE2_RAW: - tempstr.format("MODE2/%04d", info.datasize); + strprintf(tempstr,"MODE2/%04d", info.datasize); break; case CD_TRACK_AUDIO: - tempstr.cpy("AUDIO"); + tempstr.assign("AUDIO"); break; } @@ -1295,11 +1299,11 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ core_fprintf(file, "// Track %d\n", tracknum + 1); // write out the track type - astring modesubmode; + std::string modesubmode; if (info.subtype != CD_SUB_NONE) - modesubmode.format("%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype)); + strprintf(modesubmode,"%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype)); else - modesubmode.format("%s", cdrom_get_type_string(info.trktype)); + strprintf(modesubmode,"%s", cdrom_get_type_string(info.trktype)); core_fprintf(file, "TRACK %s\n", modesubmode.c_str()); // write out the attributes @@ -1311,7 +1315,7 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ } // output pregap - astring tempstr; + std::string tempstr; if (info.pregap > 0) core_fprintf(file, "ZERO %s %s\n", modesubmode.c_str(), msf_string_from_frames(tempstr, info.pregap)); @@ -1343,7 +1347,7 @@ static void do_info(parameters_t ¶ms) parse_input_chd_parameters(params, input_chd, input_parent_chd); // print filename and version - astring tempstr; + std::string tempstr; printf("Input file: %s\n", params.find(OPTION_INPUT)->c_str()); printf("File Version: %d\n", input_chd.version()); if (input_chd.version() < 3) @@ -1467,7 +1471,7 @@ static void do_info(parameters_t ¶ms) } // output the stats - astring tempstr; + std::string tempstr; printf("%10s %5.1f%% %-40s\n", big_int_string(tempstr, compression_types[comptype]), 100.0 * double(compression_types[comptype]) / double(input_chd.hunk_count()), @@ -1519,7 +1523,7 @@ static void do_verify(parameters_t ¶ms) // finish up if (raw_sha1 != computed_sha1) { - astring tempstr; + std::string tempstr; fprintf(stderr, "Error: Raw SHA1 in header = %s\n", raw_sha1.as_string(tempstr)); fprintf(stderr, " actual SHA1 = %s\n", computed_sha1.as_string(tempstr)); @@ -1542,7 +1546,7 @@ static void do_verify(parameters_t ¶ms) printf("Overall SHA1 verification successful!\n"); else { - astring tempstr; + std::string tempstr; fprintf(stderr, "Error: Overall SHA1 in header = %s\n", input_chd.sha1().as_string(tempstr)); fprintf(stderr, " actual SHA1 = %s\n", computed_overall_sha1.as_string(tempstr)); @@ -1567,7 +1571,7 @@ static void do_create_raw(parameters_t ¶ms) { // process input file core_file *input_file = NULL; - astring *input_file_str = params.find(OPTION_INPUT); + std::string *input_file_str = params.find(OPTION_INPUT); if (input_file_str != NULL) { file_error filerr = core_fopen(input_file_str->c_str(), OPEN_FLAG_READ, &input_file); @@ -1577,7 +1581,7 @@ static void do_create_raw(parameters_t ¶ms) // process output CHD chd_file output_parent; - astring *output_chd_str = parse_output_chd_parameters(params, output_parent); + std::string *output_chd_str = parse_output_chd_parameters(params, output_parent); // process hunk size UINT32 hunk_size = output_parent.opened() ? output_parent.hunk_bytes() : 0; @@ -1585,7 +1589,7 @@ static void do_create_raw(parameters_t ¶ms) // process unit size UINT32 unit_size = output_parent.opened() ? output_parent.unit_bytes() : 0; - astring *unit_size_str = params.find(OPTION_UNIT_SIZE); + std::string *unit_size_str = params.find(OPTION_UNIT_SIZE); if (unit_size_str != NULL) { unit_size = parse_number(unit_size_str->c_str()); @@ -1607,7 +1611,7 @@ static void do_create_raw(parameters_t ¶ms) parse_numprocessors(params); // print some info - astring tempstr; + std::string tempstr; printf("Output CHD: %s\n", output_chd_str->c_str()); if (output_parent.opened()) printf("Parent CHD: %s\n", params.find(OPTION_OUTPUT_PARENT)->c_str()); @@ -1647,7 +1651,7 @@ static void do_create_raw(parameters_t ¶ms) { delete chd; // delete the output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) osd_rmfile(output_chd_str->c_str()); throw; @@ -1664,7 +1668,7 @@ static void do_create_hd(parameters_t ¶ms) { // process input file core_file *input_file = NULL; - astring *input_file_str = params.find(OPTION_INPUT); + std::string *input_file_str = params.find(OPTION_INPUT); if (input_file_str != NULL) { file_error filerr = core_fopen(input_file_str->c_str(), OPEN_FLAG_READ, &input_file); @@ -1674,11 +1678,11 @@ static void do_create_hd(parameters_t ¶ms) // process output CHD chd_file output_parent; - astring *output_chd_str = parse_output_chd_parameters(params, output_parent); + std::string *output_chd_str = parse_output_chd_parameters(params, output_parent); // process sectorsize UINT32 sector_size = output_parent.opened() ? output_parent.unit_bytes() : IDE_SECTOR_SIZE; - astring *sectorsize_str = params.find(OPTION_SECTOR_SIZE); + std::string *sectorsize_str = params.find(OPTION_SECTOR_SIZE); if (sectorsize_str != NULL) { if (output_parent.opened()) @@ -1701,7 +1705,7 @@ static void do_create_hd(parameters_t ¶ms) } else { - astring *size_str = params.find(OPTION_SIZE); + std::string *size_str = params.find(OPTION_SIZE); if (size_str != NULL) { if (sscanf(size_str->c_str(), "%" I64FMT"d", &filesize) != 1) @@ -1725,7 +1729,7 @@ static void do_create_hd(parameters_t ¶ms) UINT32 cylinders = 0; UINT32 heads = 0; UINT32 sectors = 0; - astring *chs_str = params.find(OPTION_CHS); + std::string *chs_str = params.find(OPTION_CHS); if (chs_str != NULL) { if (output_parent.opened()) @@ -1738,7 +1742,7 @@ static void do_create_hd(parameters_t ¶ms) dynamic_buffer identdata; if (output_parent.opened()) output_parent.read_metadata(HARD_DISK_IDENT_METADATA_TAG, 0, identdata); - astring *ident_str = params.find(OPTION_IDENT); + std::string *ident_str = params.find(OPTION_IDENT); if (ident_str != NULL) { // load the file @@ -1757,7 +1761,7 @@ static void do_create_hd(parameters_t ¶ms) // extract geometry from the parent if we have one if (output_parent.opened() && cylinders == 0) { - astring metadata; + std::string metadata; if (output_parent.read_metadata(HARD_DISK_METADATA_TAG, 0, metadata) != CHDERR_NONE) report_error(1, "Unable to find hard disk metadata in parent CHD"); if (sscanf(metadata.c_str(), HARD_DISK_METADATA_FORMAT, &cylinders, &heads, §ors, §or_size) != 4) @@ -1778,7 +1782,7 @@ static void do_create_hd(parameters_t ¶ms) UINT32 totalsectors = cylinders * heads * sectors; // print some info - astring tempstr; + std::string tempstr; printf("Output CHD: %s\n", output_chd_str->c_str()); if (output_parent.opened()) printf("Parent CHD: %s\n", params.find(OPTION_OUTPUT_PARENT)->c_str()); @@ -1814,8 +1818,8 @@ static void do_create_hd(parameters_t ¶ms) report_error(1, "Error creating CHD file (%s): %s", output_chd_str->c_str(), chd_file::error_string(err)); // add the standard hard disk metadata - astring metadata; - metadata.format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sector_size); + std::string metadata; + strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sector_size); err = chd->write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); if (err != CHDERR_NONE) report_error(1, "Error adding hard disk metadata: %s", chd_file::error_string(err)); @@ -1837,7 +1841,7 @@ static void do_create_hd(parameters_t ¶ms) { delete chd; // delete the output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) osd_rmfile(output_chd_str->c_str()); throw; @@ -1855,7 +1859,7 @@ static void do_create_cd(parameters_t ¶ms) // process input file chdcd_track_input_info track_info; cdrom_toc toc = { 0 }; - astring *input_file_str = params.find(OPTION_INPUT); + std::string *input_file_str = params.find(OPTION_INPUT); if (input_file_str != NULL) { chd_error err = chdcd_parse_toc(input_file_str->c_str(), toc, track_info); @@ -1865,7 +1869,7 @@ static void do_create_cd(parameters_t ¶ms) // process output CHD chd_file output_parent; - astring *output_chd_str = parse_output_chd_parameters(params, output_parent); + std::string *output_chd_str = parse_output_chd_parameters(params, output_parent); // process hunk size UINT32 hunk_size = output_parent.opened() ? output_parent.hunk_bytes() : CD_FRAMES_PER_HUNK * CD_FRAME_SIZE; @@ -1892,7 +1896,7 @@ static void do_create_cd(parameters_t ¶ms) } // print some info - astring tempstr; + std::string tempstr; printf("Output CHD: %s\n", output_chd_str->c_str()); if (output_parent.opened()) printf("Parent CHD: %s\n", params.find(OPTION_OUTPUT_PARENT)->c_str()); @@ -1929,7 +1933,7 @@ static void do_create_cd(parameters_t ¶ms) { delete chd; // delete the output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) osd_rmfile(output_chd_str->c_str()); throw; @@ -1946,7 +1950,7 @@ static void do_create_ld(parameters_t ¶ms) { // process input file avi_file *input_file = NULL; - astring *input_file_str = params.find(OPTION_INPUT); + std::string *input_file_str = params.find(OPTION_INPUT); if (input_file_str != NULL) { avi_error avierr = avi_open(input_file_str->c_str(), &input_file); @@ -1957,7 +1961,7 @@ static void do_create_ld(parameters_t ¶ms) // process output CHD chd_file output_parent; - astring *output_chd_str = parse_output_chd_parameters(params, output_parent); + std::string *output_chd_str = parse_output_chd_parameters(params, output_parent); // process input start/end UINT64 input_start; @@ -2002,7 +2006,7 @@ static void do_create_ld(parameters_t ¶ms) parse_numprocessors(params); // print some info - astring tempstr; + std::string tempstr; printf("Output CHD: %s\n", output_chd_str->c_str()); if (output_parent.opened()) printf("Parent CHD: %s\n", params.find(OPTION_OUTPUT_PARENT)->c_str()); @@ -2035,8 +2039,8 @@ static void do_create_ld(parameters_t ¶ms) report_error(1, "Error creating CHD file (%s): %s", output_chd_str->c_str(), chd_file::error_string(err)); // write the core A/V metadata - astring metadata; - metadata.format(AV_METADATA_FORMAT, info.fps_times_1million / 1000000, info.fps_times_1million % 1000000, info.width, info.height, info.interlaced, info.channels, info.rate); + std::string metadata; + strprintf(metadata, AV_METADATA_FORMAT, info.fps_times_1million / 1000000, info.fps_times_1million % 1000000, info.width, info.height, info.interlaced, info.channels, info.rate); err = chd->write_metadata(AV_METADATA_TAG, 0, metadata); if (err != CHDERR_NONE) report_error(1, "Error adding AV metadata: %s\n", chd_file::error_string(err)); @@ -2057,7 +2061,7 @@ static void do_create_ld(parameters_t ¶ms) { delete chd; // delete the output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) osd_rmfile(output_chd_str->c_str()); throw; @@ -2084,7 +2088,7 @@ static void do_copy(parameters_t ¶ms) // process output CHD chd_file output_parent; - astring *output_chd_str = parse_output_chd_parameters(params, output_parent); + std::string *output_chd_str = parse_output_chd_parameters(params, output_parent); // process hunk size UINT32 hunk_size = input_chd.hunk_bytes(); @@ -2115,7 +2119,7 @@ static void do_copy(parameters_t ¶ms) parse_numprocessors(params); // print some info - astring tempstr; + std::string tempstr; printf("Output CHD: %s\n", output_chd_str->c_str()); if (output_parent.opened()) printf("Parent CHD: %s\n", params.find(OPTION_OUTPUT_PARENT)->c_str()); @@ -2193,7 +2197,7 @@ static void do_copy(parameters_t ¶ms) { delete chd; // delete the output file - astring *output_chd_str = params.find(OPTION_OUTPUT); + std::string *output_chd_str = params.find(OPTION_OUTPUT); if (output_chd_str != NULL) osd_rmfile(output_chd_str->c_str()); throw; @@ -2219,12 +2223,12 @@ static void do_extract_raw(parameters_t ¶ms) parse_input_start_end(params, input_chd.logical_bytes(), input_chd.hunk_bytes(), input_chd.hunk_bytes(), input_start, input_end); // verify output file doesn't exist - astring *output_file_str = params.find(OPTION_OUTPUT); + std::string *output_file_str = params.find(OPTION_OUTPUT); if (output_file_str != NULL) check_existing_output_file(params, output_file_str->c_str()); // print some info - astring tempstr; + std::string tempstr; printf("Output File: %s\n", output_file_str->c_str()); printf("Input CHD: %s\n", params.find(OPTION_INPUT)->c_str()); if (input_start != 0 || input_end != input_chd.logical_bytes()) @@ -2299,25 +2303,25 @@ static void do_extract_cd(parameters_t ¶ms) const cdrom_toc *toc = cdrom_get_toc(cdrom); // verify output file doesn't exist - astring *output_file_str = params.find(OPTION_OUTPUT); + std::string *output_file_str = params.find(OPTION_OUTPUT); if (output_file_str != NULL) check_existing_output_file(params, output_file_str->c_str()); // verify output BIN file doesn't exist - astring *output_bin_file_str = params.find(OPTION_OUTPUT_BIN); - astring default_name(*output_file_str); - int chop = default_name.rchr(0, '.'); + std::string *output_bin_file_str = params.find(OPTION_OUTPUT_BIN); + std::string default_name(*output_file_str); + int chop = default_name.find_last_of('.'); if (chop != -1) default_name.substr(0, chop); char basename[128]; strncpy(basename, default_name.c_str(), 127); - default_name.cat(".bin"); + default_name.append(".bin"); if (output_bin_file_str == NULL) output_bin_file_str = &default_name; check_existing_output_file(params, output_bin_file_str->c_str()); // print some info - astring tempstr; + std::string tempstr; printf("Output TOC: %s\n", output_file_str->c_str()); printf("Output Data: %s\n", output_bin_file_str->c_str()); printf("Input CHD: %s\n", params.find(OPTION_INPUT)->c_str()); @@ -2368,17 +2372,17 @@ static void do_extract_cd(parameters_t ¶ms) dynamic_buffer buffer; for (int tracknum = 0; tracknum < toc->numtrks; tracknum++) { - astring trackbin_name(basename); + std::string trackbin_name(basename); if (mode == MODE_GDI) { char temp[8]; sprintf(temp, "%02d", tracknum+1); - trackbin_name.cat(temp); + trackbin_name.append(temp); if (toc->tracks[tracknum].trktype == CD_TRACK_AUDIO) - trackbin_name.cat(".raw"); + trackbin_name.append(".raw"); else - trackbin_name.cat(".bin"); + trackbin_name.append(".bin"); if (output_bin_file) { @@ -2395,7 +2399,7 @@ static void do_extract_cd(parameters_t ¶ms) // output the metadata about the track to the TOC file const cdrom_track_info &trackinfo = toc->tracks[tracknum]; - astring temp; + std::string temp; if (mode == MODE_GDI) { output_track_metadata(mode, output_toc_file, tracknum, trackinfo, core_filename_extract_base(temp, trackbin_name.c_str()).c_str(), discoffs, outputoffs); @@ -2494,7 +2498,7 @@ static void do_extract_ld(parameters_t ¶ms) parse_input_chd_parameters(params, input_chd, input_parent_chd); // read core metadata - astring metadata; + std::string metadata; chd_error err = input_chd.read_metadata(AV_METADATA_TAG, 0, metadata); if (err != CHDERR_NONE) report_error(1, "Unable to find A/V metadata in the input CHD"); @@ -2546,12 +2550,12 @@ static void do_extract_ld(parameters_t ¶ms) info.audio_samplerate = rate; // verify output file doesn't exist - astring *output_file_str = params.find(OPTION_OUTPUT); + std::string *output_file_str = params.find(OPTION_OUTPUT); if (output_file_str != NULL) check_existing_output_file(params, output_file_str->c_str()); // print some info - astring tempstr; + std::string tempstr; printf("Output File: %s\n", output_file_str->c_str()); printf("Input CHD: %s\n", params.find(OPTION_INPUT)->c_str()); if (input_start != 0 || input_end != input_chd.hunk_count()) @@ -2645,31 +2649,31 @@ static void do_add_metadata(parameters_t ¶ms) // process tag chd_metadata_tag tag = CHD_MAKE_TAG('?','?','?','?'); - astring *tag_str = params.find(OPTION_TAG); + std::string *tag_str = params.find(OPTION_TAG); if (tag_str != NULL) { - tag_str->cat(" "); + tag_str->append(" "); tag = CHD_MAKE_TAG((*tag_str)[0], (*tag_str)[1], (*tag_str)[2], (*tag_str)[3]); } // process index UINT32 index = 0; - astring *index_str = params.find(OPTION_INDEX); + std::string *index_str = params.find(OPTION_INDEX); if (index_str != NULL) index = atoi(index_str->c_str()); // process text input - astring *text_str = params.find(OPTION_VALUE_TEXT); - astring text; + std::string *text_str = params.find(OPTION_VALUE_TEXT); + std::string text; if (text_str != NULL) { text = *text_str; - if (text[0] == '"' && text[text.len() - 1] == '"') - text.substr(1, text.len() - 2); + if (text[0] == '"' && text[text.length() - 1] == '"') + text.substr(1, text.length() - 2); } // process file input - astring *file_str = params.find(OPTION_VALUE_FILE); + std::string *file_str = params.find(OPTION_VALUE_FILE); dynamic_buffer file; if (file_str != NULL) { @@ -2690,7 +2694,7 @@ static void do_add_metadata(parameters_t ¶ms) flags &= ~CHD_MDFLAGS_CHECKSUM; // print some info - astring tempstr; + std::string tempstr; printf("Input file: %s\n", params.find(OPTION_INPUT)->c_str()); printf("Tag: %c%c%c%c\n", (tag >> 24) & 0xff, (tag >> 16) & 0xff, (tag >> 8) & 0xff, tag & 0xff); printf("Index: %d\n", index); @@ -2725,21 +2729,21 @@ static void do_del_metadata(parameters_t ¶ms) // process tag chd_metadata_tag tag = CHD_MAKE_TAG('?','?','?','?'); - astring *tag_str = params.find(OPTION_TAG); + std::string *tag_str = params.find(OPTION_TAG); if (tag_str != NULL) { - tag_str->cat(" "); + tag_str->append(" "); tag = CHD_MAKE_TAG((*tag_str)[0], (*tag_str)[1], (*tag_str)[2], (*tag_str)[3]); } // process index UINT32 index = 0; - astring *index_str = params.find(OPTION_INDEX); + std::string *index_str = params.find(OPTION_INDEX); if (index_str != NULL) index = atoi(index_str->c_str()); // print some info - astring tempstr; + std::string tempstr; printf("Input file: %s\n", params.find(OPTION_INPUT)->c_str()); printf("Tag: %c%c%c%c\n", (tag >> 24) & 0xff, (tag >> 16) & 0xff, (tag >> 8) & 0xff, tag & 0xff); printf("Index: %d\n", index); @@ -2765,22 +2769,22 @@ static void do_dump_metadata(parameters_t ¶ms) parse_input_chd_parameters(params, input_chd, input_parent_chd); // verify output file doesn't exist - astring *output_file_str = params.find(OPTION_OUTPUT); + std::string *output_file_str = params.find(OPTION_OUTPUT); if (output_file_str != NULL) check_existing_output_file(params, output_file_str->c_str()); // process tag chd_metadata_tag tag = CHD_MAKE_TAG('?','?','?','?'); - astring *tag_str = params.find(OPTION_TAG); + std::string *tag_str = params.find(OPTION_TAG); if (tag_str != NULL) { - tag_str->cat(" "); + tag_str->append(" "); tag = CHD_MAKE_TAG((*tag_str)[0], (*tag_str)[1], (*tag_str)[2], (*tag_str)[3]); } // process index UINT32 index = 0; - astring *index_str = params.find(OPTION_INDEX); + std::string *index_str = params.find(OPTION_INDEX); if (index_str != NULL) index = atoi(index_str->c_str()); @@ -2808,7 +2812,7 @@ static void do_dump_metadata(parameters_t ¶ms) core_fclose(output_file); // provide some feedback - astring tempstr; + std::string tempstr; printf("File (%s) written, %s bytes\n", output_file_str->c_str(), big_int_string(tempstr, buffer.size())); } @@ -2864,7 +2868,7 @@ int CLIB_DECL main(int argc, char *argv[]) return print_help(argv[0], desc); // otherwise, verify the parameters - tagmap_t parameters; + tagmap_t parameters; while (argnum < argc) { // should be an option name @@ -2905,7 +2909,7 @@ int CLIB_DECL main(int argc, char *argv[]) } // add to the map - if (parameters.add(odesc.name, new astring(param)) == TMERR_DUPLICATE) + if (parameters.add(odesc.name, new std::string(param)) == TMERR_DUPLICATE) return print_help(argv[0], desc, "Multiple parameters of the same type specified"); break; } diff --git a/src/tools/ldresample.c b/src/tools/ldresample.c index 26266f064ae..d22fcd7a4a9 100644 --- a/src/tools/ldresample.c +++ b/src/tools/ldresample.c @@ -167,7 +167,7 @@ static chd_error open_chd(chd_file &file, const char *filename, movie_info &info } // get the metadata - astring metadata; + std::string metadata; chderr = file.read_metadata(AV_METADATA_TAG, 0, metadata); if (chderr != CHDERR_NONE) { diff --git a/src/tools/ldverify.c b/src/tools/ldverify.c index 80094128265..020e611181c 100644 --- a/src/tools/ldverify.c +++ b/src/tools/ldverify.c @@ -183,7 +183,7 @@ static void *open_chd(const char *filename, movie_info &info) } // get the metadata - astring metadata; + std::string metadata; chderr = chd->read_metadata(AV_METADATA_TAG, 0, metadata); if (chderr != CHDERR_NONE) { diff --git a/src/tools/nltool.c b/src/tools/nltool.c index 109453581eb..b4fa261e0a7 100644 --- a/src/tools/nltool.c +++ b/src/tools/nltool.c @@ -12,7 +12,6 @@ #include #include #include -#include "astring.h" #include "corefile.h" #include "corestr.h" #include "sha1.h" @@ -205,7 +204,7 @@ private: void usage(core_options &opts) { - astring buffer; + std::string buffer; fprintf(stderr, "Usage:\n" " nltool -help\n" @@ -298,7 +297,7 @@ int main(int argc, char *argv[]) { //int result; core_options opts(oplist); - astring aerror(""); + std::string aerror(""); fprintf(stderr, "%s", "WARNING: This is Work In Progress! - It may fail anytime\n"); if (!opts.parse_command_line(argc, argv, OPTION_PRIORITY_DEFAULT, aerror)) diff --git a/src/tools/pngcmp.c b/src/tools/pngcmp.c index 3fa7e8ba724..4b0974d824f 100644 --- a/src/tools/pngcmp.c +++ b/src/tools/pngcmp.c @@ -28,7 +28,7 @@ PROTOTYPES ***************************************************************************/ -static int generate_png_diff(const astring& imgfile1, const astring& imgfile2, const astring& outfilename); +static int generate_png_diff(const std::string& imgfile1, const std::string& imgfile2, const std::string& outfilename); /*************************************************************************** MAIN @@ -46,9 +46,9 @@ int main(int argc, char *argv[]) fprintf(stderr, "Usage:\npngcmp \n"); return 10; } - astring imgfilename1(argv[1]); - astring imgfilename2(argv[2]); - astring outfilename(argv[3]); + std::string imgfilename1(argv[1]); + std::string imgfilename2(argv[2]); + std::string outfilename(argv[3]); try { return generate_png_diff(imgfilename1, imgfilename2, outfilename); @@ -66,7 +66,7 @@ int main(int argc, char *argv[]) side with a third set of differences -------------------------------------------------*/ -static int generate_png_diff(const astring& imgfile1, const astring& imgfile2, const astring& outfilename) +static int generate_png_diff(const std::string& imgfile1, const std::string& imgfile2, const std::string& outfilename) { bitmap_argb32 bitmap1; bitmap_argb32 bitmap2; diff --git a/src/tools/regrep.c b/src/tools/regrep.c index c6b27f99192..a550f86e61b 100644 --- a/src/tools/regrep.c +++ b/src/tools/regrep.c @@ -63,7 +63,7 @@ struct summary_file char source[100]; UINT8 status[MAX_COMPARES]; UINT8 matchbitmap[MAX_COMPARES]; - astring text[MAX_COMPARES]; + std::string text[MAX_COMPARES]; }; @@ -148,15 +148,15 @@ static int CLIB_DECL compare_file(const void *file0ptr, const void *file1ptr); static summary_file *sort_file_list(void); /* HTML helpers */ -static core_file *create_file_and_output_header(astring &filename, astring &templatefile, astring &title); -static void output_footer_and_close_file(core_file *file, astring &templatefile, astring &title); +static core_file *create_file_and_output_header(std::string &filename, std::string &templatefile, std::string &title); +static void output_footer_and_close_file(core_file *file, std::string &templatefile, std::string &title); /* report generators */ -static void output_report(astring &dirname, astring &tempheader, astring &tempfooter, summary_file *filelist); +static void output_report(std::string &dirname, std::string &tempheader, std::string &tempfooter, summary_file *filelist); static int compare_screenshots(summary_file *curfile); -static int generate_png_diff(const summary_file *curfile, astring &destdir, const char *destname); -static void create_linked_file(astring &dirname, const summary_file *curfile, const summary_file *prevfile, const summary_file *nextfile, const char *pngfile, astring &tempheader, astring &tempfooter); -static void append_driver_list_table(const char *header, astring &dirname, core_file *indexfile, const summary_file *listhead, astring &tempheader, astring &tempfooter); +static int generate_png_diff(const summary_file *curfile, std::string &destdir, const char *destname); +static void create_linked_file(std::string &dirname, const summary_file *curfile, const summary_file *prevfile, const summary_file *nextfile, const char *pngfile, std::string &tempheader, std::string &tempfooter); +static void append_driver_list_table(const char *header, std::string &dirname, core_file *indexfile, const summary_file *listhead, std::string &tempheader, std::string &tempfooter); @@ -229,33 +229,33 @@ int main(int argc, char *argv[]) fprintf(stderr, "Usage:\nregrep