diff options
Diffstat (limited to 'src')
186 files changed, 2890 insertions, 1578 deletions
diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp index 63788892288..55cf0b3ab65 100644 --- a/src/devices/cpu/adsp2100/adsp2100.cpp +++ b/src/devices/cpu/adsp2100/adsp2100.cpp @@ -545,13 +545,13 @@ void adsp21xx_device::device_start() state_add(ADSP2100_SR1_SEC, "SR1_SEC", m_alt.sr.srx.sr1.u); for (int ireg = 0; ireg < 8; ireg++) - state_add(ADSP2100_I0 + ireg, strformat("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport(); + state_add(ADSP2100_I0 + ireg, string_format("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport(); for (int lreg = 0; lreg < 8; lreg++) - state_add(ADSP2100_L0 + lreg, strformat("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport(); + state_add(ADSP2100_L0 + lreg, string_format("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport(); for (int mreg = 0; mreg < 8; mreg++) - state_add(ADSP2100_M0 + mreg, strformat("M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff); + state_add(ADSP2100_M0 + mreg, string_format("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); @@ -570,7 +570,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, strformat("IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport(); + state_add(ADSP2100_IRQSTATE0 + irqnum, string_format("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); @@ -724,7 +724,7 @@ void adsp21xx_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", m_astat & 0x80 ? 'X':'.', m_astat & 0x40 ? 'M':'.', m_astat & 0x20 ? 'Q':'.', diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp index 9c40d8d55ee..dec4a650ab8 100644 --- a/src/devices/cpu/alph8201/alph8201.cpp +++ b/src/devices/cpu/alph8201/alph8201.cpp @@ -532,7 +532,7 @@ void alpha8201_cpu_device::state_string_export(const device_state_entry &entry, switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.'); + str = string_format("%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.'); break; } } diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index 653f56949e5..fb2d1700d5f 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -1009,14 +1009,15 @@ void alto2_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case A2_TASK: - strprintf(str, "%s", task_name(m_task)); + str = string_format("%s", task_name(m_task)); break; case STATE_GENFLAGS: - strprintf(str, "%s%s%s%s", - m_aluc0 ? "C":"-", - m_laluc0 ? "c":"-", - m_shifter == 0 ? "0":"-", - static_cast<INT16>(m_shifter) < 0 ? "<":"-"); + str = string_format( + "%c%c%c%c", + m_aluc0 ? 'C' : '-', + m_laluc0 ? 'c' : '-', + (m_shifter == 0) ? '0' : '-', + (INT16(m_shifter) < 0) ? '<' : '-'); break; } } diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp index a31dc3b0374..bfeefebbcbf 100644 --- a/src/devices/cpu/am29000/am29000.cpp +++ b/src/devices/cpu/am29000/am29000.cpp @@ -409,16 +409,17 @@ void am29000_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - 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' : '.', - m_cps & CPS_IP ? 'I' : '.', - m_cps & CPS_FZ ? 'F' : '.', - m_cps & CPS_SM ? 'S' : 'U', - m_cps & CPS_DI ? 'I' : '.', - m_cps & CPS_DA ? 'D' : '.', - (m_r[1] >> 2) & 0x7f); + str = string_format("%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' : '.', + m_cps & CPS_IP ? 'I' : '.', + m_cps & CPS_FZ ? 'F' : '.', + m_cps & CPS_SM ? 'S' : 'U', + m_cps & CPS_DI ? 'I' : '.', + m_cps & CPS_DA ? 'D' : '.', + (m_r[1] >> 2) & 0x7f); break; } } diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp index 57ed4d99578..326437b5baa 100644 --- a/src/devices/cpu/amis2000/amis2000.cpp +++ b/src/devices/cpu/amis2000/amis2000.cpp @@ -75,7 +75,7 @@ void amis2000_base_device::state_string_export(const device_state_entry &entry, switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c", m_f & 0x20 ? '6':'.', m_f & 0x10 ? '5':'.', m_f & 0x08 ? '4':'.', diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp index 87c5ff9a351..c39c6b0b418 100644 --- a/src/devices/cpu/apexc/apexc.cpp +++ b/src/devices/cpu/apexc/apexc.cpp @@ -819,7 +819,7 @@ void apexc_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c", m_running ? 'R' : 'S'); + str = string_format("%c", m_running ? 'R' : 'S'); break; } } diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp index 34dc1635639..f9505fda6d8 100644 --- a/src/devices/cpu/arm/arm.cpp +++ b/src/devices/cpu/arm/arm.cpp @@ -559,14 +559,14 @@ void arm_cpu_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c %s", + str = string_format("%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' : '-', (m_sArmRegister[15] & V_MASK) ? 'V' : '-', (m_sArmRegister[15] & I_MASK) ? 'I' : '-', (m_sArmRegister[15] & F_MASK) ? 'F' : '-', - s[m_sArmRegister[15] & 3] ); + s[m_sArmRegister[15] & 3]); break; } } diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp index 828f8562811..f10537dfd16 100644 --- a/src/devices/cpu/arm7/arm7.cpp +++ b/src/devices/cpu/arm7/arm7.cpp @@ -569,7 +569,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c %s", + str = string_format("%c%c%c%c%c%c%c%c %s", (ARM7REG(eCPSR) & N_MASK) ? 'N' : '-', (ARM7REG(eCPSR) & Z_MASK) ? 'Z' : '-', (ARM7REG(eCPSR) & C_MASK) ? 'C' : '-', @@ -578,7 +578,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std:: (ARM7REG(eCPSR) & I_MASK) ? 'I' : '-', (ARM7REG(eCPSR) & F_MASK) ? 'F' : '-', (ARM7REG(eCPSR) & T_MASK) ? 'T' : '-', - GetModeText(ARM7REG(eCPSR)) ); + GetModeText(ARM7REG(eCPSR))); break; } } diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp index b369ab6d07b..6f08253b425 100644 --- a/src/devices/cpu/asap/asap.cpp +++ b/src/devices/cpu/asap/asap.cpp @@ -193,7 +193,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, strformat("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]); + state_add(ASAP_R0 + regnum, string_format("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]); // register our state for saving save_item(NAME(m_pc)); @@ -285,13 +285,13 @@ void asap_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c", - m_pflag ? 'P' : '.', - m_iflag ? 'I' : '.', - ((INT32)m_znflag < 0) ? 'N' : '.', - (m_znflag == 0) ? 'Z' : '.', - ((m_vflag >> 30) & PS_VFLAG) ? 'V' : '.', - m_cflag ? 'C' : '.'); + str = string_format("%c%c%c%c%c%c", + m_pflag ? 'P' : '.', + m_iflag ? 'I' : '.', + ((INT32)m_znflag < 0) ? 'N' : '.', + (m_znflag == 0) ? 'Z' : '.', + ((m_vflag >> 30) & PS_VFLAG) ? 'V' : '.', + m_cflag ? 'C' : '.'); break; } } diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp index 756562f0ea7..d4a00c1d325 100644 --- a/src/devices/cpu/avr8/avr8.cpp +++ b/src/devices/cpu/avr8/avr8.cpp @@ -910,7 +910,7 @@ void avr8_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp index bde43753786..f7731312241 100644 --- a/src/devices/cpu/ccpu/ccpu.cpp +++ b/src/devices/cpu/ccpu/ccpu.cpp @@ -145,7 +145,7 @@ void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c", TEST_A0 ? '0' : 'o', TEST_NC ? 'N' : 'n', TEST_LT ? 'L' : 'l', diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp index ae14bd59cab..e5039743800 100644 --- a/src/devices/cpu/cop400/cop400.cpp +++ b/src/devices/cpu/cop400/cop400.cpp @@ -1210,10 +1210,10 @@ void cop400_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c", - m_c ? 'C' : '.', - m_skl ? 'S' : '.', - m_skt_latch ? 'T' : '.'); + str = string_format("%c%c%c", + m_c ? 'C' : '.', + m_skl ? 'S' : '.', + m_skt_latch ? 'T' : '.'); break; } } diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp index d8e3d52c6fd..fa53c68807b 100644 --- a/src/devices/cpu/cosmac/cosmac.cpp +++ b/src/devices/cpu/cosmac/cosmac.cpp @@ -354,7 +354,7 @@ void cosmac_device::device_start() state_add(COSMAC_N, "N", m_n).mask(0xf); for (int regnum = 0; regnum < 16; regnum++) - state_add(COSMAC_R0 + regnum, strformat("R%x", regnum).c_str(), m_r[regnum]); + state_add(COSMAC_R0 + regnum, string_format("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(); @@ -473,10 +473,10 @@ void cosmac_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c", - m_df ? 'D' : '.', - m_ie ? 'I' : '.', - m_q ? 'Q' : '.'); + str = string_format("%c%c%c", + m_df ? 'D' : '.', + m_ie ? 'I' : '.', + m_q ? 'Q' : '.'); break; } } diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp index a05bbbc0d49..f882d4a73ac 100644 --- a/src/devices/cpu/cp1610/cp1610.cpp +++ b/src/devices/cpu/cp1610/cp1610.cpp @@ -3406,7 +3406,7 @@ void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", + str = string_format("%c%c%c%c", m_flags & 0x80 ? 'S':'.', m_flags & 0x40 ? 'Z':'.', m_flags & 0x20 ? 'V':'.', diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp index a657a23680e..b042b8de8b5 100644 --- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp +++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp @@ -352,9 +352,10 @@ void cquestrot_cpu_device::state_string_export(const device_state_entry &entry, switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c", m_cflag ? 'C' : '.', - m_vflag ? 'V' : '.', - m_f ? '.' : 'Z'); + str = string_format("%c%c%c", + m_cflag ? 'C' : '.', + m_vflag ? 'V' : '.', + m_f ? '.' : 'Z'); break; } } @@ -476,10 +477,11 @@ void cquestlin_cpu_device::state_string_export(const device_state_entry &entry, switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c|%cG", m_cflag ? 'C' : '.', - m_vflag ? 'V' : '.', - m_f ? '.' : 'Z', - ( m_clkcnt & 3 ) ? 'B' : 'F'); + str = string_format("%c%c%c|%cG", + m_cflag ? 'C' : '.', + m_vflag ? 'V' : '.', + m_f ? '.' : 'Z', + ( m_clkcnt & 3 ) ? 'B' : 'F'); break; } } diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp index 5b494c947f3..8736a2b6703 100644 --- a/src/devices/cpu/drcbec.cpp +++ b/src/devices/cpu/drcbec.cpp @@ -12,10 +12,7 @@ #include "debugger.h" #include "drcbec.h" -#ifdef _MSC_VER -#include <float.h> -#define isnan _isnan -#endif +#include <cmath> using namespace uml; @@ -1898,7 +1895,7 @@ int drcbe_c::execute(code_handle &entry) break; case MAKE_OPCODE_SHORT(OP_FCMP, 4, 1): // FSCMP src1,src2 - if (isnan(FSPARAM0) || isnan(FSPARAM1)) + if (std::isnan(FSPARAM0) || std::isnan(FSPARAM1)) flags = FLAG_U; else flags = (FSPARAM0 < FSPARAM1) | ((FSPARAM0 == FSPARAM1) << 2); @@ -2037,7 +2034,7 @@ int drcbe_c::execute(code_handle &entry) break; case MAKE_OPCODE_SHORT(OP_FCMP, 8, 1): // FDCMP src1,src2 - if (isnan(FDPARAM0) || isnan(FDPARAM1)) + if (std::isnan(FDPARAM0) || std::isnan(FDPARAM1)) flags = FLAG_U; else flags = (FDPARAM0 < FDPARAM1) | ((FDPARAM0 == FDPARAM1) << 2); diff --git a/src/devices/cpu/drcbex64.cpp b/src/devices/cpu/drcbex64.cpp index 034f06def80..b9583123af0 100644 --- a/src/devices/cpu/drcbex64.cpp +++ b/src/devices/cpu/drcbex64.cpp @@ -806,7 +806,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 = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); + blockname = string_format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); } // generate code diff --git a/src/devices/cpu/drcbex86.cpp b/src/devices/cpu/drcbex86.cpp index 3ca840e1c6f..be63ac1e869 100644 --- a/src/devices/cpu/drcbex86.cpp +++ b/src/devices/cpu/drcbex86.cpp @@ -789,7 +789,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 = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); + blockname = string_format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str(); } // generate code diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp index 3bbd610cfa9..f52234e6ca4 100644 --- a/src/devices/cpu/drcuml.cpp +++ b/src/devices/cpu/drcuml.cpp @@ -525,7 +525,7 @@ const char *drcuml_block::get_comment_text(const instruction &inst, std::string // mapvars comment about their values else if (inst.opcode() == OP_MAPVAR) { - strprintf(comment,"m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate()); + comment = string_format("m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate()); return comment.c_str(); } diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp index 8b97ce4c064..a5e4b9b03b8 100644 --- a/src/devices/cpu/dsp16/dsp16.cpp +++ b/src/devices/cpu/dsp16/dsp16.cpp @@ -218,105 +218,105 @@ void dsp16_device::state_string_export(const device_state_entry &entry, std::str { switch (entry.index()) { - case STATE_GENFLAGS: - strprintf(str, "(below)"); - break; + case STATE_GENFLAGS: + str = "(below)"; + break; - case DSP16_AUC: + case DSP16_AUC: { std::string alignString; const UINT8 align = m_auc & 0x03; switch (align) { - case 0x00: strprintf(alignString,"xy"); break; - case 0x01: strprintf(alignString,"/4"); break; - case 0x02: strprintf(alignString,"x4"); break; - case 0x03: strprintf(alignString,",,"); break; + case 0x00: alignString = "xy"; break; + case 0x01: alignString = "/4"; break; + case 0x02: alignString = "x4"; break; + case 0x03: alignString = ",,"; break; } - strprintf(str, "%c%c%c%c%c%s", - m_auc & 0x40 ? 'Y':'.', - m_auc & 0x20 ? '1':'.', - m_auc & 0x10 ? '0':'.', - m_auc & 0x08 ? '1':'.', - m_auc & 0x04 ? '0':'.', - alignString.c_str()); - break; + str = string_format("%c%c%c%c%c%s", + m_auc & 0x40 ? 'Y':'.', + m_auc & 0x20 ? '1':'.', + m_auc & 0x10 ? '0':'.', + m_auc & 0x08 ? '1':'.', + m_auc & 0x04 ? '0':'.', + alignString); } - - case DSP16_PSW: - 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':'.', - m_psw & 0x1000 ? 'V':'.', - m_psw & 0x0800 ? ',':',', - m_psw & 0x0400 ? ',':',', - m_psw & 0x0200 ? 'O':'.', - m_psw & 0x0100 ? '1':'.', - m_psw & 0x0080 ? '1':'.', - m_psw & 0x0040 ? '1':'.', - m_psw & 0x0020 ? '1':'.', - m_psw & 0x0010 ? 'O':'.', - m_psw & 0x0008 ? '1':'.', - m_psw & 0x0004 ? '1':'.', - m_psw & 0x0002 ? '1':'.', - m_psw & 0x0001 ? '1':'.'); - break; - - case DSP16_PIOC: + break; + + case DSP16_PSW: + str = string_format("%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':'.', + m_psw & 0x1000 ? 'V':'.', + m_psw & 0x0800 ? ',':',', + m_psw & 0x0400 ? ',':',', + m_psw & 0x0200 ? 'O':'.', + m_psw & 0x0100 ? '1':'.', + m_psw & 0x0080 ? '1':'.', + m_psw & 0x0040 ? '1':'.', + m_psw & 0x0020 ? '1':'.', + m_psw & 0x0010 ? 'O':'.', + m_psw & 0x0008 ? '1':'.', + m_psw & 0x0004 ? '1':'.', + m_psw & 0x0002 ? '1':'.', + m_psw & 0x0001 ? '1':'.'); + break; + + case DSP16_PIOC: { std::string strobeString; const UINT8 strobe = (m_pioc & 0x6000) >> 13; switch (strobe) { - case 0x00: strprintf(strobeString, "1T"); break; - case 0x01: strprintf(strobeString, "2T"); break; - case 0x02: strprintf(strobeString, "3T"); break; - case 0x03: strprintf(strobeString, "4T"); break; + case 0x00: strobeString = "1T"; break; + case 0x01: strobeString = "2T"; break; + case 0x02: strobeString = "3T"; break; + case 0x03: strobeString = "4T"; break; } - 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', - m_pioc & 0x0800 ? 'O':'I', - m_pioc & 0x0400 ? 'S':'.', - m_pioc & 0x0200 ? 'I':'.', - m_pioc & 0x0100 ? 'O':'.', - m_pioc & 0x0080 ? 'P':'.', - m_pioc & 0x0040 ? 'P':'.', - m_pioc & 0x0020 ? 'I':'.', - m_pioc & 0x0010 ? 'I':'.', - m_pioc & 0x0008 ? 'O':'.', - m_pioc & 0x0004 ? 'P':'.', - m_pioc & 0x0002 ? 'P':'.', - m_pioc & 0x0001 ? 'I':'.'); - break; + str = string_format("%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c", + m_pioc & 0x8000 ? 'I':'.', + strobeString, + m_pioc & 0x1000 ? 'O':'I', + m_pioc & 0x0800 ? 'O':'I', + m_pioc & 0x0400 ? 'S':'.', + m_pioc & 0x0200 ? 'I':'.', + m_pioc & 0x0100 ? 'O':'.', + m_pioc & 0x0080 ? 'P':'.', + m_pioc & 0x0040 ? 'P':'.', + m_pioc & 0x0020 ? 'I':'.', + m_pioc & 0x0010 ? 'I':'.', + m_pioc & 0x0008 ? 'O':'.', + m_pioc & 0x0004 ? 'P':'.', + m_pioc & 0x0002 ? 'P':'.', + m_pioc & 0x0001 ? 'I':'.'); } + break; - // Placeholder for a better view later (TODO) - case DSP16_SIOC: + // Placeholder for a better view later (TODO) + case DSP16_SIOC: { std::string clkString; const UINT8 clk = (m_sioc & 0x0180) >> 7; switch (clk) { - case 0x00: strprintf(clkString, "/4"); break; - case 0x01: strprintf(clkString, "12"); break; - case 0x02: strprintf(clkString, "16"); break; - case 0x03: strprintf(clkString, "20"); break; + case 0x00: clkString = "/4"; break; + case 0x01: clkString = "12"; break; + case 0x02: clkString = "16"; break; + case 0x03: clkString = "20"; break; } - strprintf(str, "%c%s%c%c%c%c%c%c%c", - m_sioc & 0x0200 ? 'I':'O', - clkString.c_str(), - m_sioc & 0x0040 ? 'L':'M', - m_sioc & 0x0020 ? 'I':'O', - m_sioc & 0x0010 ? 'I':'O', - m_sioc & 0x0008 ? 'I':'O', - m_sioc & 0x0004 ? 'I':'O', - m_sioc & 0x0002 ? '2':'1', - m_sioc & 0x0001 ? '2':'1'); - break; + str = string_format("%c%s%c%c%c%c%c%c%c", + m_sioc & 0x0200 ? 'I':'O', + clkString, + m_sioc & 0x0040 ? 'L':'M', + m_sioc & 0x0020 ? 'I':'O', + m_sioc & 0x0010 ? 'I':'O', + m_sioc & 0x0008 ? 'I':'O', + m_sioc & 0x0004 ? 'I':'O', + m_sioc & 0x0002 ? '2':'1', + m_sioc & 0x0001 ? '2':'1'); } + break; } } diff --git a/src/devices/cpu/dsp16/dsp16dis.cpp b/src/devices/cpu/dsp16/dsp16dis.cpp index 2e144df03af..6b2de29a79c 100644 --- a/src/devices/cpu/dsp16/dsp16dis.cpp +++ b/src/devices/cpu/dsp16/dsp16dis.cpp @@ -5,29 +5,27 @@ std::string disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S) { - std::string ret = ""; switch (F1) { - 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; + case 0x00: return string_format("a%u = p, p = x*y", D); break; + case 0x01: return string_format("a%u = a%u + p, p = x*y", D, S); break; + case 0x02: return string_format("p = x*y"); break; + case 0x03: return string_format("a%u = a%u - p, p = x*y", D, S); break; + case 0x04: return string_format("a%u = p", D); break; + case 0x05: return string_format("a%u = a%u + p", D, S); break; + case 0x06: return string_format("NOP"); break; + case 0x07: return string_format("a%u = a%u - p", D, S); break; + case 0x08: return string_format("a%u = a%u | y", D, S); break; + case 0x09: return string_format("a%u = a%u ^ y", D, S); break; + case 0x0a: return string_format("a%u & y", S); break; + case 0x0b: return string_format("a%u - y", S); break; + case 0x0c: return string_format("a%u = y", D); break; + case 0x0d: return string_format("a%u = a%u + y", D, S); break; + case 0x0e: return string_format("a%u = a%u & y", D, S); break; + case 0x0f: return string_format("a%u = a%u - y", D, S); break; default: return "UNKNOWN"; } - return ret; } std::string disasmYField(const UINT8& Y) @@ -95,23 +93,23 @@ std::string disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S) std::string ret = ""; switch (F2) { - 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; + case 0x00: return string_format("a%u = a%u >> 1", D, S); break; + case 0x01: return string_format("a%u = a%u << 1", D, S); break; + case 0x02: return string_format("a%u = a%u >> 4", D, S); break; + case 0x03: return string_format("a%u = a%u << 4", D, S); break; + case 0x04: return string_format("a%u = a%u >> 8", D, S); break; + case 0x05: return string_format("a%u = a%u << 8", D, S); break; + case 0x06: return string_format("a%u = a%u >> 16", D, S); break; + case 0x07: return string_format("a%u = a%u << 16", D, S); break; + + case 0x08: return string_format("a%u = p", D); break; + case 0x09: return string_format("a%uh = a%uh + 1", D, S); break; + case 0x0a: return string_format("RESERVED"); break; + case 0x0b: return string_format("a%u = rnd(a%u)", D, S); break; + case 0x0c: return string_format("a%u = y", D); break; + case 0x0d: return string_format("a%u = a%u + 1", D, S); break; + case 0x0e: return string_format("a%u = a%u", D, S); break; + case 0x0f: return string_format("a%u = -a%u", D, S); break; default: return "UNKNOWN"; } diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp index 98640f7d1b4..dbd8e62aef7 100644 --- a/src/devices/cpu/dsp32/dsp32.cpp +++ b/src/devices/cpu/dsp32/dsp32.cpp @@ -200,7 +200,7 @@ void dsp32c_device::device_start() 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, strformat("R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff); + state_add(DSP32_R0 + regnum, string_format("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); @@ -373,7 +373,7 @@ void dsp32c_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", NFLAG ? 'N':'.', ZFLAG ? 'Z':'.', UFLAG ? 'U':'.', @@ -388,7 +388,7 @@ void dsp32c_device::state_string_export(const device_state_entry &entry, std::st case DSP32_A1: case DSP32_A2: case DSP32_A3: - strprintf(str, "%8g", *(double *)entry.dataptr()); + str = string_format("%8g", *(double *)entry.dataptr()); break; } } diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp index 7c4b7abd163..d3cf3804fa8 100644 --- a/src/devices/cpu/dsp56k/dsp56k.cpp +++ b/src/devices/cpu/dsp56k/dsp56k.cpp @@ -347,7 +347,7 @@ void dsp56k_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s%s %s%s%s%s%s%s%s%s %s%s", + str = string_format("%s%s %s%s%s%s%s%s%s%s %s%s", /* Status Register */ LF_bit(cpustate) ? "L" : ".", FV_bit(cpustate) ? "F" : ".", @@ -367,19 +367,19 @@ void dsp56k_device::state_string_export(const device_state_entry &entry, std::st break; case DSP56K_X: - strprintf(str, "%04x %04x", X1, X0); + str = string_format("%04x %04x", X1, X0); break; case DSP56K_Y: - strprintf(str, "%04x %04x", Y1, Y0); + str = string_format("%04x %04x", Y1, Y0); break; case DSP56K_A: - strprintf(str, "%02x %04x %04x", A2, A1, A0); + str = string_format("%02x %04x %04x", A2, A1, A0); break; case DSP56K_B: - strprintf(str, "%02x %04x %04x", B2, B1, B0); + str = string_format("%02x %04x %04x", B2, B1, B0); break; } } diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp index 0b87b9eaa7d..780f4e77a04 100644 --- a/src/devices/cpu/e0c6200/e0c6200.cpp +++ b/src/devices/cpu/e0c6200/e0c6200.cpp @@ -30,7 +30,7 @@ void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", + str = string_format("%c%c%c%c", (m_f & I_FLAG) ? 'I':'i', (m_f & D_FLAG) ? 'D':'d', (m_f & Z_FLAG) ? 'Z':'z', diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp index afa0da8d962..8103ce6f7c2 100644 --- a/src/devices/cpu/e132xs/e132xs.cpp +++ b/src/devices/cpu/e132xs/e132xs.cpp @@ -1853,7 +1853,7 @@ void hyperstone_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c FTE:%X FRM:%X ILC:%d FL:%d FP:%d", + str = string_format("%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/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp index a788c2a3ab3..3a41297cefd 100644 --- a/src/devices/cpu/esrip/esrip.cpp +++ b/src/devices/cpu/esrip/esrip.cpp @@ -355,7 +355,7 @@ void esrip_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp index 2bc875e12ee..d19274ed202 100644 --- a/src/devices/cpu/f8/f8.cpp +++ b/src/devices/cpu/f8/f8.cpp @@ -2050,12 +2050,12 @@ void f8_cpu_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c", - m_w & 0x10 ? 'I':'.', - m_w & 0x08 ? 'O':'.', - m_w & 0x04 ? 'Z':'.', - m_w & 0x02 ? 'C':'.', - m_w & 0x01 ? 'S':'.'); + str = string_format("%c%c%c%c%c", + m_w & 0x10 ? 'I':'.', + m_w & 0x08 ? 'O':'.', + m_w & 0x04 ? 'Z':'.', + m_w & 0x02 ? 'C':'.', + m_w & 0x01 ? 'S':'.'); break; } } diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp index 47b0e035798..37bd68c9d00 100644 --- a/src/devices/cpu/g65816/g65816.cpp +++ b/src/devices/cpu/g65816/g65816.cpp @@ -957,7 +957,7 @@ void g65816_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp index ec0b62b5076..d8d16f6946c 100644 --- a/src/devices/cpu/h6280/h6280.cpp +++ b/src/devices/cpu/h6280/h6280.cpp @@ -2196,7 +2196,7 @@ void h6280_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", (m_p & 0x80) ? 'N':'.', (m_p & 0x40) ? 'V':'.', (m_p & 0x20) ? 'R':'.', diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp index ba8b853e9ec..36da1c92f17 100644 --- a/src/devices/cpu/h8/h8.cpp +++ b/src/devices/cpu/h8/h8.cpp @@ -221,27 +221,27 @@ void h8_device::state_string_export(const device_state_entry &entry, std::string switch(entry.index()) { case STATE_GENFLAGS: if(has_exr) - strprintf(str, "%c%c %c%c%c%c%c%c%c%c", - (EXR & EXR_T) ? 'T' : '-', - '0' + (EXR & EXR_I), - (CCR & F_I) ? 'I' : '-', - (CCR & F_UI) ? 'u' : '-', - (CCR & F_H) ? 'H' : '-', - (CCR & F_U) ? 'U' : '-', - (CCR & F_N) ? 'N' : '-', - (CCR & F_Z) ? 'Z' : '-', - (CCR & F_V) ? 'V' : '-', - (CCR & F_C) ? 'C' : '-'); + str = string_format("%c%c %c%c%c%c%c%c%c%c", + (EXR & EXR_T) ? 'T' : '-', + '0' + (EXR & EXR_I), + (CCR & F_I) ? 'I' : '-', + (CCR & F_UI) ? 'u' : '-', + (CCR & F_H) ? 'H' : '-', + (CCR & F_U) ? 'U' : '-', + (CCR & F_N) ? 'N' : '-', + (CCR & F_Z) ? 'Z' : '-', + (CCR & F_V) ? 'V' : '-', + (CCR & F_C) ? 'C' : '-'); else - strprintf(str, "%c%c%c%c%c%c%c%c", - (CCR & F_I) ? 'I' : '-', - (CCR & F_UI) ? 'u' : '-', - (CCR & F_H) ? 'H' : '-', - (CCR & F_U) ? 'U' : '-', - (CCR & F_N) ? 'N' : '-', - (CCR & F_Z) ? 'Z' : '-', - (CCR & F_V) ? 'V' : '-', - (CCR & F_C) ? 'C' : '-'); + str = string_format("%c%c%c%c%c%c%c%c", + (CCR & F_I) ? 'I' : '-', + (CCR & F_UI) ? 'u' : '-', + (CCR & F_H) ? 'H' : '-', + (CCR & F_U) ? 'U' : '-', + (CCR & F_N) ? 'N' : '-', + (CCR & F_Z) ? 'Z' : '-', + (CCR & F_V) ? 'V' : '-', + (CCR & F_C) ? 'C' : '-'); break; case H8_R0: case H8_R1: @@ -252,7 +252,7 @@ void h8_device::state_string_export(const device_state_entry &entry, std::string case H8_R6: case H8_R7: { int r = entry.index() - H8_R0; - strprintf(str, "%04x %04x", R[r + 8], R[r]); + str = string_format("%04x %04x", R[r + 8], R[r]); break; } } diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp index e6104627990..0711868a55b 100644 --- a/src/devices/cpu/hcd62121/hcd62121.cpp +++ b/src/devices/cpu/hcd62121/hcd62121.cpp @@ -368,11 +368,11 @@ void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, s switch (entry.index()) { case STATE_GENPC: - strprintf(str, "%06X", (m_cseg << 16) | m_ip); + str = string_format("%06X", (m_cseg << 16) | m_ip); break; case STATE_GENFLAGS: - strprintf(str, "%s-%s-%s-%c-%c", + str = string_format("%s-%s-%s-%c-%c", m_f & _FLAG_ZH ? "ZH":"__", m_f & _FLAG_CL ? "CL":"__", m_f & _FLAG_ZL ? "ZL":"__", @@ -383,100 +383,100 @@ void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, s break; case HCD62121_R00: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]); + str = string_format("%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]); break; case HCD62121_R04: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]); + str = string_format("%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]); break; case HCD62121_R08: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]); break; case HCD62121_R0C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]); break; case HCD62121_R10: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]); + str = string_format("%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]); break; case HCD62121_R14: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]); + str = string_format("%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]); break; case HCD62121_R18: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]); break; case HCD62121_R1C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]); break; case HCD62121_R20: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]); + str = string_format("%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]); break; case HCD62121_R24: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]); + str = string_format("%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]); break; case HCD62121_R28: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]); break; case HCD62121_R2C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]); break; case HCD62121_R30: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]); + str = string_format("%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]); break; case HCD62121_R34: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]); + str = string_format("%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]); break; case HCD62121_R38: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]); break; case HCD62121_R3C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]); break; case HCD62121_R40: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]); + str = string_format("%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]); break; case HCD62121_R44: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]); + str = string_format("%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]); break; case HCD62121_R48: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]); break; case HCD62121_R4C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]); break; case HCD62121_R50: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]); + str = string_format("%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]); break; case HCD62121_R54: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]); + str = string_format("%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]); break; case HCD62121_R58: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]); break; case HCD62121_R5C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]); break; case HCD62121_R60: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]); + str = string_format("%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]); break; case HCD62121_R64: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]); + str = string_format("%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]); break; case HCD62121_R68: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]); break; case HCD62121_R6C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]); break; case HCD62121_R70: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]); + str = string_format("%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]); break; case HCD62121_R74: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]); + str = string_format("%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]); break; case HCD62121_R78: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]); + str = string_format("%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]); break; case HCD62121_R7C: - strprintf(str, "%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]); + str = string_format("%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]); break; } } diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp index 4e8d2c6590d..55cdaefcd6e 100644 --- a/src/devices/cpu/hd61700/hd61700.cpp +++ b/src/devices/cpu/hd61700/hd61700.cpp @@ -183,7 +183,7 @@ void hd61700_cpu_device::device_start() for (int ireg=0; ireg<32; ireg++) { - state_add(HD61700_MAINREG + ireg, strformat("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X"); + state_add(HD61700_MAINREG + ireg, string_format("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X"); } state_add(STATE_GENPC, "curpc", m_curpc).callimport().callexport().formatstr("%8s").noshow(); @@ -275,7 +275,7 @@ void hd61700_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp index 58cd711f8da..4f78f3480f4 100644 --- a/src/devices/cpu/hmcs40/hmcs40.cpp +++ b/src/devices/cpu/hmcs40/hmcs40.cpp @@ -138,7 +138,7 @@ void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c", + str = string_format("%c%c", m_c ? 'C':'c', m_s ? 'S':'s' ); diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp index 14858af369b..44c29698cb1 100644 --- a/src/devices/cpu/hphybrid/hphybrid.cpp +++ b/src/devices/cpu/hphybrid/hphybrid.cpp @@ -619,7 +619,7 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode) void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const { if (entry.index() == STATE_GENFLAGS) { - strprintf(str, "%s %s %c %c", + str = string_format("%s %s %c %c", BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..", BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..", BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.', diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp index 4f593de3dea..454f9004d61 100644 --- a/src/devices/cpu/i386/i386.cpp +++ b/src/devices/cpu/i386/i386.cpp @@ -3496,55 +3496,55 @@ void i386_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%08X", get_flags()); + str = string_format("%08X", get_flags()); break; case X87_ST0: - strprintf(str, "%f", fx80_to_double(ST(0))); + str = string_format("%f", fx80_to_double(ST(0))); break; case X87_ST1: - strprintf(str, "%f", fx80_to_double(ST(1))); + str = string_format("%f", fx80_to_double(ST(1))); break; case X87_ST2: - strprintf(str, "%f", fx80_to_double(ST(2))); + str = string_format("%f", fx80_to_double(ST(2))); break; case X87_ST3: - strprintf(str, "%f", fx80_to_double(ST(3))); + str = string_format("%f", fx80_to_double(ST(3))); break; case X87_ST4: - strprintf(str, "%f", fx80_to_double(ST(4))); + str = string_format("%f", fx80_to_double(ST(4))); break; case X87_ST5: - strprintf(str, "%f", fx80_to_double(ST(5))); + str = string_format("%f", fx80_to_double(ST(5))); break; case X87_ST6: - strprintf(str, "%f", fx80_to_double(ST(6))); + str = string_format("%f", fx80_to_double(ST(6))); break; case X87_ST7: - strprintf(str, "%f", fx80_to_double(ST(7))); + str = string_format("%f", fx80_to_double(ST(7))); break; case SSE_XMM0: - strprintf(str, "%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]); break; case SSE_XMM1: - strprintf(str, "%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]); break; case SSE_XMM2: - strprintf(str, "%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]); break; case SSE_XMM3: - strprintf(str, "%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]); break; case SSE_XMM4: - strprintf(str, "%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]); break; case SSE_XMM5: - strprintf(str, "%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]); break; case SSE_XMM6: - strprintf(str, "%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]); + str = string_format("%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]); break; case SSE_XMM7: - strprintf(str, "%08x%08x%08x%08x", XMM(7).d[3], XMM(7).d[2], XMM(7).d[1], XMM(7).d[0]); + str = string_format("%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/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp index 371074238c9..e7a63564c59 100644 --- a/src/devices/cpu/i4004/i4004.cpp +++ b/src/devices/cpu/i4004/i4004.cpp @@ -416,19 +416,19 @@ void i4004_cpu_device::device_start() { /* set up the state table */ { - state_add(I4004_PC, "PC", m_PC.w.l).mask(0x0fff); - state_add(STATE_GENPC, "GENPC", m_PC.w.l).mask(0x0fff).noshow(); + state_add(I4004_PC, "PC", m_PC.w.l).mask(0x0fff); + state_add(STATE_GENPC, "GENPC", m_PC.w.l).mask(0x0fff).noshow(); state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s"); - state_add(I4004_A, "A", m_A).mask(0x0f); + state_add(I4004_A, "A", m_A).mask(0x0f); for (int regnum = 0; regnum < 8; regnum++) { - state_add(I4004_R01 + regnum, strformat("R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]); + state_add(I4004_R01 + regnum, string_format("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, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); + state_add(I4004_ADDR1 + addrnum, string_format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); } state_add(I4004_RAM, "RAM", m_RAM.w.l).mask(0x0fff); @@ -513,7 +513,7 @@ void i4004_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, ".%c%c%c", + str = string_format(".%c%c%c", (m_A==0) ? 'Z':'.', m_C ? 'C':'.', m_TEST ? 'T':'.'); diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp index 6baeacfe7bb..e9f25118f6a 100644 --- a/src/devices/cpu/i8008/i8008.cpp +++ b/src/devices/cpu/i8008/i8008.cpp @@ -93,7 +93,7 @@ void i8008_device::device_start() state_add(I8008_L, "L", m_L); for (int addrnum = 0; addrnum < 8; addrnum++) - state_add(I8008_ADDR1 + addrnum, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); + state_add(I8008_ADDR1 + addrnum, string_format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff); init_tables(); } @@ -191,7 +191,7 @@ void i8008_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", + str = string_format("%c%c%c%c", m_CF ? 'C':'.', m_ZF ? 'Z':'.', m_SF ? 'S':'.', diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index 308de09e4a1..f8ea5275984 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -1053,7 +1053,7 @@ void i8085a_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp index ade9e4f768b..9394206e179 100644 --- a/src/devices/cpu/i8089/i8089.cpp +++ b/src/devices/cpu/i8089/i8089.cpp @@ -168,30 +168,30 @@ void i8089_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case SYSBUS: - strprintf(str, "%c", sysbus_width() ? 'W' : '.'); + str = string_format("%c", sysbus_width() ? 'W' : '.'); break; case SOC: - strprintf(str, "%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.'); + str = string_format("%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.'); break; case CH1_GA: case CH2_GA: - strprintf(str, "%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w); + str = string_format("%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w); break; case CH1_GB: case CH2_GB: - strprintf(str, "%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w); + str = string_format("%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w); break; case CH1_GC: case CH2_GC: - strprintf(str, "%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w); + str = string_format("%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w); break; case CH1_TP: case CH2_TP: - strprintf(str, "%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w); + str = string_format("%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w); break; case CH1_PSW: case CH2_PSW: - strprintf(str, "%c%s%c%s%s%s%c%c", + str = string_format("%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/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp index 9f79007506a..7a7556deb8d 100644 --- a/src/devices/cpu/i86/i286.cpp +++ b/src/devices/cpu/i86/i286.cpp @@ -282,13 +282,13 @@ void i80286_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENPC: - strprintf(str, "%08X", m_base[CS] + m_ip); + str = string_format("%08X", m_base[CS] + m_ip); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp index 28669d16563..0c37e3b9c03 100644 --- a/src/devices/cpu/i86/i86.cpp +++ b/src/devices/cpu/i86/i86.cpp @@ -323,13 +323,13 @@ void i8086_common_cpu_device::state_string_export(const device_state_entry &entr switch (entry.index()) { case STATE_GENPC: - strprintf(str, "%08X", (m_sregs[CS] << 4) + m_ip); + str = string_format("%08X", (m_sregs[CS] << 4) + m_ip); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp index f754445379b..282aec610f6 100644 --- a/src/devices/cpu/i960/i960.cpp +++ b/src/devices/cpu/i960/i960.cpp @@ -2091,7 +2091,7 @@ void i960_cpu_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s", conditions[m_AC & 7]); + str = string_format("%s", conditions[m_AC & 7]); break; } } diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp index 87de1cb2217..6adbc4feb6f 100644 --- a/src/devices/cpu/ie15/ie15.cpp +++ b/src/devices/cpu/ie15/ie15.cpp @@ -65,7 +65,7 @@ void ie15_device::device_start() state_add(IE15_A, "A", m_A); for (int ireg = 0; ireg < 32; ireg++) - state_add(IE15_R0 + ireg, strformat("R%d", ireg).c_str(), m_REGS[ireg]); + state_add(IE15_R0 + ireg, string_format("R%d", ireg).c_str(), m_REGS[ireg]); } //------------------------------------------------- @@ -137,7 +137,7 @@ void ie15_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c", + str = string_format("%c%c%c", m_CF ? 'C':'.', m_ZF ? 'Z':'.', m_RF ? 'R':'.'); diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp index 000d6375cce..48b1031bd5f 100644 --- a/src/devices/cpu/jaguar/jaguar.cpp +++ b/src/devices/cpu/jaguar/jaguar.cpp @@ -405,7 +405,7 @@ void jaguar_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c%c%c%c", FLAGS & 0x8000 ? 'D':'.', FLAGS & 0x4000 ? 'A':'.', FLAGS & 0x0100 ? '4':'.', diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp index d24b3f64775..9eeb643000b 100644 --- a/src/devices/cpu/lc8670/lc8670.cpp +++ b/src/devices/cpu/lc8670/lc8670.cpp @@ -374,7 +374,7 @@ void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s%s%s%s", + str = string_format("%s%s%s%s", GET_CY ? "CY" : "..", GET_AC ? "AC" : "..", GET_OV ? "OV" : "..", diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp index 2e748c63905..76902136c29 100644 --- a/src/devices/cpu/lh5801/lh5801.cpp +++ b/src/devices/cpu/lh5801/lh5801.cpp @@ -147,7 +147,7 @@ void lh5801_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp index 8f365c18c54..1a7634c21e9 100644 --- a/src/devices/cpu/lr35902/lr35902.cpp +++ b/src/devices/cpu/lr35902/lr35902.cpp @@ -185,11 +185,11 @@ void lr35902_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case LR35902_SPEED: - strprintf(str, "%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending); + str = string_format("%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending); break; case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", + str = string_format("%c%c%c%c", m_F & FLAG_Z ? 'Z' : '.', m_F & FLAG_N ? 'N' : '.', m_F & FLAG_H ? 'H' : '.', diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp index 43568915dce..449af4c45e8 100644 --- a/src/devices/cpu/m37710/m37710.cpp +++ b/src/devices/cpu/m37710/m37710.cpp @@ -1141,7 +1141,7 @@ void m37710_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp index 0ecd12258f1..a6bf400151c 100644 --- a/src/devices/cpu/m6502/m6502.cpp +++ b/src/devices/cpu/m6502/m6502.cpp @@ -444,7 +444,7 @@ void m6502_device::state_string_export(const device_state_entry &entry, std::str switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - strprintf(str, "%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_D ? 'D' : '.', diff --git a/src/devices/cpu/m6502/m65ce02.cpp b/src/devices/cpu/m6502/m65ce02.cpp index 01f6fe34b2f..ca7d72289a1 100644 --- a/src/devices/cpu/m6502/m65ce02.cpp +++ b/src/devices/cpu/m6502/m65ce02.cpp @@ -80,7 +80,7 @@ void m65ce02_device::state_string_export(const device_state_entry &entry, std::s switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - strprintf(str, "%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_E ? 'E' : '.', @@ -90,7 +90,7 @@ void m65ce02_device::state_string_export(const device_state_entry &entry, std::s P & F_C ? 'C' : '.'); break; case M65CE02_B: - strprintf(str, "%02x", B >> 8); + str = string_format("%02x", B >> 8); break; } } diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp index 061f6dd75c7..b5dc72f87f9 100644 --- a/src/devices/cpu/m6502/m740.cpp +++ b/src/devices/cpu/m6502/m740.cpp @@ -58,7 +58,7 @@ void m740_device::state_string_export(const device_state_entry &entry, std::stri switch(entry.index()) { case STATE_GENFLAGS: case M6502_P: - strprintf(str, "%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c", P & F_N ? 'N' : '.', P & F_V ? 'V' : '.', P & F_T ? 'T' : '.', diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp index 730d7a1be4b..ecdcfa95186 100644 --- a/src/devices/cpu/m6800/m6800.cpp +++ b/src/devices/cpu/m6800/m6800.cpp @@ -1145,7 +1145,7 @@ void m6800_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", m_cc & 0x80 ? '?':'.', m_cc & 0x40 ? '?':'.', m_cc & 0x20 ? 'H':'.', diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp index aaa1db079cf..02809436472 100644 --- a/src/devices/cpu/m68000/m68kcpu.cpp +++ b/src/devices/cpu/m68000/m68kcpu.cpp @@ -1173,40 +1173,40 @@ void m68000_base_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case M68K_FP0: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[0])); + str = string_format("%f", fx80_to_double(REG_FP(this)[0])); break; case M68K_FP1: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[1])); + str = string_format("%f", fx80_to_double(REG_FP(this)[1])); break; case M68K_FP2: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[2])); + str = string_format("%f", fx80_to_double(REG_FP(this)[2])); break; case M68K_FP3: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[3])); + str = string_format("%f", fx80_to_double(REG_FP(this)[3])); break; case M68K_FP4: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[4])); + str = string_format("%f", fx80_to_double(REG_FP(this)[4])); break; case M68K_FP5: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[5])); + str = string_format("%f", fx80_to_double(REG_FP(this)[5])); break; case M68K_FP6: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[6])); + str = string_format("%f", fx80_to_double(REG_FP(this)[6])); break; case M68K_FP7: - strprintf(str,"%f", fx80_to_double(REG_FP(this)[7])); + str = string_format("%f", fx80_to_double(REG_FP(this)[7])); break; case STATE_GENFLAGS: sr = m68ki_get_sr(this); - strprintf(str,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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':'.', @@ -1735,10 +1735,10 @@ void m68000_base_device::define_state(void) state_add(M68K_MSP, "MSP", iotemp).callimport().callexport(); for (int regnum = 0; regnum < 8; regnum++) { - state_add(M68K_D0 + regnum, strformat("D%d", regnum).c_str(), dar[regnum]); + state_add(M68K_D0 + regnum, string_format("D%d", regnum).c_str(), dar[regnum]); } for (int regnum = 0; regnum < 8; regnum++) { - state_add(M68K_A0 + regnum, strformat("A%d", regnum).c_str(), dar[8 + regnum]); + state_add(M68K_A0 + regnum, string_format("A%d", regnum).c_str(), dar[8 + regnum]); } state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask); @@ -1760,7 +1760,7 @@ 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, strformat("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s"); + state_add(M68K_FP0 + regnum, string_format("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s"); } state_add(M68K_FPSR, "FPSR", fpsr); state_add(M68K_FPCR, "FPCR", fpcr); diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp index 0bb5ac3877e..1ea1b7ccb03 100644 --- a/src/devices/cpu/m6805/m6805.cpp +++ b/src/devices/cpu/m6805/m6805.cpp @@ -498,7 +498,7 @@ void m6805_base_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", (m_cc & 0x80) ? '?' : '.', (m_cc & 0x40) ? '?' : '.', (m_cc & 0x20) ? '?' : '.', diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp index 61337f180f0..8ebba313047 100644 --- a/src/devices/cpu/m6809/m6809.cpp +++ b/src/devices/cpu/m6809/m6809.cpp @@ -307,7 +307,7 @@ void m6809_base_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", (m_cc & 0x80) ? 'E' : '.', (m_cc & 0x40) ? 'F' : '.', (m_cc & 0x20) ? 'H' : '.', diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp index 341309d8c12..fed57fc9ddc 100644 --- a/src/devices/cpu/mb86233/mb86233.cpp +++ b/src/devices/cpu/mb86233/mb86233.cpp @@ -166,7 +166,7 @@ void mb86233_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z'); + str = string_format("%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z'); break; } } diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp index edcc6a0471f..ef42221548e 100644 --- a/src/devices/cpu/mb86235/mb86235.cpp +++ b/src/devices/cpu/mb86235/mb86235.cpp @@ -113,7 +113,7 @@ void mb86235_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c", + str = string_format("%c%c%c%c", m_flags & 0x80 ? 'S':'.', m_flags & 0x40 ? 'Z':'.', m_flags & 0x20 ? 'V':'.', diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp index 9ab07538e6e..ce915c6d63b 100644 --- a/src/devices/cpu/mb88xx/mb88xx.cpp +++ b/src/devices/cpu/mb88xx/mb88xx.cpp @@ -274,7 +274,7 @@ void mb88_cpu_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c", TEST_ST() ? 'T' : 't', TEST_ZF() ? 'Z' : 'z', TEST_CF() ? 'C' : 'c', diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp index a208a618c4b..0d5a54b402e 100644 --- a/src/devices/cpu/mc68hc11/mc68hc11.cpp +++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp @@ -453,7 +453,7 @@ void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index b49899ca498..b9de4b49f5c 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -979,7 +979,7 @@ void mcs48_cpu_device::device_start() state_add(MCS48_P2, "P2", m_p2); for (int regnum = 0; regnum < 8; regnum++) { - state_add(MCS48_R0 + regnum, strformat("R%d", regnum).c_str(), m_rtemp).callimport().callexport(); + state_add(MCS48_R0 + regnum, string_format("R%d", regnum).c_str(), m_rtemp).callimport().callexport(); } state_add(MCS48_EA, "EA", m_ea).mask(0x1); @@ -1301,7 +1301,7 @@ void mcs48_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c %c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp index f3d5816d722..f0b0a1d3723 100644 --- a/src/devices/cpu/mcs51/mcs51.cpp +++ b/src/devices/cpu/mcs51/mcs51.cpp @@ -2218,7 +2218,7 @@ void mcs51_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str,"%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", PSW & 0x80 ? 'C':'.', PSW & 0x40 ? 'A':'.', PSW & 0x20 ? 'F':'.', diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp index 3c8284f8555..cca35f9ac42 100644 --- a/src/devices/cpu/mcs96/mcs96.cpp +++ b/src/devices/cpu/mcs96/mcs96.cpp @@ -133,7 +133,7 @@ void mcs96_device::state_string_export(const device_state_entry &entry, std::str switch(entry.index()) { case STATE_GENFLAGS: case MCS96_PSW: - strprintf(str, "%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c", + str = string_format("%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' : '.', diff --git a/src/devices/cpu/melps4/melps4.cpp b/src/devices/cpu/melps4/melps4.cpp index d228b42fbee..2602c6d0194 100644 --- a/src/devices/cpu/melps4/melps4.cpp +++ b/src/devices/cpu/melps4/melps4.cpp @@ -48,7 +48,7 @@ void melps4_cpu_device::state_string_export(const device_state_entry &entry, std { // obviously not from a single flags register, letters are made up case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c %c%c%c", + str = string_format("%c%c%c%c%c %c%c%c", m_intp ? 'P':'p', m_inte ? 'I':'i', m_sm ? 'S':'s', diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp index bae0338da76..8e812dffcde 100644 --- a/src/devices/cpu/minx/minx.cpp +++ b/src/devices/cpu/minx/minx.cpp @@ -126,7 +126,7 @@ void minx_cpu_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c-%c%c%c%c%c", + str = string_format("%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/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp index 711b9c3edf4..20d82bd3725 100644 --- a/src/devices/cpu/mips/mips3.cpp +++ b/src/devices/cpu/mips/mips3.cpp @@ -645,263 +645,263 @@ void mips3_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case MIPS3_FPS0: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][0]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][0]); break; case MIPS3_FPD0: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][0]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][0]); break; case MIPS3_FPS1: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][1]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][1]); break; case MIPS3_FPD1: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][1]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][1]); break; case MIPS3_FPS2: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][2]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][2]); break; case MIPS3_FPD2: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][2]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][2]); break; case MIPS3_FPS3: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][3]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][3]); break; case MIPS3_FPD3: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][3]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][3]); break; case MIPS3_FPS4: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][4]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][4]); break; case MIPS3_FPD4: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][4]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][4]); break; case MIPS3_FPS5: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][5]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][5]); break; case MIPS3_FPD5: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][5]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][5]); break; case MIPS3_FPS6: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][6]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][6]); break; case MIPS3_FPD6: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][6]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][6]); break; case MIPS3_FPS7: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][7]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][7]); break; case MIPS3_FPD7: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][7]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][7]); break; case MIPS3_FPS8: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][8]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][8]); break; case MIPS3_FPD8: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][8]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][8]); break; case MIPS3_FPS9: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][9]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][9]); break; case MIPS3_FPD9: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][9]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][9]); break; case MIPS3_FPS10: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][10]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][10]); break; case MIPS3_FPD10: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][10]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][10]); break; case MIPS3_FPS11: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][11]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][11]); break; case MIPS3_FPD11: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][11]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][11]); break; case MIPS3_FPS12: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][12]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][12]); break; case MIPS3_FPD12: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][12]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][12]); break; case MIPS3_FPS13: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][13]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][13]); break; case MIPS3_FPD13: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][13]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][13]); break; case MIPS3_FPS14: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][14]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][14]); break; case MIPS3_FPD14: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][14]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][14]); break; case MIPS3_FPS15: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][15]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][15]); break; case MIPS3_FPD15: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][15]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][15]); break; case MIPS3_FPS16: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][16]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][16]); break; case MIPS3_FPD16: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][16]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][16]); break; case MIPS3_FPS17: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][17]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][17]); break; case MIPS3_FPD17: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][17]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][17]); break; case MIPS3_FPS18: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][18]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][18]); break; case MIPS3_FPD18: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][18]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][18]); break; case MIPS3_FPS19: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][19]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][19]); break; case MIPS3_FPD19: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][19]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][19]); break; case MIPS3_FPS20: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][20]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][20]); break; case MIPS3_FPD20: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][20]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][20]); break; case MIPS3_FPS21: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][21]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][21]); break; case MIPS3_FPD21: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][21]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][21]); break; case MIPS3_FPS22: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][22]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][22]); break; case MIPS3_FPD22: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][22]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][22]); break; case MIPS3_FPS23: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][23]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][23]); break; case MIPS3_FPD23: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][23]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][23]); break; case MIPS3_FPS24: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][24]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][24]); break; case MIPS3_FPD24: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][24]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][24]); break; case MIPS3_FPS25: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][25]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][25]); break; case MIPS3_FPD25: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][25]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][25]); break; case MIPS3_FPS26: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][26]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][26]); break; case MIPS3_FPD26: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][26]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][26]); break; case MIPS3_FPS27: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][27]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][27]); break; case MIPS3_FPD27: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][27]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][27]); break; case MIPS3_FPS28: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][28]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][28]); break; case MIPS3_FPD28: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][28]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][28]); break; case MIPS3_FPS29: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][29]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][29]); break; case MIPS3_FPD29: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][29]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][29]); break; case MIPS3_FPS30: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][30]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][30]); break; case MIPS3_FPD30: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][30]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][30]); break; case MIPS3_FPS31: - strprintf(str, "!%16g", *(float *)&m_core->cpr[1][31]); + str = string_format("!%16g", *(float *)&m_core->cpr[1][31]); break; case MIPS3_FPD31: - strprintf(str, "!%16g", *(double *)&m_core->cpr[1][31]); + str = string_format("!%16g", *(double *)&m_core->cpr[1][31]); break; case STATE_GENFLAGS: - strprintf(str, " "); + str = " "; break; } } diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp index 1b4af66e13f..9293353c825 100644 --- a/src/devices/cpu/mn10200/mn10200.cpp +++ b/src/devices/cpu/mn10200/mn10200.cpp @@ -56,7 +56,7 @@ void mn10200_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "S=%d irq=%s im=%d %c%c%c%c %c%c%c%c", + str = string_format("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/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp index 42ef74df7d5..610cd4e433c 100644 --- a/src/devices/cpu/nec/nec.cpp +++ b/src/devices/cpu/nec/nec.cpp @@ -444,7 +444,7 @@ void nec_common_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp index c5e62446cb0..2b0f4006e38 100644 --- a/src/devices/cpu/nec/v25.cpp +++ b/src/devices/cpu/nec/v25.cpp @@ -532,7 +532,7 @@ void v25_common_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c %d %c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp index d7a9ad008fb..0a2cf9e1061 100644 --- a/src/devices/cpu/pdp1/pdp1.cpp +++ b/src/devices/cpu/pdp1/pdp1.cpp @@ -742,7 +742,7 @@ void pdp1_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c-%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp index c568b27b4c7..89d37d6f5ac 100644 --- a/src/devices/cpu/pic16c5x/pic16c5x.cpp +++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp @@ -928,11 +928,11 @@ void pic16c5x_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case PIC16C5x_PSCL: - strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); + str = string_format("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); break; case STATE_GENFLAGS: - strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x", + str = string_format("%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/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp index 9fb6e2324ab..024769d66a6 100644 --- a/src/devices/cpu/pic16c62x/pic16c62x.cpp +++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp @@ -995,11 +995,11 @@ void pic16c62x_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case PIC16C62x_PSCL: - strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); + str = string_format("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler); break; case STATE_GENFLAGS: - strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x", + str = string_format("%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/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp index a9a26b29a5c..be0e14475d2 100644 --- a/src/devices/cpu/powerpc/ppccom.cpp +++ b/src/devices/cpu/powerpc/ppccom.cpp @@ -1014,131 +1014,131 @@ void ppc_device::state_string_export(const device_state_entry &entry, std::strin switch (entry.index()) { case PPC_F0: - strprintf(str, "%12f", m_core->f[0]); + str = string_format("%12f", m_core->f[0]); break; case PPC_F1: - strprintf(str, "%12f", m_core->f[1]); + str = string_format("%12f", m_core->f[1]); break; case PPC_F2: - strprintf(str, "%12f", m_core->f[2]); + str = string_format("%12f", m_core->f[2]); break; case PPC_F3: - strprintf(str, "%12f", m_core->f[3]); + str = string_format("%12f", m_core->f[3]); break; case PPC_F4: - strprintf(str, "%12f", m_core->f[4]); + str = string_format("%12f", m_core->f[4]); break; case PPC_F5: - strprintf(str, "%12f", m_core->f[5]); + str = string_format("%12f", m_core->f[5]); break; case PPC_F6: - strprintf(str, "%12f", m_core->f[6]); + str = string_format("%12f", m_core->f[6]); break; case PPC_F7: - strprintf(str, "%12f", m_core->f[7]); + str = string_format("%12f", m_core->f[7]); break; case PPC_F8: - strprintf(str, "%12f", m_core->f[8]); + str = string_format("%12f", m_core->f[8]); break; case PPC_F9: - strprintf(str, "%12f", m_core->f[9]); + str = string_format("%12f", m_core->f[9]); break; case PPC_F10: - strprintf(str, "%12f", m_core->f[10]); + str = string_format("%12f", m_core->f[10]); break; case PPC_F11: - strprintf(str, "%12f", m_core->f[11]); + str = string_format("%12f", m_core->f[11]); break; case PPC_F12: - strprintf(str, "%12f", m_core->f[12]); + str = string_format("%12f", m_core->f[12]); break; case PPC_F13: - strprintf(str, "%12f", m_core->f[13]); + str = string_format("%12f", m_core->f[13]); break; case PPC_F14: - strprintf(str, "%12f", m_core->f[14]); + str = string_format("%12f", m_core->f[14]); break; case PPC_F15: - strprintf(str, "%12f", m_core->f[15]); + str = string_format("%12f", m_core->f[15]); break; case PPC_F16: - strprintf(str, "%12f", m_core->f[16]); + str = string_format("%12f", m_core->f[16]); break; case PPC_F17: - strprintf(str, "%12f", m_core->f[17]); + str = string_format("%12f", m_core->f[17]); break; case PPC_F18: - strprintf(str, "%12f", m_core->f[18]); + str = string_format("%12f", m_core->f[18]); break; case PPC_F19: - strprintf(str, "%12f", m_core->f[19]); + str = string_format("%12f", m_core->f[19]); break; case PPC_F20: - strprintf(str, "%12f", m_core->f[20]); + str = string_format("%12f", m_core->f[20]); break; case PPC_F21: - strprintf(str, "%12f", m_core->f[21]); + str = string_format("%12f", m_core->f[21]); break; case PPC_F22: - strprintf(str, "%12f", m_core->f[22]); + str = string_format("%12f", m_core->f[22]); break; case PPC_F23: - strprintf(str, "%12f", m_core->f[23]); + str = string_format("%12f", m_core->f[23]); break; case PPC_F24: - strprintf(str, "%12f", m_core->f[24]); + str = string_format("%12f", m_core->f[24]); break; case PPC_F25: - strprintf(str, "%12f", m_core->f[25]); + str = string_format("%12f", m_core->f[25]); break; case PPC_F26: - strprintf(str, "%12f", m_core->f[26]); + str = string_format("%12f", m_core->f[26]); break; case PPC_F27: - strprintf(str, "%12f", m_core->f[27]); + str = string_format("%12f", m_core->f[27]); break; case PPC_F28: - strprintf(str, "%12f", m_core->f[28]); + str = string_format("%12f", m_core->f[28]); break; case PPC_F29: - strprintf(str, "%12f", m_core->f[29]); + str = string_format("%12f", m_core->f[29]); break; case PPC_F30: - strprintf(str, "%12f", m_core->f[30]); + str = string_format("%12f", m_core->f[30]); break; case PPC_F31: - strprintf(str, "%12f", m_core->f[31]); + str = string_format("%12f", m_core->f[31]); break; } } diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp index 43c79059d4b..5ae8e822846 100644 --- a/src/devices/cpu/pps4/pps4.cpp +++ b/src/devices/cpu/pps4/pps4.cpp @@ -1557,7 +1557,7 @@ void pps4_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c", + str = string_format("%c%c%c", m_C ? 'C':'.', m_FF1 ? '1':'.', m_FF2 ? '2':'.'); diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index c3e2e340d24..2c4db7ecbc6 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -2033,11 +2033,11 @@ void psxcpu_device::state_string_export( const device_state_entry &entry, std::s case PSXCPU_DELAYR: if( m_delayr <= PSXCPU_DELAYR_NOTPC ) { - strprintf(str, "%02x %-3s", m_delayr, delayn[m_delayr]); + str = string_format("%02x %-3s", m_delayr, delayn[m_delayr]); } else { - strprintf(str, "%02x ---", m_delayr); + str = string_format("%02x ---", m_delayr); } break; } diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp index 1939cb33b5f..246843fb6af 100644 --- a/src/devices/cpu/rsp/rsp.cpp +++ b/src/devices/cpu/rsp/rsp.cpp @@ -548,7 +548,7 @@ void rsp_device::state_string_export(const device_state_entry &entry, std::strin } else if (index == STATE_GENFLAGS) { - strprintf(str, "%s", ""); + str = ""; } } diff --git a/src/devices/cpu/rsp/rspcp2.cpp b/src/devices/cpu/rsp/rspcp2.cpp index cb45d906bde..ae5d2ade7e5 100644 --- a/src/devices/cpu/rsp/rspcp2.cpp +++ b/src/devices/cpu/rsp/rspcp2.cpp @@ -751,100 +751,100 @@ void rsp_cop2::state_string_export(const int index, std::string &str) const switch (index) { case RSP_V0: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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/devices/cpu/rsp/rspcp2d.cpp b/src/devices/cpu/rsp/rspcp2d.cpp index 4caacd28a0d..cdcfb175f47 100644 --- a/src/devices/cpu/rsp/rspcp2d.cpp +++ b/src/devices/cpu/rsp/rspcp2d.cpp @@ -152,100 +152,100 @@ void rsp_cop2_drc::state_string_export(const int index, std::string &str) const switch (index) { case RSP_V0: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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: - 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)); + str = string_format("%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/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp index 8a257ff5a9e..02f343932d5 100644 --- a/src/devices/cpu/s2650/s2650.cpp +++ b/src/devices/cpu/s2650/s2650.cpp @@ -881,7 +881,7 @@ void s2650_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/saturn/saturn.cpp b/src/devices/cpu/saturn/saturn.cpp index 3e25ae6b76f..98904446dd7 100644 --- a/src/devices/cpu/saturn/saturn.cpp +++ b/src/devices/cpu/saturn/saturn.cpp @@ -177,47 +177,47 @@ void saturn_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case SATURN_A: - strprintf(str, Reg64Format, Reg64Data(m_reg[A]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[A]) ); break; case SATURN_B: - strprintf(str, Reg64Format, Reg64Data(m_reg[B]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[B]) ); break; case SATURN_C: - strprintf(str, Reg64Format, Reg64Data(m_reg[C]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[C]) ); break; case SATURN_D: - strprintf(str, Reg64Format, Reg64Data(m_reg[D]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[D]) ); break; case SATURN_R0: - strprintf(str, Reg64Format, Reg64Data(m_reg[R0]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[R0]) ); break; case SATURN_R1: - strprintf(str, Reg64Format, Reg64Data(m_reg[R1]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[R1]) ); break; case SATURN_R2: - strprintf(str, Reg64Format, Reg64Data(m_reg[R2]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[R2]) ); break; case SATURN_R3: - strprintf(str, Reg64Format, Reg64Data(m_reg[R3]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[R3]) ); break; case SATURN_R4: - strprintf(str, Reg64Format, Reg64Data(m_reg[R4]) ); + str = string_format( Reg64Format, Reg64Data(m_reg[R4]) ); break; case SATURN_IRQ_STATE: - strprintf(str, "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state ); + str = string_format( "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state ); break; case STATE_GENFLAGS: - strprintf(str, "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' ); + str = string_format( "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' ); break; } } diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp index 27251e10e78..ac63f371132 100644 --- a/src/devices/cpu/sc61860/sc61860.cpp +++ b/src/devices/cpu/sc61860/sc61860.cpp @@ -176,7 +176,7 @@ void sc61860_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.'); + str = string_format("%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.'); break; } } diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp index 2e1cf4cd021..62717f0035e 100644 --- a/src/devices/cpu/scmp/scmp.cpp +++ b/src/devices/cpu/scmp/scmp.cpp @@ -552,7 +552,7 @@ void scmp_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", (m_SR & 0x80) ? 'C' : '.', (m_SR & 0x40) ? 'V' : '.', (m_SR & 0x20) ? 'B' : '.', diff --git a/src/devices/cpu/score/score.cpp b/src/devices/cpu/score/score.cpp index 984f832b464..a10b5320996 100644 --- a/src/devices/cpu/score/score.cpp +++ b/src/devices/cpu/score/score.cpp @@ -81,13 +81,13 @@ void score7_cpu_device::device_start() state_add(SCORE_PC , "PC" , m_pc).callimport().callexport().formatstr("%08X"); for(int i=0; i<0x20; i++) - state_add(SCORE_GPR + i, strformat("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_GPR + i, string_format("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X"); for(int i=0; i<0x20; i++) - state_add(SCORE_CR + i, strformat("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_CR + i, string_format("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X"); for(int i=0; i<3; i++) - state_add(SCORE_SR + i, strformat("sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X"); + state_add(SCORE_SR + i, string_format("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"); @@ -135,7 +135,7 @@ void score7_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s%s%s%s%s", + str = string_format("%s%s%s%s%s", REG_CR & FLAG_V ? "V" : ".", REG_CR & FLAG_C ? "C" : ".", REG_CR & FLAG_Z ? "Z" : ".", diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp index f0ec1644af5..d752b082189 100644 --- a/src/devices/cpu/scudsp/scudsp.cpp +++ b/src/devices/cpu/scudsp/scudsp.cpp @@ -1015,7 +1015,7 @@ void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s%s%s%c%c%c%c%c%s%s%s", + str = string_format("%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/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp index 45c4c38cc86..65c109f8ff4 100644 --- a/src/devices/cpu/se3208/se3208.cpp +++ b/src/devices/cpu/se3208/se3208.cpp @@ -1814,7 +1814,7 @@ void se3208_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c %c%c%c%c%c", + str = string_format("%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/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp index 481f2544126..751349dbd0c 100644 --- a/src/devices/cpu/sh2/sh2.cpp +++ b/src/devices/cpu/sh2/sh2.cpp @@ -2588,7 +2588,7 @@ void sh2_device::state_string_export(const device_state_entry &entry, std::strin switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%d%c%c", + str = string_format("%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/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp index fc67b4d9d86..74bf64e8f1d 100644 --- a/src/devices/cpu/sh4/sh4.cpp +++ b/src/devices/cpu/sh4/sh4.cpp @@ -4458,7 +4458,7 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s%s%s%s%c%c%d%c%c", + str = string_format("%s%s%s%s%c%c%d%c%c", m_sr & MD ? "MD ":" ", m_sr & sRB ? "RB ":" ", m_sr & BL ? "BL ":" ", @@ -4471,131 +4471,131 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, std: break; case SH4_FR0: - strprintf(str, "%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor)); break; case SH4_FR1: - strprintf(str, "%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor)); break; case SH4_FR2: - strprintf(str, "%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor)); break; case SH4_FR3: - strprintf(str, "%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor)); break; case SH4_FR4: - strprintf(str, "%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor)); break; case SH4_FR5: - strprintf(str, "%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor)); break; case SH4_FR6: - strprintf(str, "%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor)); break; case SH4_FR7: - strprintf(str, "%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor)); break; case SH4_FR8: - strprintf(str, "%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor)); break; case SH4_FR9: - strprintf(str, "%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor)); break; case SH4_FR10: - strprintf(str, "%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor)); break; case SH4_FR11: - strprintf(str, "%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor)); break; case SH4_FR12: - strprintf(str, "%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor)); break; case SH4_FR13: - strprintf(str, "%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor)); break; case SH4_FR14: - strprintf(str, "%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor)); break; case SH4_FR15: - strprintf(str, "%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor)); + str = string_format("%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor)); break; case SH4_XF0: - strprintf(str, "%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor)); break; case SH4_XF1: - strprintf(str, "%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor)); break; case SH4_XF2: - strprintf(str, "%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor)); break; case SH4_XF3: - strprintf(str, "%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor)); break; case SH4_XF4: - strprintf(str, "%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor)); break; case SH4_XF5: - strprintf(str, "%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor)); break; case SH4_XF6: - strprintf(str, "%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor)); break; case SH4_XF7: - strprintf(str, "%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor)); break; case SH4_XF8: - strprintf(str, "%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor)); break; case SH4_XF9: - strprintf(str, "%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor)); break; case SH4_XF10: - strprintf(str, "%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor)); break; case SH4_XF11: - strprintf(str, "%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor)); break; case SH4_XF12: - strprintf(str, "%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor)); break; case SH4_XF13: - strprintf(str, "%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor)); break; case SH4_XF14: - strprintf(str, "%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor)); break; case SH4_XF15: - strprintf(str, "%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor)); + str = string_format("%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor)); break; } diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp index 66c51c61e5b..dff83dbd9f4 100644 --- a/src/devices/cpu/sm8500/sm8500.cpp +++ b/src/devices/cpu/sm8500/sm8500.cpp @@ -146,43 +146,43 @@ void sm8500_cpu_device::state_string_export(const device_state_entry &entry, std switch (entry.index()) { case SM8500_PS: - strprintf(str, "%04X", ( m_PS0 << 8 ) | m_PS1 ); + str = string_format("%04X", ( m_PS0 << 8 ) | m_PS1 ); break; case SM8500_RR0: - strprintf(str, "%04X", mem_readword( 0x00 ) ); + str = string_format("%04X", mem_readword( 0x00 ) ); break; case SM8500_RR2: - strprintf(str, "%04X", mem_readword( 0x02 ) ); + str = string_format("%04X", mem_readword( 0x02 ) ); break; case SM8500_RR4: - strprintf(str, "%04X", mem_readword( 0x04 ) ); + str = string_format("%04X", mem_readword( 0x04 ) ); break; case SM8500_RR6: - strprintf(str, "%04X", mem_readword( 0x06 ) ); + str = string_format("%04X", mem_readword( 0x06 ) ); break; case SM8500_RR8: - strprintf(str, "%04X", mem_readword( 0x08 ) ); + str = string_format("%04X", mem_readword( 0x08 ) ); break; case SM8500_RR10: - strprintf(str, "%04X", mem_readword( 0x0a ) ); + str = string_format("%04X", mem_readword( 0x0a ) ); break; case SM8500_RR12: - strprintf(str, "%04X", mem_readword( 0x0c ) ); + str = string_format("%04X", mem_readword( 0x0c ) ); break; case SM8500_RR14: - strprintf(str, "%04X", mem_readword( 0x0e ) ); + str = string_format("%04X", mem_readword( 0x0e ) ); break; case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp index 22969235ae7..abd0b7bf44e 100644 --- a/src/devices/cpu/spc700/spc700.cpp +++ b/src/devices/cpu/spc700/spc700.cpp @@ -1249,7 +1249,7 @@ void spc700_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp index 438e36cbd9e..bb2d4683ef2 100644 --- a/src/devices/cpu/ssem/ssem.cpp +++ b/src/devices/cpu/ssem/ssem.cpp @@ -154,7 +154,7 @@ void ssem_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c", m_halt ? 'H' : '.'); + str = string_format("%c", m_halt ? 'H' : '.'); break; } } diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp index db50c5e6816..e583ac0bfb3 100644 --- a/src/devices/cpu/ssp1601/ssp1601.cpp +++ b/src/devices/cpu/ssp1601/ssp1601.cpp @@ -552,8 +552,11 @@ void ssp1601_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - 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':'.' + str = string_format("%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/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp index 5e32e2081f5..f2337e6bae7 100644 --- a/src/devices/cpu/t11/t11.cpp +++ b/src/devices/cpu/t11/t11.cpp @@ -296,7 +296,7 @@ void t11_device::state_string_export(const device_state_entry &entry, std::strin switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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':'.', @@ -315,7 +315,7 @@ void k1801vm2_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c%c", m_psw.b.l & 0x100 ? 'H':'.', m_psw.b.l & 0x80 ? 'P':'.', m_psw.b.l & 0x40 ? '?':'.', diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp index 994d0abb3da..3719154174f 100644 --- a/src/devices/cpu/tlcs90/tlcs90.cpp +++ b/src/devices/cpu/tlcs90/tlcs90.cpp @@ -2771,7 +2771,7 @@ void tlcs90_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", F & 0x80 ? 'S':'.', F & 0x40 ? 'Z':'.', F & 0x20 ? 'I':'.', diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp index 2b5d45d7757..2a7399de6bd 100644 --- a/src/devices/cpu/tlcs900/tlcs900.cpp +++ b/src/devices/cpu/tlcs900/tlcs900.cpp @@ -389,7 +389,7 @@ void tlcs900h_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%d%c%d%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/tms0980/tms0980.cpp b/src/devices/cpu/tms0980/tms0980.cpp index 7bc62b5a475..1389a080031 100644 --- a/src/devices/cpu/tms0980/tms0980.cpp +++ b/src/devices/cpu/tms0980/tms0980.cpp @@ -480,7 +480,7 @@ void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENPC: - strprintf(str, "%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0)); + str = string_format("%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0)); break; } } diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp index 3a164e8f984..423149feacc 100644 --- a/src/devices/cpu/tms32010/tms32010.cpp +++ b/src/devices/cpu/tms32010/tms32010.cpp @@ -900,7 +900,7 @@ void tms32010_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp index 2d40b2d3448..cd95f1a96c8 100644 --- a/src/devices/cpu/tms32025/tms32025.cpp +++ b/src/devices/cpu/tms32025/tms32025.cpp @@ -1806,7 +1806,7 @@ void tms32025_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "arp%d%c%c%c%cdp%03x arb%d%c%c%c%c%c%c%c%c%c%c%cpm%d", + str = string_format("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/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp index cfab62a7929..cf7b457036d 100644 --- a/src/devices/cpu/tms32031/tms32031.cpp +++ b/src/devices/cpu/tms32031/tms32031.cpp @@ -541,12 +541,12 @@ void tms3203x_device::state_string_export(const device_state_entry &entry, std:: case TMS3203X_R5F: case TMS3203X_R6F: case TMS3203X_R7F: - strprintf(str, "%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double()); + str = string_format("%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double()); break; case STATE_GENFLAGS: UINT32 temp = m_r[TMR_ST].i32[0]; - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", (temp & 0x80) ? 'O':'.', (temp & 0x40) ? 'U':'.', (temp & 0x20) ? 'V':'.', diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp index 8b89bc3ef88..baf444dd064 100644 --- a/src/devices/cpu/tms32082/tms32082.cpp +++ b/src/devices/cpu/tms32082/tms32082.cpp @@ -219,7 +219,7 @@ void tms32082_mp_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "?"); + str = "?"; break; } } @@ -516,7 +516,7 @@ void tms32082_pp_device::state_string_export(const device_state_entry &entry, st switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "?"); + str = "?"; break; } } diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index 68f410d5b2b..3bda4e028ac 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -594,11 +594,11 @@ void tms340x0_device::device_start() for (int regnum = 0; regnum < 15; regnum++) { - state_add(TMS34010_A0 + regnum, strformat("A%d", regnum).c_str(), m_regs[regnum].reg); + state_add(TMS34010_A0 + regnum, string_format("A%d", regnum).c_str(), m_regs[regnum].reg); } for (int regnum = 0; regnum < 15; regnum++) { - state_add(TMS34010_B0 + regnum, strformat("B%d", regnum).c_str(), m_regs[30 - regnum].reg); + state_add(TMS34010_B0 + regnum, string_format("B%d", regnum).c_str(), m_regs[30 - regnum].reg); } } @@ -1603,7 +1603,7 @@ void tms340x0_device::state_string_export(const device_state_entry &entry, std:: switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp index 42e76319855..d64b47d924c 100644 --- a/src/devices/cpu/tms7000/tms7000.cpp +++ b/src/devices/cpu/tms7000/tms7000.cpp @@ -262,7 +262,7 @@ void tms7000_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp index 69b608a6592..fd0263ac8fb 100644 --- a/src/devices/cpu/ucom4/ucom4.cpp +++ b/src/devices/cpu/ucom4/ucom4.cpp @@ -82,7 +82,7 @@ void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std: { // obviously not from a single flags register case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c", + str = string_format("%c%c%c%c%c", m_inte_f ? 'E':'e', m_int_f ? 'I':'i', m_timer_f ? 'T':'t', diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp index 5b9785f792c..74add242e58 100644 --- a/src/devices/cpu/uml.cpp +++ b/src/devices/cpu/uml.cpp @@ -867,19 +867,14 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const assert(m_opcode != OP_INVALID && m_opcode < OP_MAX); // start with the raw mnemonic and substitute sizes - std::string buffer; + std::ostringstream buffer; for (const char *opsrc = opinfo.mnemonic; *opsrc != 0; opsrc++) if (*opsrc == '!') - strcatprintf(buffer, "%s", bang_size[m_size]); + stream_format(buffer, "%-8s", bang_size[m_size]); else if (*opsrc == '#') - strcatprintf(buffer, "%s", pound_size[m_size]); + stream_format(buffer, "%-8s", pound_size[m_size]); else - buffer.push_back(*opsrc); - - // pad to 8 spaces - int pad = 8 - buffer.length(); - for (int ch = 0; ch < pad; ch++) - buffer.push_back(' '); + stream_format(buffer, "%-8c", *opsrc); // iterate through parameters for (int pnum = 0; pnum < m_numparams; pnum++) @@ -888,7 +883,7 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const // start with a comma for all except the first parameter if (pnum != 0) - buffer.push_back(','); + buffer.put(','); // ouput based on type switch (param.type()) @@ -916,20 +911,20 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const if (size == 2) value = (UINT16)value; if (size == 4) value = (UINT32)value; if ((UINT32)value == value) - strcatprintf(buffer, "$%X", (UINT32)value); + stream_format(buffer, "$%X", (UINT32)value); else - strcatprintf(buffer, "$%X%08X", (UINT32)(value >> 32), (UINT32)value); + stream_format(buffer, "$%X%08X", (UINT32)(value >> 32), (UINT32)value); } break; // immediates have several special cases case parameter::PTYPE_SIZE: - strcatprintf(buffer, "%s", sizes[param.size()]); + stream_format(buffer, "%s", sizes[param.size()]); break; // size + address space immediate case parameter::PTYPE_SIZE_SPACE: - strcatprintf(buffer, "%s_%s", spaces[param.space()], sizes[param.size()]); + stream_format(buffer, "%s_%s", spaces[param.space()], sizes[param.size()]); break; // size + scale immediate @@ -938,30 +933,30 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const int scale = param.scale(); int size = param.size(); if (scale == size) - strcatprintf(buffer, "%s", sizes[size]); + stream_format(buffer, "%s", sizes[size]); else - strcatprintf(buffer, "%s_x%d", sizes[size], 1 << scale); + stream_format(buffer, "%s_x%d", sizes[size], 1 << scale); } break; // fmod immediate case parameter::PTYPE_ROUNDING: - strcatprintf(buffer, "%s", fmods[param.rounding()]); + stream_format(buffer, "%s", fmods[param.rounding()]); break; // integer registers case parameter::PTYPE_INT_REGISTER: - strcatprintf(buffer, "i%d", param.ireg() - REG_I0); + stream_format(buffer, "i%d", param.ireg() - REG_I0); break; // floating point registers case parameter::PTYPE_FLOAT_REGISTER: - strcatprintf(buffer, "f%d", param.freg() - REG_F0); + stream_format(buffer, "f%d", param.freg() - REG_F0); break; // map variables case parameter::PTYPE_MAPVAR: - strcatprintf(buffer, "m%d", param.mapvar() - MAPVAR_M0); + stream_format(buffer, "m%d", param.mapvar() - MAPVAR_M0); break; // memory @@ -974,55 +969,55 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const if (drcuml != nullptr && (symbol = drcuml->symbol_find(param.memory(), &symoffset)) != nullptr) { if (symoffset == 0) - strcatprintf(buffer, "[%s]", symbol); + stream_format(buffer, "[%s]", symbol); else - strcatprintf(buffer, "[%s+$%X]", symbol, symoffset); + stream_format(buffer, "[%s+$%X]", symbol, symoffset); } // cache memory else if (drcuml != nullptr && drcuml->cache().contains_pointer(param.memory())) - strcatprintf(buffer, "[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near())); + stream_format(buffer, "[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near())); // general memory else - strcatprintf(buffer, "[[$%p]]", param.memory()); + stream_format(buffer, "[[$%p]]", param.memory()); break; } // string pointer case parameter::PTYPE_STRING: - strcatprintf(buffer, "%s", (const char *)(FPTR)param.string()); + stream_format(buffer, "%s", (const char *)(FPTR)param.string()); break; // handle pointer case parameter::PTYPE_CODE_HANDLE: - strcatprintf(buffer, "%s", param.handle().string()); + stream_format(buffer, "%s", param.handle().string()); break; default: - strcatprintf(buffer, "???"); + stream_format(buffer, "???"); break; } } // if there's a condition, append it if (m_condition != COND_ALWAYS) - strcatprintf(buffer, ",%s", conditions[m_condition & 0x0f]); + stream_format(buffer, ",%s", conditions[m_condition & 0x0f]); // if there are flags, append them if (m_flags != 0) { - buffer.push_back(','); + buffer.put(','); if (m_flags & FLAG_U) - buffer.push_back('U'); + buffer.put('U'); if (m_flags & FLAG_S) - buffer.push_back('S'); + buffer.put('S'); if (m_flags & FLAG_Z) - buffer.push_back('Z'); + buffer.put('Z'); if (m_flags & FLAG_V) - buffer.push_back('V'); + buffer.put('V'); if (m_flags & FLAG_C) - buffer.push_back('C'); + buffer.put('C'); } - return buffer; + return buffer.str(); } diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp index ef211dd13c3..a3913e3f6c1 100644 --- a/src/devices/cpu/upd7725/upd7725.cpp +++ b/src/devices/cpu/upd7725/upd7725.cpp @@ -207,7 +207,7 @@ void necdsp_device::state_string_export(const device_state_entry &entry, std::st switch (entry.index()) { case UPD7725_FLAGA: - strprintf(str, "%s %s %c%c %s %s %s %s", + str = string_format("%s %s %c%c %s %s %s %s", regs.flaga.s1 ? "S1" : "s1", regs.flaga.s0 ? "S0" : "s0", regs.flaga.c ? 'C' : 'c', @@ -219,7 +219,7 @@ void necdsp_device::state_string_export(const device_state_entry &entry, std::st break; case UPD7725_FLAGB: - strprintf(str, "%s %s %c%c %s %s %s %s", + str = string_format("%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/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp index d0974d00a74..7ab58fc46c1 100644 --- a/src/devices/cpu/upd7810/upd7810.cpp +++ b/src/devices/cpu/upd7810/upd7810.cpp @@ -1701,7 +1701,7 @@ void upd7810_device::state_string_export(const device_state_entry &entry, std::s switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%s:%s:%s:%s:%s:%s", + str = string_format("%s:%s:%s:%s:%s:%s", m_psw & 0x40 ? "ZF":"--", m_psw & 0x20 ? "SK":"--", m_psw & 0x10 ? "HC":"--", diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp index ec720d59f9a..52845538b47 100644 --- a/src/devices/cpu/v30mz/v30mz.cpp +++ b/src/devices/cpu/v30mz/v30mz.cpp @@ -190,13 +190,13 @@ void v30mz_cpu_device::state_string_export(const device_state_entry &entry, std: switch (entry.index()) { case STATE_GENPC: - strprintf(str, "%08X", ( m_sregs[CS] << 4 ) + m_ip); + str = string_format("%08X", ( m_sregs[CS] << 4 ) + m_ip); break; case STATE_GENFLAGS: { UINT16 flags = CompressFlags(); - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp index 958c28edc49..d9509d77b6b 100644 --- a/src/devices/cpu/v810/v810.cpp +++ b/src/devices/cpu/v810/v810.cpp @@ -1319,7 +1319,7 @@ void v810_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", GET_AE ? 'A':'.', GET_NP ? 'N':'.', GET_EP ? 'E':'.', diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp index c8f3b968468..8e3e5e6fb5d 100644 --- a/src/devices/cpu/z180/z180.cpp +++ b/src/devices/cpu/z180/z180.cpp @@ -2565,7 +2565,7 @@ void z180_device::state_string_export(const device_state_entry &entry, std::stri switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp index d6c4fe3de77..ad8b79f8ba5 100644 --- a/src/devices/cpu/z8/z8.cpp +++ b/src/devices/cpu/z8/z8.cpp @@ -678,7 +678,7 @@ void z8_device::device_start() state_add(STATE_GENFLAGS, "GENFLAGS", m_r[Z8_REGISTER_FLAGS]).noshow().formatstr("%6s"); for (int regnum = 0; regnum < 16; regnum++) - state_add(Z8_R0 + regnum, strformat("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport(); + state_add(Z8_R0 + regnum, string_format("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport(); } /* find address spaces */ @@ -809,7 +809,7 @@ void z8_device::state_string_export(const device_state_entry &entry, std::string { switch (entry.index()) { - case STATE_GENFLAGS: strprintf(str, "%c%c%c%c%c%c", + case STATE_GENFLAGS: str = string_format("%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/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp index bafc40e1ea3..306b1ae49f2 100644 --- a/src/devices/cpu/z80/z80.cpp +++ b/src/devices/cpu/z80/z80.cpp @@ -3658,7 +3658,7 @@ void z80_device::state_string_export(const device_state_entry &entry, std::strin switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c", + str = string_format("%c%c%c%c%c%c%c%c", F & 0x80 ? 'S':'.', F & 0x40 ? 'Z':'.', F & 0x20 ? 'Y':'.', diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp index dcc52f92fb0..9d796a518dd 100644 --- a/src/devices/cpu/z8000/z8000.cpp +++ b/src/devices/cpu/z8000/z8000.cpp @@ -621,7 +621,7 @@ void z8002_device::state_string_export(const device_state_entry &entry, std::str switch (entry.index()) { case STATE_GENFLAGS: - strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + str = string_format("%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/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp index be8b3e500f2..f9d4218856a 100644 --- a/src/devices/imagedev/diablo.cpp +++ b/src/devices/imagedev/diablo.cpp @@ -113,7 +113,6 @@ bool diablo_image_device::call_create(int create_format, option_resolution *crea int err; UINT32 sectorsize, hunksize; UINT32 cylinders, heads, sectors, totalsectors; - std::string metadata; cylinders = option_resolution_lookup_int(create_args, 'C'); heads = option_resolution_lookup_int(create_args, 'H'); @@ -130,8 +129,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 */ - strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); - err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); + err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize)); m_origchd.close(); if (err != CHDERR_NONE) diff --git a/src/devices/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp index b5fd6ca87dc..c03b0e4075b 100644 --- a/src/devices/imagedev/harddriv.cpp +++ b/src/devices/imagedev/harddriv.cpp @@ -137,7 +137,6 @@ bool harddisk_image_device::call_create(int create_format, option_resolution *cr int err; UINT32 sectorsize, hunksize; UINT32 cylinders, heads, sectors, totalsectors; - std::string metadata; cylinders = option_resolution_lookup_int(create_args, 'C'); heads = option_resolution_lookup_int(create_args, 'H'); @@ -154,8 +153,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 */ - strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize); - err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); + err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize)); m_origchd.close(); if (err != CHDERR_NONE) diff --git a/src/devices/imagedev/mfmhd.cpp b/src/devices/imagedev/mfmhd.cpp index bc8987d7b0f..843e3510f29 100644 --- a/src/devices/imagedev/mfmhd.cpp +++ b/src/devices/imagedev/mfmhd.cpp @@ -531,11 +531,8 @@ void mfm_harddisk_device::call_unload() { logerror("%s: MFM HD sector arrangement and recording specs have changed; updating CHD metadata\n", tag()); chd_file* chdfile = get_chd_file(); - std::string metadata; - strprintf(metadata, MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder); - - chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, metadata, 0); + chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, string_format(MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder), 0); if (err != CHDERR_NONE) { logerror("%s: Failed to save MFM HD sector arrangement/recording specs to CHD\n", tag()); @@ -546,11 +543,8 @@ void mfm_harddisk_device::call_unload() { logerror("%s: MFM HD track gap specs have changed; updating CHD metadata\n", tag()); chd_file* chdfile = get_chd_file(); - std::string metadata; - - strprintf(metadata, MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype); - chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, metadata, 0); + chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, string_format(MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype), 0); if (err != CHDERR_NONE) { logerror("%s: Failed to save MFM HD track gap specs to CHD\n", tag()); diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h index 961bb7a26ea..9550ee57f9d 100644 --- a/src/devices/machine/netlist.h +++ b/src/devices/machine/netlist.h @@ -225,9 +225,9 @@ protected: if (entry.index() >= 0) { if (entry.index() & 1) - strprintf(str,"%10.6f", *((double *)entry.dataptr())); + str = string_format("%10.6f", *((double *)entry.dataptr())); else - strprintf(str, "%d", *((netlist_sig_t *)entry.dataptr())); + str = string_format("%d", *((netlist_sig_t *)entry.dataptr())); } } diff --git a/src/devices/machine/ram.cpp b/src/devices/machine/ram.cpp index 7dd8f9250a4..b3730f8483d 100644 --- a/src/devices/machine/ram.cpp +++ b/src/devices/machine/ram.cpp @@ -148,16 +148,16 @@ void ram_device::device_validity_check(validity_checker &valid) const if (!is_valid) { - std::string output; - strcatprintf(output, "Cannot recognize the RAM option %s", ramsize_string); - strcatprintf(output, " (valid options are %s", m_default_size); + std::ostringstream output; + stream_format(output, "Cannot recognize the RAM option %s", ramsize_string); + stream_format(output, " (valid options are %s", m_default_size); if (m_extra_options != nullptr) - strcatprintf(output, ",%s).\n", m_extra_options); + stream_format(output, ",%s).\n", m_extra_options); else - strcatprintf(output, ").\n"); + stream_format(output, ").\n"); - osd_printf_error("%s", output.c_str()); + osd_printf_error("%s", output.str().c_str()); osd_printf_warning("Setting value to default %s\n",m_default_size); std::string error; diff --git a/src/emu/audit.cpp b/src/emu/audit.cpp index b1016967931..7f371ee56c8 100644 --- a/src/emu/audit.cpp +++ b/src/emu/audit.cpp @@ -347,36 +347,36 @@ media_auditor::summary media_auditor::summarize(const char *name, std::string *o // output the game name, file name, and length (if applicable) if (output != nullptr) { - strcatprintf(*output,"%-12s: %s", name, record->name()); + output->append(string_format("%-12s: %s", name, record->name())); if (record->expected_length() > 0) - strcatprintf(*output," (%" I64FMT "d bytes)", record->expected_length()); - strcatprintf(*output," - "); + output->append(string_format(" (%d bytes)", record->expected_length())); + output->append(" - "); } // use the substatus for finer details switch (record->substatus()) { case audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP: - if (output != nullptr) strcatprintf(*output,"NEEDS REDUMP\n"); + if (output != nullptr) output->append("NEEDS REDUMP\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_FOUND_NODUMP: - if (output != nullptr) strcatprintf(*output,"NO GOOD DUMP KNOWN\n"); + if (output != nullptr) output->append("NO GOOD DUMP KNOWN\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM: if (output != nullptr) { - strcatprintf(*output,"INCORRECT CHECKSUM:\n"); - strcatprintf(*output,"EXPECTED: %s\n", record->expected_hashes().macro_string().c_str()); - strcatprintf(*output," FOUND: %s\n", record->actual_hashes().macro_string().c_str()); + output->append("INCORRECT CHECKSUM:\n"); + output->append(string_format("EXPECTED: %s\n", record->expected_hashes().macro_string().c_str())); + output->append(string_format(" FOUND: %s\n", record->actual_hashes().macro_string().c_str())); } break; case audit_record::SUBSTATUS_FOUND_WRONG_LENGTH: - if (output != nullptr) strcatprintf(*output,"INCORRECT LENGTH: %" I64FMT "d bytes\n", record->actual_length()); + if (output != nullptr) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record->actual_length())); break; case audit_record::SUBSTATUS_NOT_FOUND: @@ -384,20 +384,20 @@ media_auditor::summary media_auditor::summarize(const char *name, std::string *o { device_t *shared_device = record->shared_device(); if (shared_device == nullptr) - strcatprintf(*output,"NOT FOUND\n"); + output->append("NOT FOUND\n"); else - strcatprintf(*output,"NOT FOUND (%s)\n", shared_device->shortname()); + output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname())); } best_new_status = NOTFOUND; break; case audit_record::SUBSTATUS_NOT_FOUND_NODUMP: - if (output != nullptr) strcatprintf(*output,"NOT FOUND - NO GOOD DUMP KNOWN\n"); + if (output != nullptr) output->append("NOT FOUND - NO GOOD DUMP KNOWN\n"); best_new_status = BEST_AVAILABLE; break; case audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL: - if (output != nullptr) strcatprintf(*output,"NOT FOUND BUT OPTIONAL\n"); + if (output != nullptr) output->append("NOT FOUND BUT OPTIONAL\n"); best_new_status = BEST_AVAILABLE; break; diff --git a/src/emu/cheat.cpp b/src/emu/cheat.cpp index c055ba5bdb2..6b24b22fc35 100644 --- a/src/emu/cheat.cpp +++ b/src/emu/cheat.cpp @@ -108,16 +108,16 @@ inline std::string number_and_format::format() const { default: case XML_INT_FORMAT_DECIMAL: - return strformat("%d", (UINT32)m_value); + return string_format("%d", (UINT32)m_value); case XML_INT_FORMAT_DECIMAL_POUND: - return strformat("#%d", (UINT32)m_value); + return string_format("#%d", (UINT32)m_value); case XML_INT_FORMAT_HEX_DOLLAR: - return strformat("$%X", (UINT32)m_value); + return string_format("$%X", (UINT32)m_value); case XML_INT_FORMAT_HEX_C: - return strformat("0x%X", (UINT32)m_value); + return string_format("0x%X", (UINT32)m_value); } } @@ -174,12 +174,13 @@ const char *cheat_parameter::text() { // are we a value cheat? if (!has_itemlist()) - strprintf(m_curtext,"%d (0x%X)", UINT32(m_value), UINT32(m_value)); - - // if not, we're an item cheat + { + m_curtext = string_format("%d (0x%X)", UINT32(m_value), UINT32(m_value)); + } else { - strprintf(m_curtext, "??? (%d)", UINT32(m_value)); + // if not, we're an item cheat + m_curtext = string_format("??? (%d)", UINT32(m_value)); for (item *curitem = m_itemlist.first(); curitem != nullptr; curitem = curitem->next()) if (curitem->value() == m_value) { @@ -502,7 +503,7 @@ void cheat_script::script_entry::execute(cheat_manager &manager, UINT64 &arginde curarg += arg->values(argindex, ¶ms[curarg]); // generate the astring - strprintf(manager.get_output_astring(m_line, m_justify), m_format.c_str(), + manager.get_output_astring(m_line, m_justify) = string_format(m_format, (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], @@ -697,7 +698,7 @@ cheat_entry::cheat_entry(cheat_manager &manager, symbol_table &globaltable, cons // create the symbol table m_symbols.add("argindex", symbol_table::READ_ONLY, &m_argindex); for (int curtemp = 0; curtemp < tempcount; curtemp++) { - m_symbols.add(strformat("temp%d", curtemp).c_str(), symbol_table::READ_WRITE); + m_symbols.add(string_format("temp%d", curtemp).c_str(), symbol_table::READ_WRITE); } // read the first comment node @@ -1133,9 +1134,7 @@ void cheat_manager::reload() // have the same shortname if (image->software_entry() != nullptr) { - std::string filename; - strprintf(filename, "%s%s%s", image->software_list_name(), PATH_SEPARATOR, image->basename()); - load_cheats(filename.c_str()); + load_cheats(string_format("%s%s%s", image->software_list_name(), PATH_SEPARATOR, image->basename()).c_str()); break; } // else we are loading outside the software list, try to load machine_basename/crc32.xml @@ -1144,9 +1143,7 @@ void cheat_manager::reload() UINT32 crc = image->crc(); if (crc != 0) { - std::string filename; - strprintf(filename, "%s%s%08X", machine().basename(), PATH_SEPARATOR, crc); - load_cheats(filename.c_str()); + load_cheats(string_format("%s%s%08X", machine().basename(), PATH_SEPARATOR, crc).c_str()); break; } } diff --git a/src/emu/clifront.cpp b/src/emu/clifront.cpp index 8967e4c0343..4476e4e0151 100644 --- a/src/emu/clifront.cpp +++ b/src/emu/clifront.cpp @@ -152,8 +152,7 @@ int cli_frontend::execute(int argc, char **argv) // mount only if not already mounted if (*option == 0) { - std::string val; - strprintf(val, "%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name()); + std::string val = string_format("%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(), swpart); @@ -718,8 +717,7 @@ void cli_frontend::listmedia(const char *gamename) for (const device_image_interface *imagedev = iter.first(); imagedev != nullptr; imagedev = iter.next()) { // extract the shortname with parentheses - std::string paren_shortname; - strprintf(paren_shortname,"(%s)", imagedev->brief_instance_name()); + std::string paren_shortname = string_format("(%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()); diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index 7ad039806ea..c690dad5bd3 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -1036,14 +1036,14 @@ static void execute_ignore(running_machine &machine, int ref, int params, const if (!exec->device().debug()->observing()) { if (buffer.empty()) - strprintf(buffer, "Currently ignoring device '%s'", exec->device().tag()); + buffer = string_format("Currently ignoring device '%s'", exec->device().tag()); else - strcatprintf(buffer, ", '%s'", exec->device().tag()); + buffer.append(string_format(", '%s'", exec->device().tag())); } /* special message for none */ if (buffer.empty()) - strprintf(buffer, "Not currently ignoring any devices"); + buffer = string_format("Not currently ignoring any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1101,14 +1101,14 @@ static void execute_observe(running_machine &machine, int ref, int params, const if (exec->device().debug()->observing()) { if (buffer.empty()) - strprintf(buffer, "Currently observing CPU '%s'", exec->device().tag()); + buffer = string_format("Currently observing CPU '%s'", exec->device().tag()); else - strcatprintf(buffer, ", '%s'", exec->device().tag()); + buffer.append(string_format(", '%s'", exec->device().tag())); } /* special message for none */ if (buffer.empty()) - strprintf(buffer, "Not currently observing any devices"); + buffer = string_format("Not currently observing any devices"); debug_console_printf(machine, "%s\n", buffer.c_str()); } @@ -1329,11 +1329,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 != nullptr; bp = bp->next()) { - strprintf(buffer, "%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars())); + buffer = string_format("%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()); + buffer.append(string_format(" if %s", bp->condition())); if (std::string(bp->action()).compare("") != 0) - strcatprintf(buffer, " do %s", bp->action()); + buffer.append(string_format(" do %s", bp->action())); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } @@ -1496,14 +1496,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 != nullptr; wp = wp->next()) { - strprintf(buffer, "%c%4X @ %s-%s %s", wp->enabled() ? ' ' : 'D', wp->index(), + buffer = string_format("%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 (std::string(wp->condition()).compare("1") != 0) - strcatprintf(buffer, " if %s", wp->condition()); + buffer.append(string_format(" if %s", wp->condition())); if (std::string(wp->action()).compare("") != 0) - strcatprintf(buffer, " do %s", wp->action()); + buffer.append(string_format(" do %s", wp->action())); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } @@ -1639,10 +1639,9 @@ 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 != nullptr; rp = rp->next()) { - strprintf(buffer, "%c%4X ", rp->enabled() ? ' ' : 'D', rp->index()); - strcatprintf(buffer, "if %s", rp->condition()); + buffer = string_format("%c%4X if %s", rp->enabled() ? ' ' : 'D', rp->index(), rp->condition()); if (rp->action() != nullptr) - strcatprintf(buffer, " do %s", rp->action()); + buffer.append(string_format(" do %s", rp->action())); debug_console_printf(machine, "%s\n", buffer.c_str()); printed++; } diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index 727b08e8f60..4bcb66588a9 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -2680,7 +2680,6 @@ const char *device_debug::comment_text(offs_t addr) const bool device_debug::comment_export(xml_data_node &curnode) { // iterate through the comments - std::string crc_buf; for (const auto & elem : m_comment_set) { xml_data_node *datanode = xml_add_child(&curnode, "comment", xml_normalize_string(elem.m_text.c_str())); @@ -2688,8 +2687,7 @@ bool device_debug::comment_export(xml_data_node &curnode) return false; xml_set_attribute_int(datanode, "address", elem.m_address); xml_set_attribute_int(datanode, "color", elem.m_color); - strprintf(crc_buf,"%08X", elem.m_crc); - xml_set_attribute(datanode, "crc", crc_buf.c_str()); + xml_set_attribute(datanode, "crc", string_format("%08X", elem.m_crc).c_str()); } return true; } @@ -3051,14 +3049,14 @@ void device_debug::watchpoint_check(address_space &space, int type, offs_t addre if (type & WATCHPOINT_WRITE) { - strprintf(buffer, "Stopped at watchpoint %X writing %s to %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); + buffer = string_format("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) - strcatprintf(buffer, " (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write); + buffer.append(string_format(" (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write)); else - strcatprintf(buffer, " (data=%X)", (UINT32)value_to_write); + buffer.append(string_format(" (data=%X)", (UINT32)value_to_write)); } else - strprintf(buffer,"Stopped at watchpoint %X reading %s from %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc); + buffer = string_format("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(); } @@ -3486,7 +3484,7 @@ void device_debug::tracer::update(offs_t pc) // print the address std::string buffer; int logaddrchars = m_debug.logaddrchars(); - strprintf(buffer,"%0*X: ", logaddrchars, pc); + buffer = string_format("%0*X: ", logaddrchars, pc); // print the disassembly std::string dasm; diff --git a/src/emu/debug/dvbpoints.cpp b/src/emu/debug/dvbpoints.cpp index efb604e385d..1606f596ddf 100644 --- a/src/emu/debug/dvbpoints.cpp +++ b/src/emu/debug/dvbpoints.cpp @@ -134,7 +134,7 @@ void debug_view_breakpoints::enumerate_sources() for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next()) { std::string name; - strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag()); + name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag()); m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device()))); } @@ -190,14 +190,7 @@ void debug_view_breakpoints::view_click(const int button, const debug_view_xy& p void debug_view_breakpoints::pad_astring_to_length(std::string& str, int len) { - int diff = len - str.length(); - if (diff > 0) - { - std::string buffer; - for (int i = 0; i < diff; i++) - strcatprintf(buffer, " "); - strcatprintf(str, "%s", buffer.c_str()); - } + str = string_format("%-*s", std::max(len, 0), str); } @@ -236,7 +229,7 @@ void debug_view_breakpoints::view_update() // Draw debug_view_char *dest = &m_viewdata[0]; - std::string linebuf; + std::string linebuf; // Header if (m_visible.y > 0) @@ -282,8 +275,7 @@ void debug_view_breakpoints::view_update() { device_debug::breakpoint *const bp = m_buffer[bpi]; - linebuf.clear(); - strcatprintf(linebuf, "%2X", bp->index()); + linebuf = string_format("%2X", bp->index()); pad_astring_to_length(linebuf, tableBreaks[0]); linebuf.push_back(bp->enabled() ? 'X' : 'O'); pad_astring_to_length(linebuf, tableBreaks[1]); diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp index 9b05345b6ff..0b019d076ff 100644 --- a/src/emu/debug/dvdisasm.cpp +++ b/src/emu/debug/dvdisasm.cpp @@ -99,7 +99,7 @@ void debug_view_disasm::enumerate_sources() std::string name; for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next()) { - strprintf(name,"%s '%s'", dasm->device().name(), dasm->device().tag()); + name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag()); if (dasm->device().memory().space_config(AS_PROGRAM)!=nullptr) m_source_list.append(*global_alloc(debug_view_disasm_source(name.c_str(), dasm->device()))); } diff --git a/src/emu/debug/dvmemory.cpp b/src/emu/debug/dvmemory.cpp index b792d002c27..c39372af5b3 100644 --- a/src/emu/debug/dvmemory.cpp +++ b/src/emu/debug/dvmemory.cpp @@ -142,14 +142,14 @@ void debug_view_memory::enumerate_sources() if (memintf->has_space(spacenum)) { address_space &space = memintf->space(spacenum); - strprintf(name,"%s '%s' %s space memory", memintf->device().name(), memintf->device().tag(), space.name()); + name = string_format("%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 != nullptr; region = region->next()) { - strprintf(name, "Region '%s'", region->name()); + name = string_format("Region '%s'", region->name()); m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), *region))); } @@ -538,14 +538,14 @@ void debug_view_memory::recompute() else { m_maxaddr = source.m_length - 1; - addrchars = strprintf(m_addrformat, "%X", m_maxaddr); + addrchars = string_format("%X", m_maxaddr).size(); } // generate an 8-byte aligned format for the address if (!m_reverse_view) - strprintf(m_addrformat, "%*s%%0%dX", 8 - addrchars, "", addrchars); + m_addrformat = string_format("%*s%%0%dX", 8 - addrchars, "", addrchars); else - strprintf(m_addrformat, "%%0%dX%*s", addrchars, 8 - addrchars, ""); + m_addrformat = string_format("%%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 != nullptr && source.m_space->byte_to_address(1) > 1) diff --git a/src/emu/debug/dvstate.cpp b/src/emu/debug/dvstate.cpp index d0d741ed21e..8e1fe7513fd 100644 --- a/src/emu/debug/dvstate.cpp +++ b/src/emu/debug/dvstate.cpp @@ -78,7 +78,7 @@ void debug_view_state::enumerate_sources() std::string name; for (device_state_interface *state = iter.first(); state != nullptr; state = iter.next()) { - strprintf(name,"%s '%s'", state->device().name(), state->device().tag()); + name = string_format("%s '%s'", state->device().name(), state->device().tag()); m_source_list.append(*global_alloc(debug_view_state_source(name.c_str(), state->device()))); } @@ -242,7 +242,7 @@ void debug_view_state::view_update() if (source.m_execintf != nullptr) { curitem->m_currval = source.m_execintf->cycles_remaining(); - strprintf(valstr, "%-8d", (UINT32)curitem->m_currval); + valstr = string_format("%-8d", (UINT32)curitem->m_currval); } break; @@ -250,7 +250,7 @@ void debug_view_state::view_update() if (screen != nullptr) { curitem->m_currval = screen->hpos(); - strprintf(valstr, "%4d", (UINT32)curitem->m_currval); + valstr = string_format("%4d", (UINT32)curitem->m_currval); } break; @@ -258,7 +258,7 @@ void debug_view_state::view_update() if (screen != nullptr) { curitem->m_currval = screen->vpos(); - strprintf(valstr, "%4d", (UINT32)curitem->m_currval); + valstr = string_format("%4d", (UINT32)curitem->m_currval); } break; @@ -266,7 +266,7 @@ void debug_view_state::view_update() if (screen != nullptr) { curitem->m_currval = screen->frame_number(); - strprintf(valstr, "%6d", (UINT32)curitem->m_currval); + valstr = string_format("%6d", (UINT32)curitem->m_currval); } break; } diff --git a/src/emu/debug/dvwpoints.cpp b/src/emu/debug/dvwpoints.cpp index c1e346c62b2..504a1cd19fa 100644 --- a/src/emu/debug/dvwpoints.cpp +++ b/src/emu/debug/dvwpoints.cpp @@ -155,7 +155,7 @@ void debug_view_watchpoints::enumerate_sources() for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next()) { std::string name; - strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag()); + name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag()); m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device()))); } @@ -213,14 +213,7 @@ void debug_view_watchpoints::view_click(const int button, const debug_view_xy& p void debug_view_watchpoints::pad_astring_to_length(std::string& str, int len) { - int diff = len - str.length(); - if (diff > 0) - { - std::string buffer; - for (int i = 0; i < diff; i++) - buffer.append(" "); - strcatprintf(str, "%s", buffer.c_str()); - } + str = string_format("%-*s", std::max(len, 0), str); } @@ -317,8 +310,7 @@ 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.clear(); - strcatprintf(linebuf, "%2X", wp->index()); + linebuf = string_format("%2X", wp->index()); pad_astring_to_length(linebuf, tableBreaks[0]); linebuf.push_back(wp->enabled() ? 'X' : 'O'); pad_astring_to_length(linebuf, tableBreaks[1]); diff --git a/src/emu/devfind.h b/src/emu/devfind.h index 00e859437ba..44a5532b6a8 100644 --- a/src/emu/devfind.h +++ b/src/emu/devfind.h @@ -271,7 +271,7 @@ public: { for (int index = 0; index < _Count; index++) { - strprintf(m_tag[index], "%s.%d", basetag, index); + m_tag[index] = string_format("%s.%d", basetag, index); m_array[index] = std::make_unique<ioport_finder_type>(base, m_tag[index].c_str()); } } @@ -442,7 +442,7 @@ public: { for (int index = 0; index < _Count; index++) { - strprintf(m_tag[index],"%s.%d", basetag, index); + m_tag[index] = string_format("%s.%d", basetag, index); m_array[index] = std::make_unique<shared_ptr_type>(base, m_tag[index].c_str(), width); } } diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 6cc9b0fb41a..d43cfe02fed 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -1181,8 +1181,8 @@ void device_image_interface::update_names(const device_type device_type, const c const char *brief_name = (device_type!=nullptr) ? brief : device_brieftypename(image_type()); if (count > 1) { - strprintf(m_instance_name,"%s%d", inst_name, index + 1); - strprintf(m_brief_instance_name, "%s%d", brief_name, index + 1); + m_instance_name = string_format("%s%d", inst_name, index + 1); + m_brief_instance_name = string_format("%s%d", brief_name, index + 1); } else { @@ -1312,8 +1312,7 @@ 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 - std::string full_sw_name; - strprintf(full_sw_name,"%s:%s:%s", swpart->info().list().list_name(), swpart->info().shortname(), swpart->name()); + std::string full_sw_name = string_format("%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/distate.cpp b/src/emu/distate.cpp index 9986b261e93..dcf14c02ee8 100644 --- a/src/emu/distate.cpp +++ b/src/emu/distate.cpp @@ -134,7 +134,7 @@ void device_state_entry::format_from_mask() int width = 0; for (UINT64 tempmask = m_datamask; tempmask != 0; tempmask >>= 4) width++; - strprintf(m_format,"%%0%dX", width); + m_format = string_format("%%0%dX", width); } diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp index 2ff24849bf8..b90905852f7 100644 --- a/src/emu/emuopts.cpp +++ b/src/emu/emuopts.cpp @@ -334,14 +334,14 @@ void emu_options::add_device_options() add_entry(nullptr, "IMAGE DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE); // retrieve info about the device instance - std::string option_name; - strprintf(option_name, "%s;%s", image->instance_name(), image->brief_instance_name()); + std::ostringstream option_name; + stream_format(option_name, "%s;%s", image->instance_name(), image->brief_instance_name()); if (strcmp(image->device_typename(image->image_type()), image->instance_name()) == 0) - strcatprintf(option_name, ";%s1;%s1", image->instance_name(), image->brief_instance_name()); + stream_format(option_name, ";%s1;%s1", image->instance_name(), image->brief_instance_name()); // add the option if (!exists(image->instance_name())) - add_entry(option_name.c_str(), nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, nullptr, true); + add_entry(option_name.str().c_str(), nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, nullptr, true); } } @@ -574,8 +574,8 @@ bool emu_options::parse_one_ini(const char *basename, int priority, std::string bool result = parse_ini_file((core_file&)file, priority, OPTION_PRIORITY_DRIVER_INI, error); // append errors if requested - if (!error.empty() && error_string != nullptr) - strcatprintf(*error_string, "While parsing %s:\n%s\n", file.fullpath(), error.c_str()); + if (!error.empty() && error_string) + error_string->append(string_format("While parsing %s:\n%s\n", file.fullpath(), error)); return result; } diff --git a/src/emu/hash.cpp b/src/emu/hash.cpp index 20fd59ecab6..2eaa4c03c2a 100644 --- a/src/emu/hash.cpp +++ b/src/emu/hash.cpp @@ -19,10 +19,16 @@ // GLOBAL VARIABLES //************************************************************************** +const char hash_collection::HASH_CRC; +const char hash_collection::HASH_SHA1; + const char *hash_collection::HASH_TYPES_CRC = "R"; const char *hash_collection::HASH_TYPES_CRC_SHA1 = "RS"; const char *hash_collection::HASH_TYPES_ALL = "RS"; +const char hash_collection::FLAG_NO_DUMP; +const char hash_collection::FLAG_BAD_DUMP; + //************************************************************************** diff --git a/src/emu/hash.h b/src/emu/hash.h index f225c7827a3..a421aa5523f 100644 --- a/src/emu/hash.h +++ b/src/emu/hash.h @@ -42,8 +42,8 @@ class hash_collection { public: // hash types are identified by non-hex alpha values (G-Z) - static const char HASH_CRC = 'R'; - static const char HASH_SHA1 = 'S'; + static constexpr char HASH_CRC = 'R'; + static constexpr char HASH_SHA1 = 'S'; // common combinations for requests static const char *HASH_TYPES_CRC; @@ -51,8 +51,8 @@ public: static const char *HASH_TYPES_ALL; // flags are identified by punctuation marks - static const char FLAG_NO_DUMP = '!'; - static const char FLAG_BAD_DUMP = '^'; + static constexpr char FLAG_NO_DUMP = '!'; + static constexpr char FLAG_BAD_DUMP = '^'; // construction/destruction hash_collection(); diff --git a/src/emu/info.cpp b/src/emu/info.cpp index 111022ae223..e8f20f69a6f 100644 --- a/src/emu/info.cpp +++ b/src/emu/info.cpp @@ -554,54 +554,54 @@ void info_xml_creator::output_rom(device_t &device) } } - std::string output; + std::ostringstream output; // opening tag if (!is_disk) - output.append("\t\t<rom"); + output << "\t\t<rom"; else - output.append("\t\t<disk"); + output << "\t\t<disk"; // add name, merge, bios, and size tags */ if (name != nullptr && name[0] != 0) - strcatprintf(output," name=\"%s\"", xml_normalize_string(name)); + stream_format(output, " name=\"%s\"", xml_normalize_string(name)); if (merge_name != nullptr) - strcatprintf(output," merge=\"%s\"", xml_normalize_string(merge_name)); + stream_format(output, " merge=\"%s\"", xml_normalize_string(merge_name)); if (bios_name[0] != 0) - strcatprintf(output," bios=\"%s\"", xml_normalize_string(bios_name)); + stream_format(output, " bios=\"%s\"", xml_normalize_string(bios_name)); if (!is_disk) - strcatprintf(output," size=\"%d\"", rom_file_size(rom)); + stream_format(output, " size=\"%d\"", rom_file_size(rom)); // dump checksum information only if there is a known dump if (!hashes.flag(hash_collection::FLAG_NO_DUMP)) { // iterate over hash function types and print m_output their values - output.append(" ").append(hashes.attribute_string()); + output << " " << hashes.attribute_string(); } else - output.append(" status=\"nodump\""); + output << " status=\"nodump\""; // append a region name - strcatprintf(output," region=\"%s\"", ROMREGION_GETTAG(region)); + stream_format(output, " region=\"%s\"", ROMREGION_GETTAG(region)); // for non-disk entries, print offset if (!is_disk) - strcatprintf(output," offset=\"%x\"", offset); + stream_format(output, " offset=\"%x\"", offset); // for disk entries, add the disk index else { - strcatprintf(output," index=\"%x\"", DISK_GETINDEX(rom)); - strcatprintf(output," writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes"); + stream_format(output, " index=\"%x\"", DISK_GETINDEX(rom)); + stream_format(output, " writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes"); } // add optional flag if (ROM_ISOPTIONAL(rom)) - output.append(" optional=\"yes\""); + output << " optional=\"yes\""; - output.append("/>\n"); + output << "/>\n"; - fprintf(m_output, "%s", output.c_str()); + fprintf(m_output, "%s", output.str().c_str()); } } } @@ -1096,7 +1096,7 @@ void info_xml_creator::output_switches(const ioport_list &portlist, const char * for (ioport_field *field = port->first_field(); field != nullptr; field = field->next()) if (field->type() == type) { - std::string output; + std::ostringstream output; std::string newtag(port->tag()), oldtag(":"); newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); @@ -1104,18 +1104,18 @@ void info_xml_creator::output_switches(const ioport_list &portlist, const char * // output the switch name information 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()); + stream_format(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 != nullptr; setting = setting->next()) { - 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\"" : ""); + stream_format(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 - strcatprintf(output,"\t\t</%s>\n", outertag); + stream_format(output,"\t\t</%s>\n", outertag); - fprintf(m_output, "%s", output.c_str()); + fprintf(m_output, "%s", output.str().c_str()); } } diff --git a/src/emu/input.cpp b/src/emu/input.cpp index 474680a7409..68e825402b4 100644 --- a/src/emu/input.cpp +++ b/src/emu/input.cpp @@ -1471,7 +1471,7 @@ std::string input_manager::code_name(input_code code) const const char *devclass = (*devclass_string_table)[code.device_class()]; // determine the devindex part - std::string devindex = strformat("%d", code.device_index() + 1); + std::string devindex = string_format("%d", code.device_index() + 1); // if we're unifying all devices, don't display a number if (!m_class[code.device_class()]->multi()) @@ -1521,7 +1521,7 @@ std::string input_manager::code_to_token(input_code code) const const char *devclass = (*devclass_token_table)[code.device_class()]; // determine the devindex part; keyboard 0 doesn't show an index - std::string devindex = strformat("%d", code.device_index() + 1); + std::string devindex = string_format("%d", code.device_index() + 1); if (code.device_class() == DEVICE_CLASS_KEYBOARD && code.device_index() == 0) devindex.clear(); diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 4d2a7852f91..a2547fdc5be 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -1259,7 +1259,7 @@ std::string natural_keyboard::unicode_to_string(unicode_char ch) // did we fail to resolve? if so, we have a last resort if (buffer.empty()) - strprintf(buffer,"U+%04X", unsigned(ch)); + buffer = string_format("U+%04X", unsigned(ch)); break; } return buffer; @@ -1337,29 +1337,27 @@ std::string natural_keyboard::key_name(unicode_char ch) const std::string natural_keyboard::dump() { - std::string buffer; + std::ostringstream buffer; const size_t left_column_width = 24; // loop through all codes for (auto & code : m_keycode_map) { // describe the character code - - strcatprintf(buffer,"%08X (%s) ", code.ch, unicode_to_string(code.ch).c_str()); + std::string description = string_format("%08X (%s) ", code.ch, unicode_to_string(code.ch).c_str()); // pad with spaces - while (buffer.length() < left_column_width) - buffer.push_back(' '); + stream_format(buffer, "%-*s", left_column_width, description); // identify the keys used for (int field = 0; field < ARRAY_LENGTH(code.field) && code.field[field] != nullptr; field++) - strcatprintf(buffer, "%s'%s'", (field > 0) ? ", " : "", code.field[field]->name()); + stream_format(buffer, "%s'%s'", (field > 0) ? ", " : "", code.field[field]->name()); // carriage return - buffer.push_back('\n'); + buffer << '\n'; } - return buffer; + return buffer.str(); } @@ -2095,7 +2093,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu { if (lastname == nullptr) { - strcatprintf(errorbuf, "Switch location '%s' missing switch name!\n", location); + errorbuf.append(string_format("Switch location '%s' missing switch name!\n", location)); lastname = (char *)"UNK"; } name.assign(lastname); @@ -2112,7 +2110,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu // now scan the switch number int swnum = -1; if (sscanf(number, "%d", &swnum) != 1) - strcatprintf(errorbuf, "Switch location '%s' has invalid format!\n", location); + errorbuf.append(string_format("Switch location '%s' has invalid format!\n", location)); // allocate a new entry m_diploclist.append(*global_alloc(ioport_diplocation(name.c_str(), swnum, invert))); @@ -2130,7 +2128,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu for (bits = 0, temp = m_mask; temp != 0 && bits < 32; bits++) temp &= temp - 1; if (bits != entries) - strcatprintf(errorbuf, "Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask); + errorbuf.append(string_format("Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask)); } @@ -2195,7 +2193,7 @@ ioport_field_live::ioport_field_live(ioport_field &field, analog_field *analog) unicode_char ch = field.keyboard_code(which); if (ch == 0) break; - strcatprintf(name, "%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(ch).c_str()); + name.append(string_format("%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(ch))); } // trim extra spaces @@ -2371,7 +2369,7 @@ void ioport_port::insert_field(ioport_field &newfield, ioport_value &disallowedb if (newfield.condition().none()) { if ((newfield.mask() & disallowedbits) != 0) - strcatprintf(errorbuf, "INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask()); + errorbuf.append(string_format("INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask())); disallowedbits |= newfield.mask(); } @@ -3695,107 +3693,90 @@ void ioport_manager::record_frame(const attotime &curtime) record_write(UINT32(machine().video().speed_percent() * double(1 << 20))); } - if (m_timecode_file.is_open() && machine().video().get_timecode_write()) { + if (m_timecode_file.is_open() && machine().video().get_timecode_write()) + { // Display the timecode - std::string current_time_str; m_timecode_count++; - strcatprintf(current_time_str, "%02d:%02d:%02d.%03d", - (int)curtime.seconds() / (60 * 60), - (curtime.seconds() / 60) % 60, - curtime.seconds() % 60, - (int)(curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND)); + std::string const current_time_str = string_format("%02d:%02d:%02d.%03d", + (int)curtime.seconds() / (60 * 60), + (curtime.seconds() / 60) % 60, + curtime.seconds() % 60, + (int)(curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND)); // Elapsed from previous timecode - attotime elapsed_time = curtime - m_timecode_last_time; + attotime const elapsed_time = curtime - m_timecode_last_time; m_timecode_last_time = curtime; - std::string elapsed_time_str; - strcatprintf(elapsed_time_str, "%02d:%02d:%02d.%03d", - elapsed_time.seconds() / (60 * 60), - (elapsed_time.seconds() / 60) % 60, - elapsed_time.seconds() % 60, - int(elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND)); + std::string const elapsed_time_str = string_format("%02d:%02d:%02d.%03d", + elapsed_time.seconds() / (60 * 60), + (elapsed_time.seconds() / 60) % 60, + elapsed_time.seconds() % 60, + int(elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND)); // Number of ms from beginning of playback - int mseconds_start = curtime.seconds()*1000 + curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND; - std::string mseconds_start_str; - strcatprintf(mseconds_start_str, "%015d", mseconds_start); + int const mseconds_start = curtime.seconds()*1000 + curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND; + std::string const mseconds_start_str = string_format("%015d", mseconds_start); // Number of ms from previous timecode int mseconds_elapsed = elapsed_time.seconds()*1000 + elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND; - std::string mseconds_elapsed_str; - strcatprintf(mseconds_elapsed_str, "%015d", mseconds_elapsed); + std::string const mseconds_elapsed_str = string_format("%015d", mseconds_elapsed); // Number of frames from beginning of playback - int frame_start = mseconds_start * 60 / 1000; - std::string frame_start_str; - strcatprintf(frame_start_str, "%015d", frame_start); + int const frame_start = mseconds_start * 60 / 1000; + std::string const frame_start_str = string_format("%015d", frame_start); // Number of frames from previous timecode int frame_elapsed = mseconds_elapsed * 60 / 1000; - std::string frame_elapsed_str; - strcatprintf(frame_elapsed_str, "%015d", frame_elapsed); + std::string const frame_elapsed_str = string_format("%015d", frame_elapsed); std::string message; std::string timecode_text; std::string timecode_key; bool show_timecode_counter = false; if (m_timecode_count==1) { - message += "TIMECODE: Intro started at " + current_time_str; + message = string_format("TIMECODE: Intro started at %s", current_time_str); timecode_key = "INTRO_START"; timecode_text = "INTRO"; show_timecode_counter = true; } else if (m_timecode_count==2) { - message += "TIMECODE: Intro duration " + elapsed_time_str; - timecode_key = "INTRO_STOP"; machine().video().add_to_total_time(elapsed_time); - //timecode_text += "INTRO"; + message = string_format("TIMECODE: Intro duration %s", elapsed_time_str); + timecode_key = "INTRO_STOP"; + //timecode_text = "INTRO"; } else if (m_timecode_count==3) { - message += "TIMECODE: Gameplay started at " + current_time_str; + message = string_format("TIMECODE: Gameplay started at %s", current_time_str); timecode_key = "GAMEPLAY_START"; - timecode_text += "GAMEPLAY"; + timecode_text = "GAMEPLAY"; show_timecode_counter = true; } else if (m_timecode_count==4) { - message += "TIMECODE: Gameplay duration " + elapsed_time_str; - timecode_key = "GAMEPLAY_STOP"; machine().video().add_to_total_time(elapsed_time); - //timecode_text += "GAMEPLAY"; + message = string_format("TIMECODE: Gameplay duration %s", elapsed_time_str); + timecode_key = "GAMEPLAY_STOP"; + //timecode_text = "GAMEPLAY"; } else if (m_timecode_count % 2 == 1) { - std::string timecode_count_str; - strcatprintf(timecode_count_str, "%03d", (m_timecode_count-3)/2); - timecode_key = "EXTRA_START_" + timecode_count_str; - timecode_count_str.clear(); - strcatprintf(timecode_count_str, "%d", (m_timecode_count-3)/2); - message += "TIMECODE: Extra " + timecode_count_str + " started at " + current_time_str; - timecode_text += "EXTRA " + timecode_count_str; + message = string_format("TIMECODE: Extra %d started at %s", (m_timecode_count-3)/2, current_time_str); + timecode_key = string_format("EXTRA_START_%03d", (m_timecode_count-3)/2); + timecode_text = string_format("EXTRA %d", (m_timecode_count-3)/2); show_timecode_counter = true; } else { machine().video().add_to_total_time(elapsed_time); - - std::string timecode_count_str; - strcatprintf(timecode_count_str, "%d", (m_timecode_count-4)/2); - message += "TIMECODE: Extra " + timecode_count_str + " duration " + elapsed_time_str; - - timecode_count_str.clear(); - strcatprintf(timecode_count_str, "%03d", (m_timecode_count-4)/2); - timecode_key = "EXTRA_STOP_" + timecode_count_str; + message = string_format("TIMECODE: Extra %d duration %s", (m_timecode_count-4)/2, elapsed_time_str); + timecode_key = string_format("EXTRA_STOP_%03d", (m_timecode_count-4)/2); } osd_printf_info("%s \n", message.c_str()); machine().popmessage("%s \n", message.c_str()); - std::string line_to_add; - line_to_add.append(timecode_key).append(19-timecode_key.length(), ' '); - line_to_add += - " " + current_time_str + " " + elapsed_time_str + - " " + mseconds_start_str + " " + mseconds_elapsed_str + - " " + frame_start_str + " " + frame_elapsed_str + - "\n"; - m_timecode_file.puts(line_to_add.c_str()); + m_timecode_file.printf( + "%-19s %s %s %s %s %s %s\n", + timecode_key.c_str(), + current_time_str.c_str(), elapsed_time_str.c_str(), + mseconds_start_str.c_str(), mseconds_elapsed_str.c_str(), + frame_start_str.c_str(), frame_elapsed_str.c_str()); machine().video().set_timecode_write(false); machine().video().set_timecode_text(timecode_text); @@ -4616,7 +4597,7 @@ std::string ioport_manager::input_type_to_token(ioport_type type, int player) return std::string(entry->token()); // if that fails, carry on - return strformat("TYPE_OTHER(%d,%d)", type, player); + return string_format("TYPE_OTHER(%d,%d)", type, player); } diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index 0c8d85a4540..7c82f554dc9 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -190,7 +190,7 @@ const char *running_machine::describe_context() if (cpu != nullptr) { address_space &prg = cpu->space(AS_PROGRAM); - strprintf(m_context, "'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), prg.logaddrchars(), prg.is_octal())); + m_context = string_format("'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), prg.logaddrchars(), prg.is_octal())); } } else @@ -1199,9 +1199,10 @@ void running_machine::postload_all_devices() std::string running_machine::nvram_filename(device_t &device) const { // start with either basename or basename_biosnum - std::string result(basename()); + std::ostringstream result; + result << basename(); if (root_device().system_bios() != 0 && root_device().default_bios() != root_device().system_bios()) - strcatprintf(result, "_%d", root_device().system_bios() - 1); + stream_format(result, "_%d", root_device().system_bios() - 1); // device-based NVRAM gets its own name in a subdirectory if (device.owner() != nullptr) @@ -1218,14 +1219,14 @@ std::string running_machine::nvram_filename(device_t &device) const } } if (software != nullptr && *software != '\0') - result.append(PATH_SEPARATOR).append(software); + result << PATH_SEPARATOR << software; std::string tag(device.tag()); tag.erase(0, 1); strreplacechr(tag,':', '_'); - result.append(PATH_SEPARATOR).append(tag); + result << PATH_SEPARATOR << tag; } - return result; + return result.str(); } /*------------------------------------------------- diff --git a/src/emu/memory.cpp b/src/emu/memory.cpp index aa33faf65cf..520a0cd25fe 100644 --- a/src/emu/memory.cpp +++ b/src/emu/memory.cpp @@ -2653,7 +2653,7 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst membank = global_alloc(memory_bank(*this, banknum, bytestart, byteend, tag)); std::string temptag; if (tag == nullptr) { - strprintf(temptag, "anon_%p", (void *) membank); + temptag = string_format("anon_%p", membank); tag = temptag.c_str(); } manager().m_banklist.append(tag, *membank); @@ -3842,8 +3842,7 @@ memory_block::memory_block(address_space &space, offs_t bytestart, offs_t byteen if (region == nullptr) { int bytes_per_element = space.data_width() / 8; - std::string name; - strprintf(name,"%08x-%08x", bytestart, byteend); + std::string name = string_format("%08x-%08x", bytestart, byteend); space.machine().save().save_memory(nullptr, "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (UINT32)(byteend + 1 - bytestart) / bytes_per_element); } } @@ -3880,13 +3879,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 == nullptr) { - strprintf(m_tag,"~%d~", index); - strprintf(m_name,"Internal bank #%d", index); + m_tag = string_format("~%d~", index); + m_name = string_format("Internal bank #%d", index); } else { m_tag.assign(tag); - strprintf(m_name,"Bank '%s'", tag); + m_name = string_format("Bank '%s'", tag); } if (!m_anonymous && space.machine().save().registration_allowed()) diff --git a/src/emu/profiler.cpp b/src/emu/profiler.cpp index 102f0358e09..57b775556b2 100644 --- a/src/emu/profiler.cpp +++ b/src/emu/profiler.cpp @@ -202,15 +202,15 @@ void real_profiler_state::update_text(running_machine &machine) if (computed != 0) { // start with the un-normalized percentage - strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + total / 2) / total)); + m_text.append(string_format("%02d%% ", (int)((computed * 100 + total / 2) / total))); // followed by the normalized percentage for everything but profiler and idle if (curtype < PROFILER_PROFILER) - strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + normalize / 2) / normalize)); + m_text.append(string_format("%02d%% ", (int)((computed * 100 + normalize / 2) / normalize))); // and then the text if (curtype >= PROFILER_DEVICE_FIRST && curtype <= PROFILER_DEVICE_MAX) - strcatprintf(m_text, "'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag()); + m_text.append(string_format("'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag())); else for (auto & name : names) if (name.type == curtype) diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 886093edf13..656bf4bf362 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -302,7 +302,7 @@ void rom_load_manager::determine_bios_rom(device_t *device, const char *specbios /* if we got neither an empty string nor 'default' then warn the user */ if (specbios[0] != 0 && strcmp(specbios, "default") != 0) { - strcatprintf(m_errorstring, "%s: invalid bios, reverting to default\n", specbios); + m_errorstring.append(string_format("%s: invalid bios, reverting to default\n", specbios)); m_warnings++; } @@ -370,13 +370,13 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr bool is_chd_error = (is_chd && chderr != CHDERR_FILE_NOT_FOUND); if (is_chd_error) - strcatprintf(m_errorstring, "%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr)); + m_errorstring.append(string_format("%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) - strcatprintf(m_errorstring, "OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); + m_errorstring.append(string_format("OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str())); m_warnings++; } @@ -384,7 +384,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr else if (hash_collection(ROM_GETHASHDATA(romp)).flag(hash_collection::FLAG_NO_DUMP)) { if (!is_chd_error) - strcatprintf(m_errorstring, "%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str()); + m_errorstring.append(string_format("%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name, tried_file_names)); m_knownbad++; } @@ -392,7 +392,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr else { if (!is_chd_error) - strcatprintf(m_errorstring, "%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()); + m_errorstring.append(string_format("%s NOT FOUND%s\n", name.c_str(), tried_file_names)); m_errors++; } } @@ -406,8 +406,8 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr void rom_load_manager::dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes) { - strcatprintf(m_errorstring, " EXPECTED: %s\n", hashes.macro_string().c_str()); - strcatprintf(m_errorstring, " FOUND: %s\n", acthashes.macro_string().c_str()); + m_errorstring.append(string_format(" EXPECTED: %s\n", hashes.macro_string().c_str())); + m_errorstring.append(string_format(" FOUND: %s\n", acthashes.macro_string().c_str())); } @@ -426,7 +426,7 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength UINT32 actlength = m_file->size(); if (explength != actlength) { - strcatprintf(m_errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength); + m_errorstring.append(string_format(m_errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength)); m_warnings++; } @@ -434,21 +434,21 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength hash_collection &acthashes = m_file->hashes(hashes.hash_types().c_str()); if (hashes.flag(hash_collection::FLAG_NO_DUMP)) { - strcatprintf(m_errorstring, "%s NO GOOD DUMP KNOWN\n", name); + m_errorstring.append(string_format(m_errorstring, "%s NO GOOD DUMP KNOWN\n", name)); m_knownbad++; } /* verify checksums */ else if (hashes != acthashes) { /* otherwise, it's just bad */ - strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", name); + m_errorstring.append(string_format(m_errorstring, "%s WRONG CHECKSUMS:\n", name)); dump_wrong_and_correct_checksums(hashes, acthashes); m_warnings++; } /* If it matches, but it is actually a bad dump, write it */ else if (hashes.flag(hash_collection::FLAG_BAD_DUMP)) { - strcatprintf(m_errorstring, "%s ROM NEEDS REDUMP\n",name); + m_errorstring.append(string_format(m_errorstring, "%s ROM NEEDS REDUMP\n", name)); m_knownbad++; } } @@ -1179,13 +1179,13 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent /* verify the hash */ if (hashes != acthashes) { - strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", filename.c_str()); + m_errorstring.append(string_format("%s WRONG CHECKSUMS:\n", filename)); dump_wrong_and_correct_checksums(hashes, acthashes); m_warnings++; } else if (hashes.flag(hash_collection::FLAG_BAD_DUMP)) { - strcatprintf(m_errorstring, "%s CHD NEEDS REDUMP\n", filename.c_str()); + m_errorstring.append(string_format("%s CHD NEEDS REDUMP\n", filename)); m_knownbad++; } @@ -1196,7 +1196,7 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent err = open_disk_diff(machine().options(), romp, chd->orig_chd(), chd->diff_chd()); if (err != CHDERR_NONE) { - strcatprintf(m_errorstring, "%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err)); + m_errorstring.append(string_format("%s DIFF CHD ERROR: %s\n", filename, chd_file::error_string(err))); m_errors++; chd = nullptr; continue; @@ -1276,13 +1276,13 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list UINT32 supported = swinfo->supported(); if (supported == SOFTWARE_SUPPORTED_PARTIAL) { - strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); - strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only partial\n", swname, swlist.list_name()); + m_errorstring.append(string_format("WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name())); + m_softwarningstring.append(string_format("Support for software %s (in list %s) is only partial\n", swname, swlist.list_name())); } if (supported == SOFTWARE_SUPPORTED_NO) { - strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); - strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()); + m_errorstring.append(string_format("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name())); + m_softwarningstring.append(string_format("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 std::string in the format diff --git a/src/emu/save.cpp b/src/emu/save.cpp index 89197ab224e..6c875bc08ff 100644 --- a/src/emu/save.cpp +++ b/src/emu/save.cpp @@ -164,9 +164,9 @@ void save_manager::save_memory(device_t *device, const char *module, const char // create the full name std::string totalname; if (tag != nullptr) - strprintf(totalname, "%s/%s/%X/%s", module, tag, index, name); + totalname = string_format("%s/%s/%X/%s", module, tag, index, name); else - strprintf(totalname, "%s/%X/%s", module, index, name); + totalname = string_format("%s/%X/%s", module, index, name); // look for duplicates and an entry to insert in front of state_entry *insert_after = nullptr; diff --git a/src/emu/schedule.cpp b/src/emu/schedule.cpp index 925364aab07..7e131f18451 100644 --- a/src/emu/schedule.cpp +++ b/src/emu/schedule.cpp @@ -252,7 +252,7 @@ void emu_timer::register_save() // for device timers, it is an index based on the device and timer ID else { - strprintf(name,"%s/%d", m_device->tag(), m_id); + name = string_format("%s/%d", m_device->tag(), m_id); for (emu_timer *curtimer = machine().scheduler().first_timer(); curtimer != nullptr; curtimer = curtimer->next()) if (!curtimer->m_temporary && curtimer->m_device != nullptr && curtimer->m_device == m_device && curtimer->m_id == m_id) index++; diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 6631fa82124..bab8ed3a3e9 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -486,7 +486,7 @@ void software_list_device::parse() m_file.close(); } else - strprintf(m_errors, "Error opening file: %s\n", filename()); + m_errors = string_format("Error opening file: %s\n", filename()); // indicate that we've been parsed m_parsed = true; @@ -726,7 +726,7 @@ 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): - strcatprintf(m_errors, "%s(%d.%d): ", filename(), line(), column()); + m_errors.append(string_format("%s(%d.%d): ", filename(), line(), column())); // append the remainder of the string va_list va; @@ -1151,14 +1151,14 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu std::string hashdata; if (nodump) { - strprintf(hashdata, "%s", NO_DUMP); + hashdata = string_format("%s", NO_DUMP); if (crc != nullptr && sha1 != nullptr) parse_error("No need for hash definition"); } else { if (crc != nullptr && sha1 != nullptr) - strprintf(hashdata, "%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : "")); + hashdata = string_format("%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"); } @@ -1201,8 +1201,7 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu bool baddump = (status != nullptr && strcmp(status, "baddump") == 0); bool nodump = (status != nullptr && strcmp(status, "nodump" ) == 0); bool writeable = (writeablestr != nullptr && strcmp(writeablestr, "yes") == 0); - std::string hashdata; - strprintf(hashdata, "%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : ""))); + std::string hashdata = string_format("%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/sound.cpp b/src/emu/sound.cpp index 096695935d9..1ece31f9e6e 100644 --- a/src/emu/sound.cpp +++ b/src/emu/sound.cpp @@ -75,8 +75,7 @@ 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 - std::string state_tag; - strprintf(state_tag, "%d", m_device.machine().sound().m_stream_list.count()); + std::string state_tag = string_format("%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)); @@ -165,17 +164,17 @@ float sound_stream::output_gain(int outputnum) const std::string sound_stream::input_name(int inputnum) const { - std::string str; + std::ostringstream str; // start with our device name and tag assert(inputnum >= 0 && inputnum < m_input.size()); - strprintf(str, "%s '%s': ", m_device.name(), m_device.tag()); + stream_format(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 != nullptr && m_input[inputnum].m_source->m_stream != nullptr) { device_t &source = m_input[inputnum].m_source->m_stream->device(); - strcatprintf(str, "%s '%s'", source.name(), source.tag()); + stream_format(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; @@ -188,12 +187,12 @@ std::string sound_stream::input_name(int inputnum) const for (int outputnum = 0; (outstream = sound->output_to_stream_output(outputnum, streamoutputnum)) != nullptr; outputnum++) if (outstream == m_input[inputnum].m_source->m_stream && m_input[inputnum].m_source == &outstream->m_output[streamoutputnum]) { - strcatprintf(str, " Ch.%d", outputnum); + stream_format(str, " Ch.%d", outputnum); break; } } } - return str; + return str.str(); } diff --git a/src/emu/ui/auditmenu.cpp b/src/emu/ui/auditmenu.cpp index 9703545948e..43f057f0b10 100644 --- a/src/emu/ui/auditmenu.cpp +++ b/src/emu/ui/auditmenu.cpp @@ -177,24 +177,25 @@ void ui_menu_audit::save_available_machines() if (file.open(emulator_info::get_configname(), "_avail.ini") == FILERR_NONE) { // generate header - std::string buffer = std::string("#\n").append(UI_VERSION_TAG).append(bare_build_version).append("\n#\n\n"); - strcatprintf(buffer, "%d\n", (int)m_availablesorted.size()); - strcatprintf(buffer, "%d\n", (int)m_unavailablesorted.size()); + std::ostringstream buffer; + buffer << "#\n" << UI_VERSION_TAG << bare_build_version << "\n#\n\n"; + stream_format(buffer, "%d\n", m_availablesorted.size()); + stream_format(buffer, "%d\n", m_unavailablesorted.size()); // generate available list for (size_t x = 0; x < m_availablesorted.size(); ++x) { int find = driver_list::find(m_availablesorted[x]->name); - strcatprintf(buffer, "%d\n", find); + stream_format(buffer, "%d\n", find); } // generate unavailable list for (size_t x = 0; x < m_unavailablesorted.size(); ++x) { int find = driver_list::find(m_unavailablesorted[x]->name); - strcatprintf(buffer, "%d\n", find); + stream_format(buffer, "%d\n", find); } - file.puts(buffer.c_str()); + file.puts(buffer.str().c_str()); file.close(); } } diff --git a/src/emu/ui/custmenu.cpp b/src/emu/ui/custmenu.cpp index e52c9ced27d..73505f10cc6 100644 --- a/src/emu/ui/custmenu.cpp +++ b/src/emu/ui/custmenu.cpp @@ -242,19 +242,19 @@ void ui_menu_custom_filter::save_custom_filters() if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE) { // generate custom filters info - std::string cinfo; - strprintf(cinfo, "Total filters = %d\n", (custfltr::numother + 1)); - cinfo.append("Main filter = ").append(main_filters::text[custfltr::main]).append("\n"); + std::ostringstream cinfo; + stream_format(cinfo, "Total filters = %d\n", (custfltr::numother + 1)); + stream_format(cinfo, "Main filter = %s\n", main_filters::text[custfltr::main]); for (int x = 1; x <= custfltr::numother; x++) { - cinfo.append("Other filter = ").append(main_filters::text[custfltr::other[x]]).append("\n"); + stream_format(cinfo, "Other filter = %s\n", main_filters::text[custfltr::other[x]]); if (custfltr::other[x] == FILTER_MANUFACTURER) - cinfo.append(" Manufacturer filter = ").append(c_mnfct::ui[custfltr::mnfct[x]]).append("\n"); + stream_format(cinfo, " Manufacturer filter = %s\n", c_mnfct::ui[custfltr::mnfct[x]]); else if (custfltr::other[x] == FILTER_YEAR) - cinfo.append(" Year filter = ").append(c_year::ui[custfltr::year[x]]).append("\n"); + stream_format(cinfo, " Year filter = %s\n", c_year::ui[custfltr::year[x]]); } - file.puts(cinfo.c_str()); + file.puts(cinfo.str().c_str()); file.close(); } } @@ -555,25 +555,25 @@ void ui_menu_swcustom_filter::save_sw_custom_filters() if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE) { // generate custom filters info - std::string cinfo; - strprintf(cinfo, "Total filters = %d\n", (sw_custfltr::numother + 1)); - cinfo.append("Main filter = ").append(sw_filters::text[sw_custfltr::main]).append("\n"); + std::ostringstream cinfo; + stream_format(cinfo, "Total filters = %d\n", (sw_custfltr::numother + 1)); + stream_format(cinfo, "Main filter = %s\n", sw_filters::text[sw_custfltr::main]); for (int x = 1; x <= sw_custfltr::numother; x++) { - cinfo.append("Other filter = ").append(sw_filters::text[sw_custfltr::other[x]]).append("\n"); + stream_format(cinfo, "Other filter = %s\n", sw_filters::text[sw_custfltr::other[x]]); if (sw_custfltr::other[x] == UI_SW_PUBLISHERS) - cinfo.append(" Manufacturer filter = ").append(m_filter.publisher.ui[sw_custfltr::mnfct[x]]).append("\n"); + stream_format(cinfo, " Manufacturer filter = %s\n", m_filter.publisher.ui[sw_custfltr::mnfct[x]]); else if (sw_custfltr::other[x] == UI_SW_LIST) - cinfo.append(" Software List filter = ").append(m_filter.swlist.name[sw_custfltr::list[x]]).append("\n"); + stream_format(cinfo, " Software List filter = %s\n", m_filter.swlist.name[sw_custfltr::list[x]]); else if (sw_custfltr::other[x] == UI_SW_YEARS) - cinfo.append(" Year filter = ").append(m_filter.year.ui[sw_custfltr::year[x]]).append("\n"); + stream_format(cinfo, " Year filter = %s\n", m_filter.year.ui[sw_custfltr::year[x]]); else if (sw_custfltr::other[x] == UI_SW_TYPE) - cinfo.append(" Type filter = ").append(m_filter.type.ui[sw_custfltr::type[x]]).append("\n"); + stream_format(cinfo, " Type filter = %s\n", m_filter.type.ui[sw_custfltr::type[x]]); else if (sw_custfltr::other[x] == UI_SW_REGION) - cinfo.append(" Region filter = ").append(m_filter.region.ui[sw_custfltr::region[x]]).append("\n"); + stream_format(cinfo, " Region filter = %s\n", m_filter.region.ui[sw_custfltr::region[x]]); } - file.puts(cinfo.c_str()); + file.puts(cinfo.str().c_str()); file.close(); } } diff --git a/src/emu/ui/custui.cpp b/src/emu/ui/custui.cpp index 2392db122fc..bef78ae5fc6 100644 --- a/src/emu/ui/custui.cpp +++ b/src/emu/ui/custui.cpp @@ -363,7 +363,6 @@ void ui_menu_font_ui::populate() { // set filter arrow UINT32 arrow_flags; - std::string tmptxt; #ifdef UI_WINDOWS // add fonts option @@ -379,16 +378,13 @@ void ui_menu_font_ui::populate() #endif arrow_flags = get_arrow_flags(m_font_min, m_font_max, m_font_size); - strprintf(tmptxt, "%2d", m_font_size); - item_append(_("Lines"), tmptxt.c_str(), arrow_flags, (void *)(FPTR)FONT_SIZE); + item_append(_("Lines"), string_format("%2d", m_font_size).c_str(), arrow_flags, (void *)(FPTR)FONT_SIZE); item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); // add item - tmptxt.clear(); - strprintf(tmptxt, "%3.2f", m_info_size); arrow_flags = get_arrow_flags(m_info_min, m_info_max, m_info_size); - item_append(_("Infos text size"), tmptxt.c_str(), arrow_flags, (void *)(FPTR)INFOS_SIZE); + item_append(_("Infos text size"), string_format("%3.2f", m_info_size).c_str(), arrow_flags, (void *)(FPTR)INFOS_SIZE); item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); @@ -493,7 +489,7 @@ ui_menu_colors_ui::~ui_menu_colors_ui() std::string error_string, dec_color; for (int index = 1; index < MUI_RESTORE; index++) { - strprintf(dec_color, "%x", (UINT32)m_color_table[index].color); + dec_color = string_format("%x", (UINT32)m_color_table[index].color); machine().ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE, error_string); } } @@ -856,14 +852,12 @@ void ui_menu_rgb_ui::populate() { // set filter arrow UINT32 arrow_flags = MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW; - std::string text; std::string s_text = std::string(m_search).append("_"); if (m_lock_ref != RGB_ALPHA) { arrow_flags = get_arrow_flags(0, 255, m_color->a()); - strprintf(text, "%3d", m_color->a()); - item_append("Alpha", text.c_str(), arrow_flags, (void *)(FPTR)RGB_ALPHA); + item_append("Alpha", string_format("%3d", m_color->a()).c_str(), arrow_flags, (void *)(FPTR)RGB_ALPHA); } else item_append("Alpha", s_text.c_str(), 0, (void *)(FPTR)RGB_ALPHA); @@ -871,8 +865,7 @@ void ui_menu_rgb_ui::populate() if (m_lock_ref != RGB_RED) { arrow_flags = get_arrow_flags(0, 255, m_color->r()); - strprintf(text, "%3d", m_color->r()); - item_append("Red", text.c_str(), arrow_flags, (void *)(FPTR)RGB_RED); + item_append("Red", string_format("%3d", m_color->r()).c_str(), arrow_flags, (void *)(FPTR)RGB_RED); } else item_append("Red", s_text.c_str(), 0, (void *)(FPTR)RGB_RED); @@ -880,8 +873,7 @@ void ui_menu_rgb_ui::populate() if (m_lock_ref != RGB_GREEN) { arrow_flags = get_arrow_flags(0, 255, m_color->g()); - strprintf(text, "%3d", m_color->g()); - item_append("Green", text.c_str(), arrow_flags, (void *)(FPTR)RGB_GREEN); + item_append("Green", string_format("%3d", m_color->g()).c_str(), arrow_flags, (void *)(FPTR)RGB_GREEN); } else item_append("Green", s_text.c_str(), 0, (void *)(FPTR)RGB_GREEN); @@ -889,8 +881,7 @@ void ui_menu_rgb_ui::populate() if (m_lock_ref != RGB_BLUE) { arrow_flags = get_arrow_flags(0, 255, m_color->b()); - strprintf(text, "%3d", m_color->b()); - item_append("Blue", text.c_str(), arrow_flags, (void *)(FPTR)RGB_BLUE); + item_append("Blue", string_format("%3d", m_color->b()).c_str(), arrow_flags, (void *)(FPTR)RGB_BLUE); } else item_append("Blue", s_text.c_str(), 0, (void *)(FPTR)RGB_BLUE); diff --git a/src/emu/ui/devctrl.h b/src/emu/ui/devctrl.h index f7054e6279f..44cdb6d8ede 100644 --- a/src/emu/ui/devctrl.h +++ b/src/emu/ui/devctrl.h @@ -126,11 +126,7 @@ std::string ui_menu_device_control<_DeviceType>::current_display_name() std::string display_name; display_name.assign(current_device()->name()); if (count() > 1) - { - std::string temp; - strprintf(temp, " %d", current_index() + 1); - display_name.append(temp); - } + display_name.append(string_format("%d", current_index() + 1)); return display_name; } diff --git a/src/emu/ui/devopt.cpp b/src/emu/ui/devopt.cpp index 3d217e92025..e846f78e997 100644 --- a/src/emu/ui/devopt.cpp +++ b/src/emu/ui/devopt.cpp @@ -39,25 +39,25 @@ ui_menu_device_config::ui_menu_device_config(running_machine &machine, render_co void ui_menu_device_config::populate() { - std::string str; + std::ostringstream str; device_t *dev; - 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()); + stream_format(str, "[This option is%s currently mounted in the running system]\n\n", m_mounted ? "" : " NOT"); + stream_format(str, "Option: %s\n", m_option->name()); dev = const_cast<machine_config &>(machine().config()).device_add(&machine().config().root_device(), m_option->name(), m_option->devtype(), 0); - strcatprintf(str,"Device: %s\n", dev->name()); + stream_format(str, "Device: %s\n", dev->name()); if (!m_mounted) - str.append("\nIf you select this option, the following items will be enabled:\n"); + str << "\nIf you select this option, the following items will be enabled:\n"; else - str.append("\nThe selected option enables the following items:\n"); + str << "\nThe selected option enables the following items:\n"; // loop over all CPUs execute_interface_iterator execiter(*dev); if (execiter.count() > 0) { - str.append("* CPU:\n"); + str << "* CPU:\n"; std::unordered_set<std::string> exectags; for (device_execute_interface *exec = execiter.first(); exec != nullptr; 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) - strcatprintf(str," %d" UTF8_MULTIPLY, count); + stream_format(str, " %d" UTF8_MULTIPLY, count); else - str.append(" "); - str.append(name); + str << " "; + str << name; // display clock in kHz or MHz if (clock >= 1000000) - strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + stream_format(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else - strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + stream_format(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.append("* Video:\n"); + str << "* Video:\n"; for (screen_device *screen = scriter.first(); screen != nullptr; screen = scriter.next()) { - strcatprintf(str," Screen '%s': ", screen->tag()); + stream_format(str, " Screen '%s': ", screen->tag()); if (screen->screen_type() == SCREEN_TYPE_VECTOR) - str.append("Vector\n"); + str << "Vector\n"; else { const rectangle &visarea = screen->visible_area(); - strcatprintf(str,"%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", + stream_format(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.append("* Sound:\n"); + str << "* Sound:\n"; std::unordered_set<std::string> soundtags; for (device_sound_interface *sound = snditer.first(); sound != nullptr; 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) - strcatprintf(str," %d" UTF8_MULTIPLY, count); + stream_format(str," %d" UTF8_MULTIPLY, count); else - str.append(" "); - str.append(sound->device().name()); + str << " "; + str << sound->device().name(); // display clock in kHz or MHz int clock = sound->device().clock(); if (clock >= 1000000) - strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); + stream_format(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); else if (clock != 0) - strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + stream_format(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); else - str.append("\n"); + str << '\n'; } } @@ -176,12 +176,13 @@ void ui_menu_device_config::populate() } if (bios) - strcatprintf(str,"* BIOS settings:\n %d options [default: %s]\n", bios, bios_str.c_str()); + stream_format(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; - std::string errors, dips_opt, confs_opt; + std::string errors; + std::ostringstream dips_opt, confs_opt; ioport_list portlist; device_iterator iptiter(*dev); for (device_t *iptdev = iptiter.first(); iptdev != nullptr; iptdev = iptiter.next()) @@ -210,12 +211,12 @@ void ui_menu_device_config::populate() else if (field->type() == IPT_DIPSWITCH) { dips++; - dips_opt.append(" ").append(field->name()); + dips_opt << " " << field->name(); for (ioport_setting *setting = field->first_setting(); setting != nullptr; setting = setting->next()) { if (setting->value() == field->defvalue()) { - strcatprintf(dips_opt, " [default: %s]\n", setting->name()); + stream_format(dips_opt, " [default: %s]\n", setting->name()); break; } } @@ -223,12 +224,12 @@ void ui_menu_device_config::populate() else if (field->type() == IPT_CONFIG) { confs++; - confs_opt.append(" ").append(field->name()); + confs_opt << " " << field->name(); for (ioport_setting *setting = field->first_setting(); setting != nullptr; setting = setting->next()) { if (setting->value() == field->defvalue()) { - strcatprintf(confs_opt," [default: %s]\n", setting->name()); + stream_format(confs_opt, " [default: %s]\n", setting->name()); break; } } @@ -236,50 +237,50 @@ void ui_menu_device_config::populate() } if (dips) - str.append("* Dispwitch settings:\n").append(dips_opt); + str << "* Dispwitch settings:\n" << dips_opt.str(); if (confs) - str.append("* Configuration settings:\n").append(confs_opt); + str << "* Configuration settings:\n" << confs_opt.str(); if (input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) - str.append("* Input device(s):\n"); + str << "* Input device(s):\n"; if (input) - strcatprintf(str," User inputs [%d inputs]\n", input); + stream_format(str, " User inputs [%d inputs]\n", input); if (input_mj) - strcatprintf(str," Mahjong inputs [%d inputs]\n", input_mj); + stream_format(str, " Mahjong inputs [%d inputs]\n", input_mj); if (input_hana) - strcatprintf(str," Hanafuda inputs [%d inputs]\n", input_hana); + stream_format(str, " Hanafuda inputs [%d inputs]\n", input_hana); if (input_gamble) - strcatprintf(str," Gambling inputs [%d inputs]\n", input_gamble); + stream_format(str, " Gambling inputs [%d inputs]\n", input_gamble); if (input_analog) - strcatprintf(str," Analog inputs [%d inputs]\n", input_analog); + stream_format(str, " Analog inputs [%d inputs]\n", input_analog); if (input_adjust) - strcatprintf(str," Adjuster inputs [%d inputs]\n", input_adjust); + stream_format(str, " Adjuster inputs [%d inputs]\n", input_adjust); if (input_keypad) - strcatprintf(str," Keypad inputs [%d inputs]\n", input_keypad); + stream_format(str, " Keypad inputs [%d inputs]\n", input_keypad); if (input_keyboard) - strcatprintf(str," Keyboard inputs [%d inputs]\n", input_keyboard); + stream_format(str, " Keyboard inputs [%d inputs]\n", input_keyboard); image_interface_iterator imgiter(*dev); if (imgiter.count() > 0) { - str.append("* Media Options:\n"); + str << "* Media Options:\n"; for (const device_image_interface *imagedev = imgiter.first(); imagedev != nullptr; imagedev = imgiter.next()) - strcatprintf(str," %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag()); + stream_format(str, " %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag()); } slot_interface_iterator slotiter(*dev); if (slotiter.count() > 0) { - str.append("* Slot Options:\n"); + str << "* Slot Options:\n"; for (const device_slot_interface *slot = slotiter.first(); slot != nullptr; slot = slotiter.next()) - strcatprintf(str," %s [default: %s]\n", slot->device().tag(), slot->default_option() ? slot->default_option() : "----"); + stream_format(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.append("[None]\n"); + str << "[None]\n"; const_cast<machine_config &>(machine().config()).device_remove(&machine().config().root_device(), m_option->name()); - item_append(str.c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); + item_append(str.str().c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); } void ui_menu_device_config::handle() diff --git a/src/emu/ui/dsplmenu.cpp b/src/emu/ui/dsplmenu.cpp index c93bdd960ca..b9f9b3f9650 100644 --- a/src/emu/ui/dsplmenu.cpp +++ b/src/emu/ui/dsplmenu.cpp @@ -185,9 +185,8 @@ void ui_menu_display_options::populate() m_options[opt].status ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)opt); else { - strprintf(v_text, "%d", m_options[opt].status); arrow_flags = get_arrow_flags(1, 3, m_options[opt].status); - item_append(m_options[opt].description, v_text.c_str(), arrow_flags, (void *)(FPTR)opt); + item_append(m_options[opt].description, string_format("%d", m_options[opt].status).c_str(), arrow_flags, (void *)(FPTR)opt); } item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); diff --git a/src/emu/ui/filemngr.cpp b/src/emu/ui/filemngr.cpp index cccc92888c4..d46199793ce 100644 --- a/src/emu/ui/filemngr.cpp +++ b/src/emu/ui/filemngr.cpp @@ -68,7 +68,7 @@ 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, std::string &instance, std::string &filename) { // get the image type/id - strprintf(instance,"%s (%s)", img->instance_name(), img->brief_instance_name()); + instance = string_format("%s (%s)", img->instance_name(), img->brief_instance_name()); // get the base name if (img->basename() != nullptr) @@ -103,7 +103,7 @@ void ui_menu_file_manager::fill_image_line(device_image_interface *img, std::str void ui_menu_file_manager::populate() { - std::string buffer, tmp_inst, tmp_name; + std::string tmp_inst, tmp_name; bool first_entry = true; if (!m_warnings.empty()) @@ -140,8 +140,7 @@ void ui_menu_file_manager::populate() first_entry = false; else item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - strprintf(buffer, "[root%s]", dev->tag()); - item_append(buffer.c_str(), nullptr, 0, nullptr); + item_append(string_format("[root%s]", dev->tag()).c_str(), nullptr, 0, nullptr); tag_appended = true; } // finally, append the image interface to the menu diff --git a/src/emu/ui/info.cpp b/src/emu/ui/info.cpp index 0b198769b15..2122c57d5e9 100644 --- a/src/emu/ui/info.cpp +++ b/src/emu/ui/info.cpp @@ -85,14 +85,11 @@ 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()) { - std::string str; - // display long filename item_append(image->longname(), "", MENU_FLAG_DISABLE, nullptr); // display manufacturer and year - strcatprintf(str, "%s, %s", image->manufacturer(), image->year()); - item_append(str.c_str(), "", MENU_FLAG_DISABLE, nullptr); + item_append(string_format("%s, %s", image->manufacturer(), image->year()).c_str(), "", MENU_FLAG_DISABLE, nullptr); // display supported information, if available switch (image->supported()) diff --git a/src/emu/ui/inifile.cpp b/src/emu/ui/inifile.cpp index 0c7d7a1a01b..e993213d4d9 100644 --- a/src/emu/ui/inifile.cpp +++ b/src/emu/ui/inifile.cpp @@ -428,27 +428,28 @@ void favorite_manager::save_favorite_games() } // generate the favorite INI - std::string text("[ROOT_FOLDER]\n[Favorite]\n\n"); + std::ostringstream text; + text << "[ROOT_FOLDER]\n[Favorite]\n\n"; for (auto & elem : m_list) { - text += elem.shortname + "\n"; - text += elem.longname + "\n"; - text += elem.parentname + "\n"; - text += elem.year + "\n"; - text += elem.publisher + "\n"; - strcatprintf(text, "%d\n", elem.supported); - text += elem.part + "\n"; - strcatprintf(text, "%s\n", elem.driver->name); - text += elem.listname + "\n"; - text += elem.interface + "\n"; - text += elem.instance + "\n"; - strcatprintf(text, "%d\n", elem.startempty); - text += elem.parentlongname + "\n"; - text += elem.usage + "\n"; - text += elem.devicetype + "\n"; - strcatprintf(text, "%d\n", elem.available); + text << elem.shortname << '\n'; + text << elem.longname << '\n'; + text << elem.parentname << '\n'; + text << elem.year << '\n'; + text << elem.publisher << '\n'; + stream_format(text, "%d\n", elem.supported); + text << elem.part << '\n'; + stream_format(text, "%s\n", elem.driver->name); + text << elem.listname << '\n'; + text << elem.interface << '\n'; + text << elem.instance << '\n'; + stream_format(text, "%d\n", elem.startempty); + text << elem.parentlongname << '\n'; + text << elem.usage << '\n'; + text << elem.devicetype << '\n'; + stream_format(text, "%d\n", elem.available); } - file.puts(text.c_str()); + file.puts(text.str().c_str()); file.close(); } } diff --git a/src/emu/ui/inputmap.cpp b/src/emu/ui/inputmap.cpp index f3ffe9b0e59..66afd666cd0 100644 --- a/src/emu/ui/inputmap.cpp +++ b/src/emu/ui/inputmap.cpp @@ -379,7 +379,6 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist) const char *nameformat[INPUT_TYPE_TOTAL] = { nullptr }; input_item_data **itemarray, *item; int numitems = 0, curitem; - std::string text; std::string subtext; std::string prev_owner; bool first_entry = true; @@ -417,12 +416,11 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist) first_entry = false; else item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - strprintf(text, "[root%s]", item->owner_name); - item_append(text.c_str(), nullptr, 0, nullptr); + item_append(string_format("[root%s]", item->owner_name).c_str(), nullptr, 0, nullptr); prev_owner.assign(item->owner_name); } - strprintf(text, nameformat[item->type], item->name); + std::string text = string_format(nameformat[item->type], item->name); /* if we're polling this item, use some spaces with left/right arrows */ if (pollingref == item->ref) @@ -556,7 +554,6 @@ void ui_menu_settings::populate() if (field->type() == type && field->enabled()) { UINT32 flags = 0; - std::string name; /* set the left/right flags appropriately */ if (field->has_previous_setting()) @@ -571,14 +568,12 @@ void ui_menu_settings::populate() first_entry = false; else item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); - strprintf(name, "[root%s]", field->device().tag()); - item_append(name.c_str(), nullptr, 0, nullptr); + string_format("[root%s]", field->device().tag()); + item_append(string_format("[root%s]", field->device().tag()).c_str(), nullptr, 0, nullptr); prev_owner.assign(field->device().tag()); } - name.assign(field->name()); - - item_append(name.c_str(), field->setting_name(), flags, (void *)field); + item_append(field->name(), field->setting_name(), flags, (void *)field); /* for DIP switches, build up the model */ if (type == IPT_DIPSWITCH && field->first_diplocation() != nullptr) @@ -868,20 +863,16 @@ void ui_menu_analog::populate() { analog_item_data *data; UINT32 flags = 0; - 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, nullptr, 0, nullptr); - strprintf(name,"[root%s]", field->device().tag()); - item_append(name.c_str(), nullptr, 0, nullptr); + item_append(string_format("[root%s]", field->device().tag()).c_str(), nullptr, 0, nullptr); prev_owner.assign(field->device().tag()); } - 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)); data->field = field; @@ -892,8 +883,8 @@ void ui_menu_analog::populate() { default: case ANALOG_ITEM_KEYSPEED: - strprintf(text, "%s Digital Speed", name.c_str()); - strprintf(subtext, "%d", settings.delta); + text = string_format("%s Digital Speed", field->name()); + subtext = string_format("%d", settings.delta); data->min = 0; data->max = 255; data->cur = settings.delta; @@ -901,8 +892,8 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_CENTERSPEED: - strprintf(text, "%s Autocenter Speed", name.c_str()); - strprintf(subtext, "%d", settings.centerdelta); + text = string_format("%s Autocenter Speed", field->name()); + subtext = string_format("%d", settings.centerdelta); data->min = 0; data->max = 255; data->cur = settings.centerdelta; @@ -910,7 +901,7 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_REVERSE: - strprintf(text, "%s Reverse", name.c_str()); + text = string_format("%s Reverse", field->name()); subtext.assign(settings.reverse ? "On" : "Off"); data->min = 0; data->max = 1; @@ -919,8 +910,8 @@ void ui_menu_analog::populate() break; case ANALOG_ITEM_SENSITIVITY: - strprintf(text, "%s Sensitivity", name.c_str()); - strprintf(subtext, "%d", settings.sensitivity); + text = string_format("%s Sensitivity", field->name()); + subtext = string_format("%d", settings.sensitivity); data->min = 1; data->max = 255; data->cur = settings.sensitivity; diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp index cdba1f0fcd8..dd463535f74 100644 --- a/src/emu/ui/menu.cpp +++ b/src/emu/ui/menu.cpp @@ -246,25 +246,23 @@ void ui_menu::reset(ui_menu_reset_options options) item.clear(); visitems = 0; selected = 0; - std::string backtext; - strprintf(backtext, "Return to Machine"); // add an item to return if (parent == nullptr) - item_append(backtext.c_str(), nullptr, 0, nullptr); + item_append(_("Return to Machine"), nullptr, 0, nullptr); else if (parent->is_special_main_menu()) { if (strcmp(machine().options().ui(), "simple") == 0) - item_append("Exit", nullptr, 0, nullptr); + item_append(_("Exit"), nullptr, 0, nullptr); else - item_append("Exit", nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr); + item_append(_("Exit"), nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr); } else { if (strcmp(machine().options().ui(), "simple") != 0 && ui_menu::stack_has_special_main_menu()) - item_append("Return to Previous Menu", nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr); + item_append(_("Return to Previous Menu"), nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr); else - item_append("Return to Previous Menu", nullptr, 0, nullptr); + item_append(_("Return to Previous Menu"), nullptr, 0, nullptr); } } diff --git a/src/emu/ui/miscmenu.cpp b/src/emu/ui/miscmenu.cpp index fff03a97f74..0a4c428bd69 100644 --- a/src/emu/ui/miscmenu.cpp +++ b/src/emu/ui/miscmenu.cpp @@ -125,8 +125,7 @@ void ui_menu_bios_selection::handle() assert(error.empty()); } else { std::string error; - std::string value = machine().options().main_value(dev->owner()->tag()+1); - strcatprintf(value,",bios=%d",val-1); + std::string value = string_format("%s,bios=%d", machine().options().main_value(dev->owner()->tag()+1), val-1); machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error); assert(error.empty()); } @@ -232,18 +231,18 @@ ui_menu_bookkeeping::~ui_menu_bookkeeping() void ui_menu_bookkeeping::populate() { int tickets = machine().bookkeeping().get_dispensed_tickets(); - std::string tempstring; + std::ostringstream tempstring; int ctrnum; /* show total time first */ - if (prevtime.seconds() >= 60 * 60) - strcatprintf(tempstring, "Uptime: %d:%02d:%02d\n\n", prevtime.seconds() / (60 * 60), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60); + if (prevtime.seconds() >= (60 * 60)) + stream_format(tempstring, _("Uptime: %1$d:%2$02d:%3$02d\n\n"), prevtime.seconds() / (60 * 60), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60); else - strcatprintf(tempstring,"Uptime: %d:%02d\n\n", (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60); + stream_format(tempstring, _("Uptime: %1$d:%2$02d\n\n"), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60); /* show tickets at the top */ if (tickets > 0) - strcatprintf(tempstring,"Tickets dispensed: %d\n\n", tickets); + stream_format(tempstring, _("Tickets dispensed: %1$d\n\n"), tickets); /* loop over coin counters */ for (ctrnum = 0; ctrnum < COIN_COUNTERS; ctrnum++) @@ -251,22 +250,17 @@ void ui_menu_bookkeeping::populate() int count = machine().bookkeeping().coin_counter_get_count(ctrnum); /* display the coin counter number */ - strcatprintf(tempstring,"Coin %c: ", ctrnum + 'A'); - /* display how many coins */ - if (count == 0) - tempstring.append("NA"); - else - strcatprintf(tempstring, "%d", count); - /* display whether or not we are locked out */ - if (machine().bookkeeping().coin_lockout_get_state(ctrnum)) - tempstring.append(_(" (locked)")); - tempstring.append("\n"); + stream_format(tempstring, + (count == 0) ? _("Coin %1$c: NA%3$s\n") : _("Coin %1$c: %2$d%3$s\n"), + ctrnum + 'A', + count, + machine().bookkeeping().coin_lockout_get_state(ctrnum) ? _(" (locked)") : ""); } /* append the single item */ - item_append(tempstring.c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); + item_append(tempstring.str().c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr); } /*------------------------------------------------- @@ -710,8 +704,7 @@ void ui_menu_export::handle() if (infile.open(filename.c_str(), ".xml") == FILERR_NONE) for (int seq = 0; ; ++seq) { - std::string seqtext; - strprintf(seqtext, "%s_%04d", filename.c_str(), seq); + std::string seqtext = string_format("%s_%04d", filename, seq); if (infile.open(seqtext.c_str(), ".xml") != FILERR_NONE) { filename = seqtext; @@ -747,13 +740,11 @@ void ui_menu_export::handle() if (m_event->iptkey == IPT_UI_SELECT) { std::string filename("exported"); - std::string buffer; emu_file infile(machine().ui().options().ui_path(), OPEN_FLAG_READ); if (infile.open(filename.c_str(), ".txt") == FILERR_NONE) for (int seq = 0; ; ++seq) { - std::string seqtext; - strprintf(seqtext, "%s_%04d", filename.c_str(), seq); + std::string seqtext = string_format("%s_%04d", filename, seq); if (infile.open(seqtext.c_str(), ".txt") != FILERR_NONE) { filename = seqtext; @@ -766,7 +757,8 @@ void ui_menu_export::handle() if (file.open(filename.c_str(), ".txt") == FILERR_NONE) { // print the header - buffer.assign(_("Name: Description:\n")); + std::ostringstream buffer; + buffer << _("Name: Description:\n"); driver_enumerator drvlist(machine().options()); drvlist.exclude_all(); for (auto & elem : m_list) @@ -775,8 +767,8 @@ void ui_menu_export::handle() // iterate through drivers and output the info while (drvlist.next()) if ((drvlist.driver().flags & MACHINE_NO_STANDALONE) == 0) - strcatprintf(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().description); - file.puts(buffer.c_str()); + stream_format(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().description); + file.puts(buffer.str().c_str()); file.close(); machine().popmessage(_("%s.txt saved under ui folder."), filename.c_str()); } diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp index fd56eb9ab7b..7b48de112fc 100644 --- a/src/emu/ui/selgame.cpp +++ b/src/emu/ui/selgame.cpp @@ -708,27 +708,39 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott ui_manager &mui = machine().ui(); float tbarspace = mui.get_line_height(); - strprintf(tempbuf[0], _("%s %s ( %d / %d machines (%d BIOS) )"), emulator_info::get_appname(), bare_build_version, visible_items, (driver_list::total() - 1), m_isabios); - std::string filtered; + tempbuf[0] = string_format(_("%1$s %2$s ( %3$d / %4$d machines (%5$d BIOS) )"), + emulator_info::get_appname(), + bare_build_version, + visible_items, + (driver_list::total() - 1), + m_isabios); + std::string filtered; if (main_filters::actual == FILTER_CATEGORY && !machine().inifile().ini_index.empty()) { - std::string s_file(machine().inifile().actual_file()); - std::string s_category(machine().inifile().actual_category()); - filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(s_file).append(" - ").append(s_category).append(") -"); + filtered = string_format(_("%1$s (%2$s - %3$s) - "), + main_filters::text[main_filters::actual], + machine().inifile().actual_file(), + machine().inifile().actual_category()); } - else if (main_filters::actual == FILTER_MANUFACTURER) - filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_mnfct::ui[c_mnfct::actual]).append(") -"); - + { + filtered = string_format(_("%1$s (%2$s) - "), + main_filters::text[main_filters::actual], + c_mnfct::ui[c_mnfct::actual]); + } else if (main_filters::actual == FILTER_YEAR) - filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_year::ui[c_year::actual]).append(") -"); + { + filtered = string_format(_("%1$s (%2$s) - "), + main_filters::text[main_filters::actual], + c_year::ui[c_year::actual]); + } // display the current typeahead if (isfavorite()) tempbuf[1].clear(); else - tempbuf[1].assign(filtered).append(_(" Search: ")).append(m_search).append("_"); + tempbuf[1] = string_format(_("%1$s Search: %2$s_"), filtered, m_search); // get the size of the text for (int line = 0; line < 2; ++line) @@ -776,39 +788,39 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott isstar = machine().favorite().isgame_favorite(driver); // first line is game name - strprintf(tempbuf[0], "Romset: %-.100s", driver->name); + tempbuf[0] = string_format(_("Romset: %1$-.100s"), driver->name); // next line is year, manufacturer - strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer); + tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer); // next line is clone/parent status int cloneof = driver_list::non_bios_clone(*driver); if (cloneof != -1) - strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description); + tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).description); else - tempbuf[2] = "Driver is parent"; + tempbuf[2] = _("Driver is parent"); // next line is overall driver status if (driver->flags & MACHINE_NOT_WORKING) - tempbuf[3] = "Overall: NOT WORKING"; + tempbuf[3] = _("Overall: NOT WORKING"); else if (driver->flags & MACHINE_UNEMULATED_PROTECTION) - tempbuf[3] = "Overall: Unemulated Protection"; + tempbuf[3] = _("Overall: Unemulated Protection"); else - tempbuf[3] = "Overall: Working"; + tempbuf[3] = _("Overall: Working"); // next line is graphics, sound status if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS)) - tempbuf[4] = "Graphics: Imperfect, "; + tempbuf[4] = _("Graphics: Imperfect, "); else - tempbuf[4] = "Graphics: OK, "; + tempbuf[4] = _("Graphics: OK, "); if (driver->flags & MACHINE_NO_SOUND) - tempbuf[4].append("Sound: Unimplemented"); + tempbuf[4].append(_("Sound: Unimplemented")); else if (driver->flags & MACHINE_IMPERFECT_SOUND) - tempbuf[4].append("Sound: Imperfect"); + tempbuf[4].append(_("Sound: Imperfect")); else - tempbuf[4].append("Sound: OK"); + tempbuf[4].append(_("Sound: OK")); color = UI_GREEN_COLOR; @@ -825,43 +837,43 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott isstar = machine().favorite().isgame_favorite(*swinfo); // first line is system - strprintf(tempbuf[0], "System: %-.100s", swinfo->driver->description); + tempbuf[0] = string_format(_("System: %1$-.100s"), swinfo->driver->description); // next line is year, publisher - strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str()); + tempbuf[1] = string_format(_("%1$s, %2$-.100s"), swinfo->year.c_str(), swinfo->publisher.c_str()); // next line is parent/clone if (!swinfo->parentname.empty()) - strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str()); + tempbuf[2] = string_format(_("Software is clone of: %1$-.100s"), !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str()); else - tempbuf[2] = "Software is parent"; + tempbuf[2] = _("Software is parent"); // next line is supported status if (swinfo->supported == SOFTWARE_SUPPORTED_NO) { - tempbuf[3] = "Supported: No"; + tempbuf[3] = _("Supported: No"); color = UI_RED_COLOR; } else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL) { - tempbuf[3] = "Supported: Partial"; + tempbuf[3] = _("Supported: Partial"); color = UI_YELLOW_COLOR; } else { - tempbuf[3] = "Supported: Yes"; + tempbuf[3] = _("Supported: Yes"); color = UI_GREEN_COLOR; } // last line is romset name - strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str()); + tempbuf[4] = string_format(_("romset: %1$-.100s"), swinfo->shortname.c_str()); } else { std::string copyright(emulator_info::get_copyright()); size_t found = copyright.find("\n"); tempbuf[0].clear(); - tempbuf[1].assign(emulator_info::get_appname()).append(" ").append(build_version); + tempbuf[1] = string_format(_("%1$s %2$s"), emulator_info::get_appname(), build_version); tempbuf[2] = copyright.substr(0, found); tempbuf[3] = copyright.substr(found + 1); tempbuf[4].clear(); @@ -1455,47 +1467,49 @@ void ui_menu_select_game::populate_search() void ui_menu_select_game::general_info(const game_driver *driver, std::string &buffer) { - strprintf(buffer, _("Romset: %-.100s\n"), driver->name); - buffer.append(_("Year: ")).append(driver->year).append("\n"); - strcatprintf(buffer, _("Manufacturer: %-.100s\n"), driver->manufacturer); + std::ostringstream str; + + stream_format(str, _("Romset: %1$-.100s\n"), driver->name); + stream_format(str, _("Year: %1$s\n"), driver->year); + stream_format(str, _("Manufacturer: %1$-.100s\n"), driver->manufacturer); int cloneof = driver_list::non_bios_clone(*driver); if (cloneof != -1) - strcatprintf(buffer, _("Driver is Clone of: %-.100s\n"), driver_list::driver(cloneof).description); + stream_format(str, _("Driver is Clone of: %1$-.100s\n"), driver_list::driver(cloneof).description); else - buffer.append(_("Driver is Parent\n")); + str << _("Driver is Parent\n"); if (driver->flags & MACHINE_NOT_WORKING) - buffer.append(_("Overall: NOT WORKING\n")); + str << _("Overall: NOT WORKING\n"); else if (driver->flags & MACHINE_UNEMULATED_PROTECTION) - buffer.append(_("Overall: Unemulated Protection\n")); + str << _("Overall: Unemulated Protection\n"); else - buffer.append(_("Overall: Working\n")); + str << _("Overall: Working\n"); if (driver->flags & MACHINE_IMPERFECT_COLORS) - buffer.append(_("Graphics: Imperfect Colors\n")); + str << _("Graphics: Imperfect Colors\n"); else if (driver->flags & MACHINE_WRONG_COLORS) - buffer.append(_("Graphics: Wrong Colors\n")); + str << ("Graphics: Wrong Colors\n"); else if (driver->flags & MACHINE_IMPERFECT_GRAPHICS) - buffer.append(_("Graphics: Imperfect\n")); + str << _("Graphics: Imperfect\n"); else - buffer.append(_("Graphics: OK\n")); + str << _("Graphics: OK\n"); if (driver->flags & MACHINE_NO_SOUND) - buffer.append(_("Sound: Unimplemented\n")); + str << _("Sound: Unimplemented\n"); else if (driver->flags & MACHINE_IMPERFECT_SOUND) - buffer.append(_("Sound: Imperfect\n")); + str << _("Sound: Imperfect\n"); else - buffer.append(_("Sound: OK\n")); - - strcatprintf(buffer, _("Driver is Skeleton: %s\n"), ((driver->flags & MACHINE_IS_SKELETON) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Game is Mechanical: %s\n"), ((driver->flags & MACHINE_MECHANICAL) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Requires Artwork: %s\n"), ((driver->flags & MACHINE_REQUIRES_ARTWORK) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Requires Clickable Artwork: %s\n"), ((driver->flags & MACHINE_CLICKABLE_ARTWORK) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Support Cocktail: %s\n"), ((driver->flags & MACHINE_NO_COCKTAIL) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Driver is Bios: %s\n"), ((driver->flags & MACHINE_IS_BIOS_ROOT) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Support Save: %s\n"), ((driver->flags & MACHINE_SUPPORTS_SAVE) ? _("Yes") : _("No"))); - strcatprintf(buffer, _("Screen Orentation: %s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal"))); + str << _("Sound: OK\n"); + + stream_format(str, _("Driver is Skeleton: %1$s\n"), ((driver->flags & MACHINE_IS_SKELETON) ? _("Yes") : _("No"))); + stream_format(str, _("Game is Mechanical: %1$s\n"), ((driver->flags & MACHINE_MECHANICAL) ? _("Yes") : _("No"))); + stream_format(str, _("Requires Artwork: %1$s\n"), ((driver->flags & MACHINE_REQUIRES_ARTWORK) ? _("Yes") : _("No"))); + stream_format(str, _("Requires Clickable Artwork: %1$s\n"), ((driver->flags & MACHINE_CLICKABLE_ARTWORK) ? _("Yes") : _("No"))); + stream_format(str, _("Support Cocktail: %1$s\n"), ((driver->flags & MACHINE_NO_COCKTAIL) ? _("Yes") : _("No"))); + stream_format(str, _("Driver is Bios: %1$s\n"), ((driver->flags & MACHINE_IS_BIOS_ROOT) ? _("Yes") : _("No"))); + stream_format(str, _("Support Save: %1$s\n"), ((driver->flags & MACHINE_SUPPORTS_SAVE) ? _("Yes") : _("No"))); + stream_format(str, _("Screen Orentation: %1$s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal"))); bool found = false; for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom) if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom)) @@ -1503,7 +1517,7 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b found = true; break; } - strcatprintf(buffer, _("Requires CHD: %s\n"), (found ? "Yes" : "No")); + stream_format(str, _("Requires CHD: %1$s\n"), found ? _("Yes") : _("No")); // audit the game first to see if we're going to work if (machine().ui().options().info_audit()) @@ -1516,19 +1530,21 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b // if everything looks good, schedule the new driver if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED) - buffer.append(_("Roms Audit Pass: OK\n")); + str << _("Roms Audit Pass: OK\n"); else - buffer.append(_("Roms Audit Pass: BAD\n")); + str << _("Roms Audit Pass: BAD\n"); if (summary_samples == media_auditor::NONE_NEEDED) - buffer.append(_("Samples Audit Pass: None Needed\n")); + str << _("Samples Audit Pass: None Needed\n"); else if (summary_samples == media_auditor::CORRECT || summary_samples == media_auditor::BEST_AVAILABLE) - buffer.append(_("Samples Audit Pass: OK\n")); + str << _("Samples Audit Pass: OK\n"); else - buffer.append(_("Samples Audit Pass: BAD\n")); + str << _("Samples Audit Pass: BAD\n"); } else - buffer.append(_("Roms Audit Pass: Disabled\nSamples Audit Pass: Disabled\n")); + str << _("Roms Audit Pass: Disabled\nSamples Audit Pass: Disabled\n"); + + buffer = str.str(); } void ui_menu_select_game::inkey_export() @@ -1779,7 +1795,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y int cfilter = custfltr::other[count]; if (cfilter == filter) { - strprintf(str, "@custom%d %s", count + 1, text[filter]); + str = string_format("@custom%d %s", count + 1, text[filter]); x1t -= text_sign; break; } diff --git a/src/emu/ui/selsoft.cpp b/src/emu/ui/selsoft.cpp index 772c9575693..1fdb75d021f 100644 --- a/src/emu/ui/selsoft.cpp +++ b/src/emu/ui/selsoft.cpp @@ -681,22 +681,21 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float // determine the text for the header int vis_item = (m_search[0] != 0) ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items); - strprintf(tempbuf[0], "MAME %s ( %d / %d softwares )", bare_build_version, vis_item, (int)m_swinfo.size() - 1); - tempbuf[1].assign("Driver: \"").append(m_driver->description).append("\" software list "); + tempbuf[0] = string_format(_("%1$s %2$s ( %3$d / %4$d softwares )"), emulator_info::get_appname(), bare_build_version, vis_item, m_swinfo.size() - 1); + tempbuf[1] = string_format(_("Driver: \"%1$s\" software list "), m_driver->description); if (sw_filters::actual == UI_SW_REGION && m_filter.region.ui.size() != 0) - strprintf(filtered, _("Region: %s -"), m_filter.region.ui[m_filter.region.actual].c_str()); + filtered = string_format(_("Region: %1$s -"), m_filter.region.ui[m_filter.region.actual]); else if (sw_filters::actual == UI_SW_PUBLISHERS) - strprintf(filtered, _("Publisher: %s -"), m_filter.publisher.ui[m_filter.publisher.actual].c_str()); + filtered = string_format(_("Publisher: %1$s -"), m_filter.publisher.ui[m_filter.publisher.actual]); else if (sw_filters::actual == UI_SW_YEARS) - strprintf(filtered, _("Year: %s -"), m_filter.year.ui[m_filter.year.actual].c_str()); + filtered = string_format(_("Year: %1$s -"), m_filter.year.ui[m_filter.year.actual]); else if (sw_filters::actual == UI_SW_LIST) - strprintf(filtered, _("Software List: %s -"), m_filter.swlist.description[m_filter.swlist.actual].c_str()); + filtered = string_format(_("Software List: %1$s -"), m_filter.swlist.description[m_filter.swlist.actual]); else if (sw_filters::actual == UI_SW_TYPE) - strprintf(filtered, _("Device type: %s -"), m_filter.type.ui[m_filter.type.actual].c_str()); + filtered = string_format(_("Device type: %1$s -"), m_filter.type.ui[m_filter.type.actual]); - strprintf(tempbuf[2], _("%s Search: %s_"), filtered.c_str(), m_search); -// tempbuf[2].assign(filtered).append(_("Search: ")).append(m_search).append("_"); + tempbuf[2] = string_format(_("%s Search: %s_"), filtered, m_search); // get the size of the text float maxwidth = origx2 - origx1; @@ -740,39 +739,39 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float isstar = machine().favorite().isgame_favorite(driver); // first line is game description - strprintf(tempbuf[0], "%-.100s", driver->description); + tempbuf[0] = string_format(_("%1$-.100s"), driver->description); // next line is year, manufacturer - strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer); + tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer); // next line is clone/parent status int cloneof = driver_list::non_bios_clone(*driver); if (cloneof != -1) - strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description); + tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).description); else - tempbuf[2] = "Driver is parent"; + tempbuf[2] = _("Driver is parent"); // next line is overall driver status if (driver->flags & MACHINE_NOT_WORKING) - tempbuf[3] = "Overall: NOT WORKING"; + tempbuf[3] = _("Overall: NOT WORKING"); else if (driver->flags & MACHINE_UNEMULATED_PROTECTION) - tempbuf[3] = "Overall: Unemulated Protection"; + tempbuf[3] = _("Overall: Unemulated Protection"); else - tempbuf[3] = "Overall: Working"; + tempbuf[3] = _("Overall: Working"); // next line is graphics, sound status if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS)) - tempbuf[4] = "Graphics: Imperfect, "; + tempbuf[4] = _("Graphics: Imperfect, "); else - tempbuf[4] = "Graphics: OK, "; + tempbuf[4] = _("Graphics: OK, "); if (driver->flags & MACHINE_NO_SOUND) - tempbuf[4].append("Sound: Unimplemented"); + tempbuf[4].append(_("Sound: Unimplemented")); else if (driver->flags & MACHINE_IMPERFECT_SOUND) - tempbuf[4].append("Sound: Imperfect"); + tempbuf[4].append(_("Sound: Imperfect")); else - tempbuf[4].append("Sound: OK"); + tempbuf[4].append(_("Sound: OK")); color = UI_GREEN_COLOR; @@ -790,36 +789,36 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float isstar = machine().favorite().isgame_favorite(*swinfo); // first line is long name - strprintf(tempbuf[0], "%-.100s", swinfo->longname.c_str()); + tempbuf[0] = string_format(_("%1$-.100s"), swinfo->longname.c_str()); // next line is year, publisher - strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str()); + tempbuf[1] = string_format(_("%1$s, %2$-.100s"), swinfo->year.c_str(), swinfo->publisher.c_str()); // next line is parent/clone if (!swinfo->parentname.empty()) - strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str()); + tempbuf[2] = string_format(_("Software is clone of: %1$-.100s"), !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str()); else - tempbuf[2] = "Software is parent"; + tempbuf[2] = _("Software is parent"); // next line is supported status if (swinfo->supported == SOFTWARE_SUPPORTED_NO) { - tempbuf[3] = "Supported: No"; + tempbuf[3] = _("Supported: No"); color = UI_RED_COLOR; } else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL) { - tempbuf[3] = "Supported: Partial"; + tempbuf[3] = _("Supported: Partial"); color = UI_YELLOW_COLOR; } else { - tempbuf[3] = "Supported: Yes"; + tempbuf[3] = _("Supported: Yes"); color = UI_GREEN_COLOR; } // last line is romset name - strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str()); + tempbuf[4] = string_format(_("romset: %1$-.100s"), swinfo->shortname.c_str()); } else @@ -1467,7 +1466,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo int cfilter = sw_custfltr::other[count]; if (cfilter == filter) { - strprintf(str, "@custom%d %s", count + 1, text[filter]); + str = string_format("@custom%d %s", count + 1, text[filter]); x1t -= text_sign; break; } diff --git a/src/emu/ui/simpleselgame.cpp b/src/emu/ui/simpleselgame.cpp index 4847eb06da4..617c6e651e4 100644 --- a/src/emu/ui/simpleselgame.cpp +++ b/src/emu/ui/simpleselgame.cpp @@ -228,12 +228,12 @@ void ui_simple_menu_select_game::populate() // if nothing there, add a single multiline item and return if (matchcount == 0) { - std::string txt; - strprintf(txt, "No machines 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_configname(), - emulator_info::get_appname(),emulator_info::get_appname() ); + std::string txt = string_format( + _("No machines found. Please check the rompath specified in the %1$s.ini file.\n\n" + "If this is your first time using %2$s, please see the config.txt file in " + "the docs directory for information on configuring %2$s."), + emulator_info::get_configname(), + emulator_info::get_appname()); item_append(txt.c_str(), nullptr, MENU_FLAG_MULTILINE | MENU_FLAG_REDTEXT, nullptr); return; } @@ -284,9 +284,9 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo // display the current typeahead if (m_search[0] != 0) - strprintf(tempbuf[0], "Type name or select: %s_", m_search); + tempbuf[0] = string_format(_("Type name or select: %1$s_"), m_search); else - strprintf(tempbuf[0],"Type name or select: (random)"); + 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, @@ -319,36 +319,36 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo const char *gfxstat, *soundstat; // first line is game name - strprintf(tempbuf[0],"%-.100s", driver->description); + tempbuf[0] = string_format(_("%1$-.100s"), driver->description); // next line is year, manufacturer - strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer); + tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer); // next line source path - strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(driver->source_file).c_str()); + tempbuf[2] = string_format(_("Driver: %1$-.100s"), core_filename_extract_base(driver->source_file).c_str()); // next line is overall driver status if (driver->flags & MACHINE_NOT_WORKING) - tempbuf[3].assign("Overall: NOT WORKING"); + tempbuf[3].assign(_("Overall: NOT WORKING")); else if (driver->flags & MACHINE_UNEMULATED_PROTECTION) - tempbuf[3].assign("Overall: Unemulated Protection"); + tempbuf[3].assign(_("Overall: Unemulated Protection")); else - tempbuf[3].assign("Overall: Working"); + tempbuf[3].assign(_("Overall: Working")); // next line is graphics, sound status if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS)) - gfxstat = "Imperfect"; + gfxstat = _("Imperfect"); else - gfxstat = "OK"; + gfxstat = _("OK"); if (driver->flags & MACHINE_NO_SOUND) - soundstat = "Unimplemented"; + soundstat = _("Unimplemented"); else if (driver->flags & MACHINE_IMPERFECT_SOUND) - soundstat = "Imperfect"; + soundstat = _("Imperfect"); else - soundstat = "OK"; + soundstat = _("OK"); - strprintf(tempbuf[4], "Gfx: %s, Sound: %s", gfxstat, soundstat); + tempbuf[4] = string_format(_("Gfx: %s, Sound: %s"), gfxstat, soundstat); } else { @@ -356,7 +356,7 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo line = 0; // first line is version string - strprintf(tempbuf[line++], "%s %s", emulator_info::get_appname(), build_version); + tempbuf[line++] = string_format("%s %s", emulator_info::get_appname(), build_version); // output message while (line < ARRAY_LENGTH(tempbuf)) diff --git a/src/emu/ui/sndmenu.cpp b/src/emu/ui/sndmenu.cpp index cc5e8490406..ab1731e6589 100644 --- a/src/emu/ui/sndmenu.cpp +++ b/src/emu/ui/sndmenu.cpp @@ -129,13 +129,11 @@ void ui_menu_sound_options::populate() { UINT32 arrow_flags = get_arrow_flags(0, ARRAY_LENGTH(m_sound_rate) - 1, m_cur_rates); m_sample_rate = m_sound_rate[m_cur_rates]; - std::string s_text; - strprintf(s_text, "%d", m_sample_rate); // add options items - item_append(_("Sound"), m_sound ? "On" : "Off", m_sound ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SOUND); - item_append(_("Sample Rate"), s_text.c_str(), arrow_flags, (void *)(FPTR)SAMPLE_RATE); - item_append(_("Use External Samples"), m_samples ? "On" : "Off", m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES); + item_append(_("Sound"), m_sound ? _("On") : _("Off"), m_sound ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SOUND); + item_append(_("Sample Rate"), string_format("%d", m_sample_rate).c_str(), arrow_flags, (void *)(FPTR)SAMPLE_RATE); + item_append(_("Use External Samples"), m_samples ? _("On") : _("Off"), m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES); item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr); customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER); diff --git a/src/emu/ui/tapectrl.cpp b/src/emu/ui/tapectrl.cpp index 253ffbf915d..461ec1e972c 100644 --- a/src/emu/ui/tapectrl.cpp +++ b/src/emu/ui/tapectrl.cpp @@ -171,9 +171,9 @@ void ui_menu_tape_control::get_time_string(std::string &dest, cassette_image_dev t1 = cassette->get_length(); if (t1) - strprintf(dest, "%04d/%04d", (int)t0, (int)t1); + dest = string_format("%04d/%04d", (int)t0, (int)t1); else - strprintf(dest, "%04d/%04d", 0, (int)t1); + dest = string_format("%04d/%04d", 0, (int)t1); if (curpos != nullptr) *curpos = t0; diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp index b474c7c61f6..b54de0e093e 100644 --- a/src/emu/ui/ui.cpp +++ b/src/emu/ui/ui.cpp @@ -148,7 +148,7 @@ static INT32 slider_flicker(running_machine &machine, void *arg, std::string *st static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::string *str, INT32 newval); static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::string *str, INT32 newval); static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, std::string *str, INT32 newval); -static char *slider_get_screen_desc(screen_device &screen); +static std::string slider_get_screen_desc(screen_device &screen); #ifdef MAME_DEBUG 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); @@ -1059,9 +1059,11 @@ bool ui_manager::show_timecode_total() std::string &ui_manager::disclaimer_string(std::string &str) { - 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")); + str = string_format( + _("Usage of emulators in conjunction with ROMs you don't own is forbidden by copyright law.\n\n" + "IF YOU ARE NOT LEGALLY ENTITLED TO PLAY \"%1$s\" ON THIS EMULATOR, PRESS ESC.\n\n" + "Otherwise, type OK or move the joystick left then right to continue"), + machine().system().description); return str; } @@ -1204,8 +1206,14 @@ std::string &ui_manager::warnings_string(std::string &str) std::string &ui_manager::game_info_astring(std::string &str) { + std::ostringstream buf; + // print description, manufacturer, and CPU: - strprintf(str, "%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(machine().system().source_file).c_str()); + stream_format(buf, _("%1$s\n%2$s %3$s\nDriver: %4$s\n\nCPU:\n"), + machine().system().description, + machine().system().year, + machine().system().manufacturer, + core_filename_extract_base(machine().system().source_file)); // loop over all CPUs execute_interface_iterator execiter(machine().root_device()); @@ -1229,15 +1237,15 @@ std::string &ui_manager::game_info_astring(std::string &str) } // if more than one, prepend a #x in front of the CPU name - if (count > 1) - strcatprintf(str, "%d" UTF8_MULTIPLY, count); - str.append(name); - // display clock in kHz or MHz - if (clock >= 1000000) - strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); - else - strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); + stream_format(buf, + (count > 1) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s %3$d.%4$0*5$d%6$s\n", + count, + name, + (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), + (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), + (clock >= 1000000) ? 6 : 3, + (clock >= 1000000) ? _("MHz") : _("kHz")); } // loop over all sound chips @@ -1251,7 +1259,7 @@ std::string &ui_manager::game_info_astring(std::string &str) // append the Sound: string if (!found_sound) - str.append(_("\nSound:\n")); + buf << _("\nSound:\n"); found_sound = true; // count how many identical sound chips we have @@ -1263,52 +1271,51 @@ std::string &ui_manager::game_info_astring(std::string &str) if (soundtags.insert(scan->device().tag()).second) count++; } - // if more than one, prepend a #x in front of the CPU name - if (count > 1) - strcatprintf(str, "%d" UTF8_MULTIPLY, count); - str.append(sound->device().name()); + // if more than one, prepend a #x in front of the CPU name // display clock in kHz or MHz int clock = sound->device().clock(); - if (clock >= 1000000) - strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000); - else if (clock != 0) - strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000); - else - str.append("\n"); + stream_format(buf, + (count > 1) + ? ((clock != 0) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%1$d" UTF8_MULTIPLY "%2$s\n") + : ((clock != 0) ? "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s\n"), + count, + sound->device().name(), + (clock >= 1000000) ? (clock / 1000000) : (clock / 1000), + (clock >= 1000000) ? (clock % 1000000) : (clock % 1000), + (clock >= 1000000) ? 6 : 3, + (clock >= 1000000) ? _("MHz") : _("kHz")); } // display screen information - str.append(_("\nVideo:\n")); + buf << _("\nVideo:\n"); screen_device_iterator scriter(machine().root_device()); int scrcount = scriter.count(); if (scrcount == 0) - str.append(_("None\n")); + buf << _("None\n"); else { for (screen_device *screen = scriter.first(); screen != nullptr; screen = scriter.next()) { - if (scrcount > 1) - { - str.append(slider_get_screen_desc(*screen)); - str.append(": "); - } - + std::string detail; if (screen->screen_type() == SCREEN_TYPE_VECTOR) - str.append(_("Vector\n")); + detail = _("Vector"); else { const rectangle &visarea = screen->visible_area(); - - strcatprintf(str, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n", + detail = string_format("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz", visarea.width(), visarea.height(), (machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H", ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds())); } + + stream_format(buf, + (scrcount > 1) ? _("%1$s: %2$s\n") : _("%2$s\n"), + slider_get_screen_desc(*screen), detail); } } - return str; + return str = buf.str(); } @@ -1901,11 +1908,11 @@ UINT32 ui_manager::handler_confirm_quit(running_machine &machine, render_contain std::string ui_cancel_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD)); // assemble the quit message - std::string quit_message = strformat(_("Are you sure you want to quit?\n\n" - "Press ''%s'' to quit,\n" - "Press ''%s'' to return to emulation."), - ui_select_text.c_str(), - ui_cancel_text.c_str()); + std::string quit_message = string_format(_("Are you sure you want to quit?\n\n" + "Press ''%1$s'' to quit,\n" + "Press ''%2$s'' to return to emulation."), + ui_select_text, + ui_cancel_text); machine.ui().draw_text_box(container, quit_message.c_str(), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR); machine.pause(); @@ -1987,8 +1994,7 @@ static slider_state *slider_init(running_machine &machine) INT32 maxval = 2000; INT32 defval = 1000; - str.assign(info.stream->input_name(info.inputnum)); - str.append(_(" Volume")); + str = string_format(_("%1$s Volume"), info.stream->input_name(info.inputnum)); *tailptr = slider_alloc(machine, str.c_str(), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item); tailptr = &(*tailptr)->next; } @@ -2010,7 +2016,7 @@ static slider_state *slider_init(running_machine &machine) for (device_execute_interface *exec = iter.first(); exec != nullptr; exec = iter.next()) { void *param = (void *)&exec->device(); - strprintf(str, "Overclock CPU %s", exec->device().tag()); + str = string_format(_("Overclock CPU %1$s"), exec->device().tag()); *tailptr = slider_alloc(machine, str.c_str(), 10, 1000, 2000, 1, slider_overclock, param); tailptr = &(*tailptr)->next; } @@ -2025,37 +2031,38 @@ static slider_state *slider_init(running_machine &machine) int defxoffset = floor(screen->xoffset() * 1000.0f + 0.5f); int defyoffset = floor(screen->yoffset() * 1000.0f + 0.5f); void *param = (void *)screen; + std::string screen_desc = slider_get_screen_desc(*screen); // add refresh rate tweaker if (machine.options().cheat()) { - strprintf(str, "%s Refresh Rate", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Refresh Rate"), screen_desc); *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 - strprintf(str, "%s Brightness", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Brightness"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 10, slider_brightness, param); tailptr = &(*tailptr)->next; - strprintf(str, "%s Contrast", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Contrast"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 50, slider_contrast, param); tailptr = &(*tailptr)->next; - strprintf(str,"%s Gamma", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Gamma"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 3000, 50, slider_gamma, param); tailptr = &(*tailptr)->next; // add scale and offset controls per-screen - strprintf(str,"%s Horiz Stretch", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Horiz Stretch"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), 500, defxscale, 1500, 2, slider_xscale, param); tailptr = &(*tailptr)->next; - strprintf(str,"%s Horiz Position", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Horiz Position"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_xoffset, param); tailptr = &(*tailptr)->next; - strprintf(str,"%s Vert Stretch", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Vert Stretch"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), 500, defyscale, 1500, 2, slider_yscale, param); tailptr = &(*tailptr)->next; - strprintf(str,"%s Vert Position", slider_get_screen_desc(*screen)); + str = string_format(_("%1$s Vert Position"), screen_desc); *tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_yoffset, param); tailptr = &(*tailptr)->next; } @@ -2073,16 +2080,16 @@ static slider_state *slider_init(running_machine &machine) void *param = (void *)laserdisc; // add scale and offset controls per-overlay - strprintf(str,"Laserdisc '%s' Horiz Stretch", laserdisc->tag()); + str = string_format(_("Laserdisc '%1$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; - strprintf(str,"Laserdisc '%s' Horiz Position", laserdisc->tag()); + str = string_format(_("Laserdisc '%1$s' Horiz Position"), laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_overxoffset, param); tailptr = &(*tailptr)->next; - strprintf(str,"Laserdisc '%s' Vert Stretch", laserdisc->tag()); + str = string_format(_("Laserdisc '%1$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; - strprintf(str,"Laserdisc '%s' Vert Position", laserdisc->tag()); + str = string_format(_("Laserdisc '%1$s' Vert Position"), laserdisc->tag()); *tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_overyoffset, param); tailptr = &(*tailptr)->next; } @@ -2109,10 +2116,10 @@ static slider_state *slider_init(running_machine &machine) if (field->crosshair_axis() != CROSSHAIR_AXIS_NONE && field->player() == 0) { void *param = (void *)field; - strprintf(str,"Crosshair Scale %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); + str = string_format(_("Crosshair Scale %1$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; - strprintf(str,"Crosshair Offset %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y"); + str = string_format(_("Crosshair Offset %1$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; } @@ -2130,8 +2137,8 @@ static INT32 slider_volume(running_machine &machine, void *arg, std::string *str { if (newval != SLIDER_NOCHANGE) machine.sound().set_attenuation(newval); - if (str != nullptr) - strprintf(*str,"%3ddB", machine.sound().attenuation()); + if (str) + *str = string_format(_("%1$3ddB"), machine.sound().attenuation()); return machine.sound().attenuation(); } @@ -2152,8 +2159,8 @@ static INT32 slider_mixervol(running_machine &machine, void *arg, std::string *s if (newval > curval && (newval - curval) <= 4) newval += 4; // round up on increment info.stream->set_user_gain(info.inputnum, (float)newval * 0.001f); } - if (str != nullptr) - strprintf(*str,"%4.2f", (double) info.stream->user_gain(info.inputnum)); + if (str) + *str = string_format("%4.2f", info.stream->user_gain(info.inputnum)); return floorf(info.stream->user_gain(info.inputnum) * 1000.0f + 0.5f); } @@ -2174,8 +2181,8 @@ static INT32 slider_adjuster(running_machine &machine, void *arg, std::string *s settings.value = newval; field->set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%d%%", settings.value); + if (str) + *str = string_format(_("%1$d%%"), settings.value); return settings.value; } @@ -2190,8 +2197,8 @@ static INT32 slider_overclock(running_machine &machine, void *arg, std::string * device_t *cpu = (device_t *)arg; if (newval != SLIDER_NOCHANGE) cpu->set_clock_scale((float)newval * 0.001f); - if (str != nullptr) - strprintf(*str,"%3.0f%%", floor(cpu->clock_scale() * 100.0 + 0.5)); + if (str) + *str = string_format(_("%1$3.0f%%"), floor(cpu->clock_scale() * 100.0 + 0.5)); return floor(cpu->clock_scale() * 1000.0 + 0.5); } @@ -2213,8 +2220,8 @@ static INT32 slider_refresh(running_machine &machine, void *arg, std::string *st const rectangle &visarea = screen->visible_area(); screen->configure(width, height, visarea, HZ_TO_ATTOSECONDS(defrefresh + (double)newval * 0.001)); } - if (str != nullptr) - strprintf(*str,"%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds())); + if (str) + *str = string_format(_("%1$.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.0 + 0.5); } @@ -2236,8 +2243,8 @@ static INT32 slider_brightness(running_machine &machine, void *arg, std::string settings.m_brightness = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_brightness); + if (str) + *str = string_format(_("%1$.3f"), settings.m_brightness); return floor(settings.m_brightness * 1000.0f + 0.5f); } @@ -2258,8 +2265,8 @@ static INT32 slider_contrast(running_machine &machine, void *arg, std::string *s settings.m_contrast = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_contrast); + if (str) + *str = string_format(_("%1$.3f"), settings.m_contrast); return floor(settings.m_contrast * 1000.0f + 0.5f); } @@ -2279,8 +2286,8 @@ static INT32 slider_gamma(running_machine &machine, void *arg, std::string *str, settings.m_gamma = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_gamma); + if (str) + *str = string_format(_("%1$.3f"), settings.m_gamma); return floor(settings.m_gamma * 1000.0f + 0.5f); } @@ -2301,8 +2308,8 @@ static INT32 slider_xscale(running_machine &machine, void *arg, std::string *str settings.m_xscale = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_xscale); + if (str) + *str = string_format(_("%1$.3f"), settings.m_xscale); return floor(settings.m_xscale * 1000.0f + 0.5f); } @@ -2323,8 +2330,8 @@ static INT32 slider_yscale(running_machine &machine, void *arg, std::string *str settings.m_yscale = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_yscale); + if (str) + *str = string_format(_("%1$.3f"), settings.m_yscale); return floor(settings.m_yscale * 1000.0f + 0.5f); } @@ -2345,8 +2352,8 @@ static INT32 slider_xoffset(running_machine &machine, void *arg, std::string *st settings.m_xoffset = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_xoffset); + if (str) + *str = string_format(_("%1$.3f"), settings.m_xoffset); return floor(settings.m_xoffset * 1000.0f + 0.5f); } @@ -2367,8 +2374,8 @@ static INT32 slider_yoffset(running_machine &machine, void *arg, std::string *st settings.m_yoffset = (float)newval * 0.001f; screen->container().set_user_settings(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_yoffset); + if (str) + *str = string_format(_("%1$.3f"), settings.m_yoffset); return floor(settings.m_yoffset * 1000.0f + 0.5f); } @@ -2389,8 +2396,8 @@ static INT32 slider_overxscale(running_machine &machine, void *arg, std::string settings.m_overscalex = (float)newval * 0.001f; laserdisc->set_overlay_config(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_overscalex); + if (str) + *str = string_format(_("%1$.3f"), settings.m_overscalex); return floor(settings.m_overscalex * 1000.0f + 0.5f); } @@ -2411,8 +2418,8 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, std::string settings.m_overscaley = (float)newval * 0.001f; laserdisc->set_overlay_config(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_overscaley); + if (str) + *str = string_format(_("%1$.3f"), settings.m_overscaley); return floor(settings.m_overscaley * 1000.0f + 0.5f); } @@ -2433,8 +2440,8 @@ static INT32 slider_overxoffset(running_machine &machine, void *arg, std::string settings.m_overposx = (float)newval * 0.001f; laserdisc->set_overlay_config(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_overposx); + if (str) + *str = string_format(_("%1$.3f"), settings.m_overposx); return floor(settings.m_overposx * 1000.0f + 0.5f); } @@ -2455,8 +2462,8 @@ static INT32 slider_overyoffset(running_machine &machine, void *arg, std::string settings.m_overposy = (float)newval * 0.001f; laserdisc->set_overlay_config(settings); } - if (str != nullptr) - strprintf(*str,"%.3f", (double) settings.m_overposy); + if (str) + *str = string_format(_("%1$.3f"), settings.m_overposy); return floor(settings.m_overposy * 1000.0f + 0.5f); } @@ -2471,8 +2478,8 @@ static INT32 slider_flicker(running_machine &machine, void *arg, std::string *st vector_device *vector = nullptr; if (newval != SLIDER_NOCHANGE) vector->set_flicker((float)newval * 0.001f); - if (str != nullptr) - strprintf(*str,"%1.2f", (double) vector->get_flicker()); + if (str) + *str = string_format(_("%1$1.2f"), vector->get_flicker()); return floor(vector->get_flicker() * 1000.0f + 0.5f); } @@ -2488,7 +2495,7 @@ static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::str if (newval != SLIDER_NOCHANGE) vector->set_beam_width_min(MIN((float)newval * 0.01f, vector->get_beam_width_max())); if (str != nullptr) - strprintf(*str,"%1.2f", (double) vector->get_beam_width_min()); + *str = string_format(_("%1$1.2f"), vector->get_beam_width_min()); return floor(vector->get_beam_width_min() * 100.0f + 0.5f); } @@ -2504,7 +2511,7 @@ static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::str if (newval != SLIDER_NOCHANGE) vector->set_beam_width_max(MAX((float)newval * 0.01f, vector->get_beam_width_min())); if (str != nullptr) - strprintf(*str,"%1.2f", (double) vector->get_beam_width_max()); + *str = string_format(_("%1$1.2f"), vector->get_beam_width_max()); return floor(vector->get_beam_width_max() * 100.0f + 0.5f); } @@ -2520,7 +2527,7 @@ static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, s if (newval != SLIDER_NOCHANGE) vector->set_beam_intensity_weight((float)newval * 0.001f); if (str != nullptr) - strprintf(*str,"%1.2f", (double) vector->get_beam_intensity_weight()); + *str = string_format(_("%1$1.2f"), vector->get_beam_intensity_weight()); return floor(vector->get_beam_intensity_weight() * 1000.0f + 0.5f); } @@ -2530,18 +2537,15 @@ static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, s // description for a given screen //------------------------------------------------- -static char *slider_get_screen_desc(screen_device &screen) +static std::string slider_get_screen_desc(screen_device &screen) { screen_device_iterator iter(screen.machine().root_device()); int scrcount = iter.count(); - static char descbuf[256]; if (scrcount > 1) - sprintf(descbuf, _("Screen '%s'"), screen.tag()); + return string_format(_("Screen '%1$s'"), screen.tag()); else - strcpy(descbuf, _("Screen")); - - return descbuf; + return _("Screen"); } //------------------------------------------------- @@ -2556,8 +2560,8 @@ static INT32 slider_crossscale(running_machine &machine, void *arg, std::string if (newval != SLIDER_NOCHANGE) field->set_crosshair_scale(float(newval) * 0.001); - if (str != nullptr) - strprintf(*str,"%s %s %1.3f", _("Crosshair Scale"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); + if (str) + *str = string_format((field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("Crosshair Scale X %1$1.3f") : _("Crosshair Scale Y %1$1.3f"), float(newval) * 0.001f); return floor(field->crosshair_scale() * 1000.0f + 0.5f); } #endif @@ -2575,8 +2579,8 @@ static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string if (newval != SLIDER_NOCHANGE) field->set_crosshair_offset(float(newval) * 0.001f); - if (str != nullptr) - strprintf(*str,"%s %s %1.3f", _("Crosshair Offset"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f); + if (str) + *str = string_format((field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("Crosshair Offset X %1$1.3f") : _("Crosshair Offset Y %1$1.3f"), float(newval) * 0.001f); return field->crosshair_offset(); } #endif diff --git a/src/emu/video.cpp b/src/emu/video.cpp index 9115efd1f4b..0fe17cf8140 100644 --- a/src/emu/video.cpp +++ b/src/emu/video.cpp @@ -267,28 +267,28 @@ void video_manager::frame_update(bool debug) std::string video_manager::speed_text() { - std::string str; + std::ostringstream str; // if we're paused, just display Paused bool paused = machine().paused(); if (paused) - str.append("paused"); + str << "paused"; // if we're fast forwarding, just display Fast-forward else if (m_fastforward) - str.append("fast "); + str << "fast "; // if we're auto frameskipping, display that plus the level else if (effective_autoframeskip()) - strcatprintf(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP); + stream_format(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP); // otherwise, just display the frameskip plus the level else - strcatprintf(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP); + stream_format(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP); // append the speed for all cases except paused if (!paused) - strcatprintf(str, "%4d%%", (int)(100 * m_speed_percent + 0.5)); + stream_format(str, "%4d%%", (int)(100 * m_speed_percent + 0.5)); // display the number of partial updates as well int partials = 0; @@ -296,9 +296,9 @@ std::string video_manager::speed_text() for (screen_device *screen = iter.first(); screen != nullptr; screen = iter.next()) partials += screen->partial_updates(); if (partials > 1) - strcatprintf(str, "\n%d partial updates", partials); + stream_format(str, "\n%d partial updates", partials); - return str; + return str.str(); } @@ -381,44 +381,27 @@ void video_manager::save_input_timecode() m_timecode_write = true; } -std::string &video_manager::timecode_text(std::string &str) { - str.clear(); - str += " "; - - if (!m_timecode_text.empty()) { - str += m_timecode_text + " "; - } - +std::string &video_manager::timecode_text(std::string &str) +{ attotime elapsed_time = machine().time() - m_timecode_start; - std::string elapsed_time_str; - strcatprintf(elapsed_time_str, "%02d:%02d", - (elapsed_time.m_seconds / 60) % 60, - elapsed_time.m_seconds % 60); - str += elapsed_time_str; - - bool paused = machine().paused(); - if (paused) { - str.append(" [paused]"); - } - - str += " "; - + str = string_format(" %s%s%02d:%02d %s", + m_timecode_text, + m_timecode_text.empty() ? "" : " ", + (elapsed_time.m_seconds / 60) % 60, + elapsed_time.m_seconds % 60, + machine().paused() ? "[paused] " : ""); return str; } -std::string &video_manager::timecode_total_text(std::string &str) { - str.clear(); - str += " TOTAL "; - +std::string &video_manager::timecode_total_text(std::string &str) +{ attotime elapsed_time = m_timecode_total; if (machine().ui().show_timecode_counter()) { elapsed_time += machine().time() - m_timecode_start; } - std::string elapsed_time_str; - strcatprintf(elapsed_time_str, "%02d:%02d", - (elapsed_time.m_seconds / 60) % 60, - elapsed_time.m_seconds % 60); - str += elapsed_time_str + " "; + str = string_format("TOTAL %02d:%02d ", + (elapsed_time.m_seconds / 60) % 60, + elapsed_time.m_seconds % 60); return str; } @@ -1269,14 +1252,12 @@ file_error video_manager::open_next(emu_file &file, const char *extension) else { // try until we succeed - std::string seqtext; file.set_openflags(OPEN_FLAG_READ); for (int seq = 0; ; seq++) { // build up the filename fname.assign(snapstr); - strprintf(seqtext, "%04d", seq); - strreplace(fname, "%i", seqtext.c_str()); + strreplace(fname, "%i", string_format("%04d", seq).c_str()); // try to open the file; stop when we fail file_error filerr = file.open(fname.c_str()); diff --git a/src/lib/util/cdrom.cpp b/src/lib/util/cdrom.cpp index 2235119f776..10a1828d5e4 100644 --- a/src/lib/util/cdrom.cpp +++ b/src/lib/util/cdrom.cpp @@ -1288,10 +1288,9 @@ chd_error cdrom_parse_metadata(chd_file *chd, cdrom_toc *toc) chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) { chd_error err; - int i; /* write the metadata */ - for (i = 0; i < toc->numtrks; i++) + for (int i = 0; i < toc->numtrks; i++) { std::string metadata; if (!(toc->flags & CD_FLAG_GDROM)) @@ -1308,7 +1307,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) strcpy(submode, cdrom_get_type_string(toc->tracks[i].pgtype)); } - strprintf(metadata, CDROM_TRACK_METADATA2_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), + metadata = string_format(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); @@ -1316,7 +1315,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc) } else { - strprintf(metadata, GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype), + metadata = string_format(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/corestr.cpp b/src/lib/util/corestr.cpp index ce5976869d4..3c65bcb3db6 100644 --- a/src/lib/util/corestr.cpp +++ b/src/lib/util/corestr.cpp @@ -208,25 +208,6 @@ int strvprintf(std::string &str, const char *format, va_list args) 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(const char *format, ...) -{ - std::string retVal; - va_list ap; - va_start(ap, format); - strvprintf(retVal, format, ap); - va_end(ap); - return retVal; -} - int strcatvprintf(std::string &str, const char *format, va_list args) { char tempbuf[4096]; @@ -237,15 +218,6 @@ int strcatvprintf(std::string &str, const char *format, va_list args) 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++) diff --git a/src/lib/util/corestr.h b/src/lib/util/corestr.h index 94f13c4061b..9d06b30c9f7 100644 --- a/src/lib/util/corestr.h +++ b/src/lib/util/corestr.h @@ -14,6 +14,7 @@ #define __CORESTR_H__ #include "osdcore.h" +#include "strformat.h" #include <string.h> @@ -66,9 +67,6 @@ char *core_i64_oct_format(UINT64 value, UINT8 mindigits); 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(const char *format, ...) ATTR_PRINTF(1, 2); void strdelchr(std::string& str, char chr); void strreplacechr(std::string& str, char ch, char newch); diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp index 8e85e4a42d2..240e64af9ad 100644 --- a/src/lib/util/hashing.cpp +++ b/src/lib/util/hashing.cpp @@ -10,6 +10,8 @@ #include "hashing.h" #include <zlib.h> +#include <iomanip> +#include <sstream> //************************************************************************** @@ -81,10 +83,12 @@ bool sha1_t::from_string(const char *string, int length) std::string sha1_t::as_string() const { - std::string buffer; + std::ostringstream buffer; + buffer.fill('0'); + buffer << std::hex; for (auto & elem : m_raw) - strcatprintf(buffer, "%02x", elem); - return buffer; + buffer << std::setw(2) << unsigned(elem); + return buffer.str(); } @@ -124,10 +128,12 @@ bool md5_t::from_string(const char *string, int length) std::string md5_t::as_string() const { - std::string buffer; + std::ostringstream buffer; + buffer.fill('0'); + buffer << std::hex; for (auto & elem : m_raw) - strcatprintf(buffer, "%02x", elem); - return buffer; + buffer << std::setw(2) << unsigned(elem); + return buffer.str(); } @@ -168,7 +174,7 @@ bool crc32_t::from_string(const char *string, int length) std::string crc32_t::as_string() const { - return strformat("%08x", m_raw); + return string_format("%08x", m_raw); } @@ -225,7 +231,7 @@ bool crc16_t::from_string(const char *string, int length) std::string crc16_t::as_string() const { - return strformat("%04x", m_raw); + return string_format("%04x", m_raw); } /** diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp index 830721127ac..ccc6024c9f9 100644 --- a/src/lib/util/options.cpp +++ b/src/lib/util/options.cpp @@ -355,7 +355,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std:: auto curentry = m_entrymap.find(optionname); if (curentry == m_entrymap.end()) { - strcatprintf(error_string, "Error: unknown option: %s\n", curarg); + error_string.append(string_format("Error: unknown option: %s\n", curarg)); retval = false; if (!is_unadorned) arg++; continue; @@ -367,7 +367,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std:: // can only have one command if (!m_command.empty()) { - strcatprintf(error_string,"Error: multiple commands specified -%s and %s\n", m_command.c_str(), curarg); + error_string.append(string_format("Error: multiple commands specified -%s and %s\n", m_command, curarg)); return false; } m_command = curentry->second->name(); @@ -384,7 +384,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std:: newdata = argv[++arg]; else { - strcatprintf(error_string, "Error: option %s expected a parameter\n", curarg); + error_string.append(string_format("Error: option %s expected a parameter\n", curarg)); return false; } @@ -425,7 +425,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) { - strcatprintf(error_string,"Warning: invalid line in INI: %s", buffer); + error_string.append(string_format("Warning: invalid line in INI: %s", buffer)); continue; } @@ -449,7 +449,7 @@ bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_p if (curentry == m_entrymap.end()) { if (priority >= ignore_priority) - strcatprintf(error_string, "Warning: unknown option in INI: %s\n", optionname); + error_string.append(string_format("Warning: unknown option in INI: %s\n", optionname)); continue; } @@ -482,7 +482,7 @@ void core_options::revert(int priority) std::string core_options::output_ini(const core_options *diff) const { // INI files are complete, so always start with a blank buffer - std::string buffer; + std::ostringstream buffer; int num_valid_headers = 0; int unadorned_index = 0; @@ -518,8 +518,8 @@ std::string core_options::output_ini(const core_options *diff) const if (last_header != nullptr) { if (num_valid_headers++) - strcatprintf(buffer,"\n"); - strcatprintf(buffer, "#\n# %s\n#\n", last_header); + buffer << '\n'; + stream_format(buffer, "#\n# %s\n#\n", last_header); last_header = nullptr; } @@ -527,15 +527,15 @@ std::string core_options::output_ini(const core_options *diff) const if (!is_unadorned) { if (strchr(value, ' ') != nullptr) - strcatprintf(buffer,"%-25s \"%s\"\n", name, value); + stream_format(buffer, "%-25s \"%s\"\n", name, value); else - strcatprintf(buffer,"%-25s %s\n", name, value); + stream_format(buffer, "%-25s %s\n", name, value); } } } } } - return buffer; + return buffer.str(); } @@ -546,20 +546,20 @@ std::string core_options::output_ini(const core_options *diff) const std::string core_options::output_help() const { // start empty - std::string buffer; + std::ostringstream buffer; // loop over all items for (entry *curentry = m_entrylist.first(); curentry != nullptr; curentry = curentry->next()) { // header: just print if (curentry->is_header()) - strcatprintf(buffer,"\n#\n# %s\n#\n", curentry->description()); + stream_format(buffer, "\n#\n# %s\n#\n", curentry->description()); // otherwise, output entries for all non-deprecated items else if (curentry->description() != nullptr) - strcatprintf(buffer,"-%-20s%s\n", curentry->name(), curentry->description()); + stream_format(buffer, "-%-20s%s\n", curentry->name(), curentry->description()); } - return buffer; + return buffer.str(); } @@ -635,7 +635,7 @@ bool core_options::set_value(const char *name, const char *value, int priority, auto curentry = m_entrymap.find(name); if (curentry == m_entrymap.end()) { - strcatprintf(error_string, "Attempted to set unknown option %s\n", name); + error_string.append(string_format("Attempted to set unknown option %s\n", name)); return false; } @@ -645,14 +645,12 @@ bool core_options::set_value(const char *name, const char *value, int priority, bool core_options::set_value(const char *name, int value, int priority, std::string &error_string) { - std::string tempstr = strformat("%d", value); - return set_value(name, tempstr.c_str(), priority, error_string); + return set_value(name, string_format("%d", value).c_str(), priority, error_string); } bool core_options::set_value(const char *name, float value, int priority, std::string &error_string) { - std::string tempstr = strformat("%f", (double)value); - return set_value(name, tempstr.c_str(), priority, error_string); + return set_value(name, string_format("%f", value).c_str(), priority, error_string); } @@ -785,53 +783,53 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch int ival; switch (curentry.type()) { - // booleans must be 0 or 1 - case OPTION_BOOLEAN: - if (sscanf(data.c_str(), "%d", &ival) != 1 || ival < 0 || ival > 1) - { - strcatprintf(error_string, "Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()); - return false; - } - break; + // booleans must be 0 or 1 + case OPTION_BOOLEAN: + if (sscanf(data.c_str(), "%d", &ival) != 1 || ival < 0 || ival > 1) + { + error_string.append(string_format("Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value())); + return false; + } + break; - // integers must be integral - case OPTION_INTEGER: - if (sscanf(data.c_str(), "%d", &ival) != 1) - { - 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()))) - { - 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; + // integers must be integral + case OPTION_INTEGER: + if (sscanf(data.c_str(), "%d", &ival) != 1) + { + error_string.append(string_format("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.append(string_format("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; - // floating-point values must be numeric - case OPTION_FLOAT: - if (sscanf(data.c_str(), "%f", &fval) != 1) - { - 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() && ((double) fval < atof(curentry.minimum()) || (double) fval > atof(curentry.maximum()))) - { - 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; + // floating-point values must be numeric + case OPTION_FLOAT: + if (sscanf(data.c_str(), "%f", &fval) != 1) + { + error_string.append(string_format("Illegal float value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value())); + return false; + } + if (curentry.has_range() && ((double) fval < atof(curentry.minimum()) || (double) fval > atof(curentry.maximum()))) + { + error_string.append(string_format("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; - // strings can be anything - case OPTION_STRING: - break; + // strings can be anything + case OPTION_STRING: + break; - // anything else is invalid - case OPTION_INVALID: - case OPTION_HEADER: - default: - strcatprintf(error_string, "Attempted to set invalid option %s\n", curentry.name()); - return false; + // anything else is invalid + case OPTION_INVALID: + case OPTION_HEADER: + default: + error_string.append(string_format("Attempted to set invalid option %s\n", curentry.name())); + return false; } // set the data diff --git a/src/lib/util/strformat.h b/src/lib/util/strformat.h new file mode 100644 index 00000000000..4e0f4974c7d --- /dev/null +++ b/src/lib/util/strformat.h @@ -0,0 +1,1453 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +/*************************************************************************** + + strformat.h + + type-safe printf substitutes + + This header provides type-safe printf substitutes that output to + std::ostream- or std::string-like objects. Most format strings + supported by C99, SUS, glibc and MSVCRT are accepted. Not all + features are implemented, and semantics differ in some cases. Any + object with an appropriate stream output operator can be used as + a format argument with the %s conversion. + + Since the funcitons are implemented using C++ iostream, some + behaviour more closely resembles iostream output operator behaviour + than printf behaviour. You are also exposed to bugs in your C++ + iostream implementation (e.g. hexadecimal scientific format doesn't + work properly on MinGW). + + These functions are designed to be forgiving - using an + inappropriate conversion for an argument's type just results in the + default conversion for the type being used. Inappropriate types or + out-of-range positions for parameterised field width and precision + are treated as if no width/precision was specified. Out-of-range + argument positions result in the format specification being printed. + + Position specifiers for arguments (%123$), field width (*456$) and + precision (.*789$) are supported. Mixing explicit and implied + positions for arugments/widths/precisions is discouraged, although + it does produce deterministic behaviour. + + The following format flags are recognised: + - "#": alternate format - sets showbase/showpoint, and also + boolalpha for bool with s conversion + - "0": pad with zeroes rather than spaces, ignored if '-' flag is + specified or if precision is specified for d/i/u/o/x/X + conversion + - "-": left-align output, overrides '0' + - " ": recognised but not implemented, ignored for u/o/x/X + conversion + - "+": show sign for positive numbers, overrides ' ', ignored for + u/o/x/X conversions + - "'": recognised for SUS compatibility but ignored (digit grouping + is controlled by stream locale) + - "I": recognised for glibc compatibility but ignored (digits are + controlled by stream locale) + + Precision is supported for conversions by setting precision on the + stream. This works as expected for a/A/e/E/f/F/g/G conversions on + floating-point types, and may work for objects with user-defined + stream output operators. Precision for d/i/u/o/x/X conversions + (minimum digits to print) is not supported. Precision for s + conversions (maximum characters to print) is only honoured for + string-like types (output character pointer/array and + std::basic_string). + + Length specifiers are supported but not required for d/i/u/o/x/X + conversions with integer/char/bool arguments. They result in the + value being cast to the desired type before being printed. Length + specifiers are ignored for other conversions. + + The following length specifiers are recognised: + - hh: cast to char/unsigned char for d/i/u/o/x/X + - h: cast to short/unsigned short for d/i/u/o/x/X + - l: cast to long/unsigned long for d/i/u/o/x/X + - ll: cast to long long/unsigned long long for d/i/u/o/x/X + - L: always ignored + - j: cast to intmax_t/uintmax_t for d/i/u/o/x/X + - z: cast to ssize_t/size_t for d/i/u/o/x/X + - t: cast to ptrdiff_t for d/i/u/o/x/X + - I: cast to ssize_t/size_t for d/i/u/o/x/X + - I32: cast to int32_t/uint32_t for d/i/u/o/x/X + - I64: cast to int64_t/uint64_t for d/i/u/o/x/X + - w: always ignored + + The following conversions are recognised: + - d/i: signed decimal for integer/char/bool types + - u: unsigned decimal for integer/char/bool types + - o: unsigned octal for integer/char/bool types + - x/X: lower/upppercase unsigned hexadecimal for integer/char/bool + types or scientific hexadecimal for floating-point types + - e/E: lower/uppercase scientific decimal for floating-point types + - f/F: lower/uppercase fixed-point decimal for floating-point types + - g/G: default stream output format for floating-point types (may + differ from printf behaviour) + - a/A: lower/upppercase scientific hexadecimal for floating-point + types or hexadecimal for integer types + - c/C: cast integer types to stream's character type, no automatic + widening or narrowing + - s/S: default stream output behaviour for argument + - p/P: cast any integer/char/bool/pointer/array to void const * + - m: output of std::strerror(errno), no automatic widening or + narrowing, does not consume an argument + - %: literal %, field width applied, does not consume an argument + + The output stream type for stream_format must be equivalent to a + std::basic_ostream for duck-typing purposes. The output string for + string type for string_format must provide value_type, traits_type + and allocator_type declarations, and must be constructible from a + std::basic_string using the same value, traits and allocator types. + + The format string type can be a pointer to a NUL-terminated string, + an array containing a NUL-terminated or non-terminated string, or a + STL contiguous container holding a string (e.g. std::string, + std::vector or std::array). Note that NUL characters characters are + only treated as terminators for pointers and arrays, they are + treated as normal characters for other containers. A non-contiguous + container (e.g. std::list or std::deque) will result in undesirable + behaviour likely culminating in a crash. + + The value type of the format string and the character type of the + output stream/string need to match. You can't use a wchar_t format + to format char output and vice versa. + + The format string encoding must have contiguous decimal digits. The + character encoding must not use shift states or multi-byte sequences + that could result in a format character codepoint appearing as part + of a multi-byte sequence or being interpreted differently. ASCII, + ISO Latin, KOI-8, UTF-8, EUC, EBCDIC, and UTF-EBCDIC encodings meet + these requirements, while ISO-2022, UTF-7, KOI-7 and Shift-JIS + encodings do not. For character types other than char and wchar_t, + the encoding must be a strict superset of the char encoding. + + The following conditions cause assertion failures in debug builds: + - Unsupported conversion specifier + - Out-of-range argument/width/precision position + - Inappropriate type for parameterised width/precision + - Positional width/precision specifier not terminated with $ + + Some limitations have been described in passing. Major limitations + and bugs include: + - No automatic widening/narrowing support, so no simple way to + output wide characters/strings to narrow streams/strings and vice + versa. + - No support for n conversion (store characters printed so far) + - Precision ignored for d/i/u/o/x/X conversions (should set minimum + digits to print). + - Precisoin for s/S conversion is only honoured for string-like + types (output character pointer/array and std::basic_string). + - If the output character type is not char, signed char or unsgined + char, printing the a value of this type with d/i/u/o/x/X + conversion and no length specifier causes it to be printed as a + character. Can be worked around by casting to another integer + type or using length specifier. + - Printing with d/i/u/o/x/X conversions may not behave as expected + if the output character type is an integer type other than char, + signed char, unsigned char, or wchar_t. + - Only output character pointer/array is treated as a C string, any + other pointer/array will be printed as a pointer value. The + signed/unsigned/default char are not handled equivalently. + - There is no length specifier to force cast to int/unsigned. Can + be worked around by casting the argument. + - MSVCRT length specifiers I/I32/I64 will not be recognised if no + width or precision is specified, as they will be mistaken for + glibc alternate digits flag. + - The " " flag to prefix positive numbers with a space is not + implemented. + - The "'" and "I" flags are not implemented, as digit grouping and + characters are controlled by the output stream's locale. + - The characters used for space- and zero-padding are not locale- + aware. + +***************************************************************************/ + +#pragma once + +#ifndef __MAME_UTIL_STRFORMAT_H__ +#define __MAME_UTIL_STRFORMAT_H__ + +#include <algorithm> +#include <array> +#include <cassert> +#include <cstddef> +#include <cstdint> +#include <cstring> +#include <iterator> +#include <limits> +#include <locale> +#include <sstream> +#include <string> +#include <type_traits> +#include <utility> + + +namespace detail { +template <typename Character> +class format_chars +{ +public: + typedef Character char_type; + enum : Character { + nul = Character('\0'), + space = Character(' '), + point = Character('.'), + percent = Character('%'), + dollar = Character('$'), + hash = Character('#'), + minus = Character('-'), + plus = Character('+'), + asterisk = Character('*'), + quote = Character('\''), + zero = Character('0'), + nine = Character('9'), + a = Character('a'), + A = Character('A'), + c = Character('c'), + C = Character('C'), + d = Character('d'), + e = Character('e'), + E = Character('E'), + f = Character('f'), + F = Character('F'), + g = Character('g'), + G = Character('G'), + h = Character('h'), + i = Character('i'), + I = Character('I'), + j = Character('j'), + l = Character('l'), + L = Character('L'), + m = Character('m'), + o = Character('o'), + p = Character('p'), + s = Character('s'), + S = Character('S'), + t = Character('t'), + u = Character('u'), + w = Character('w'), + x = Character('x'), + X = Character('X'), + z = Character('z') + }; +}; + +template <> +class format_chars<wchar_t> +{ +public: + typedef wchar_t char_type; + enum : wchar_t { + nul = L'\0', + space = L' ', + point = L'.', + percent = L'%', + dollar = L'$', + hash = L'#', + minus = L'-', + plus = L'+', + asterisk = L'*', + quote = L'\'', + zero = L'0', + nine = L'9', + a = L'a', + A = L'A', + c = L'c', + C = L'C', + d = L'd', + e = L'e', + E = L'E', + f = L'f', + F = L'F', + g = L'g', + G = L'G', + h = L'h', + i = L'i', + I = L'I', + j = L'j', + l = L'l', + L = L'L', + m = L'm', + o = L'o', + p = L'p', + s = L's', + S = L'S', + t = L't', + u = L'u', + w = L'w', + x = L'x', + X = L'X', + z = L'z' + }; +}; + +class format_flags +{ +public: + enum class positive_sign { + none, + space, // ' ' + plus // + + }; + + enum class length { + unspecified, + character, // hh + short_integer, // h + long_integer, // l + long_long_integer, // ll + long_double, // L + integer_maximum, // j + size_type, // z, I + pointer_difference, // t + integer_32, // I32 + integer_64, // I64 + wide_character // w + }; + + enum class conversion { + unspecified, + signed_decimal, // i, d + unsigned_decimal, // u + octal, // o + hexadecimal, // x, X + scientific_decimal, // e, E + fixed_decimal, // f, F + floating_decimal, // g, G + scientific_hexadecimal, // a, A + character, // c, C + string, // s, S + pointer, // p + strerror, // m + percent // % + }; + + format_flags() + : m_alternate_format(false) + , m_zero_pad(false) + , m_left_align(false) + , m_positive_sign(positive_sign::none) + , m_digit_grouping(false) + , m_alternate_digits(false) + , m_field_width(0) + , m_precision(-1) + , m_length(length::unspecified) + , m_uppercase(false) + , m_conversion(conversion::unspecified) + { + } + + template <typename Stream> void apply(Stream &stream) const + { + typedef format_chars<typename Stream::char_type> chars; + + stream.unsetf( + Stream::basefield | + Stream::adjustfield | + Stream::floatfield | + Stream::boolalpha | + Stream::showbase | + Stream::showpoint | + Stream::showpos | + Stream::uppercase); + + if (get_alternate_format()) stream.setf(Stream::showbase | Stream::showpoint); + stream.fill(get_zero_pad() ? chars::zero : chars::space); + stream.setf(get_left_align() ? Stream::left : get_zero_pad() ? Stream::internal : Stream::right); + if (positive_sign::plus == get_positive_sign()) stream.setf(Stream::showpos); + stream.precision((get_precision() < 0) ? 6 : get_precision()); + stream.width(get_field_width()); + if (get_uppercase()) stream.setf(Stream::uppercase); + switch (get_conversion()) + { + case conversion::unspecified: + break; + case conversion::signed_decimal: + case conversion::unsigned_decimal: + stream.setf(Stream::dec); + break; + case conversion::octal: + stream.setf(Stream::oct); + break; + case conversion::hexadecimal: + stream.setf(Stream::hex | Stream::scientific | Stream::fixed); + break; + case conversion::scientific_decimal: + stream.setf(Stream::dec | Stream::scientific); + break; + case conversion::fixed_decimal: + stream.setf(Stream::dec | Stream::fixed); + break; + case conversion::floating_decimal: + stream.setf(Stream::dec); + break; + case conversion::scientific_hexadecimal: + stream.setf(Stream::hex | Stream::scientific | Stream::fixed); + break; + case conversion::character: + case conversion::string: + case conversion::pointer: + case conversion::strerror: + case conversion::percent: + break; + } + } + + bool get_alternate_format() const { return m_alternate_format; } + bool get_zero_pad() const { return m_zero_pad; } + bool get_left_align() const { return m_left_align; } + positive_sign get_positive_sign() const { return m_positive_sign; } + bool get_digit_grouping() const { return m_digit_grouping; } + bool get_alternate_digits() const { return m_alternate_digits; } + unsigned get_field_width() const { return m_field_width; } + int get_precision() const { return m_precision; } + length get_length() const { return m_length; } + bool get_uppercase() const { return m_uppercase; } + conversion get_conversion() const { return m_conversion; } + + void set_alternate_format() + { + m_alternate_format = true; + } + + void set_zero_pad() + { + if (!m_left_align) + { + switch (m_conversion) + { + case conversion::signed_decimal: + case conversion::unsigned_decimal: + case conversion::octal: + case conversion::hexadecimal: + m_zero_pad = (0 > m_precision); + break; + default: + m_zero_pad = true; + } + } + } + + void set_left_align() + { + m_zero_pad = false; + m_left_align = true; + } + + void set_positive_sign_space() + { + switch (m_conversion) + { + case conversion::unsigned_decimal: + case conversion::octal: + case conversion::hexadecimal: + break; + default: + if (positive_sign::plus != m_positive_sign) + m_positive_sign = positive_sign::space; + } + } + + void set_positive_sign_plus() + { + switch (m_conversion) + { + case conversion::unsigned_decimal: + case conversion::octal: + case conversion::hexadecimal: + break; + default: + m_positive_sign = positive_sign::plus; + } + } + + void set_digit_grouping() + { + m_digit_grouping = true; + } + + void set_alternate_digits() + { + m_alternate_digits = true; + } + + void set_field_width(int value) + { + if (0 > value) + { + set_left_align(); + m_field_width = unsigned(-value); + } + else + { + m_field_width = unsigned(value); + } + } + + void set_precision(int value) + { + m_precision = value; + if (0 <= value) + { + switch (m_conversion) + { + case conversion::signed_decimal: + case conversion::unsigned_decimal: + case conversion::octal: + case conversion::hexadecimal: + m_zero_pad = false; + break; + default: + break; + } + } + } + + void set_length(length value) + { + m_length = value; + } + + void set_uppercase() + { + m_uppercase = true; + } + + void set_conversion(conversion value) + { + m_conversion = value; + switch (value) + { + case conversion::unsigned_decimal: + case conversion::octal: + case conversion::hexadecimal: + m_positive_sign = positive_sign::none; + case conversion::signed_decimal: + if (0 <= m_precision) + m_zero_pad = false; + break; + default: + break; + } + } + +private: + bool m_alternate_format; // # + bool m_zero_pad; // 0 + bool m_left_align; // - + positive_sign m_positive_sign; // ' ', + + bool m_digit_grouping; // ' + bool m_alternate_digits; // I + unsigned m_field_width; + int m_precision; // . + length m_length; // hh, h, l, ll, L, j, z, I, t, w + bool m_uppercase; // X, E, F, G, A + conversion m_conversion; // i, d, u, o, x, X, e, E, f, F, g, G, a, A, c, C, s, S, p, m, % +}; + +template <typename Format> +class format_helper_base : public format_chars<std::remove_cv_t<std::remove_reference_t<decltype(*std::cbegin(std::declval<Format>()))> > > +{ +public: + typedef std::remove_reference_t<decltype(std::cbegin(std::declval<Format>()))> iterator; + static iterator begin(Format const &fmt) { return std::cbegin(fmt); } + static bool at_end(Format const &fmt, iterator const &it) { return std::cend(fmt) == it; } +}; + +template <typename Character> +class format_helper_base<Character *> : public format_chars<std::remove_cv_t<Character> > +{ +public: + typedef Character const *iterator; + static iterator begin(Character const *fmt) { return fmt; } + static bool at_end(Character const *fmt, iterator const &it) { return format_helper_base::nul == *it; } +}; + +template <typename Character, std::size_t Length> +class format_helper_base<Character [Length]> : public format_chars<std::remove_cv_t<Character> > +{ +public: + typedef Character const *iterator; + static iterator begin(Character (&fmt)[Length]) { return std::cbegin(fmt); } + static iterator begin(Character const (&fmt)[Length]) { return std::cbegin(fmt); } + static bool at_end(Character (&fmt)[Length], iterator const &it) { return (std::cend(fmt) == it) || (format_chars<Character>::nul == *it); } + static bool at_end(Character const (&fmt)[Length], iterator const &it) { return (std::cend(fmt) == it) || (format_helper_base::nul == *it); } +}; + +template <typename Format> +class format_helper : public format_helper_base<Format> +{ +public: + static bool parse_format( + Format const &fmt, + typename format_helper::iterator &it, + format_flags &flags, + int &next_position, + int &argument_position, + int &width_position, + int &precision_position) + { + static_assert((format_helper::nine - format_helper::zero) == 9, "Digits must be contiguous"); + assert(!format_helper::at_end(fmt, it)); + assert(format_helper::percent == *it); + + int num; + int nxt(next_position); + ++it; + flags = format_flags(); + argument_position = -1; + width_position = -1; + precision_position = -1; + + // Leading zeroes are tricky - they could be a zero-pad flag or part of a position specifier + bool const leading_zero(!format_helper::at_end(fmt, it) && (format_helper::zero == *it)); + while (!format_helper::at_end(fmt, it) && (format_helper::zero == *it)) ++it; + + // Digits encountered at this point could be a field width or a position specifier + num = 0; + bool leading_num(have_digit(fmt, it)); + while (have_digit(fmt, it)) add_digit(num, *it++); + if (leading_num && !have_dollar(fmt, it)) + { + // No dollar sign, leading number is field width + if (leading_zero) flags.set_zero_pad(); + flags.set_field_width(num); + } + else + { + // If we hit a dollar sign after a number, that's a position specifier + if ((leading_zero || leading_num) && have_dollar(fmt, it)) + { + argument_position = num; + ++it; + } + else if (leading_zero) + { + flags.set_zero_pad(); + } + + // Parse flag characters + while (!format_helper::at_end(fmt, it)) + { + switch (*it) + { + case format_helper::hash: ++it; flags.set_alternate_format(); continue; + case format_helper::zero: ++it; flags.set_zero_pad(); continue; + case format_helper::minus: ++it; flags.set_left_align(); continue; + case format_helper::space: ++it; flags.set_positive_sign_space(); continue; + case format_helper::plus: ++it; flags.set_positive_sign_plus(); continue; + case format_helper::quote: ++it; flags.set_digit_grouping(); continue; + case format_helper::I: ++it; flags.set_alternate_digits(); continue; + default: break; + } + break; + } + + // Check for literal or parameterised field width + if (!format_helper::at_end(fmt, it)) + { + if (is_digit(*it)) + { + flags.set_field_width(read_number(fmt, it)); + } + else if (format_helper::asterisk == *it) + { + ++it; + if (have_digit(fmt, it)) + { + num = read_number(fmt, it); + assert(have_dollar(fmt, it)); // invalid positional width + if (!have_dollar(fmt, it)) return false; + width_position = num; + nxt = width_position + 1; + ++it; + } + else + { + width_position = nxt++; + } + } + } + } + + // Check for literal or parameterised precision + if (!format_helper::at_end(fmt, it) && (*it == format_helper::point)) + { + ++it; + if (have_digit(fmt, it)) + { + flags.set_precision(read_number(fmt, it)); + } + else if (!format_helper::at_end(fmt, it) && (format_helper::asterisk == *it)) + { + ++it; + if (have_digit(fmt, it)) + { + num = read_number(fmt, it); + assert(have_dollar(fmt, it)); // invalid positional precision + if (!have_dollar(fmt, it)) return false; + precision_position = num; + nxt = precision_position + 1; + ++it; + } + else + { + precision_position = nxt++; + } + } + else + { + flags.set_precision(0); + } + } + + // Check for length modifiers + if (!format_helper::at_end(fmt, it)) switch (*it) + { + case format_helper::h: + ++it; + if (!format_helper::at_end(fmt, it) && (format_helper::h == *it)) + { + ++it; + flags.set_length(format_flags::length::character); + } + else + { + flags.set_length(format_flags::length::short_integer); + } + break; + case format_helper::l: + ++it; + if (!format_helper::at_end(fmt, it) && (format_helper::l == *it)) + { + ++it; + flags.set_length(format_flags::length::long_long_integer); + } + else + { + flags.set_length(format_flags::length::long_integer); + } + break; + case format_helper::L: + ++it; + flags.set_length(format_flags::length::long_double); + break; + case format_helper::j: + ++it; + flags.set_length(format_flags::length::integer_maximum); + break; + case format_helper::z: + ++it; + flags.set_length(format_flags::length::size_type); + break; + case format_helper::t: + ++it; + flags.set_length(format_flags::length::pointer_difference); + break; + case format_helper::I: + { + ++it; + format_flags::length length = format_flags::length::size_type; + if (!format_helper::at_end(fmt, it)) + { + if ((typename format_helper::char_type(format_helper::zero) + 3) == *it) + { + typename format_helper::iterator tmp(it); + ++tmp; + if (!format_helper::at_end(fmt, tmp) && ((typename format_helper::char_type(format_helper::zero) + 2) == *tmp)) + { + length = format_flags::length::integer_32; + it = ++tmp; + } + } + else if ((typename format_helper::char_type(format_helper::zero) + 6) == *it) + { + typename format_helper::iterator tmp(it); + ++tmp; + if (!format_helper::at_end(fmt, tmp) && ((typename format_helper::char_type(format_helper::zero) + 4) == *tmp)) + { + length = format_flags::length::integer_64; + it = ++tmp; + } + } + } + flags.set_length(length); + } + break; + case format_helper::w: + ++it; + flags.set_length(format_flags::length::wide_character); + break; + default: + break; + } + + // Now we should find a conversion specifier + assert(!format_helper::at_end(fmt, it)); // missing conversion + if (format_helper::at_end(fmt, it)) return false; + switch (*it) + { + case format_helper::d: + case format_helper::i: + flags.set_conversion(format_flags::conversion::signed_decimal); + break; + case format_helper::o: + flags.set_conversion(format_flags::conversion::octal); + break; + case format_helper::u: + flags.set_conversion(format_flags::conversion::unsigned_decimal); + break; + case format_helper::X: + flags.set_uppercase(); + case format_helper::x: + flags.set_conversion(format_flags::conversion::hexadecimal); + break; + case format_helper::E: + flags.set_uppercase(); + case format_helper::e: + flags.set_conversion(format_flags::conversion::scientific_decimal); + break; + case format_helper::F: + flags.set_uppercase(); + case format_helper::f: + flags.set_conversion(format_flags::conversion::fixed_decimal); + break; + case format_helper::G: + flags.set_uppercase(); + case format_helper::g: + flags.set_conversion(format_flags::conversion::floating_decimal); + break; + case format_helper::A: + flags.set_uppercase(); + case format_helper::a: + flags.set_conversion(format_flags::conversion::scientific_hexadecimal); + break; + case format_helper::C: + if (format_flags::length::unspecified == flags.get_length()) + flags.set_length(format_flags::length::long_integer); + case format_helper::c: + flags.set_conversion(format_flags::conversion::character); + break; + case format_helper::S: + if (format_flags::length::unspecified == flags.get_length()) + flags.set_length(format_flags::length::long_integer); + case format_helper::s: + flags.set_conversion(format_flags::conversion::string); + break; + case format_helper::p: + flags.set_conversion(format_flags::conversion::pointer); + break; + case format_helper::m: + flags.set_conversion(format_flags::conversion::strerror); + break; + case format_helper::percent: + flags.set_conversion(format_flags::conversion::percent); + break; + default: + assert(false); // unsupported conversion + return false; + } + ++it; + + // Finalise argument position + if (argument_position < 0) argument_position = nxt; + next_position = argument_position; + switch (flags.get_conversion()) + { + case format_flags::conversion::strerror: + case format_flags::conversion::percent: + break; + default: + ++next_position; + } + return true; + } + +private: + static bool have_dollar(Format const &fmt, typename format_helper::iterator const &it) + { + return !format_helper::at_end(fmt, it) && (*it == format_helper::dollar); + } + + static bool have_digit(Format const &fmt, typename format_helper::iterator const &it) + { + return !format_helper::at_end(fmt, it) && is_digit(*it); + } + + static bool is_digit(typename format_helper::char_type value) + { + return (format_helper::zero <= value) && (format_helper::nine >= value); + } + + static int digit_value(typename format_helper::char_type value) + { + assert(is_digit(value)); + return int(std::make_signed_t<decltype(value)>(value - format_helper::zero)); + } + + static void add_digit(int &num, typename format_helper::char_type digit) + { + num = (num * 10) + digit_value(digit); + } + + static int read_number(Format const &fmt, typename format_helper::iterator &it) + { + assert(have_digit(fmt, it)); + int value = 0; + do add_digit(value, *it++); while (have_digit(fmt, it)); + return value; + } +}; + +template <typename Stream, typename T> +class format_output +{ +private: + template <typename U> struct signed_integer_semantics + { static constexpr bool value = std::is_integral<U>::value && std::is_signed<U>::value; }; + template <typename U> struct unsigned_integer_semantics + { static constexpr bool value = std::is_integral<U>::value && !std::is_signed<U>::value; }; + template <typename U> struct default_semantics + { static constexpr bool value = !signed_integer_semantics<U>::value && !unsigned_integer_semantics<U>::value; }; + +public: + template <typename U> + static void apply(std::enable_if_t<signed_integer_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value) + { + switch (flags.get_conversion()) + { + case format_flags::conversion::signed_decimal: + switch (flags.get_length()) + { + case format_flags::length::character: + str << int(static_cast<signed char>(value)); + break; + case format_flags::length::short_integer: + str << short(value); + break; + case format_flags::length::long_integer: + str << long(value); + break; + case format_flags::length::long_long_integer: + str << static_cast<long long>(value); + break; + case format_flags::length::integer_maximum: + str << std::intmax_t(value); + break; + case format_flags::length::size_type: + str << std::make_signed_t<std::size_t>(value); + break; + case format_flags::length::pointer_difference: + str << std::make_signed_t<std::ptrdiff_t>(value); + break; + case format_flags::length::integer_32: + str << std::uint32_t(std::int32_t(value)); + break; + case format_flags::length::integer_64: + str << std::int64_t(value); + break; + default: + if (std::is_same<std::make_signed_t<U>, std::make_signed_t<char> >::value) + str << int(value); + else + str << value; + } + break; + case format_flags::conversion::unsigned_decimal: + case format_flags::conversion::octal: + case format_flags::conversion::hexadecimal: + switch (flags.get_length()) + { + case format_flags::length::character: + str << unsigned(static_cast<unsigned char>(static_cast<signed char>(value))); + break; + case format_flags::length::short_integer: + str << static_cast<unsigned short>(short(value)); + break; + case format_flags::length::long_integer: + str << static_cast<unsigned long>(long(value)); + break; + case format_flags::length::long_long_integer: + str << static_cast<unsigned long long>(static_cast<long long>(value)); + break; + case format_flags::length::integer_maximum: + str << std::uintmax_t(std::intmax_t(value)); + break; + case format_flags::length::size_type: + str << std::make_unsigned_t<std::size_t>(std::make_signed_t<std::size_t>(value)); + break; + case format_flags::length::pointer_difference: + str << std::make_unsigned_t<std::ptrdiff_t>(std::make_signed_t<std::ptrdiff_t>(value)); + break; + case format_flags::length::integer_32: + str << std::uint32_t(std::int32_t(value)); + break; + case format_flags::length::integer_64: + str << std::uint64_t(std::int64_t(value)); + break; + default: + if (std::is_same<std::make_unsigned_t<U>, std::make_unsigned_t<char> >::value) + str << unsigned(std::make_unsigned_t<U>(value)); + else + str << std::make_unsigned_t<U>(value); + } + break; + case format_flags::conversion::character: + if (std::is_signed<typename Stream::char_type>::value) + str << typename Stream::char_type(value); + else + str << typename Stream::char_type(std::make_signed_t<typename Stream::char_type>(value)); + break; + case format_flags::conversion::pointer: + str << reinterpret_cast<void const *>(std::uintptr_t(std::intptr_t(value))); + break; + default: + str << value; + } + } + template <typename U> + static void apply(std::enable_if_t<unsigned_integer_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value) + { + switch (flags.get_conversion()) + { + case format_flags::conversion::signed_decimal: + switch (flags.get_length()) + { + case format_flags::length::character: + str << int(static_cast<signed char>(static_cast<unsigned char>(value))); + break; + case format_flags::length::short_integer: + str << short(static_cast<unsigned short>(value)); + break; + case format_flags::length::long_integer: + str << long(static_cast<unsigned long>(value)); + break; + case format_flags::length::long_long_integer: + str << static_cast<long long>(static_cast<unsigned long long>(value)); + break; + case format_flags::length::integer_maximum: + str << std::intmax_t(std::uintmax_t(value)); + break; + case format_flags::length::size_type: + str << std::make_signed_t<std::size_t>(std::make_unsigned_t<std::size_t>(value)); + break; + case format_flags::length::pointer_difference: + str << std::make_signed_t<std::ptrdiff_t>(std::make_unsigned_t<std::ptrdiff_t>(value)); + break; + case format_flags::length::integer_32: + str << std::int32_t(std::uint32_t(value)); + break; + case format_flags::length::integer_64: + str << std::int64_t(std::uint64_t(value)); + break; + default: + if (std::is_same<std::make_signed_t<U>, std::make_signed_t<char> >::value) + str << int(std::make_signed_t<U>(value)); + else + str << std::make_signed_t<U>(value); + } + break; + case format_flags::conversion::unsigned_decimal: + case format_flags::conversion::octal: + case format_flags::conversion::hexadecimal: + switch (flags.get_length()) + { + case format_flags::length::character: + str << unsigned(static_cast<unsigned char>(value)); + break; + case format_flags::length::short_integer: + str << static_cast<unsigned short>(value); + break; + case format_flags::length::long_integer: + str << static_cast<unsigned long>(value); + break; + case format_flags::length::long_long_integer: + str << static_cast<unsigned long long>(value); + break; + case format_flags::length::integer_maximum: + str << std::uintmax_t(value); + break; + case format_flags::length::size_type: + str << std::make_unsigned_t<std::size_t>(value); + break; + case format_flags::length::pointer_difference: + str << std::make_unsigned_t<std::ptrdiff_t>(value); + break; + case format_flags::length::integer_32: + str << std::uint32_t(std::int32_t(value)); + break; + case format_flags::length::integer_64: + str << std::int64_t(value); + break; + default: + if (std::is_same<std::make_unsigned_t<U>, std::make_unsigned_t<char> >::value) + str << unsigned(value); + else + str << value; + } + break; + case format_flags::conversion::character: + if (std::is_signed<typename Stream::char_type>::value) + str << typename Stream::char_type(value); + else + str << typename Stream::char_type(std::make_signed_t<typename Stream::char_type>(value)); + break; + case format_flags::conversion::pointer: + str << reinterpret_cast<void const *>(std::uintptr_t(value)); + break; + default: + str << value; + } + } + template <typename U> + static void apply(std::enable_if_t<default_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value) + { + str << value; + } + static void apply(Stream &str, format_flags const &flags, bool value) + { + switch (flags.get_conversion()) + { + case format_flags::conversion::signed_decimal: + case format_flags::conversion::unsigned_decimal: + case format_flags::conversion::octal: + case format_flags::conversion::hexadecimal: + case format_flags::conversion::scientific_decimal: + case format_flags::conversion::fixed_decimal: + case format_flags::conversion::floating_decimal: + case format_flags::conversion::scientific_hexadecimal: + case format_flags::conversion::character: + case format_flags::conversion::pointer: + apply(str, flags, unsigned(value)); + break; + default: + if (flags.get_alternate_format()) str.setf(Stream::boolalpha); + str << value; + } + } + template <typename CharT, typename Traits, typename Allocator> + static void apply(std::enable_if_t<std::is_same<CharT, typename Stream::char_type>::value, Stream> &str, format_flags const &flags, std::basic_string<CharT, Traits, Allocator> const &value) + { + int const precision(flags.get_precision()); + if ((0 <= precision) && (value.size() > unsigned(precision))) + { + unsigned width(flags.get_field_width()); + bool const pad(unsigned(precision) < width); + typename Stream::fmtflags const adjust(str.flags() & Stream::adjustfield); + if (!pad || (Stream::left == adjust)) str.write(&*value.begin(), unsigned(precision)); + if (pad) + { + for (width -= precision; 0U < width; --width) str.put(str.fill()); + if (Stream::left != adjust) str.write(&*value.begin(), unsigned(precision)); + } + str.width(0); + } + else + { + str << value; + } + } + template <typename CharT, typename Traits, typename Allocator> + static void apply(std::enable_if_t<!std::is_same<CharT, typename Stream::char_type>::value, Stream> &str, format_flags const &flags, std::basic_string<CharT, Traits, Allocator> const &value) + { + int const precision(flags.get_precision()); + if ((0 <= precision) && (value.size() > unsigned(precision))) + str << value.substr(0, unsigned(precision)); + else + str << value; + } +}; + +template <typename Stream, typename T> +class format_output<Stream, T *> +{ +protected: + template <typename U> struct string_semantics + { static constexpr bool value = std::is_same<std::remove_const_t<U>, typename Stream::char_type>::value; }; + +public: + template <typename U> + static void apply(std::enable_if_t<string_semantics<U>::value, Stream> &str, format_flags const &flags, U const *value) + { + switch (flags.get_conversion()) + { + case format_flags::conversion::string: + { + int precision(flags.get_precision()); + if (0 <= flags.get_precision()) + { + std::streamsize cnt(0); + for ( ; (0 < precision) && (U(format_chars<U>::nul) != value[cnt]); --precision, ++cnt) { } + unsigned width(flags.get_field_width()); + bool const pad(std::make_unsigned_t<std::streamsize>(cnt) < width); + typename Stream::fmtflags const adjust(str.flags() & Stream::adjustfield); + if (!pad || (Stream::left == adjust)) str.write(value, cnt); + if (pad) + { + for (width -= cnt; 0U < width; --width) str.put(str.fill()); + if (Stream::left != adjust) str.write(value, cnt); + } + str.width(0); + } + else + { + str << value; + } + } + break; + case format_flags::conversion::pointer: + str << reinterpret_cast<void const *>(const_cast<std::remove_volatile_t<U> *>(value)); + break; + default: + str << value; + } + } + template <typename U> + static void apply(std::enable_if_t<!string_semantics<U>::value, Stream> &str, format_flags const &flags, U const *value) + { + str << reinterpret_cast<void const *>(const_cast<std::remove_volatile_t<U> *>(value)); + } +}; + +template <typename Stream, typename T, std::size_t N> +class format_output<Stream, T[N]> : protected format_output<Stream, T *> +{ +public: + template <typename U> + static void apply(Stream &str, format_flags const &flags, U const *value) + { + static_assert( + !format_output::template string_semantics<U>::value || (N <= size_t(unsigned(std::numeric_limits<int>::max()))), + "C string array length must not exceed maximum integer value"); + format_flags f(flags); + if (format_output::template string_semantics<U>::value && ((0 > f.get_precision()) || (N < unsigned(f.get_precision())))) + f.set_precision(int(unsigned(N))); + format_output<Stream, T *>::apply(str, f, value); + } +}; + +template <typename T> +class format_make_integer +{ +private: + template <typename U> struct use_unsigned_cast + { static constexpr bool value = std::is_convertible<U const, unsigned>::value && std::is_unsigned<U>::value; }; + template <typename U> struct use_signed_cast + { static constexpr bool value = !use_unsigned_cast<U>::value && std::is_convertible<U const, int>::value; }; + template <typename U> struct disable + { static constexpr bool value = !use_unsigned_cast<U>::value && !use_signed_cast<U>::value; }; + +public: + template <typename U> static std::enable_if_t<use_unsigned_cast<U>::value, bool> apply(U const &value, int &result) + { + result = int(unsigned(value)); + return true; + } + template <typename U> static std::enable_if_t<use_signed_cast<U>::value, bool> apply(U const &value, int &result) + { + result = int(value); + return true; + } + template <typename U> static std::enable_if_t<disable<U>::value, bool> apply(U const &value, int &result) + { + return false; + } +}; + +template <typename Stream> +class format_argument +{ +public: + format_argument() + : m_value(nullptr) + , m_output_function(nullptr) + , m_make_integer_function(nullptr) + { + } + + template <typename T> + format_argument(T const &value) + : m_value(reinterpret_cast<void const *>(&value)) + , m_output_function(&static_output<T>) + , m_make_integer_function(&static_make_integer<T>) + { + } + + void output(Stream &str, format_flags const &flags) const { m_output_function(str, flags, m_value); } + bool make_integer(int &result) const { return m_make_integer_function(m_value, result); } + +private: + typedef void (*output_function)(Stream &str, format_flags const &flags, void const *value); + typedef bool (*make_integer_function)(void const *value, int &result); + + template <typename T> static void static_output(Stream &str, format_flags const &flags, void const *value) + { + format_output<Stream, T>::apply(str, flags, *reinterpret_cast<T const *>(value)); + } + + template <typename T> static bool static_make_integer(void const *value, int &result) + { + return format_make_integer<T>::apply(*reinterpret_cast<T const *>(value), result); + } + + void const *m_value; + output_function m_output_function; + make_integer_function m_make_integer_function; +}; + +template <typename Stream, typename... Params> +inline std::array<format_argument<Stream>, sizeof...(Params)> make_format_arguments(Params &&... args) +{ + return std::array<format_argument<Stream>, sizeof...(Params)>({ { format_argument<Stream>(std::forward<Params>(args))... } }); +} + +template <typename Stream, typename Format, std::size_t Count> +void stream_format(Stream &str, Format const &fmt, std::array<format_argument<Stream>, Count> const &args) +{ + typedef format_helper<std::remove_reference_t<Format> > format_helper; + typedef typename format_helper::iterator iterator; + class stream_preserver + { + public: + stream_preserver(Stream &stream) + : m_stream(stream) + , m_fill(stream.fill()) + , m_flags(stream.flags()) + , m_precision(stream.precision()) + , m_width(stream.width()) + { + } + ~stream_preserver() + { + m_stream.width(m_width); + m_stream.precision(m_precision); + m_stream.flags(m_flags); + m_stream.fill(m_fill); + } + private: + Stream &m_stream; + typename Stream::char_type m_fill; + typename Stream::fmtflags m_flags; + std::streamsize m_precision; + std::streamsize m_width; + }; + + stream_preserver preserver(str); + int next_pos(1); + iterator start = format_helper::begin(fmt); + for (iterator it = start; !format_helper::at_end(fmt, start); ) + { + while (!format_helper::at_end(fmt, it) && (format_helper::percent != *it)) ++it; + if (start != it) + { + str.write(&*start, it - start); + start = it; + } + if (!format_helper::at_end(fmt, it)) + { + // Try to parse a percent format specification + format_flags flags; + int arg_pos, width_pos, prec_pos; + if (!format_helper::parse_format(fmt, it, flags, next_pos, arg_pos, width_pos, prec_pos)) + continue; + + // Handle parameterised width + if (0 <= width_pos) + { + assert(flags.get_field_width() == 0U); + assert(0 < width_pos); + assert(args.size() >= unsigned(width_pos)); + if ((0 < width_pos) && (args.size() >= unsigned(width_pos))) + { + int width; + if (args[width_pos - 1].make_integer(width)) + { + if (0 > width) + { + flags.set_left_align(); + flags.set_field_width(unsigned(-width)); + } + else + { + flags.set_field_width(unsigned(width)); + } + } + else + { + assert(false); // inappropriate type passed as width argument + } + } + } + + // Handle parameterised precision + if (0 <= prec_pos) + { + assert(flags.get_precision() < 0); + assert(0 < prec_pos); + assert(args.size() >= unsigned(prec_pos)); + if ((0 < prec_pos) && (args.size() >= unsigned(prec_pos))) + { + int precision; + if (args[prec_pos - 1].make_integer(precision)) + flags.set_precision(precision); + else + assert(false); // inappropriate type passed as precision argument + } + } + + // Some conversions don't actually take an argument - get them out of the way + flags.apply(str); + if (format_flags::conversion::strerror == flags.get_conversion()) + { + str << std::strerror(errno); + start = it; + } + else if (format_flags::conversion::percent == flags.get_conversion()) + { + str << typename Stream::char_type(format_chars<typename Stream::char_type>::percent); + start = it; + } + else + { + assert(0 < arg_pos); + assert(args.size() >= unsigned(arg_pos)); + if ((0 >= arg_pos) || (args.size() < unsigned(arg_pos))) + continue; + args[arg_pos - 1].output(str, flags); + start = it; + } + } + } +} + +} // namespace detail + +template <typename Stream, typename Format, typename... Params> +inline void stream_format(Stream &str, Format const &fmt, Params &&... args) +{ + auto const arg_pack(detail::make_format_arguments<Stream>(std::forward<Params>(args)...)); + detail::stream_format(str, fmt, arg_pack); +} + +template <typename String = std::string, typename Format, typename... Params> +inline String string_format(Format const &fmt, Params &&... args) +{ + typedef std::basic_ostringstream<typename String::value_type, typename String::traits_type, typename String::allocator_type> ostream; + ostream str; + stream_format(str, fmt, std::forward<Params>(args)...); + return str.str(); +}; + +template <typename String = std::string, typename Format, typename... Params> +inline String string_format(std::locale const &locale, Format const &fmt, Params &&... args) +{ + typedef std::basic_ostringstream<typename String::value_type, typename String::traits_type, typename String::allocator_type> ostream; + ostream str; + str.imbue(locale); + stream_format(str, fmt, std::forward<Params>(args)...); + return str.str(); +}; + +#endif // __MAME_UTIL_STRFORMAT_H__ diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp index 7bf47669d60..15240d13cfb 100644 --- a/src/mame/drivers/aim65.cpp +++ b/src/mame/drivers/aim65.cpp @@ -157,9 +157,9 @@ int aim65_state::load_cart(device_image_interface &image, generic_slot_device *s if (image.software_entry() != nullptr && image.get_software_region(slot_tag) == nullptr) { - std::string errmsg; - strprintf(errmsg,"Attempted to load file with wrong extension\nSocket '%s' only accepts files with '.%s' extension", - slot_tag, slot_tag); + std::string errmsg = string_format( + "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/mame/drivers/bfm_sc45_helper.cpp b/src/mame/drivers/bfm_sc45_helper.cpp index d49c449a230..4c269798ba9 100644 --- a/src/mame/drivers/bfm_sc45_helper.cpp +++ b/src/mame/drivers/bfm_sc45_helper.cpp @@ -155,7 +155,7 @@ int find_input_strings(running_machine &machine) { for (int j = 0; j < 16; j++) { - sc4inputs[i][j].name = strformat("IN%d-%d", i, j); + sc4inputs[i][j].name = string_format("IN%d-%d", i, j); sc4inputs[i][j].used = false; } } diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index 8ec2c17c68a..56097b63472 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -774,7 +774,7 @@ void cps3_state::init_common(void) // flash roms for (int simmnum = 0; simmnum < 7; simmnum++) for (int chipnum = 0; chipnum < 8; chipnum++) - m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(strformat("simm%d.%d", simmnum + 1, chipnum).c_str()); + m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(string_format("simm%d.%d", simmnum + 1, chipnum).c_str()); m_eeprom = std::make_unique<UINT32[]>(0x400/4); machine().device<nvram_device>("eeprom")->set_base(m_eeprom.get(), 0x400); diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp index 858c4b8249f..bb7d157b3b7 100644 --- a/src/mame/drivers/pegasus.cpp +++ b/src/mame/drivers/pegasus.cpp @@ -433,8 +433,9 @@ int pegasus_state::load_cart(device_image_interface &image, generic_slot_device if (size == 0) { - 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."); + std::string errmsg = string_format( + "Attempted to load a file that does not work in this socket.\n" + "Please 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/mame/machine/spec_snqk.cpp b/src/mame/machine/spec_snqk.cpp index 5af12945676..da0099b1d64 100644 --- a/src/mame/machine/spec_snqk.cpp +++ b/src/mame/machine/spec_snqk.cpp @@ -48,26 +48,26 @@ static void log_quickload(running_machine &machine, const char *type, UINT32 start, UINT32 length, UINT32 exec, const char *exec_format) { - std::string tempstring; + std::ostringstream tempstring; spectrum_state *state = machine.driver_data<spectrum_state>(); state->logerror("Loading %04X bytes of RAM at %04X\n", length, start); - strcatprintf(tempstring,"Quickload type: %s Length: %d bytes\n", type, length); - strcatprintf(tempstring,"Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1); + stream_format(tempstring,"Quickload type: %s Length: %d bytes\n", type, length); + stream_format(tempstring,"Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1); state->logerror("Quickload loaded.\n"); if (!core_stricmp(exec_format, EXEC_NA)) - tempstring.append("N/A"); + tempstring << "N/A"; else { state->logerror("Execution can resume with "); state->logerror(exec_format, exec); state->logerror("\n"); - strcatprintf(tempstring,exec_format, exec); + stream_format(tempstring,exec_format, exec); } - machine.ui().popup_time(10, "%s", tempstring.c_str()); + machine.ui().popup_time(10, "%s", tempstring.str().c_str()); } /******************************************************************* diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp index bda8cf14c80..2ff5d6b134e 100644 --- a/src/mame/machine/thomson.cpp +++ b/src/mame/machine/thomson.cpp @@ -377,9 +377,7 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, to7_cartridge ) m_thom_cart_nb_banks = 4; else { - std::string errmsg; - strprintf(errmsg,"Invalid cartridge size %u", size); - image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str()); + image.seterror(IMAGE_ERROR_UNSUPPORTED, string_format("Invalid cartridge size %u", size).c_str()); return IMAGE_INIT_FAIL; } @@ -1508,9 +1506,7 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, mo5_cartridge ) m_thom_cart_nb_banks = 4; else { - std::string errmsg; - strprintf(errmsg,"Invalid cartridge size %d", (int)size); - image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str()); + image.seterror(IMAGE_ERROR_UNSUPPORTED, string_format("Invalid cartridge size %d", size).c_str()); return IMAGE_INIT_FAIL; } diff --git a/src/osd/modules/debugger/debugint.cpp b/src/osd/modules/debugger/debugint.cpp index 40a6e2a297b..205af4e1f15 100644 --- a/src/osd/modules/debugger/debugint.cpp +++ b/src/osd/modules/debugger/debugint.cpp @@ -1763,8 +1763,6 @@ static void handle_menus(running_machine &machine) static void followers_set_cpu(device_t *device) { - std::string title; - for (DView *dv = list; dv != nullptr; dv = dv->next) { if (dview_is_state(dv, VIEW_STATE_FOLLOW_CPU)) @@ -1775,8 +1773,7 @@ static void followers_set_cpu(device_t *device) case DVT_DISASSEMBLY: case DVT_STATE: dv->view->set_source(*source); - strprintf(title, "%s", source->name()); - dview_set_title(dv, title); + dview_set_title(dv, string_format("%s", source->name())); break; } } diff --git a/src/osd/modules/debugger/qt/mainwindow.cpp b/src/osd/modules/debugger/qt/mainwindow.cpp index ef4a3ea809c..3ec15065b46 100644 --- a/src/osd/modules/debugger/qt/mainwindow.cpp +++ b/src/osd/modules/debugger/qt/mainwindow.cpp @@ -144,9 +144,8 @@ void MainWindow::setProcessor(device_t* processor) m_dasmFrame->view()->verticalScrollBar()->setValue(m_dasmFrame->view()->view()->visible_position().y); // Window title - std::string title; - strprintf(title,"Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag()); - setWindowTitle(title.c_str()); + string_format("Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag()); + setWindowTitle(string_format("Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag()).c_str()); } @@ -236,11 +235,11 @@ void MainWindow::toggleBreakpointAtCursor(bool changedTo) std::string command; if (bpindex == -1) { - strprintf(command,"bpset 0x%X", address); + command = string_format("bpset 0x%X", address); } else { - strprintf(command,"bpclear 0x%X", bpindex); + command = string_format("bpclear 0x%X", bpindex); } debug_console_execute_command(*m_machine, command.c_str(), 1); } @@ -265,8 +264,7 @@ void MainWindow::enableBreakpointAtCursor(bool changedTo) if (bp != NULL) { INT32 const bpindex = bp->index(); - std::string command; - strprintf(command,bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex); + std::string command = string_format(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex); debug_console_execute_command(*m_machine, command.c_str(), 1); } } @@ -281,8 +279,7 @@ void MainWindow::runToCursor(bool changedTo) if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device())) { offs_t address = downcast<debug_view_disasm*>(dasmView)->selected_address(); - std::string command; - strprintf(command,"go 0x%X", address); + std::string command = string_format("go 0x%X", address); debug_console_execute_command(*m_machine, command.c_str(), 1); } } @@ -475,8 +472,7 @@ void MainWindow::createImagesMenu() image_interface_iterator iter(m_machine->root_device()); for (device_image_interface *img = iter.first(); img != NULL; img = iter.next()) { - std::string menuName; - strprintf(menuName,"%s : %s", img->device().name(), img->exists() ? img->filename() : "[empty slot]"); + std::string menuName = string_format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[empty slot]"); QMenu* interfaceMenu = imagesMenu->addMenu(menuName.c_str()); interfaceMenu->setObjectName(img->device().name()); diff --git a/src/osd/modules/debugger/win/consolewininfo.cpp b/src/osd/modules/debugger/win/consolewininfo.cpp index 50c0fced670..a5423631ce4 100644 --- a/src/osd/modules/debugger/win/consolewininfo.cpp +++ b/src/osd/modules/debugger/win/consolewininfo.cpp @@ -43,9 +43,7 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) : m_devices_menu = CreatePopupMenu(); for ( ; img != NULL; img = iter.next()) { - 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()); + TCHAR *tc_buf = tstring_from_utf8(string_format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[no image]").c_str()); if (tc_buf != NULL) { AppendMenu(m_devices_menu, MF_ENABLED, 0, tc_buf); @@ -106,9 +104,8 @@ void consolewin_info::set_cpu(device_t &device) // then update the caption char curtitle[256]; - std::string title; - strprintf(title, "Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag()); + std::string title = string_format("Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag()); win_get_window_text_utf8(window(), curtitle, ARRAY_LENGTH(curtitle)); if (title.compare(curtitle) != 0) win_set_window_text_utf8(window(), title.c_str()); @@ -200,9 +197,7 @@ void consolewin_info::update_menu() AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, TEXT("Fast Forward")); } - 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()); + TCHAR *tc_buf = tstring_from_utf8(string_format("%s :%s", img->device().name(), img->exists() ? img->filename() : "[empty slot]").c_str()); if (tc_buf != NULL) { ModifyMenu(m_devices_menu, cnt, MF_BYPOSITION | MF_POPUP, (UINT_PTR)devicesubmenu, tc_buf); diff --git a/src/osd/modules/debugger/win/disasmbasewininfo.cpp b/src/osd/modules/debugger/win/disasmbasewininfo.cpp index 0cc9287bb0a..597e6b54b75 100644 --- a/src/osd/modules/debugger/win/disasmbasewininfo.cpp +++ b/src/osd/modules/debugger/win/disasmbasewininfo.cpp @@ -197,9 +197,9 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) { std::string command; if (bpindex == -1) - strprintf(command, "bpset 0x%X", address); + command = string_format("bpset 0x%X", address); else - strprintf(command, "bpclear 0x%X", bpindex); + command = string_format("bpclear 0x%X", bpindex); debug_console_execute_command(machine(), command.c_str(), 1); } } @@ -229,7 +229,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) else if (dasmview->source_is_visible_cpu()) { std::string command; - strprintf(command, bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index()); + command = string_format(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index()); debug_console_execute_command(machine(), command.c_str(), 1); } } @@ -243,7 +243,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam) if (dasmview->source_is_visible_cpu()) { std::string command; - strprintf(command, "go 0x%X", address); + command = string_format("go 0x%X", address); debug_console_execute_command(machine(), command.c_str(), 1); } else diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index d4fba565964..8152c7bfea9 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -118,10 +118,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 { 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()); } + const char *screen(int index) const { return value(string_format("%s%d", OSDOPTION_SCREEN, index).c_str()); } + const char *aspect(int index) const { return value(string_format("%s%d", OSDOPTION_ASPECT, index).c_str()); } + const char *resolution(int index) const { return value(string_format("%s%d", OSDOPTION_RESOLUTION, index).c_str()); } + const char *view(int index) const { return value(string_format("%s%d", OSDOPTION_VIEW, index).c_str()); } // full screen options bool switch_res() const { return bool_value(OSDOPTION_SWITCHRES); } @@ -137,8 +137,8 @@ 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 { 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()); } + const char *shader_mame(int index) const { return value(string_format("%s%d", OSDOPTION_SHADER_MAME, index).c_str()); } + const char *shader_screen(int index) const { return value(string_format("%s%d", OSDOPTION_SHADER_SCREEN, index).c_str()); } // sound options const char *sound() const { return value(OSDOPTION_SOUND); } @@ -146,7 +146,7 @@ public: // CoreAudio specific options const char *audio_output() const { return value(OSDOPTION_AUDIO_OUTPUT); } - const char *audio_effect(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_AUDIO_EFFECT, index); return value(temp.c_str()); } + const char *audio_effect(int index) const { return value(string_format("%s%d", OSDOPTION_AUDIO_EFFECT, index).c_str()); } private: static const options_entry s_option_entries[]; diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp index bfc21e3c39c..17b2f411336 100644 --- a/src/osd/modules/render/d3d/d3dhlsl.cpp +++ b/src/osd/modules/render/d3d/d3dhlsl.cpp @@ -2257,7 +2257,7 @@ INT32 slider::update(std::string *str, INT32 newval) } if (str != nullptr) { - strprintf(*str, m_desc->format, m_desc->strings[*val_ptr]); + *str = string_format(m_desc->format, m_desc->strings[*val_ptr]); } return *val_ptr; } @@ -2272,7 +2272,7 @@ INT32 slider::update(std::string *str, INT32 newval) } if (str != nullptr) { - strprintf(*str, m_desc->format, *val_ptr); + *str = string_format(m_desc->format, *val_ptr); } return *val_ptr; } @@ -2287,7 +2287,7 @@ INT32 slider::update(std::string *str, INT32 newval) } if (str != nullptr) { - strprintf(*str, m_desc->format, *val_ptr); + *str = string_format(m_desc->format, *val_ptr); } return (INT32)floor(*val_ptr / m_desc->scale + 0.5f); } @@ -3273,13 +3273,11 @@ static file_error open_next(renderer_d3d9 *d3d, emu_file &file, const char *temp else { // try until we succeed - std::string seqtext; file.set_openflags(OPEN_FLAG_READ); for (int seq = 0; ; seq++) { // build up the filename - strprintf(seqtext, "%04d_%d", seq, idx); - strreplace(fname.assign(snapstr), "%i", seqtext.c_str()); + strreplace(fname.assign(snapstr), "%i", string_format("%04d_%d", seq, idx).c_str()); // try to open the file; stop when we fail file_error filerr = file.open(fname.c_str()); diff --git a/src/osd/sdl/osdsdl.h b/src/osd/sdl/osdsdl.h index bca299eb49d..7b3e83c3134 100644 --- a/src/osd/sdl/osdsdl.h +++ b/src/osd/sdl/osdsdl.h @@ -113,11 +113,11 @@ public: const char *keymap_file() const { return value(SDLOPTION_KEYMAP_FILE); } // joystick mapping - const char *joy_index(int index) const { return value(strformat("%s%d", SDLOPTION_JOYINDEX, index).c_str()); } + const char *joy_index(int index) const { return value(string_format("%s%d", SDLOPTION_JOYINDEX, index).c_str()); } bool sixaxis() const { return bool_value(SDLOPTION_SIXAXIS); } - const char *mouse_index(int index) const { return value(strformat("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); } - const char *keyboard_index(int index) const { return value(strformat("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); } + const char *mouse_index(int index) const { return value(string_format("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); } + const char *keyboard_index(int index) const { return value(string_format("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); } const char *video_driver() const { return value(SDLOPTION_VIDEODRIVER); } const char *render_driver() const { return value(SDLOPTION_RENDERDRIVER); } diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index bd2e9c4b11e..1171775d042 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -590,11 +590,9 @@ void windows_osd_interface::init(running_machine &machine) osd_common_t::init_subsystems(); // notify listeners of screen configuration - std::string tempstring; for (win_window_info *info = win_window_list; info != nullptr; info = info->m_next) { - strprintf(tempstring, "Orientation(%s)", info->m_monitor->devicename()); - machine.output().set_value(tempstring.c_str(), info->m_targetorient); + machine.output().set_value(string_format("Orientation(%s)", info->m_monitor->devicename()).c_str(), info->m_targetorient); } // hook up the debugger log @@ -1029,7 +1027,7 @@ symbol_manager::symbol_manager(const char *argv0) #endif // expand the buffer to be decently large up front - strprintf(m_buffer,"%500s", ""); + m_buffer = string_format("%500s", ""); } @@ -1296,13 +1294,13 @@ bool symbol_manager::parse_map_line(const char *line, FPTR &address, std::string void symbol_manager::format_symbol(const char *name, UINT32 displacement, const char *filename, int linenumber) { // start with the address and offset - strprintf(m_buffer, " (%s", name); + m_buffer = string_format(" (%s", name); if (displacement != 0) - strcatprintf(m_buffer, "+0x%04x", (UINT32)displacement); + m_buffer.append(string_format("+0x%04x", (UINT32)displacement)); // append file/line if present if (filename != nullptr) - strcatprintf(m_buffer, ", %s:%d", filename, linenumber); + m_buffer.append(string_format(", %s:%d", filename, linenumber)); // close up the string m_buffer.append(")"); diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp index 8a2f8bc5299..94ea358e825 100644 --- a/src/tools/chdman.cpp +++ b/src/tools/chdman.cpp @@ -840,8 +840,7 @@ const char *big_int_string(std::string &str, UINT64 intvalue) int chunk = intvalue % 1000; intvalue /= 1000; - std::string insert; - strprintf(insert, (intvalue != 0) ? "%03d" : "%d", chunk); + std::string insert = string_format((intvalue != 0) ? "%03d" : "%d", chunk); if (!first) str.insert(0, ",").c_str(); @@ -859,7 +858,7 @@ const char *big_int_string(std::string &str, UINT64 intvalue) const char *msf_string_from_frames(std::string &str, UINT32 frames) { - strprintf(str, "%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75); + str = string_format("%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75); return str.c_str(); } @@ -1249,7 +1248,7 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ { case CD_TRACK_MODE1: case CD_TRACK_MODE1_RAW: - strprintf(tempstr,"MODE1/%04d", info.datasize); + tempstr = string_format("MODE1/%04d", info.datasize); break; case CD_TRACK_MODE2: @@ -1257,7 +1256,7 @@ 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: - strprintf(tempstr,"MODE2/%04d", info.datasize); + tempstr = string_format("MODE2/%04d", info.datasize); break; case CD_TRACK_AUDIO: @@ -1301,9 +1300,9 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_ // write out the track type std::string modesubmode; if (info.subtype != CD_SUB_NONE) - strprintf(modesubmode,"%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype)); + modesubmode = string_format("%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype)); else - strprintf(modesubmode,"%s", cdrom_get_type_string(info.trktype)); + modesubmode = string_format("%s", cdrom_get_type_string(info.trktype)); core_fprintf(file, "TRACK %s\n", modesubmode.c_str()); // write out the attributes @@ -1819,8 +1818,7 @@ 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 - std::string metadata; - strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sector_size); + std::string metadata = string_format(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)); @@ -2040,8 +2038,7 @@ 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 - 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); + std::string metadata = string_format(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)); diff --git a/src/tools/imgtool/imghd.cpp b/src/tools/imgtool/imghd.cpp index b3161ae2caf..715076b63b4 100644 --- a/src/tools/imgtool/imghd.cpp +++ b/src/tools/imgtool/imghd.cpp @@ -49,19 +49,15 @@ static imgtoolerr_t map_chd_error(chd_error chderr) imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylinders, UINT32 heads, UINT32 sectors, UINT32 seclen) { imgtoolerr_t err = IMGTOOLERR_SUCCESS; - dynamic_buffer cache; chd_file chd; chd_error rc; - UINT64 logicalbytes; - int hunknum, totalhunks; - std::string metadata; chd_codec_type compression[4] = { CHD_CODEC_NONE }; /* sanity check args */ if (hunksize >= 2048) { err = IMGTOOLERR_PARAMCORRUPT; - goto done; + return err; } if (hunksize <= 0) hunksize = 1024; /* default value */ @@ -70,18 +66,18 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind if (stream_isreadonly(stream)) { err = IMGTOOLERR_READONLY; - goto done; + return err; } /* calculations */ - logicalbytes = (UINT64)cylinders * heads * sectors * seclen; + const UINT64 logicalbytes = (UINT64)cylinders * heads * sectors * seclen; /* create the new hard drive */ rc = chd.create(*stream_core_file(stream), logicalbytes, hunksize, seclen, compression); if (rc != CHDERR_NONE) { err = map_chd_error(rc); - goto done; + return err; } /* open the new hard drive */ @@ -90,35 +86,35 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind if (rc != CHDERR_NONE) { err = map_chd_error(rc); - goto done; + return err; } /* write the metadata */ - strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen); + const std::string metadata = string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen); err = (imgtoolerr_t)chd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata); if (rc != CHDERR_NONE) { err = map_chd_error(rc); - goto done; + return err; } /* alloc and zero buffer */ + dynamic_buffer cache; cache.resize(hunksize); memset(&cache[0], 0, hunksize); /* zero out every hunk */ - totalhunks = (logicalbytes + hunksize - 1) / hunksize; - for (hunknum = 0; hunknum < totalhunks; hunknum++) + const int totalhunks = (logicalbytes + hunksize - 1) / hunksize; + for (int hunknum = 0; hunknum < totalhunks; hunknum++) { rc = chd.write_units(hunknum, &cache[0]); if (rc) { err = IMGTOOLERR_WRITEERROR; - goto done; + return err; } } -done: return err; } diff --git a/src/tools/regrep.cpp b/src/tools/regrep.cpp index d533121574a..16eaa21f7de 100644 --- a/src/tools/regrep.cpp +++ b/src/tools/regrep.cpp @@ -686,7 +686,7 @@ static void output_report(std::string &dirname, std::string &tempheader, std::st *buckettailptr[bucknum] = nullptr; /* output header */ - strprintf(tempname,"%s" PATH_SEPARATOR "%s", dirname.c_str(), "index.html"); + tempname = string_format("%s" PATH_SEPARATOR "%s", dirname.c_str(), "index.html"); indexfile = create_file_and_output_header(tempname, tempheader, title); if (indexfile == nullptr) { @@ -732,7 +732,7 @@ static int compare_screenshots(summary_file *curfile) core_file *file; /* get the filename for the image */ - strprintf(fullname,"%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", lists[listnum].dir, curfile->name); + fullname = string_format("%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", lists[listnum].dir, curfile->name); /* open the file */ filerr = core_fopen(fullname.c_str(), OPEN_FLAG_READ, &file); @@ -741,7 +741,7 @@ static int compare_screenshots(summary_file *curfile) if (filerr != FILERR_NONE) { /* get the filename for the image */ - strprintf(fullname, "%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "_%s.png", lists[listnum].dir, curfile->name); + fullname = string_format("%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "_%s.png", lists[listnum].dir, curfile->name); /* open the file */ filerr = core_fopen(fullname.c_str(), OPEN_FLAG_READ, &file); @@ -843,14 +843,14 @@ static int generate_png_diff(const summary_file *curfile, std::string &destdir, int starty; /* generate the common source filename */ - strprintf(dstfilename,"%s" PATH_SEPARATOR "%s", destdir.c_str(), destname); - strprintf(srcimgname,"snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", curfile->name); + dstfilename = string_format("%s" PATH_SEPARATOR "%s", destdir.c_str(), destname); + srcimgname = string_format("snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", curfile->name); /* open and load all unique bitmaps */ for (listnum = 0; listnum < list_count; listnum++) if (curfile->matchbitmap[listnum] == listnum) { - strprintf(tempname, "%s" PATH_SEPARATOR "%s", lists[listnum].dir, srcimgname.c_str()); + tempname = string_format("%s" PATH_SEPARATOR "%s", lists[listnum].dir, srcimgname.c_str()); /* open the source image */ filerr = core_fopen(tempname.c_str(), OPEN_FLAG_READ, &file); @@ -957,11 +957,11 @@ static void create_linked_file(std::string &dirname, const summary_file *curfile int listnum; /* create the filename */ - strprintf(filename,"%s.html", curfile->name); + filename = string_format("%s.html", curfile->name); /* output header */ - strprintf(title, "%s Regressions (%s)", curfile->name, curfile->source); - strprintf(linkname,"%s" PATH_SEPARATOR "%s", dirname.c_str(), filename.c_str()); + title = string_format("%s Regressions (%s)", curfile->name, curfile->source); + linkname = string_format("%s" PATH_SEPARATOR "%s", dirname.c_str(), filename.c_str()); linkfile = create_file_and_output_header(linkname, tempheader, title); if (linkfile == nullptr) { diff --git a/src/tools/split.cpp b/src/tools/split.cpp index 043d93b3a78..a6b97e7175d 100644 --- a/src/tools/split.cpp +++ b/src/tools/split.cpp @@ -152,7 +152,7 @@ static int split_file(const char *filename, const char *basename, UINT32 splitsi core_fprintf(splitfile, "hash=%s file=%s.%03d\n", computedhash.c_str(), basefilename.c_str(), partnum); // compute the full filename for this guy - strprintf(outfilename,"%s.%03d", basename, partnum); + outfilename = string_format("%s.%03d", basename, partnum); // create it filerr = core_fopen(outfilename.c_str(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE, &outfile); diff --git a/src/tools/src2html.cpp b/src/tools/src2html.cpp index e5d2f8f496c..a93d7de73b8 100644 --- a/src/tools/src2html.cpp +++ b/src/tools/src2html.cpp @@ -332,7 +332,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std: // create an index file std::string indexname; - strprintf(indexname,"%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], "index.html"); + indexname = string_format("%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], "index.html"); core_file *indexfile = create_file_and_output_header(indexname, tempheader, srcdir_subpath); // output the directory navigation @@ -402,7 +402,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std: // build the source filename std::string srcfile; - strprintf(srcfile, "%s%c%s", srcdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); + srcfile = string_format("%s%c%s", srcdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); // if we have a file, output it std::string dstfile; @@ -420,7 +420,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std: // if we got a valid file, process it if (type != FILE_TYPE_INVALID) { - strprintf(dstfile, "%s%c%s.html", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); + dstfile = string_format("%s%c%s.html", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); if (indexfile != nullptr) core_fprintf(indexfile, "\t<li><a href=\"%s.html\">%s</a></li>\n", curlist->name.c_str(), curlist->name.c_str()); result = output_file(type, srcrootlen, dstrootlen, srcfile, dstfile, srcdir.compare(dstdir) == 0, tempheader, tempfooter); @@ -430,7 +430,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std: // if we have a directory, recurse else { - strprintf(dstfile, "%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); + dstfile = string_format("%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str()); if (indexfile != nullptr) core_fprintf(indexfile, "\t<li><a href=\"%s/index.html\">%s/</a></li>\n", curlist->name.c_str(), curlist->name.c_str()); result = recurse_dir(srcrootlen, dstrootlen, srcfile, dstfile, tempheader, tempfooter); @@ -544,11 +544,12 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri int linenum = 1; bool in_comment = false; char srcline[4096]; + std::ostringstream dstline; while (core_fgets(srcline, ARRAY_LENGTH(srcline), src) != nullptr) { // start with the line number - std::string dstline; - strcatprintf(dstline, "<span class=\"linenum\">%5d</span> ", linenum++); + dstline.str(""); + stream_format(dstline, "<span class=\"linenum\">%5d</span> ", linenum++); // iterate over characters in the source line bool escape = false; @@ -568,7 +569,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri { if (!in_comment && ch == comment_start[0] && strncmp(srcptr - 1, comment_start, strlen(comment_start)) == 0) { - strcatprintf(dstline, "<span class=\"comment\">%s", comment_start_esc); + stream_format(dstline, "<span class=\"comment\">%s", comment_start_esc); curcol += strlen(comment_start); srcptr += strlen(comment_start) - 1; ch = 0; @@ -576,7 +577,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri } else if (in_comment && ch == comment_end[0] && strncmp(srcptr - 1, comment_end, strlen(comment_end)) == 0) { - strcatprintf(dstline, "%s</span>", comment_end_esc); + stream_format(dstline, "%s</span>", comment_end_esc); curcol += strlen(comment_end); srcptr += strlen(comment_end) - 1; ch = 0; @@ -587,7 +588,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri // track whether or not we are within an inline (C++-style) comment if (!in_quotes && !in_comment && !in_inline_comment && ch == comment_inline[0] && strncmp(srcptr - 1, comment_inline, strlen(comment_inline)) == 0) { - strcatprintf(dstline, "<span class=\"comment\">%s", comment_inline_esc); + stream_format(dstline, "<span class=\"comment\">%s", comment_inline_esc); curcol += strlen(comment_inline); srcptr += strlen(comment_inline) - 1; ch = 0; @@ -611,7 +612,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri for (curtoken = token_table; curtoken->token != nullptr; curtoken++) if (strncmp(srcptr - 1, curtoken->token, toklength) == 0 && strlen(curtoken->token) == toklength) { - strcatprintf(dstline, "<span class=\"%s\">%s</span>", curtoken->color, curtoken->token); + stream_format(dstline, "<span class=\"%s\">%s</span>", curtoken->color, curtoken->token); curcol += strlen(curtoken->token); srcptr += strlen(curtoken->token) - 1; ch = 0; @@ -631,7 +632,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri int spaces = 4 - curcol % 4; while (spaces--) { - dstline.push_back(' '); + dstline.put(' '); curcol++; } } @@ -643,9 +644,9 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri if (!in_comment && !in_inline_comment && !in_quotes && (ch == '"' || ch == '\'')) { if (color_quotes) - strcatprintf(dstline, "<span class=\"string\">%c", ch); + stream_format(dstline, "<span class=\"string\">%c", ch); else - dstline.push_back(ch); + dstline.put(ch); in_quotes = true; curquote = ch; @@ -659,7 +660,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri std::string target; if (find_include_file(target, srcrootlen, dstrootlen, srcfile, dstfile, filename)) { - strcatprintf(dstline, "<a href=\"%s\">", target.c_str()); + stream_format(dstline, "<a href=\"%s\">", target.c_str()); quotes_are_linked = true; } } @@ -670,11 +671,11 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri else if (!in_comment && !in_inline_comment && in_quotes && (ch == curquote) && !escape) { if (quotes_are_linked) - dstline.append("</a>"); + dstline << "</a>"; if (color_quotes) - strcatprintf(dstline, "%c</span>", ch); + stream_format(dstline, "%c</span>", ch); else - dstline.push_back(ch); + dstline.put(ch); in_quotes = false; curquote = 0; quotes_are_linked = false; @@ -682,13 +683,13 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri // else just output the current character else if (ch == '&') - dstline.append("&"); + dstline << "&"; else if (ch == '<') - dstline.append("<"); + dstline << "<"; else if (ch == '>') - dstline.append(">"); + dstline << ">"; else - dstline.push_back(ch); + dstline.put(ch); curcol++; } @@ -700,13 +701,13 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri // finish inline comments if (in_inline_comment) { - dstline.append("</span>"); + dstline << "</span>"; in_inline_comment = false; } // append a break and move on - dstline.append("\n"); - core_fputs(dst, dstline.c_str()); + dstline.put('\n'); + core_fputs(dst, dstline.str().c_str()); } // close tags |