Eliminate ARRAY_LENGTH template in favor of C++17's std::size

* osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h

* sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration

* gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset

* emucore.h: Remove obsolete typedef
This commit is contained in:
AJR 2021-02-14 11:05:57 -05:00
parent 91310bcdeb
commit bc0146c203
285 changed files with 1298 additions and 1310 deletions

View File

@ -119,7 +119,7 @@ static int arcadia_get_pcb_id(const char *slot)
#if 0 #if 0
static const char *arcadia_get_slot(int type) static const char *arcadia_get_slot(int type)
{ {
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) for (int i = 0; i < std::size(slot_list); i++)
{ {
if (slot_list[i].pcb_id == type) if (slot_list[i].pcb_id == type)
return slot_list[i].slot_option; return slot_list[i].slot_option;

View File

@ -476,7 +476,7 @@ bool gb_cart_slot_device_base::is_mbc1col_game(const uint8_t *ROM, uint32_t len)
"SUPERCHINESE 123" "SUPERCHINESE 123"
}; };
const uint8_t rows = ARRAY_LENGTH(internal_names); const uint8_t rows = std::size(internal_names);
for (uint8_t i = 0x00; i < rows; ++i) { for (uint8_t i = 0x00; i < rows; ++i) {
if (0 == memcmp(&ROM[0x134], &internal_names[i][0], name_length)) if (0 == memcmp(&ROM[0x134], &internal_names[i][0], name_length))
@ -803,10 +803,10 @@ void gb_cart_slot_device_base::internal_header_logging(uint8_t *ROM, uint32_t le
logerror("\tRAM Size: %d kB [0x%02X]\n", ramsize[ROM[0x0149] & 0x07], ROM[0x0149]); logerror("\tRAM Size: %d kB [0x%02X]\n", ramsize[ROM[0x0149] & 0x07], ROM[0x0149]);
logerror("\tLicense code: 0x%02X%02X\n", ROM[0x0145], ROM[0x0144] ); logerror("\tLicense code: 0x%02X%02X\n", ROM[0x0145], ROM[0x0144] );
tmp = (ROM[0x014b] << 8) + ROM[0x014a]; tmp = (ROM[0x014b] << 8) + ROM[0x014a];
for (i = 0; i < ARRAY_LENGTH(companies); i++) for (i = 0; i < std::size(companies); i++)
if (tmp == companies[i].code) if (tmp == companies[i].code)
break; break;
logerror("\tManufacturer ID: 0x%02X [%s]\n", tmp, (i < ARRAY_LENGTH(companies)) ? companies[i].name : "?"); logerror("\tManufacturer ID: 0x%02X [%s]\n", tmp, (i < std::size(companies)) ? companies[i].name : "?");
logerror("\tVersion Number: 0x%02X\n", ROM[0x014c]); logerror("\tVersion Number: 0x%02X\n", ROM[0x014c]);
logerror("\tComplement Check: 0x%02X\n", ROM[0x014d]); logerror("\tComplement Check: 0x%02X\n", ROM[0x014d]);
logerror("\tChecksum: 0x%04X\n", ((ROM[0x014e] << 8) + ROM[0x014f])); logerror("\tChecksum: 0x%04X\n", ((ROM[0x014e] << 8) + ROM[0x014f]));

View File

@ -86,7 +86,7 @@ void xmap9_device::device_reset()
m_cursor_cmap = 0; m_cursor_cmap = 0;
m_popup_cmap = 0; m_popup_cmap = 0;
m_mode_table_idx = 0; m_mode_table_idx = 0;
memset(m_mode_table, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_mode_table)); std::fill(std::begin(m_mode_table), std::end(m_mode_table), 0);
} }
void xmap9_device::serialize(FILE *file) void xmap9_device::serialize(FILE *file)
@ -233,7 +233,7 @@ void cmap_device::device_reset()
{ {
m_status = 8; m_status = 8;
m_palette_idx = 0; m_palette_idx = 0;
memset(m_palette, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_palette)); std::fill(std::begin(m_palette), std::end(m_palette), 0);
} }
void cmap_device::serialize(FILE *file) void cmap_device::serialize(FILE *file)

View File

@ -220,7 +220,7 @@ bool c2040_fdc_device::write_next_bit(bool bit, const attotime &limit)
if(etime > limit) if(etime > limit)
return true; return true;
if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer)) if(bit && cur_live.write_position < std::size(cur_live.write_buffer))
cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period; cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period;
if (LOG) logerror("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit); if (LOG) logerror("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit);

View File

@ -127,7 +127,7 @@ void univ_bus_device::device_start()
unsigned univ_bus_device::add_card(device_univ_card_interface &card) unsigned univ_bus_device::add_card(device_univ_card_interface &card)
{ {
for (unsigned i = 0; ARRAY_LENGTH(m_cards) > i; ++i) for (unsigned i = 0; std::size(m_cards) > i; ++i)
{ {
if (!m_cards[i]) if (!m_cards[i])
{ {
@ -135,12 +135,12 @@ unsigned univ_bus_device::add_card(device_univ_card_interface &card)
return i; return i;
} }
} }
throw emu_fatalerror("univ_bus_device: maximum number of cards (%u) exceeded\n", unsigned(ARRAY_LENGTH(m_cards))); throw emu_fatalerror("univ_bus_device: maximum number of cards (%u) exceeded\n", unsigned(std::size(m_cards)));
} }
void univ_bus_device::set_test(unsigned index, int state) void univ_bus_device::set_test(unsigned index, int state)
{ {
assert(ARRAY_LENGTH(m_cards) >= index); assert(std::size(m_cards) >= index);
bool const changed(bool(state) != !BIT(m_test, index)); bool const changed(bool(state) != !BIT(m_test, index));
if (changed) if (changed)
{ {
@ -150,10 +150,10 @@ void univ_bus_device::set_test(unsigned index, int state)
else else
m_test |= u16(1U) << index; m_test |= u16(1U) << index;
if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards))))
m_test_out_cb(state); m_test_out_cb(state);
for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card)
{ {
if ((index != card) && !(other & ~(u16(1U) << index))) if ((index != card) && !(other & ~(u16(1U) << index)))
m_cards[card]->test_in(state); m_cards[card]->test_in(state);
@ -163,7 +163,7 @@ void univ_bus_device::set_test(unsigned index, int state)
void univ_bus_device::set_stop(unsigned index, int state) void univ_bus_device::set_stop(unsigned index, int state)
{ {
assert(ARRAY_LENGTH(m_cards) >= index); assert(std::size(m_cards) >= index);
bool const changed(bool(state) != !BIT(m_stop, index)); bool const changed(bool(state) != !BIT(m_stop, index));
if (changed) if (changed)
{ {
@ -173,10 +173,10 @@ void univ_bus_device::set_stop(unsigned index, int state)
else else
m_stop |= u16(1U) << index; m_stop |= u16(1U) << index;
if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards))))
m_stop_out_cb(state); m_stop_out_cb(state);
for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card)
{ {
if ((index != card) && !(other & ~(u16(1U) << index))) if ((index != card) && !(other & ~(u16(1U) << index)))
m_cards[card]->stop_in(state); m_cards[card]->stop_in(state);
@ -186,7 +186,7 @@ void univ_bus_device::set_stop(unsigned index, int state)
void univ_bus_device::set_reset_4002(unsigned index, int state) void univ_bus_device::set_reset_4002(unsigned index, int state)
{ {
assert(ARRAY_LENGTH(m_cards) >= index); assert(std::size(m_cards) >= index);
bool const changed(bool(state) != !BIT(m_reset_4002, index)); bool const changed(bool(state) != !BIT(m_reset_4002, index));
if (changed) if (changed)
{ {
@ -196,10 +196,10 @@ void univ_bus_device::set_reset_4002(unsigned index, int state)
else else
m_reset_4002 |= u16(1U) << index; m_reset_4002 |= u16(1U) << index;
if ((ARRAY_LENGTH(m_cards) != index) && !(other & ~(u16(1U) << ARRAY_LENGTH(m_cards)))) if ((std::size(m_cards) != index) && !(other & ~(u16(1U) << std::size(m_cards))))
m_reset_4002_out_cb(state); m_reset_4002_out_cb(state);
for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card)
{ {
if ((index != card) && !(other & ~(u16(1U) << index))) if ((index != card) && !(other & ~(u16(1U) << index)))
m_cards[card]->reset_4002_in(state); m_cards[card]->reset_4002_in(state);
@ -209,7 +209,7 @@ void univ_bus_device::set_reset_4002(unsigned index, int state)
void univ_bus_device::set_user_reset(unsigned index, int state) void univ_bus_device::set_user_reset(unsigned index, int state)
{ {
assert(ARRAY_LENGTH(m_cards) > index); assert(std::size(m_cards) > index);
bool const changed(bool(state) != !BIT(m_user_reset, index)); bool const changed(bool(state) != !BIT(m_user_reset, index));
if (changed) if (changed)
{ {
@ -222,7 +222,7 @@ void univ_bus_device::set_user_reset(unsigned index, int state)
if (!other) if (!other)
m_user_reset_out_cb(state); m_user_reset_out_cb(state);
for (unsigned card = 0U; (ARRAY_LENGTH(m_cards) > card) && m_cards[card]; ++card) for (unsigned card = 0U; (std::size(m_cards) > card) && m_cards[card]; ++card)
{ {
if ((index != card) && !(other & ~(u16(1U) << index))) if ((index != card) && !(other & ~(u16(1U) << index)))
m_cards[card]->user_reset_in(state); m_cards[card]->user_reset_in(state);

View File

@ -168,17 +168,17 @@ public:
// input lines // input lines
DECLARE_WRITE_LINE_MEMBER(sync_in); DECLARE_WRITE_LINE_MEMBER(sync_in);
DECLARE_WRITE_LINE_MEMBER(test_in) {set_test(ARRAY_LENGTH(m_cards), state); } DECLARE_WRITE_LINE_MEMBER(test_in) {set_test(std::size(m_cards), state); }
DECLARE_WRITE_LINE_MEMBER(stop_in) {set_stop(ARRAY_LENGTH(m_cards), state); } DECLARE_WRITE_LINE_MEMBER(stop_in) {set_stop(std::size(m_cards), state); }
DECLARE_WRITE_LINE_MEMBER(stop_acknowledge_in); DECLARE_WRITE_LINE_MEMBER(stop_acknowledge_in);
DECLARE_WRITE_LINE_MEMBER(cpu_reset_in); DECLARE_WRITE_LINE_MEMBER(cpu_reset_in);
DECLARE_WRITE_LINE_MEMBER(reset_4002_in) { set_reset_4002(ARRAY_LENGTH(m_cards), state); } DECLARE_WRITE_LINE_MEMBER(reset_4002_in) { set_reset_4002(std::size(m_cards), state); }
// output lines // output lines
DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } DECLARE_READ_LINE_MEMBER(test_out) const { return (m_test & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } DECLARE_READ_LINE_MEMBER(stop_out) const { return (m_stop & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } DECLARE_READ_LINE_MEMBER(reset_4002_out) const { return (m_reset_4002 & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; }
DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~(u16(1U) << ARRAY_LENGTH(m_cards))) ? 0 : 1; } DECLARE_READ_LINE_MEMBER(user_reset_out) const { return (m_user_reset & ~(u16(1U) << std::size(m_cards))) ? 0 : 1; }
protected: protected:
// device_t implementation // device_t implementation

View File

@ -145,7 +145,7 @@ uint32_t i82439tx_device::pci_read(pci_bus_device *pcibus, int function, int off
case 0xF4: case 0xF4:
case 0xF8: case 0xF8:
case 0xFC: case 0xFC:
assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs)); assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < std::size(m_regs));
result = m_regs[(offset - 0x50) / 4]; result = m_regs[(offset - 0x50) / 4];
break; break;
@ -294,7 +294,7 @@ void i82439tx_device::pci_write(pci_bus_device *pcibus, int function, int offset
case 0xF4: case 0xF4:
case 0xF8: case 0xF8:
case 0xFC: case 0xFC:
assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < ARRAY_LENGTH(m_regs)); assert(((offset - 0x50) / 4) >= 0 && ((offset - 0x50) / 4) < std::size(m_regs));
COMBINE_DATA(&m_regs[(offset - 0x50) / 4]); COMBINE_DATA(&m_regs[(offset - 0x50) / 4]);
break; break;

View File

@ -237,7 +237,7 @@ void pci_bus_device::add_sibling(pci_bus_device *sibling, int busnum)
void pci_bus_device::remap(int space_id, offs_t start, offs_t end) void pci_bus_device::remap(int space_id, offs_t start, offs_t end)
{ {
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) for (int i = 0; i < std::size(m_devtag); i++)
{ {
if (m_device[i] != nullptr) if (m_device[i] != nullptr)
m_device[i]->remap(space_id, start, end); m_device[i]->remap(space_id, start, end);
@ -272,7 +272,7 @@ void pci_bus_device::device_start()
char id[3]; char id[3];
/* find all our devices */ /* find all our devices */
for (int i = 0; i < ARRAY_LENGTH(m_devtag); i++) for (int i = 0; i < std::size(m_devtag); i++)
{ {
sprintf(id, "%d", i); sprintf(id, "%d", i);
pci_connector_device *conn = downcast<pci_connector_device *>(subdevice(id)); pci_connector_device *conn = downcast<pci_connector_device *>(subdevice(id));

View File

@ -120,7 +120,7 @@ static const m5_slot slot_list[] =
static int m5_get_pcb_id(const char *slot) static int m5_get_pcb_id(const char *slot)
{ {
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) for (int i = 0; i < std::size(slot_list); i++)
{ {
if (!strcmp(slot_list[i].slot_option, slot)) if (!strcmp(slot_list[i].slot_option, slot))
return slot_list[i].pcb_id; return slot_list[i].pcb_id;
@ -131,7 +131,7 @@ static int m5_get_pcb_id(const char *slot)
static const char *m5_get_slot(int type) static const char *m5_get_slot(int type)
{ {
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) for (int i = 0; i < std::size(slot_list); i++)
{ {
if (slot_list[i].pcb_id == type) if (slot_list[i].pcb_id == type)
return slot_list[i].slot_option; return slot_list[i].slot_option;

View File

@ -369,8 +369,8 @@ void md_rom_svp_device::set_bank_to_rom(const char *banktag, uint32_t offset)
void md_rom_svp_device::device_start() void md_rom_svp_device::device_start()
{ {
memset(m_pmac_read, 0, ARRAY_LENGTH(m_pmac_read)); std::fill(std::begin(m_pmac_read), std::end(m_pmac_read), 0);
memset(m_pmac_write, 0, ARRAY_LENGTH(m_pmac_write)); std::fill(std::begin(m_pmac_write), std::end(m_pmac_write), 0);
m_pmc.d = 0; m_pmc.d = 0;
m_pmc.w.l = 0; m_pmc.w.l = 0;
m_pmc.w.h = 0; m_pmc.w.h = 0;

View File

@ -291,9 +291,7 @@ static const nes_mmc mmc_list[] =
const nes_mmc *nes_mapper_lookup( int mapper ) const nes_mmc *nes_mapper_lookup( int mapper )
{ {
int i; for (int i = 0; i < std::size(mmc_list); i++)
for (i = 0; i < ARRAY_LENGTH(mmc_list); i++)
{ {
if (mmc_list[i].iNesMapper == mapper) if (mmc_list[i].iNesMapper == mapper)
return &mmc_list[i]; return &mmc_list[i];

View File

@ -276,8 +276,8 @@ inline void device_nes_cart_interface::update_prg_banks(int prg_bank_start, int
for (int prg_bank = prg_bank_start; prg_bank <= prg_bank_end; prg_bank++) for (int prg_bank = prg_bank_start; prg_bank <= prg_bank_end; prg_bank++)
{ {
assert(prg_bank >= 0); assert(prg_bank >= 0);
assert(prg_bank < ARRAY_LENGTH(m_prg_bank)); assert(prg_bank < std::size(m_prg_bank));
assert(prg_bank < ARRAY_LENGTH(m_prg_bank_mem)); assert(prg_bank < std::size(m_prg_bank_mem));
m_prg_bank_mem[prg_bank]->set_entry(m_prg_bank[prg_bank]); m_prg_bank_mem[prg_bank]->set_entry(m_prg_bank[prg_bank]);
} }

View File

@ -158,8 +158,7 @@ static const unif unif_list[] =
const unif *nes_unif_lookup( const char *board ) const unif *nes_unif_lookup( const char *board )
{ {
int i; for (int i = 0; i < std::size(unif_list); i++)
for (i = 0; i < ARRAY_LENGTH(unif_list); i++)
{ {
if (!core_stricmp(unif_list[i].board, board)) if (!core_stricmp(unif_list[i].board, board))
return &unif_list[i]; return &unif_list[i];

View File

@ -119,7 +119,7 @@ void nes_bcbattle_device::device_reset()
m_transmitting = 0; m_transmitting = 0;
m_cur_bit = 0; m_cur_bit = 0;
m_cur_byte = 0; m_cur_byte = 0;
memset(m_current_barcode, 0, ARRAY_LENGTH(m_current_barcode)); std::fill(std::begin(m_current_barcode), std::end(m_current_barcode), 0);
} }

View File

@ -264,7 +264,7 @@ void nubus_image_device::file_cmd_w(uint32_t data)
filectx.curcmd = data; filectx.curcmd = data;
switch (data) { switch (data) {
case kFileCmdGetDir: case kFileCmdGetDir:
strncpy(filectx.filename, filectx.curdir.c_str(), ARRAY_LENGTH(filectx.filename)); strncpy(filectx.filename, filectx.curdir.c_str(), std::size(filectx.filename));
break; break;
case kFileCmdSetDir: case kFileCmdSetDir:
if ((filectx.filename[0] == '/') || (filectx.filename[0] == '$')) { if ((filectx.filename[0] == '/') || (filectx.filename[0] == '$')) {
@ -281,7 +281,7 @@ void nubus_image_device::file_cmd_w(uint32_t data)
if (filectx.dirp) { if (filectx.dirp) {
osd::directory::entry const *const dp = filectx.dirp->read(); osd::directory::entry const *const dp = filectx.dirp->read();
if (dp) { if (dp) {
strncpy(filectx.filename, dp->name, ARRAY_LENGTH(filectx.filename)); strncpy(filectx.filename, dp->name, std::size(filectx.filename));
} else { } else {
std::fill(std::begin(filectx.filename), std::end(filectx.filename), '\0'); std::fill(std::begin(filectx.filename), std::end(filectx.filename), '\0');
} }

View File

@ -1372,7 +1372,7 @@ void base_sns_cart_slot_device::internal_header_logging(uint8_t *ROM, uint32_t l
logerror( "\tSize: %d megabits [%d]\n", 1 << (ROM[hilo_mode + 0x17] - 7), ROM[hilo_mode + 0x17]); logerror( "\tSize: %d megabits [%d]\n", 1 << (ROM[hilo_mode + 0x17] - 7), ROM[hilo_mode + 0x17]);
logerror( "\tSRAM: %d kilobits [%d]\n", ROM[hilo_mode + 0x18] * 8, ROM[hilo_mode + 0x18] ); logerror( "\tSRAM: %d kilobits [%d]\n", ROM[hilo_mode + 0x18] * 8, ROM[hilo_mode + 0x18] );
if (ROM[hilo_mode + 0x19] < ARRAY_LENGTH(countries)) if (ROM[hilo_mode + 0x19] < std::size(countries))
logerror( "\tCountry: %s [%d]\n", countries[ROM[hilo_mode + 0x19]], ROM[hilo_mode + 0x19]); logerror( "\tCountry: %s [%d]\n", countries[ROM[hilo_mode + 0x19]], ROM[hilo_mode + 0x19]);
else else
logerror( "\tCountry: Unknown [%d]\n", ROM[hilo_mode + 0x19]); logerror( "\tCountry: Unknown [%d]\n", ROM[hilo_mode + 0x19]);

View File

@ -121,7 +121,7 @@ void snes_bcbattle_device::device_reset()
m_transmitting = 0; m_transmitting = 0;
m_cur_bit = 0; m_cur_bit = 0;
m_cur_byte = 0; m_cur_byte = 0;
memset(m_current_barcode, 0, ARRAY_LENGTH(m_current_barcode)); std::fill(std::begin(m_current_barcode), std::end(m_current_barcode), 0);
} }

View File

@ -111,7 +111,7 @@ static const vectrex_slot slot_list[] =
#if 0 #if 0
static int vectrex_get_pcb_id(const char *slot) static int vectrex_get_pcb_id(const char *slot)
{ {
for (int i = 0; i < ARRAY_LENGTH(slot_list); i++) for (int i = 0; i < std::size(slot_list); i++)
{ {
if (!strcmp(slot_list[i].slot_option, slot)) if (!strcmp(slot_list[i].slot_option, slot))
return slot_list[i].pcb_id; return slot_list[i].pcb_id;

View File

@ -504,8 +504,8 @@ uint32_t vme_fccpu20_device::bootvect_r(offs_t offset)
void vme_fccpu20_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask) void vme_fccpu20_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{ {
LOG("%s\n", FUNCNAME); LOG("%s\n", FUNCNAME);
m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; m_sysram[offset % std::size(m_sysram)] &= ~mem_mask;
m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask);
m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset.
} }

View File

@ -156,8 +156,8 @@ uint32_t vme_hcpu30_card_device::bootvect_r(offs_t offset)
void vme_hcpu30_card_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask) void vme_hcpu30_card_device::bootvect_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{ {
LOG("%s\n", FUNCNAME); LOG("%s\n", FUNCNAME);
m_sysram[offset % ARRAY_LENGTH(m_sysram)] &= ~mem_mask; m_sysram[offset % std::size(m_sysram)] &= ~mem_mask;
m_sysram[offset % ARRAY_LENGTH(m_sysram)] |= (data & mem_mask); m_sysram[offset % std::size(m_sysram)] |= (data & mem_mask);
m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset. m_sysrom = &m_sysram[0]; // redirect all upcoming accesses to masking RAM until reset.
} }

View File

@ -145,14 +145,14 @@ bool vsmile_ctrl_device_base::queue_tx(uint8_t data)
"%s: discarding byte %02X because FIFO is full (length %u, Tx %sactive)\n", "%s: discarding byte %02X because FIFO is full (length %u, Tx %sactive)\n",
machine().describe_context(), machine().describe_context(),
data, data,
ARRAY_LENGTH(m_tx_fifo), std::size(m_tx_fifo),
m_tx_active ? "" : "in"); m_tx_active ? "" : "in");
return false; return false;
} }
// queue the byte // queue the byte
m_tx_fifo[m_tx_fifo_tail] = data; m_tx_fifo[m_tx_fifo_tail] = data;
m_tx_fifo_tail = (m_tx_fifo_tail + 1) % ARRAY_LENGTH(m_tx_fifo); m_tx_fifo_tail = (m_tx_fifo_tail + 1) % std::size(m_tx_fifo);
m_tx_fifo_empty = false; m_tx_fifo_empty = false;
// assert RTS and start transmitting if necessary // assert RTS and start transmitting if necessary
@ -173,7 +173,7 @@ bool vsmile_ctrl_device_base::queue_tx(uint8_t data)
} }
else else
{ {
unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo));
LOG("%s: queued byte %02X (%u bytes queued, Tx %sactive)\n", machine().describe_context(), data, fifo_used, m_tx_active ? "" : "in"); LOG("%s: queued byte %02X (%u bytes queued, Tx %sactive)\n", machine().describe_context(), data, fifo_used, m_tx_active ? "" : "in");
} }
@ -188,7 +188,7 @@ void vsmile_ctrl_device_base::select_w(int state)
if (state && !m_tx_fifo_empty && !m_tx_active) if (state && !m_tx_fifo_empty && !m_tx_active)
{ {
m_rts_timer->reset(); m_rts_timer->reset();
unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo));
LOG("%s: select asserted, starting transmission (%u bytes queued)\n", machine().describe_context(), fifo_used); LOG("%s: select asserted, starting transmission (%u bytes queued)\n", machine().describe_context(), fifo_used);
m_tx_active = true; m_tx_active = true;
m_tx_timer->adjust(attotime::from_hz(9600 / 10)); m_tx_timer->adjust(attotime::from_hz(9600 / 10));
@ -219,7 +219,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::tx_timer_expired)
// deliver the byte to the host (bits have shifted out now) // deliver the byte to the host (bits have shifted out now)
uint8_t const data(m_tx_fifo[m_tx_fifo_head]); uint8_t const data(m_tx_fifo[m_tx_fifo_head]);
m_tx_fifo_head = (m_tx_fifo_head + 1) % ARRAY_LENGTH(m_tx_fifo); m_tx_fifo_head = (m_tx_fifo_head + 1) % std::size(m_tx_fifo);
if (m_tx_fifo_head == m_tx_fifo_tail) if (m_tx_fifo_head == m_tx_fifo_tail)
m_tx_fifo_empty = true; m_tx_fifo_empty = true;
data_out(data); data_out(data);
@ -232,7 +232,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::tx_timer_expired)
} }
else else
{ {
unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo));
LOG("transmitted byte %02X (%u bytes queued, select %sasserted)\n", data, fifo_used, m_select ? "" : "de"); LOG("transmitted byte %02X (%u bytes queued, select %sasserted)\n", data, fifo_used, m_select ? "" : "de");
} }
@ -265,7 +265,7 @@ TIMER_CALLBACK_MEMBER(vsmile_ctrl_device_base::rts_timer_expired)
// clear out anything queued and let the implementation deal with it // clear out anything queued and let the implementation deal with it
if (!m_tx_fifo_empty) if (!m_tx_fifo_empty)
{ {
unsigned const fifo_used((m_tx_fifo_tail + ARRAY_LENGTH(m_tx_fifo) - m_tx_fifo_head) % ARRAY_LENGTH(m_tx_fifo)); unsigned const fifo_used((m_tx_fifo_tail + std::size(m_tx_fifo) - m_tx_fifo_head) % std::size(m_tx_fifo));
LOG("timeout waiting for select after asserting RTS (%u bytes queued)\n", fifo_used); LOG("timeout waiting for select after asserting RTS (%u bytes queued)\n", fifo_used);
m_tx_fifo_head = m_tx_fifo_tail = 0U; m_tx_fifo_head = m_tx_fifo_tail = 0U;
m_tx_fifo_empty = true; m_tx_fifo_empty = true;

View File

@ -191,7 +191,7 @@ void vtech_floppy_controller_device::latch_w(uint8_t data)
} }
} }
if(!(m_latch & 0x40) && (diff & 0x20)) { if(!(m_latch & 0x40) && (diff & 0x20)) {
if(m_write_position == ARRAY_LENGTH(m_write_buffer)) { if(m_write_position == std::size(m_write_buffer)) {
update_latching_inverter(); update_latching_inverter();
flush_writes(true); flush_writes(true);
} }

View File

@ -92,7 +92,7 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type
, m_vectorbase(0) , m_vectorbase(0)
, m_pc(0) , m_pc(0)
{ {
memset(m_r, 0x00, sizeof(m_r)); std::fill(std::begin(m_r), std::end(m_r), 0);
uint32_t arch = ARM9_COPRO_ID_ARCH_V4; uint32_t arch = ARM9_COPRO_ID_ARCH_V4;
if (m_archFlags & ARCHFLAG_T) if (m_archFlags & ARCHFLAG_T)
arch = ARM9_COPRO_ID_ARCH_V4T; arch = ARM9_COPRO_ID_ARCH_V4T;
@ -102,9 +102,9 @@ arm7_cpu_device::arm7_cpu_device(const machine_config &mconfig, device_type type
// TODO[RH]: Default to 3-instruction prefetch for unknown ARM variants. Derived cores should set the appropriate value in their constructors. // TODO[RH]: Default to 3-instruction prefetch for unknown ARM variants. Derived cores should set the appropriate value in their constructors.
m_insn_prefetch_depth = 3; m_insn_prefetch_depth = 3;
memset(m_insn_prefetch_buffer, 0, sizeof(uint32_t) * 3); std::fill_n(&m_insn_prefetch_buffer[0], 3, 0);
memset(m_insn_prefetch_address, 0, sizeof(uint32_t) * 3); std::fill_n(&m_insn_prefetch_address[0], 3, 0);
memset(m_insn_prefetch_valid, 0, sizeof(bool) * 3); std::fill_n(&m_insn_prefetch_valid[0], 3, false);
m_insn_prefetch_count = 0; m_insn_prefetch_count = 0;
m_insn_prefetch_index = 0; m_insn_prefetch_index = 0;
m_tlb_log = 0; m_tlb_log = 0;
@ -198,8 +198,8 @@ arm946es_cpu_device::arm946es_cpu_device(const machine_config &mconfig, device_t
| ARM9_COPRO_ID_PART_ARM946 | ARM9_COPRO_ID_PART_ARM946
| ARM9_COPRO_ID_STEP_ARM946_A0; | ARM9_COPRO_ID_STEP_ARM946_A0;
memset(ITCM, 0, 0x8000); std::fill_n(&ITCM[0], 0x8000, 0);
memset(DTCM, 0, 0x4000); std::fill_n(&DTCM[0], 0x4000, 0);
cp15_itcm_base = 0xffffffff; cp15_itcm_base = 0xffffffff;
cp15_itcm_size = 0; cp15_itcm_size = 0;
@ -1080,7 +1080,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::
void arm7_cpu_device::device_reset() void arm7_cpu_device::device_reset()
{ {
memset(m_r, 0, sizeof(m_r)); std::fill(std::begin(m_r), std::end(m_r), 0);
m_pendingIrq = false; m_pendingIrq = false;
m_pendingFiq = false; m_pendingFiq = false;
m_pendingAbtD = false; m_pendingAbtD = false;
@ -1097,7 +1097,7 @@ void arm7_cpu_device::device_reset()
m_fcsePID = 0; m_fcsePID = 0;
m_pid_offset = 0; m_pid_offset = 0;
m_domainAccessControl = 0; m_domainAccessControl = 0;
memset(m_decoded_access_control, 0, sizeof(uint8_t) * 16); std::fill_n(&m_decoded_access_control[0], 16, 0);
/* start up in SVC mode with interrupts disabled. */ /* start up in SVC mode with interrupts disabled. */
m_r[eCPSR] = I_MASK | F_MASK | 0x10; m_r[eCPSR] = I_MASK | F_MASK | 0x10;
@ -1106,10 +1106,26 @@ void arm7_cpu_device::device_reset()
m_impstate.cache_dirty = true; m_impstate.cache_dirty = true;
memset(m_dtlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_dtlb_entries)); for (auto &entry : m_dtlb_entries)
memset(m_itlb_entries, 0, sizeof(tlb_entry) * ARRAY_LENGTH(m_itlb_entries)); {
memset(m_dtlb_entry_index, 0, ARRAY_LENGTH(m_dtlb_entry_index)); entry.valid = false;
memset(m_itlb_entry_index, 0, ARRAY_LENGTH(m_itlb_entry_index)); entry.domain = 0;
entry.access = 0;
entry.table_bits = 0;
entry.base_addr = 0;
entry.type = 0;
}
for (auto &entry : m_itlb_entries)
{
entry.valid = false;
entry.domain = 0;
entry.access = 0;
entry.table_bits = 0;
entry.base_addr = 0;
entry.type = 0;
}
std::fill(std::begin(m_dtlb_entry_index), std::end(m_dtlb_entry_index), 0);
std::fill(std::begin(m_itlb_entry_index), std::end(m_itlb_entry_index), 0);
} }
void arm1176jzf_s_cpu_device::device_reset() void arm1176jzf_s_cpu_device::device_reset()
@ -1789,21 +1805,21 @@ void arm7_cpu_device::arm7_rt_w_callback(offs_t offset, uint32_t data)
{ {
case 5: case 5:
// Flush I // Flush I
for (uint32_t i = 0; i < ARRAY_LENGTH(m_itlb_entries); i++) for (uint32_t i = 0; i < std::size(m_itlb_entries); i++)
{ {
m_itlb_entries[i].valid = false; m_itlb_entries[i].valid = false;
} }
break; break;
case 6: case 6:
// Flush D // Flush D
for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++) for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++)
{ {
m_dtlb_entries[i].valid = false; m_dtlb_entries[i].valid = false;
} }
break; break;
case 7: case 7:
// Flush I+D // Flush I+D
for (uint32_t i = 0; i < ARRAY_LENGTH(m_dtlb_entries); i++) for (uint32_t i = 0; i < std::size(m_dtlb_entries); i++)
{ {
m_dtlb_entries[i].valid = false; m_dtlb_entries[i].valid = false;
m_itlb_entries[i].valid = false; m_itlb_entries[i].valid = false;

View File

@ -95,7 +95,7 @@ void arm7_cpu_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++) for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++)
if (m_impstate.regmap[regnum].is_int_register()) if (m_impstate.regmap[regnum].is_int_register())
UML_DMOV(block, uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0), uml::mem(&m_r[regnum])); UML_DMOV(block, uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0), uml::mem(&m_r[regnum]));
} }
@ -110,7 +110,7 @@ void arm7_cpu_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_impstate.regmap); regnum++) for (regnum = 0; regnum < std::size(m_impstate.regmap); regnum++)
if (m_impstate.regmap[regnum].is_int_register()) if (m_impstate.regmap[regnum].is_int_register())
UML_DMOV(block, uml::mem(&m_r[regnum]), uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0)); UML_DMOV(block, uml::mem(&m_r[regnum]), uml::ireg(m_impstate.regmap[regnum].ireg() - uml::REG_I0));
} }
@ -251,7 +251,7 @@ void arm7_cpu_device::arm7drc_set_options(uint32_t options)
void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{ {
if (m_impstate.fastram_select < ARRAY_LENGTH(m_impstate.fastram)) if (m_impstate.fastram_select < std::size(m_impstate.fastram))
{ {
m_impstate.fastram[m_impstate.fastram_select].start = start; m_impstate.fastram[m_impstate.fastram_select].start = start;
m_impstate.fastram[m_impstate.fastram_select].end = end; m_impstate.fastram[m_impstate.fastram_select].end = end;
@ -268,7 +268,7 @@ void arm7_cpu_device::arm7drc_add_fastram(offs_t start, offs_t end, uint8_t read
void arm7_cpu_device::arm7drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) void arm7_cpu_device::arm7drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{ {
if (m_impstate.hotspot_select < ARRAY_LENGTH(m_impstate.hotspot)) if (m_impstate.hotspot_select < std::size(m_impstate.hotspot))
{ {
m_impstate.hotspot[m_impstate.hotspot_select].pc = pc; m_impstate.hotspot[m_impstate.hotspot_select].pc = pc;
m_impstate.hotspot[m_impstate.hotspot_select].opcode = opcode; m_impstate.hotspot[m_impstate.hotspot_select].opcode = opcode;

View File

@ -528,8 +528,8 @@ void cosmac_device::device_reset()
m_df = 0; m_df = 0;
m_p = 0; m_p = 0;
for (int i = 0; i < ARRAY_LENGTH(m_r); i++) for (uint16_t &r : m_r)
m_r[i] = machine().rand() & 0xffff; r = machine().rand() & 0xffff;
} }

View File

@ -528,7 +528,7 @@ int drcbe_c::execute(code_handle &entry)
newinst = (const drcbec_instruction *)m_hash.get_codeptr(PARAM0, PARAM1); newinst = (const drcbec_instruction *)m_hash.get_codeptr(PARAM0, PARAM1);
if (newinst == nullptr) if (newinst == nullptr)
{ {
assert(sp < ARRAY_LENGTH(callstack)); assert(sp < std::size(callstack));
m_state.exp = PARAM1; m_state.exp = PARAM1;
newinst = (const drcbec_instruction *)inst[2].handle->codeptr(); newinst = (const drcbec_instruction *)inst[2].handle->codeptr();
callstack[sp++] = inst; callstack[sp++] = inst;
@ -562,7 +562,7 @@ int drcbe_c::execute(code_handle &entry)
[[fallthrough]]; [[fallthrough]];
case MAKE_OPCODE_SHORT(OP_CALLH, 4, 0): case MAKE_OPCODE_SHORT(OP_CALLH, 4, 0):
assert(sp < ARRAY_LENGTH(callstack)); assert(sp < std::size(callstack));
newinst = (const drcbec_instruction *)inst[0].handle->codeptr(); newinst = (const drcbec_instruction *)inst[0].handle->codeptr();
assert_in_cache(m_cache, newinst); assert_in_cache(m_cache, newinst);
callstack[sp++] = inst + OPCODE_GET_PWORDS(opcode); callstack[sp++] = inst + OPCODE_GET_PWORDS(opcode);
@ -587,7 +587,7 @@ int drcbe_c::execute(code_handle &entry)
[[fallthrough]]; [[fallthrough]];
case MAKE_OPCODE_SHORT(OP_EXH, 4, 0): case MAKE_OPCODE_SHORT(OP_EXH, 4, 0):
assert(sp < ARRAY_LENGTH(callstack)); assert(sp < std::size(callstack));
newinst = (const drcbec_instruction *)inst[0].handle->codeptr(); newinst = (const drcbec_instruction *)inst[0].handle->codeptr();
assert_in_cache(m_cache, newinst); assert_in_cache(m_cache, newinst);
m_state.exp = PARAM1; m_state.exp = PARAM1;

View File

@ -276,7 +276,7 @@ void drc_map_variables::block_end(drcuml_block &block)
// build a mask of changed variables // build a mask of changed variables
int numchanged = 0; int numchanged = 0;
uint32_t varmask = 0; uint32_t varmask = 0;
for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++) for (int varnum = 0; varnum < std::size(changed); varnum++)
if (changed[varnum]) if (changed[varnum])
{ {
changed[varnum] = false; changed[varnum] = false;
@ -298,7 +298,7 @@ void drc_map_variables::block_end(drcuml_block &block)
*dest++ = (codedelta << 16) | (varmask << 4) | numchanged; *dest++ = (codedelta << 16) | (varmask << 4) | numchanged;
// now output updated variable values // now output updated variable values
for (int varnum = 0; varnum < ARRAY_LENGTH(changed); varnum++) for (int varnum = 0; varnum < std::size(changed); varnum++)
if ((varmask >> varnum) & 1) if ((varmask >> varnum) & 1)
*dest++ = curvalue[varnum]; *dest++ = curvalue[varnum];

View File

@ -654,7 +654,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
m_near.drcmap_get_value = (x86code *)&drc_map_variables::static_get_value; m_near.drcmap_get_value = (x86code *)&drc_map_variables::static_get_value;
// build the flags map // build the flags map
for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsmap); entry++) for (int entry = 0; entry < std::size(m_near.flagsmap); entry++)
{ {
uint8_t flags = 0; uint8_t flags = 0;
if (entry & 0x001) flags |= FLAG_C; if (entry & 0x001) flags |= FLAG_C;
@ -664,7 +664,7 @@ drcbe_x64::drcbe_x64(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
if (entry & 0x800) flags |= FLAG_V; if (entry & 0x800) flags |= FLAG_V;
m_near.flagsmap[entry] = flags; m_near.flagsmap[entry] = flags;
} }
for (int entry = 0; entry < ARRAY_LENGTH(m_near.flagsunmap); entry++) for (int entry = 0; entry < std::size(m_near.flagsunmap); entry++)
{ {
uint64_t flags = 0; uint64_t flags = 0;
if (entry & FLAG_C) flags |= 0x001; if (entry & FLAG_C) flags |= 0x001;
@ -873,7 +873,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, uint3
for (int inum = 0; inum < numinst; inum++) for (int inum = 0; inum < numinst; inum++)
{ {
const instruction &inst = instlist[inum]; const instruction &inst = instlist[inum];
assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table)); assert(inst.opcode() < std::size(s_opcode_table));
// must remain in scope until output // must remain in scope until output
std::string dasm; std::string dasm;
@ -1883,7 +1883,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst)
// copy integer registers // copy integer registers
int regoffs = offsetof(drcuml_machine_state, r); int regoffs = offsetof(drcuml_machine_state, r);
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{ {
if (int_register_map[regnum] != 0) if (int_register_map[regnum] != 0)
a.mov(ptr(rcx, regoffs + 8 * regnum), Gpq(regnum)); a.mov(ptr(rcx, regoffs + 8 * regnum), Gpq(regnum));
@ -1896,7 +1896,7 @@ void drcbe_x64::op_save(Assembler &a, const instruction &inst)
// copy FP registers // copy FP registers
regoffs = offsetof(drcuml_machine_state, f); regoffs = offsetof(drcuml_machine_state, f);
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{ {
if (float_register_map[regnum] != 0) if (float_register_map[regnum] != 0)
a.movsd(ptr(rcx, regoffs + 8 * regnum), Xmm(regnum)); a.movsd(ptr(rcx, regoffs + 8 * regnum), Xmm(regnum));
@ -1927,7 +1927,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst)
// copy integer registers // copy integer registers
int regoffs = offsetof(drcuml_machine_state, r); int regoffs = offsetof(drcuml_machine_state, r);
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{ {
if (int_register_map[regnum] != 0) if (int_register_map[regnum] != 0)
a.mov(Gpq(regnum), ptr(rcx, regoffs + 8 * regnum)); a.mov(Gpq(regnum), ptr(rcx, regoffs + 8 * regnum));
@ -1940,7 +1940,7 @@ void drcbe_x64::op_restore(Assembler &a, const instruction &inst)
// copy FP registers // copy FP registers
regoffs = offsetof(drcuml_machine_state, f); regoffs = offsetof(drcuml_machine_state, f);
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{ {
if (float_register_map[regnum] != 0) if (float_register_map[regnum] != 0)
a.movsd(Xmm(regnum), ptr(rcx, regoffs + 8 * regnum)); a.movsd(Xmm(regnum), ptr(rcx, regoffs + 8 * regnum));

View File

@ -538,7 +538,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
m_reshi(0) m_reshi(0)
{ {
// compute hi pointers for each register // compute hi pointers for each register
for (int regnum = 0; regnum < ARRAY_LENGTH(int_register_map); regnum++) for (int regnum = 0; regnum < std::size(int_register_map); regnum++)
if (int_register_map[regnum] != 0) if (int_register_map[regnum] != 0)
{ {
m_reglo[int_register_map[regnum]] = &m_state.r[regnum].w.l; m_reglo[int_register_map[regnum]] = &m_state.r[regnum].w.l;
@ -546,7 +546,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
} }
// build the flags map (static but it doesn't hurt to regenerate it) // build the flags map (static but it doesn't hurt to regenerate it)
for (int entry = 0; entry < ARRAY_LENGTH(flags_map); entry++) for (int entry = 0; entry < std::size(flags_map); entry++)
{ {
uint8_t flags = 0; uint8_t flags = 0;
if (entry & 0x001) flags |= FLAG_C; if (entry & 0x001) flags |= FLAG_C;
@ -556,7 +556,7 @@ drcbe_x86::drcbe_x86(drcuml_state &drcuml, device_t &device, drc_cache &cache, u
if (entry & 0x800) flags |= FLAG_V; if (entry & 0x800) flags |= FLAG_V;
flags_map[entry] = flags; flags_map[entry] = flags;
} }
for (int entry = 0; entry < ARRAY_LENGTH(flags_unmap); entry++) for (int entry = 0; entry < std::size(flags_unmap); entry++)
{ {
uint32_t flags = 0; uint32_t flags = 0;
if (entry & FLAG_C) flags |= 0x001; if (entry & FLAG_C) flags |= 0x001;
@ -712,7 +712,7 @@ void drcbe_x86::reset()
a.mov(ptr(ecx, offsetof(drcuml_machine_state, fmod)), al); // mov state->fmod,al a.mov(ptr(ecx, offsetof(drcuml_machine_state, fmod)), al); // mov state->fmod,al
a.mov(eax, MABS(&m_state.exp)); // mov eax,[exp] a.mov(eax, MABS(&m_state.exp)); // mov eax,[exp]
a.mov(ptr(ecx, offsetof(drcuml_machine_state, exp)), eax); // mov state->exp,eax a.mov(ptr(ecx, offsetof(drcuml_machine_state, exp)), eax); // mov state->exp,eax
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{ {
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l; uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h;
@ -726,7 +726,7 @@ void drcbe_x86::reset()
a.mov(eax, MABS(&m_state.r[regnum].w.h)); a.mov(eax, MABS(&m_state.r[regnum].w.h));
a.mov(ptr(ecx, regoffsh), eax); a.mov(ptr(ecx, regoffsh), eax);
} }
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{ {
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l; uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h;
@ -740,7 +740,7 @@ void drcbe_x86::reset()
// generate a restore subroutine // generate a restore subroutine
m_restore = dst + a.offset(); m_restore = dst + a.offset();
a.bind(a.newNamedLabel("restore")); a.bind(a.newNamedLabel("restore"));
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.r); regnum++) for (int regnum = 0; regnum < std::size(m_state.r); regnum++)
{ {
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l; uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->r[regnum].w.h;
@ -754,7 +754,7 @@ void drcbe_x86::reset()
a.mov(eax, ptr(ecx, regoffsh)); a.mov(eax, ptr(ecx, regoffsh));
a.mov(MABS(&m_state.r[regnum].w.h), eax); a.mov(MABS(&m_state.r[regnum].w.h), eax);
} }
for (int regnum = 0; regnum < ARRAY_LENGTH(m_state.f); regnum++) for (int regnum = 0; regnum < std::size(m_state.f); regnum++)
{ {
uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l; uintptr_t regoffsl = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.l;
uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h; uintptr_t regoffsh = (uintptr_t)&((drcuml_machine_state *)nullptr)->f[regnum].s.h;
@ -843,7 +843,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, uint3
for (int inum = 0; inum < numinst; inum++) for (int inum = 0; inum < numinst; inum++)
{ {
const instruction &inst = instlist[inum]; const instruction &inst = instlist[inum];
assert(inst.opcode() < ARRAY_LENGTH(s_opcode_table)); assert(inst.opcode() < std::size(s_opcode_table));
// must remain in scope until output // must remain in scope until output
std::string dasm; std::string dasm;

View File

@ -704,10 +704,10 @@ static void validate_backend(drcuml_state *drcuml)
// iterate over test entries // iterate over test entries
printf("Backend validation....\n"); printf("Backend validation....\n");
for (tnum = 31; tnum < ARRAY_LENGTH(bevalidate_test_list); tnum++) for (tnum = 31; tnum < std::size(bevalidate_test_list); tnum++)
{ {
const bevalidate_test *test = &bevalidate_test_list[tnum]; const bevalidate_test *test = &bevalidate_test_list[tnum];
parameter param[ARRAY_LENGTH(test->param)]; parameter param[std::size(test->param)];
char mnemonic[20], *dst; char mnemonic[20], *dst;
const char *src; const char *src;
@ -726,7 +726,7 @@ static void validate_backend(drcuml_state *drcuml)
*dst++ = *src; *dst++ = *src;
} }
*dst = 0; *dst = 0;
printf("Executing test %d/%d (%s)", tnum + 1, (int)ARRAY_LENGTH(bevalidate_test_list), mnemonic); printf("Executing test %d/%d (%s)", tnum + 1, (int)std::size(bevalidate_test_list), mnemonic);
// reset parameter list and iterate // reset parameter list and iterate
memset(param, 0, sizeof(param)); memset(param, 0, sizeof(param));
@ -750,7 +750,7 @@ static void bevalidate_iterate_over_params(drcuml_state *drcuml, uml::code_handl
drcuml_ptype ptype; drcuml_ptype ptype;
// if no parameters, execute now // if no parameters, execute now
if (pnum >= ARRAY_LENGTH(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE) if (pnum >= std::size(opinfo->param) || opinfo->param[pnum].typemask == PTYPES_NONE)
{ {
bevalidate_iterate_over_flags(drcuml, handles, test, paramlist); bevalidate_iterate_over_flags(drcuml, handles, test, paramlist);
return; return;
@ -838,7 +838,7 @@ static void bevalidate_iterate_over_flags(drcuml_state *drcuml, uml::code_handle
static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, const bevalidate_test *test, const parameter *paramlist, uint8_t flagmask) static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles, const bevalidate_test *test, const parameter *paramlist, uint8_t flagmask)
{ {
parameter params[ARRAY_LENGTH(test->param)]; parameter params[std::size(test->param)];
drcuml_machine_state istate, fstate; drcuml_machine_state istate, fstate;
instruction testinst; instruction testinst;
drcuml_block *block; drcuml_block *block;
@ -846,7 +846,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
int numparams; int numparams;
// allocate memory for parameters // allocate memory for parameters
parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1)); parammem = (uint64_t *)drcuml->cache->alloc_near(sizeof(uint64_t) * (std::size(test->param) + 1));
// flush the cache // flush the cache
drcuml->reset(); drcuml->reset();
@ -888,7 +888,7 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
} }
testinst = block->inst[block->nextinst - 1]; testinst = block->inst[block->nextinst - 1];
UML_HANDLE(block, handles[2]); UML_HANDLE(block, handles[2]);
UML_GETFLGS(block, MEM(&parammem[ARRAY_LENGTH(test->param)]), flagmask); UML_GETFLGS(block, MEM(&parammem[std::size(test->param)]), flagmask);
UML_SAVE(block, &fstate); UML_SAVE(block, &fstate);
UML_EXIT(block, IMM(0)); UML_EXIT(block, IMM(0));
@ -899,10 +899,10 @@ static void bevalidate_execute(drcuml_state *drcuml, uml::code_handle **handles,
drcuml->execute(*handles[0]); drcuml->execute(*handles[0]);
// verify the results // verify the results
bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)&parammem[ARRAY_LENGTH(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask); bevalidate_verify_state(drcuml, &istate, &fstate, test, *(uint32_t *)&parammem[std::size(test->param)], params, &testinst, handles[1]->code, handles[2]->code, flagmask);
// free memory // free memory
drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (ARRAY_LENGTH(test->param) + 1)); drcuml->cache->dealloc(parammem, sizeof(uint64_t) * (std::size(test->param) + 1));
} }
@ -922,14 +922,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc
state->exp = machine.rand(); state->exp = machine.rand();
// initialize integer registers to random values // initialize integer registers to random values
for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++) for (regnum = 0; regnum < std::size(state->r); regnum++)
{ {
state->r[regnum].w.h = machine.rand(); state->r[regnum].w.h = machine.rand();
state->r[regnum].w.l = machine.rand(); state->r[regnum].w.l = machine.rand();
} }
// initialize float registers to random values // initialize float registers to random values
for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++) for (regnum = 0; regnum < std::size(state->f); regnum++)
{ {
*(uint32_t *)&state->f[regnum].s.h = machine.rand(); *(uint32_t *)&state->f[regnum].s.h = machine.rand();
*(uint32_t *)&state->f[regnum].s.l = machine.rand(); *(uint32_t *)&state->f[regnum].s.l = machine.rand();
@ -950,14 +950,14 @@ static void bevalidate_initialize_random_state(drcuml_state *drcuml, drcuml_bloc
static int bevalidate_populate_state(drcuml_block *block, drcuml_machine_state *state, const bevalidate_test *test, const parameter *paramlist, parameter *params, uint64_t *parammem) static int bevalidate_populate_state(drcuml_block *block, drcuml_machine_state *state, const bevalidate_test *test, const parameter *paramlist, parameter *params, uint64_t *parammem)
{ {
const opcode_info *opinfo = opcode_info_table[test->opcode()]; const opcode_info *opinfo = opcode_info_table[test->opcode()];
int numparams = ARRAY_LENGTH(test->param); int numparams = std::size(test->param);
int pnum; int pnum;
// copy flags as-is // copy flags as-is
state->flags = test->iflags; state->flags = test->iflags;
// iterate over parameters // iterate over parameters
for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++) for (pnum = 0; pnum < std::size(test->param); pnum++)
{ {
int psize = effective_test_psize(opinfo, pnum, test->size, test->param); int psize = effective_test_psize(opinfo, pnum, test->size, test->param);
parameter *curparam = &params[pnum]; parameter *curparam = &params[pnum];
@ -1046,7 +1046,7 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st
} }
// check destination parameters // check destination parameters
for (pnum = 0; pnum < ARRAY_LENGTH(test->param); pnum++) for (pnum = 0; pnum < std::size(test->param); pnum++)
if (opinfo->param[pnum].output & PIO_OUT) if (opinfo->param[pnum].output & PIO_OUT)
{ {
int psize = effective_test_psize(opinfo, pnum, test->size, test->param); int psize = effective_test_psize(opinfo, pnum, test->size, test->param);
@ -1094,14 +1094,14 @@ static int bevalidate_verify_state(drcuml_state *drcuml, const drcuml_machine_st
} }
// check source integer parameters for unexpected alterations // check source integer parameters for unexpected alterations
for (regnum = 0; regnum < ARRAY_LENGTH(state->r); regnum++) for (regnum = 0; regnum < std::size(state->r); regnum++)
if (ireg[regnum] == 0 && istate->r[regnum].d != state->r[regnum].d) if (ireg[regnum] == 0 && istate->r[regnum].d != state->r[regnum].d)
errend += sprintf(errend, " Register i%d ... result:%08X%08X originally:%08X%08X\n", regnum, errend += sprintf(errend, " Register i%d ... result:%08X%08X originally:%08X%08X\n", regnum,
(uint32_t)(state->r[regnum].d >> 32), (uint32_t)state->r[regnum].d, (uint32_t)(state->r[regnum].d >> 32), (uint32_t)state->r[regnum].d,
(uint32_t)(istate->r[regnum].d >> 32), (uint32_t)istate->r[regnum].d); (uint32_t)(istate->r[regnum].d >> 32), (uint32_t)istate->r[regnum].d);
// check source float parameters for unexpected alterations // check source float parameters for unexpected alterations
for (regnum = 0; regnum < ARRAY_LENGTH(state->f); regnum++) for (regnum = 0; regnum < std::size(state->f); regnum++)
if (freg[regnum] == 0 && *(uint64_t *)&istate->f[regnum].d != *(uint64_t *)&state->f[regnum].d) if (freg[regnum] == 0 && *(uint64_t *)&istate->f[regnum].d != *(uint64_t *)&state->f[regnum].d)
errend += sprintf(errend, " Register f%d ... result:%08X%08X originally:%08X%08X\n", regnum, errend += sprintf(errend, " Register f%d ... result:%08X%08X originally:%08X%08X\n", regnum,
(uint32_t)(*(uint64_t *)&state->f[regnum].d >> 32), (uint32_t)*(uint64_t *)&state->f[regnum].d, (uint32_t)(*(uint64_t *)&state->f[regnum].d >> 32), (uint32_t)*(uint64_t *)&state->f[regnum].d,

View File

@ -564,9 +564,9 @@ bool dsp16_device_base::frontend::describe_do(opcode_desc &desc, u16 op)
m_cache_cycles = cycles; m_cache_cycles = cycles;
m_cache_last_cycles = cycles + (romcycles - cachecycles); m_cache_last_cycles = cycles + (romcycles - cachecycles);
m_cache_flags = desc.flags & (OPFLAG_READS_MEMORY | OPFLAG_WRITES_MEMORY); m_cache_flags = desc.flags & (OPFLAG_READS_MEMORY | OPFLAG_WRITES_MEMORY);
std::copy_n(desc.regin, ARRAY_LENGTH(desc.regin), m_cache_regin); std::copy_n(desc.regin, std::size(desc.regin), m_cache_regin);
std::copy_n(desc.regout, ARRAY_LENGTH(desc.regout), m_cache_regout); std::copy_n(desc.regout, std::size(desc.regout), m_cache_regout);
std::copy_n(desc.regreq, ARRAY_LENGTH(desc.regreq), m_cache_regreq); std::copy_n(desc.regreq, std::size(desc.regreq), m_cache_regreq);
m_cache_valid = true; m_cache_valid = true;
desc.cycles += (2U - romcycles) + ((k - 1) * cycles) + (romcycles - cachecycles); desc.cycles += (2U - romcycles) + ((k - 1) * cycles) + (romcycles - cachecycles);
return true; return true;
@ -589,9 +589,9 @@ bool dsp16_device_base::frontend::describe_redo(opcode_desc &desc, u16 op)
{ {
desc.cycles += ((k - 1) * m_cache_cycles) + m_cache_last_cycles; desc.cycles += ((k - 1) * m_cache_cycles) + m_cache_last_cycles;
desc.flags |= m_cache_flags; desc.flags |= m_cache_flags;
std::copy_n(m_cache_regin, ARRAY_LENGTH(desc.regin), desc.regin); std::copy_n(m_cache_regin, std::size(desc.regin), desc.regin);
std::copy_n(m_cache_regout, ARRAY_LENGTH(desc.regout), desc.regout); std::copy_n(m_cache_regout, std::size(desc.regout), desc.regout);
std::copy_n(m_cache_regreq, ARRAY_LENGTH(desc.regreq), desc.regreq); std::copy_n(m_cache_regreq, std::size(desc.regreq), desc.regreq);
return true; return true;
} }
} }

View File

@ -94,7 +94,7 @@ registers
inline void dspp_device::load_fast_iregs(drcuml_block &block) inline void dspp_device::load_fast_iregs(drcuml_block &block)
{ {
#if 0 // TODO #if 0 // TODO
for (uint32_t regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (uint32_t regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -115,7 +115,7 @@ void dspp_device::save_fast_iregs(drcuml_block &block)
#if 0 // TODO #if 0 // TODO
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {

View File

@ -2847,7 +2847,7 @@ void i386_disassembler::decode_opcode(std::ostream &stream, const I386_OPCODE *o
case GROUP: case GROUP:
handle_modrm(modrm_string, base_pc, pc, opcodes); handle_modrm(modrm_string, base_pc, pc, opcodes);
for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) { for( i=0; i < std::size(group_op_table); i++ ) {
if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) { if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) {
if (op->flags & GROUP_MOD) if (op->flags & GROUP_MOD)
decode_opcode(stream, &group_op_table[i].opcode[MODRM_MOD()], op1, base_pc, pc, opcodes); decode_opcode(stream, &group_op_table[i].opcode[MODRM_MOD()], op1, base_pc, pc, opcodes);

View File

@ -502,7 +502,7 @@ void i8085a_cpu_device::execute_set_input(int irqline, int state)
} }
/* remaining sources are level triggered */ /* remaining sources are level triggered */
else if (irqline < ARRAY_LENGTH(m_irq_state)) else if (irqline < std::size(m_irq_state))
m_irq_state[irqline] = state; m_irq_state[irqline] = state;
} }

View File

@ -171,7 +171,7 @@ void m6500_1_device::device_reset()
m_cr = 0x00U; m_cr = 0x00U;
for (unsigned i = 0; ARRAY_LENGTH(m_port_buf) > i; ++i) for (unsigned i = 0; std::size(m_port_buf) > i; ++i)
{ {
if (0xffU != m_port_buf[i]) if (0xffU != m_port_buf[i])
m_port_out_cb[i](m_port_buf[i] = 0xffU); m_port_out_cb[i](m_port_buf[i] = 0xffU);

View File

@ -808,7 +808,7 @@ const m6x09_base_disassembler::opcodeinfo m6x09_disassembler::m6x09_opcodes[] =
// ======================> m6x09_disassembler // ======================> m6x09_disassembler
m6x09_disassembler::m6x09_disassembler(m6x09_instruction_level level, const char teregs[16][4]) m6x09_disassembler::m6x09_disassembler(m6x09_instruction_level level, const char teregs[16][4])
: m6x09_base_disassembler(m6x09_opcodes, ARRAY_LENGTH(m6x09_opcodes), level) : m6x09_base_disassembler(m6x09_opcodes, std::size(m6x09_opcodes), level)
, m_teregs(*reinterpret_cast<const std::array<std::array<char, 4>, 16> *>(teregs)) , m_teregs(*reinterpret_cast<const std::array<std::array<char, 4>, 16> *>(teregs))
{ {
} }
@ -1237,7 +1237,7 @@ const m6x09_base_disassembler::opcodeinfo konami_disassembler::konami_opcodes[]
// ======================> konami_disassembler // ======================> konami_disassembler
konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, ARRAY_LENGTH(konami_opcodes), M6x09_GENERAL) konami_disassembler::konami_disassembler() : m6x09_base_disassembler(konami_opcodes, std::size(konami_opcodes), M6x09_GENERAL)
{ {
} }

View File

@ -189,7 +189,7 @@ inline void mb86235_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -207,7 +207,7 @@ void mb86235_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {

View File

@ -160,7 +160,7 @@ void mips1core_device_base::device_start()
state_add(MIPS1_PC, "PC", m_pc); state_add(MIPS1_PC, "PC", m_pc);
state_add(MIPS1_COP0 + COP0_Status, "SR", m_cop0[COP0_Status]); state_add(MIPS1_COP0 + COP0_Status, "SR", m_cop0[COP0_Status]);
for (unsigned i = 0; i < ARRAY_LENGTH(m_r); i++) for (unsigned i = 0; i < std::size(m_r); i++)
state_add(MIPS1_R0 + i, util::string_format("R%d", i).c_str(), m_r[i]); state_add(MIPS1_R0 + i, util::string_format("R%d", i).c_str(), m_r[i]);
state_add(MIPS1_HI, "HI", m_hi); state_add(MIPS1_HI, "HI", m_hi);
@ -751,17 +751,17 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
{ {
case 1049: // msgsys case 1049: // msgsys
LOGMASKED(LOG_RISCOS, "asid %d syscall msgsys:%s() (%s)\n", LOGMASKED(LOG_RISCOS, "asid %d syscall msgsys:%s() (%s)\n",
asid, (m_r[5] < ARRAY_LENGTH(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context()); asid, (m_r[5] < std::size(msg_syscalls)) ? msg_syscalls[m_r[5]] : "unknown", machine().describe_context());
break; break;
case 1052: // shmsys case 1052: // shmsys
LOGMASKED(LOG_RISCOS, "asid %d syscall shmsys:%s() (%s)\n", LOGMASKED(LOG_RISCOS, "asid %d syscall shmsys:%s() (%s)\n",
asid, (m_r[5] < ARRAY_LENGTH(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context()); asid, (m_r[5] < std::size(shm_syscalls)) ? shm_syscalls[m_r[5]] : "unknown", machine().describe_context());
break; break;
case 1053: // semsys case 1053: // semsys
LOGMASKED(LOG_RISCOS, "asid %d syscall semsys:%s() (%s)\n", LOGMASKED(LOG_RISCOS, "asid %d syscall semsys:%s() (%s)\n",
asid, (m_r[5] < ARRAY_LENGTH(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context()); asid, (m_r[5] < std::size(sem_syscalls)) ? sem_syscalls[m_r[5]] : "unknown", machine().describe_context());
break; break;
case 2151: // bsd_sysmips case 2151: // bsd_sysmips
@ -773,7 +773,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break; break;
default: default:
if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < ARRAY_LENGTH(mips_syscalls)) if ((m_r[5] > 0x100) && (m_r[5] - 0x100) < std::size(mips_syscalls))
LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_sysmips:%s() (%s)\n", LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_sysmips:%s() (%s)\n",
asid, mips_syscalls[m_r[5] - 0x100], machine().describe_context()); asid, mips_syscalls[m_r[5] - 0x100], machine().describe_context());
else else
@ -784,7 +784,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break; break;
default: default:
if ((m_r[4] > 2000) && (m_r[4] - 2000 < ARRAY_LENGTH(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000]) if ((m_r[4] > 2000) && (m_r[4] - 2000 < std::size(bsd_syscalls)) && bsd_syscalls[m_r[4] - 2000])
LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_%s() (%s)\n", LOGMASKED(LOG_RISCOS, "asid %d syscall bsd_%s() (%s)\n",
asid, bsd_syscalls[m_r[4] - 2000], machine().describe_context()); asid, bsd_syscalls[m_r[4] - 2000], machine().describe_context());
else else
@ -833,7 +833,7 @@ void mips1core_device_base::generate_exception(u32 exception, bool refill)
break; break;
default: default:
if ((m_r[2] > 1000) && (m_r[2] - 1000 < ARRAY_LENGTH(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000]) if ((m_r[2] > 1000) && (m_r[2] - 1000 < std::size(sysv_syscalls)) && sysv_syscalls[m_r[2] - 1000])
LOGMASKED(LOG_RISCOS, "asid %d syscall %s() (%s)\n", asid, sysv_syscalls[m_r[2] - 1000], machine().describe_context()); LOGMASKED(LOG_RISCOS, "asid %d syscall %s() (%s)\n", asid, sysv_syscalls[m_r[2] - 1000], machine().describe_context());
else else
LOGMASKED(LOG_RISCOS, "asid %d syscall unknown %d (%s)\n", asid, m_r[2], machine().describe_context()); LOGMASKED(LOG_RISCOS, "asid %d syscall unknown %d (%s)\n", asid, m_r[2], machine().describe_context());
@ -1245,7 +1245,7 @@ void mips1_device_base::device_start()
if (m_fcr0) if (m_fcr0)
{ {
state_add(MIPS1_FCR31, "FCSR", m_fcr31); state_add(MIPS1_FCR31, "FCSR", m_fcr31);
for (unsigned i = 0; i < ARRAY_LENGTH(m_f); i++) for (unsigned i = 0; i < std::size(m_f); i++)
state_add(MIPS1_F0 + i, util::string_format("F%d", i * 2).c_str(), m_f[i]); state_add(MIPS1_F0 + i, util::string_format("F%d", i * 2).c_str(), m_f[i]);
} }
@ -1267,7 +1267,7 @@ void mips1_device_base::device_reset()
m_reset_time = total_cycles(); m_reset_time = total_cycles();
// initialize tlb mru index with identity mapping // initialize tlb mru index with identity mapping
for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) for (unsigned i = 0; i < std::size(m_tlb); i++)
{ {
m_tlb_mru[TRANSLATE_READ][i] = i; m_tlb_mru[TRANSLATE_READ][i] = i;
m_tlb_mru[TRANSLATE_WRITE][i] = i; m_tlb_mru[TRANSLATE_WRITE][i] = i;
@ -1979,7 +1979,7 @@ bool mips1_device_base::memory_translate(int spacenum, int intention, offs_t &ad
bool refill = !BIT(address, 31); bool refill = !BIT(address, 31);
bool modify = false; bool modify = false;
for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) for (unsigned i = 0; i < std::size(m_tlb); i++)
{ {
unsigned const index = mru[i]; unsigned const index = mru[i];
u32 const *const entry = m_tlb[index]; u32 const *const entry = m_tlb[index];

View File

@ -120,7 +120,7 @@ inline void mips3_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
UML_DMOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_core->r[regnum])); UML_DMOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_core->r[regnum]));
} }
@ -135,7 +135,7 @@ inline void mips3_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
UML_DMOV(block, mem(&m_core->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0)); UML_DMOV(block, mem(&m_core->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0));
} }
@ -174,7 +174,7 @@ void mips3_device::clear_fastram(uint32_t select_start)
void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{ {
if (m_fastram_select < ARRAY_LENGTH(m_fastram)) if (m_fastram_select < std::size(m_fastram))
{ {
m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end; m_fastram[m_fastram_select].end = end;
@ -197,7 +197,7 @@ void mips3_device::add_fastram(offs_t start, offs_t end, uint8_t readonly, void
void mips3_device::mips3drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) void mips3_device::mips3drc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{ {
if (!allow_drc()) return; if (!allow_drc()) return;
if (m_hotspot_select < ARRAY_LENGTH(m_hotspot)) if (m_hotspot_select < std::size(m_hotspot))
{ {
m_hotspot[m_hotspot_select].pc = pc; m_hotspot[m_hotspot_select].pc = pc;
m_hotspot[m_hotspot_select].opcode = opcode; m_hotspot[m_hotspot_select].opcode = opcode;

View File

@ -225,7 +225,7 @@ void r4000_base_device::device_reset()
m_cp0[CP0_WatchHi] = 0; m_cp0[CP0_WatchHi] = 0;
// initialize tlb mru index with identity mapping // initialize tlb mru index with identity mapping
for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) for (unsigned i = 0; i < std::size(m_tlb); i++)
{ {
m_tlb_mru[TRANSLATE_READ][i] = i; m_tlb_mru[TRANSLATE_READ][i] = i;
m_tlb_mru[TRANSLATE_WRITE][i] = i; m_tlb_mru[TRANSLATE_WRITE][i] = i;
@ -1411,10 +1411,10 @@ u64 r4000_base_device::cp0_get(unsigned const reg)
{ {
u8 const wired = m_cp0[CP0_Wired] & 0x3f; u8 const wired = m_cp0[CP0_Wired] & 0x3f;
if (wired < ARRAY_LENGTH(m_tlb)) if (wired < std::size(m_tlb))
return ((total_cycles() - m_cp0_timer_zero) % (ARRAY_LENGTH(m_tlb) - wired) + wired) & 0x3f; return ((total_cycles() - m_cp0_timer_zero) % (std::size(m_tlb) - wired) + wired) & 0x3f;
else else
return ARRAY_LENGTH(m_tlb) - 1; return std::size(m_tlb) - 1;
} }
break; break;
@ -1525,7 +1525,7 @@ void r4000_base_device::cp0_tlbr()
{ {
u8 const index = m_cp0[CP0_Index] & 0x3f; u8 const index = m_cp0[CP0_Index] & 0x3f;
if (index < ARRAY_LENGTH(m_tlb)) if (index < std::size(m_tlb))
{ {
tlb_entry const &entry = m_tlb[index]; tlb_entry const &entry = m_tlb[index];
@ -1538,7 +1538,7 @@ void r4000_base_device::cp0_tlbr()
void r4000_base_device::cp0_tlbwi(u8 const index) void r4000_base_device::cp0_tlbwi(u8 const index)
{ {
if (index < ARRAY_LENGTH(m_tlb)) if (index < std::size(m_tlb))
{ {
tlb_entry &entry = m_tlb[index]; tlb_entry &entry = m_tlb[index];
@ -1563,9 +1563,9 @@ void r4000_base_device::cp0_tlbwi(u8 const index)
void r4000_base_device::cp0_tlbwr() void r4000_base_device::cp0_tlbwr()
{ {
u8 const wired = m_cp0[CP0_Wired] & 0x3f; u8 const wired = m_cp0[CP0_Wired] & 0x3f;
u8 const unwired = ARRAY_LENGTH(m_tlb) - wired; u8 const unwired = std::size(m_tlb) - wired;
u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (ARRAY_LENGTH(m_tlb) - 1); u8 const index = (unwired > 0) ? ((total_cycles() - m_cp0_timer_zero) % unwired + wired) & 0x3f : (std::size(m_tlb) - 1);
cp0_tlbwi(index); cp0_tlbwi(index);
} }
@ -1573,7 +1573,7 @@ void r4000_base_device::cp0_tlbwr()
void r4000_base_device::cp0_tlbp() void r4000_base_device::cp0_tlbp()
{ {
m_cp0[CP0_Index] = 0x80000000; m_cp0[CP0_Index] = 0x80000000;
for (u8 index = 0; index < ARRAY_LENGTH(m_tlb); index++) for (u8 index = 0; index < std::size(m_tlb); index++)
{ {
tlb_entry const &entry = m_tlb[index]; tlb_entry const &entry = m_tlb[index];
@ -3615,7 +3615,7 @@ r4000_base_device::translate_result r4000_base_device::translate(int intention,
bool invalid = false; bool invalid = false;
bool modify = false; bool modify = false;
for (unsigned i = 0; i < ARRAY_LENGTH(m_tlb); i++) for (unsigned i = 0; i < std::size(m_tlb); i++)
{ {
unsigned const index = mru[i]; unsigned const index = mru[i];
tlb_entry const &entry = m_tlb[index]; tlb_entry const &entry = m_tlb[index];

View File

@ -1414,7 +1414,7 @@ void nec_disassembler::decode_opcode(std::ostream &stream, const NEC_I386_OPCODE
case GROUP: case GROUP:
handle_modrm( pc_base, pc, params ); handle_modrm( pc_base, pc, params );
for( i=0; i < ARRAY_LENGTH(group_op_table); i++ ) { for( i=0; i < std::size(group_op_table); i++ ) {
if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 ) if( strcmp(op->mnemonic, group_op_table[i].mnemonic) == 0 )
{ {
decode_opcode( stream, &group_op_table[i].opcode[MODRM_REG1], op1, pc_base, pc, opcodes, params ); decode_opcode( stream, &group_op_table[i].opcode[MODRM_REG1], op1, pc_base, pc, opcodes, params );

View File

@ -1919,7 +1919,7 @@ void ppc_device::ppccom_execute_mfdcr()
/* default handling */ /* default handling */
if (m_dcr_read_func.isnull()) { if (m_dcr_read_func.isnull()) {
osd_printf_debug("DCR %03X read\n", m_core->param0); osd_printf_debug("DCR %03X read\n", m_core->param0);
if (m_core->param0 < ARRAY_LENGTH(m_dcr)) if (m_core->param0 < std::size(m_dcr))
m_core->param1 = m_dcr[m_core->param0]; m_core->param1 = m_dcr[m_core->param0];
else else
m_core->param1 = 0; m_core->param1 = 0;
@ -2011,7 +2011,7 @@ void ppc_device::ppccom_execute_mtdcr()
/* default handling */ /* default handling */
if (m_dcr_write_func.isnull()) { if (m_dcr_write_func.isnull()) {
osd_printf_debug("DCR %03X write = %08X\n", m_core->param0, m_core->param1); osd_printf_debug("DCR %03X write = %08X\n", m_core->param0, m_core->param1);
if (m_core->param0 < ARRAY_LENGTH(m_dcr)) if (m_core->param0 < std::size(m_dcr))
m_dcr[m_core->param0] = m_core->param1; m_dcr[m_core->param0] = m_core->param1;
} else { } else {
m_dcr_write_func(m_core->param0,m_core->param1); m_dcr_write_func(m_core->param0,m_core->param1);
@ -2662,7 +2662,7 @@ void ppc_device::ppc4xx_spu_rx_data(uint8_t data)
uint32_t new_rxin; uint32_t new_rxin;
/* fail if we are going to overflow */ /* fail if we are going to overflow */
new_rxin = (m_spu.rxin + 1) % ARRAY_LENGTH(m_spu.rxbuffer); new_rxin = (m_spu.rxin + 1) % std::size(m_spu.rxbuffer);
if (new_rxin == m_spu.rxout) if (new_rxin == m_spu.rxout)
fatalerror("ppc4xx_spu_rx_data: buffer overrun!\n"); fatalerror("ppc4xx_spu_rx_data: buffer overrun!\n");
@ -2741,7 +2741,7 @@ TIMER_CALLBACK_MEMBER( ppc_device::ppc4xx_spu_callback )
/* consume the byte and advance the out pointer */ /* consume the byte and advance the out pointer */
rxbyte = m_spu.rxbuffer[m_spu.rxout]; rxbyte = m_spu.rxbuffer[m_spu.rxout];
m_spu.rxout = (m_spu.rxout + 1) % ARRAY_LENGTH(m_spu.rxbuffer); m_spu.rxout = (m_spu.rxout + 1) % std::size(m_spu.rxbuffer);
/* if we're not full, copy data to the buffer and update the line status */ /* if we're not full, copy data to the buffer and update the line status */
if (!(m_spu.regs[SPU4XX_LINE_STATUS] & 0x80)) if (!(m_spu.regs[SPU4XX_LINE_STATUS] & 0x80))
@ -2784,7 +2784,7 @@ uint8_t ppc4xx_device::ppc4xx_spu_r(offs_t offset)
break; break;
default: default:
if (offset < ARRAY_LENGTH(m_spu.regs)) if (offset < std::size(m_spu.regs))
result = m_spu.regs[offset]; result = m_spu.regs[offset];
break; break;
} }
@ -2848,7 +2848,7 @@ void ppc4xx_device::ppc4xx_spu_w(offs_t offset, uint8_t data)
break; break;
default: default:
if (offset < ARRAY_LENGTH(m_spu.regs)) if (offset < std::size(m_spu.regs))
m_spu.regs[offset] = data; m_spu.regs[offset] = data;
break; break;
} }

View File

@ -118,7 +118,7 @@ inline void ppc_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -137,7 +137,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -149,7 +149,7 @@ void ppc_device::save_fast_iregs(drcuml_block &block)
inline void ppc_device::load_fast_fregs(drcuml_block &block) inline void ppc_device::load_fast_fregs(drcuml_block &block)
{ {
for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++) for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++)
{ {
if (m_fdregmap[regnum].is_float_register()) if (m_fdregmap[regnum].is_float_register())
{ {
@ -160,7 +160,7 @@ inline void ppc_device::load_fast_fregs(drcuml_block &block)
void ppc_device::save_fast_fregs(drcuml_block &block) void ppc_device::save_fast_fregs(drcuml_block &block)
{ {
for (int regnum = 0; regnum < ARRAY_LENGTH(m_fdregmap); regnum++) for (int regnum = 0; regnum < std::size(m_fdregmap); regnum++)
{ {
if (m_fdregmap[regnum].is_float_register()) if (m_fdregmap[regnum].is_float_register())
{ {
@ -268,7 +268,7 @@ void ppc_device::ppcdrc_set_options(uint32_t options)
void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{ {
if (m_fastram_select < ARRAY_LENGTH(m_fastram)) if (m_fastram_select < std::size(m_fastram))
{ {
m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end; m_fastram[m_fastram_select].end = end;
@ -285,7 +285,7 @@ void ppc_device::ppcdrc_add_fastram(offs_t start, offs_t end, uint8_t readonly,
void ppc_device::ppcdrc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles) void ppc_device::ppcdrc_add_hotspot(offs_t pc, uint32_t opcode, uint32_t cycles)
{ {
if (m_hotspot_select < ARRAY_LENGTH(m_hotspot)) if (m_hotspot_select < std::size(m_hotspot))
{ {
m_hotspot[m_hotspot_select].pc = pc; m_hotspot[m_hotspot_select].pc = pc;
m_hotspot[m_hotspot_select].opcode = opcode; m_hotspot[m_hotspot_select].opcode = opcode;

View File

@ -63,7 +63,7 @@ void romp_device::device_start()
state_add(ROMP_SCR + ICS, "ICS", m_scr[ICS]); state_add(ROMP_SCR + ICS, "ICS", m_scr[ICS]);
state_add(ROMP_SCR + CS, "CS", m_scr[CS]); state_add(ROMP_SCR + CS, "CS", m_scr[CS]);
for (unsigned i = 0; i < ARRAY_LENGTH(m_gpr); i++) for (unsigned i = 0; i < std::size(m_gpr); i++)
state_add(ROMP_GPR + i, util::string_format("R%d", i).c_str(), m_gpr[i]); state_add(ROMP_GPR + i, util::string_format("R%d", i).c_str(), m_gpr[i]);
// register state for saving // register state for saving

View File

@ -91,7 +91,7 @@ inline void rsp_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
UML_MOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_rsp_state->r[regnum])); UML_MOV(block, ireg(m_regmap[regnum].ireg() - REG_I0), mem(&m_rsp_state->r[regnum]));
} }
@ -106,7 +106,7 @@ inline void rsp_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
UML_MOV(block, mem(&m_rsp_state->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0)); UML_MOV(block, mem(&m_rsp_state->r[regnum]), ireg(m_regmap[regnum].ireg() - REG_I0));
} }

View File

@ -2009,7 +2009,7 @@ void cfunc_printf_probe(void *param) { ((sh_common_execution *)param)->func_prin
void sh_common_execution::sh2drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base) void sh_common_execution::sh2drc_add_fastram(offs_t start, offs_t end, uint8_t readonly, void *base)
{ {
if (m_fastram_select < ARRAY_LENGTH(m_fastram)) if (m_fastram_select < std::size(m_fastram))
{ {
m_fastram[m_fastram_select].start = start; m_fastram[m_fastram_select].start = start;
m_fastram[m_fastram_select].end = end; m_fastram[m_fastram_select].end = end;
@ -2051,7 +2051,7 @@ void sh_common_execution::alloc_handle(uml::code_handle *&handleptr, const char
void sh_common_execution::load_fast_iregs(drcuml_block &block) void sh_common_execution::load_fast_iregs(drcuml_block &block)
{ {
for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (int regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -2068,7 +2068,7 @@ void sh_common_execution::load_fast_iregs(drcuml_block &block)
void sh_common_execution::save_fast_iregs(drcuml_block &block) void sh_common_execution::save_fast_iregs(drcuml_block &block)
{ {
for (int regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (int regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -4293,6 +4293,6 @@ void sh_common_execution::sh2drc_add_pcflush(offs_t address)
{ {
if (!allow_drc()) return; if (!allow_drc()) return;
if (m_pcfsel < ARRAY_LENGTH(m_pcflushes)) if (m_pcfsel < std::size(m_pcflushes))
m_pcflushes[m_pcfsel++] = address; m_pcflushes[m_pcfsel++] = address;
} }

View File

@ -470,8 +470,6 @@ void adsp21062_device::external_dma_write(uint32_t address, uint64_t data)
void adsp21062_device::device_start() void adsp21062_device::device_start()
{ {
int saveindex;
m_core = (sharc_internal_state *)m_cache.alloc_near(sizeof(sharc_internal_state)); m_core = (sharc_internal_state *)m_cache.alloc_near(sizeof(sharc_internal_state));
memset(m_core, 0, sizeof(sharc_internal_state)); memset(m_core, 0, sizeof(sharc_internal_state));
@ -672,8 +670,8 @@ void adsp21062_device::device_start()
m_core->fp1 = 1.0f; m_core->fp1 = 1.0f;
save_item(NAME(m_core->pc)); save_item(NAME(m_core->pc));
save_pointer(NAME(&m_core->r[0].r), ARRAY_LENGTH(m_core->r)); save_pointer(NAME(&m_core->r[0].r), std::size(m_core->r));
save_pointer(NAME(&m_core->reg_alt[0].r), ARRAY_LENGTH(m_core->reg_alt)); save_pointer(NAME(&m_core->reg_alt[0].r), std::size(m_core->reg_alt));
save_item(NAME(m_core->mrf)); save_item(NAME(m_core->mrf));
save_item(NAME(m_core->mrb)); save_item(NAME(m_core->mrb));
@ -709,18 +707,15 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->dag2_alt.b)); save_item(NAME(m_core->dag2_alt.b));
save_item(NAME(m_core->dag2_alt.l)); save_item(NAME(m_core->dag2_alt.l));
for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma); saveindex++) save_item(STRUCT_MEMBER(m_core->dma, control));
{ save_item(STRUCT_MEMBER(m_core->dma, int_index));
save_item(NAME(m_core->dma[saveindex].control), saveindex); save_item(STRUCT_MEMBER(m_core->dma, int_modifier));
save_item(NAME(m_core->dma[saveindex].int_index), saveindex); save_item(STRUCT_MEMBER(m_core->dma, int_count));
save_item(NAME(m_core->dma[saveindex].int_modifier), saveindex); save_item(STRUCT_MEMBER(m_core->dma, chain_ptr));
save_item(NAME(m_core->dma[saveindex].int_count), saveindex); save_item(STRUCT_MEMBER(m_core->dma, gen_purpose));
save_item(NAME(m_core->dma[saveindex].chain_ptr), saveindex); save_item(STRUCT_MEMBER(m_core->dma, ext_index));
save_item(NAME(m_core->dma[saveindex].gen_purpose), saveindex); save_item(STRUCT_MEMBER(m_core->dma, ext_modifier));
save_item(NAME(m_core->dma[saveindex].ext_index), saveindex); save_item(STRUCT_MEMBER(m_core->dma, ext_count));
save_item(NAME(m_core->dma[saveindex].ext_modifier), saveindex);
save_item(NAME(m_core->dma[saveindex].ext_count), saveindex);
}
save_item(NAME(m_core->mode1)); save_item(NAME(m_core->mode1));
save_item(NAME(m_core->mode2)); save_item(NAME(m_core->mode2));
@ -737,11 +732,8 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->syscon)); save_item(NAME(m_core->syscon));
save_item(NAME(m_core->sysstat)); save_item(NAME(m_core->sysstat));
for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->status_stack); saveindex++) save_item(STRUCT_MEMBER(m_core->status_stack, mode1));
{ save_item(STRUCT_MEMBER(m_core->status_stack, astat));
save_item(NAME(m_core->status_stack[saveindex].mode1), saveindex);
save_item(NAME(m_core->status_stack[saveindex].astat), saveindex);
}
save_item(NAME(m_core->status_stkp)); save_item(NAME(m_core->status_stkp));
save_item(NAME(m_core->px)); save_item(NAME(m_core->px));
@ -754,19 +746,16 @@ void adsp21062_device::device_start()
save_item(NAME(m_core->irq_pending)); save_item(NAME(m_core->irq_pending));
save_item(NAME(m_core->active_irq_num)); save_item(NAME(m_core->active_irq_num));
for (saveindex = 0; saveindex < ARRAY_LENGTH(m_core->dma_op); saveindex++) save_item(STRUCT_MEMBER(m_core->dma_op, src));
{ save_item(STRUCT_MEMBER(m_core->dma_op, dst));
save_item(NAME(m_core->dma_op[saveindex].src), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, chain_ptr));
save_item(NAME(m_core->dma_op[saveindex].dst), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, src_modifier));
save_item(NAME(m_core->dma_op[saveindex].chain_ptr), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, dst_modifier));
save_item(NAME(m_core->dma_op[saveindex].src_modifier), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, src_count));
save_item(NAME(m_core->dma_op[saveindex].dst_modifier), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, dst_count));
save_item(NAME(m_core->dma_op[saveindex].src_count), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, pmode));
save_item(NAME(m_core->dma_op[saveindex].dst_count), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, chained_direction));
save_item(NAME(m_core->dma_op[saveindex].pmode), saveindex); save_item(STRUCT_MEMBER(m_core->dma_op, active));
save_item(NAME(m_core->dma_op[saveindex].chained_direction), saveindex);
save_item(NAME(m_core->dma_op[saveindex].active), saveindex);
}
save_item(NAME(m_core->dma_status)); save_item(NAME(m_core->dma_status));

View File

@ -263,7 +263,7 @@ inline void adsp21062_device::load_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {
@ -282,7 +282,7 @@ void adsp21062_device::save_fast_iregs(drcuml_block &block)
{ {
int regnum; int regnum;
for (regnum = 0; regnum < ARRAY_LENGTH(m_regmap); regnum++) for (regnum = 0; regnum < std::size(m_regmap); regnum++)
{ {
if (m_regmap[regnum].is_int_register()) if (m_regmap[regnum].is_int_register())
{ {

View File

@ -49,7 +49,7 @@ sparc_base_device::sparc_base_device(const machine_config &mconfig, device_type
m_debugger_config = address_space_config("debug", ENDIANNESS_BIG, 32, 32); m_debugger_config = address_space_config("debug", ENDIANNESS_BIG, 32, 32);
for (int i = 0; i < 0x10; i++) for (int i = 0; i < 0x10; i++)
{ {
snprintf(asi_buf, ARRAY_LENGTH(asi_buf), "asi%X", i); snprintf(asi_buf, std::size(asi_buf), "asi%X", i);
m_asi_config[i] = address_space_config(asi_buf, ENDIANNESS_BIG, 32, 32); m_asi_config[i] = address_space_config(asi_buf, ENDIANNESS_BIG, 32, 32);
} }
} }
@ -417,7 +417,7 @@ void sparc_base_device::device_reset()
m_fp_exception = 0; m_fp_exception = 0;
m_fp_exception_pending = 0; m_fp_exception_pending = 0;
m_fpr_pending = 0; m_fpr_pending = 0;
m_pending_fpr = ARRAY_LENGTH(m_fpr); m_pending_fpr = std::size(m_fpr);
m_fpu_sequence_err = 0; m_fpu_sequence_err = 0;
m_cp_disabled = 0; m_cp_disabled = 0;
m_cp_exception = 0; m_cp_exception = 0;
@ -4834,7 +4834,7 @@ inline void sparc_base_device::execute_step()
m_fpr_pending--; m_fpr_pending--;
if (!m_fpr_pending) if (!m_fpr_pending)
{ {
m_pending_fpr = ARRAY_LENGTH(m_fpr); m_pending_fpr = std::size(m_fpr);
if (m_fp_exception_pending) if (m_fp_exception_pending)
{ {
m_fp_exception_pending = false; m_fp_exception_pending = false;

View File

@ -432,7 +432,7 @@ tms32032_device::tms32032_device(const machine_config &mconfig, const char *tag,
tms3203x_device::~tms3203x_device() tms3203x_device::~tms3203x_device()
{ {
#if (TMS_3203X_LOG_OPCODE_USAGE) #if (TMS_3203X_LOG_OPCODE_USAGE)
for (int i = 0; i < ARRAY_LENGTH(m_hits); i++) for (int i = 0; i < std::size(m_hits); i++)
if (m_hits[i] != 0) if (m_hits[i] != 0)
printf("%10d - %03X.%X\n", m_hits[i], i / 4, i % 4); printf("%10d - %03X.%X\n", m_hits[i], i / 4, i % 4);
#endif #endif

View File

@ -755,7 +755,7 @@ void tms340x0_device::device_start()
save_item(NAME(m_convmp)); save_item(NAME(m_convmp));
save_item(NAME(m_pixelshift)); save_item(NAME(m_pixelshift));
save_item(NAME(m_gfxcycles)); save_item(NAME(m_gfxcycles));
save_pointer(NAME(&m_regs[0].reg), ARRAY_LENGTH(m_regs)); save_pointer(NAME(&m_regs[0].reg), std::size(m_regs));
set_icountptr(m_icount); set_icountptr(m_icount);
} }

View File

@ -383,7 +383,7 @@ void tms9995_device::state_string_export(const device_state_entry &entry, std::s
{ {
static char const statestr[] = "LAECOPX-----IIII"; static char const statestr[] = "LAECOPX-----IIII";
char flags[17]; char flags[17];
memset(flags, 0x00, ARRAY_LENGTH(flags)); std::fill(std::begin(flags), std::end(flags), 0x00);
uint16_t val = 0x8000; uint16_t val = 0x8000;
if (entry.index()==STATE_GENFLAGS) if (entry.index()==STATE_GENFLAGS)
{ {

View File

@ -766,7 +766,7 @@ void uml::instruction::validate()
} }
// make sure we aren't missing any parameters // make sure we aren't missing any parameters
if (m_numparams < ARRAY_LENGTH(opinfo.param)) if (m_numparams < std::size(opinfo.param))
assert(opinfo.param[m_numparams].typemask == 0); assert(opinfo.param[m_numparams].typemask == 0);
#endif // MAME_DEBUG #endif // MAME_DEBUG
} }

View File

@ -309,7 +309,7 @@ void unsp_20_device::device_start()
void unsp_device::device_reset() void unsp_device::device_reset()
{ {
for (int i = 0; i < ARRAY_LENGTH(m_core->m_r); i++) for (int i = 0; i < std::size(m_core->m_r); i++)
{ {
if (i < m_numregs) if (i < m_numregs)
m_core->m_r[i] = 0; m_core->m_r[i] = 0;

View File

@ -364,7 +364,7 @@ std::string cassette_image_device::call_display()
cassette_state uistate = get_state() & CASSETTE_MASK_UISTATE; cassette_state uistate = get_state() & CASSETTE_MASK_UISTATE;
// choose which frame of the animation we are at // choose which frame of the animation we are at
int n = (int(position) / ANIMATION_FPS) % ARRAY_LENGTH(shapes); int n = (int(position) / ANIMATION_FPS) % std::size(shapes);
// play or record // play or record
const char *status_icon = (uistate == CASSETTE_PLAY) const char *status_icon = (uistate == CASSETTE_PLAY)

View File

@ -456,7 +456,7 @@ image_init_result legacy_floppy_image_device::internal_floppy_device_load(bool i
return image_init_result::PASS; return image_init_result::PASS;
error: error:
for (i = 0; i < ARRAY_LENGTH(errmap); i++) for (i = 0; i < std::size(errmap); i++)
{ {
if (err == errmap[i].ferr) if (err == errmap[i].ferr)
seterror(errmap[i].ierr, errmap[i].message); seterror(errmap[i].ierr, errmap[i].message);

View File

@ -723,7 +723,7 @@ unsigned lsi53c810_device::lsi53c810_dasm(char *buf, uint32_t pc)
buf += sprintf(buf, "%s ", op_mnemonic); buf += sprintf(buf, "%s ", op_mnemonic);
need_cojunction = false; need_cojunction = false;
for (i = 0; i < ARRAY_LENGTH(flags); i++) for (i = 0; i < std::size(flags); i++)
{ {
if (op & flags[i].flag) if (op & flags[i].flag)
{ {

View File

@ -197,7 +197,7 @@ bool c64h156_device::write_next_bit(bool bit, const attotime &limit)
if(etime > limit) if(etime > limit)
return true; return true;
if(bit && cur_live.write_position < ARRAY_LENGTH(cur_live.write_buffer)) if(bit && cur_live.write_position < std::size(cur_live.write_buffer))
cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period; cur_live.write_buffer[cur_live.write_position++] = cur_live.tm - m_period;
LOG("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit); LOG("%s write bit %u (%u)\n", cur_live.tm.as_string(), cur_live.bit_counter, bit);

View File

@ -152,7 +152,7 @@ uint16_t m68307_cpu_device::m68307_timer::read_tcn(uint16_t mem_mask, int which)
void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask, int which) void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask, int which)
{ {
assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); assert(which >= 0 && which < std::size(singletimer));
single_timer* tptr = &singletimer[which]; single_timer* tptr = &singletimer[which];
if (data & 0x2) if (data & 0x2)
{ {
@ -167,7 +167,7 @@ void m68307_cpu_device::m68307_timer::write_ter(uint16_t data, uint16_t mem_mask
void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which) void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask, int which)
{ {
m68307_cpu_device* m68k = parent; m68307_cpu_device* m68k = parent;
assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); assert(which >= 0 && which < std::size(singletimer));
single_timer* tptr = &singletimer[which]; single_timer* tptr = &singletimer[which];
COMBINE_DATA(&tptr->regs[m68307TIMER_TMR]); COMBINE_DATA(&tptr->regs[m68307TIMER_TMR]);
@ -216,7 +216,7 @@ void m68307_cpu_device::m68307_timer::write_tmr(uint16_t data, uint16_t mem_mask
void m68307_cpu_device::m68307_timer::write_trr(uint16_t data, uint16_t mem_mask, int which) void m68307_cpu_device::m68307_timer::write_trr(uint16_t data, uint16_t mem_mask, int which)
{ {
assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); assert(which >= 0 && which < std::size(singletimer));
single_timer* tptr = &singletimer[which]; single_timer* tptr = &singletimer[which];
COMBINE_DATA(&tptr->regs[m68307TIMER_TRR]); COMBINE_DATA(&tptr->regs[m68307TIMER_TRR]);
@ -248,7 +248,7 @@ void m68307_cpu_device::m68307_timer::reset()
bool m68307_cpu_device::m68307_timer::timer_int_pending(int which) const bool m68307_cpu_device::m68307_timer::timer_int_pending(int which) const
{ {
assert(which >= 0 && which < ARRAY_LENGTH(singletimer)); assert(which >= 0 && which < std::size(singletimer));
const single_timer* tptr = &singletimer[which]; const single_timer* tptr = &singletimer[which];
return BIT(tptr->regs[m68307TIMER_TER], 1) && BIT(tptr->regs[m68307TIMER_TMR], 4); return BIT(tptr->regs[m68307TIMER_TER], 1) && BIT(tptr->regs[m68307TIMER_TMR], 4);

View File

@ -216,13 +216,13 @@ void am2901b_device::disassemble()
}; };
char dasm_buf[64]; char dasm_buf[64];
int buf_idx = snprintf(dasm_buf, ARRAY_LENGTH(dasm_buf), "%s %s", s_func_table[(m_i >> 3) & 7], s_dst_table[(m_i >> 6) & 7]); int buf_idx = snprintf(dasm_buf, std::size(dasm_buf), "%s %s", s_func_table[(m_i >> 3) & 7], s_dst_table[(m_i >> 6) & 7]);
while (buf_idx < 12) while (buf_idx < 12)
{ {
dasm_buf[buf_idx] = ' '; dasm_buf[buf_idx] = ' ';
buf_idx++; buf_idx++;
} }
snprintf(dasm_buf + buf_idx, ARRAY_LENGTH(dasm_buf) - 12, "%c,%c", s_r_table[m_i & 7], s_s_table[m_i & 7]); snprintf(dasm_buf + buf_idx, std::size(dasm_buf) - 12, "%c,%c", s_r_table[m_i & 7], s_s_table[m_i & 7]);
LOG("%s: %s\n", machine().describe_context(), dasm_buf); LOG("%s: %s\n", machine().describe_context(), dasm_buf);
} }

View File

@ -629,7 +629,7 @@ bool amiga_fdc_device::pll_t::write_next_bit(bool bit, attotime &tm, floppy_imag
uint16_t pre_counter = counter; uint16_t pre_counter = counter;
counter += increment; counter += increment;
if(bit && !(pre_counter & 0x400) && (counter & 0x400)) if(bit && !(pre_counter & 0x400) && (counter & 0x400))
if(write_position < ARRAY_LENGTH(write_buffer)) if(write_position < std::size(write_buffer))
write_buffer[write_position++] = etime; write_buffer[write_position++] = etime;
slot++; slot++;
tm = etime; tm = etime;

View File

@ -233,7 +233,7 @@ static uint8_t apple525_process_byte(device_t *img, int write_value)
} }
disk->position++; disk->position++;
disk->position %= ARRAY_LENGTH(disk->track_data); disk->position %= std::size(disk->track_data);
/* when writing; save the current track after every full sector write */ /* when writing; save the current track after every full sector write */
if ((write_value >= 0) && ((disk->position % APPLE2_NIBBLE_SIZE) == 0)) if ((write_value >= 0) && ((disk->position % APPLE2_NIBBLE_SIZE) == 0))

View File

@ -331,7 +331,7 @@ void eeprom_serial_base_device::set_state(eeprom_state newstate)
{ STATE_WAIT_FOR_COMPLETION, "WAIT_FOR_COMPLETION" }, { STATE_WAIT_FOR_COMPLETION, "WAIT_FOR_COMPLETION" },
}; };
const char *newstate_string = "UNKNOWN"; const char *newstate_string = "UNKNOWN";
for (int index = 0; index < ARRAY_LENGTH(s_state_names); index++) for (int index = 0; index < std::size(s_state_names); index++)
if (s_state_names[index].state == newstate) if (s_state_names[index].state == newstate)
newstate_string = s_state_names[index].string; newstate_string = s_state_names[index].string;
LOG2("New state: %s\n", newstate_string); LOG2("New state: %s\n", newstate_string);
@ -484,7 +484,7 @@ void eeprom_serial_base_device::execute_command()
{ COMMAND_ERASEALL, "Execute command:ERASEALL\n" }, { COMMAND_ERASEALL, "Execute command:ERASEALL\n" },
}; };
const char *command_string = s_command_names[0].string; const char *command_string = s_command_names[0].string;
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) for (int index = 0; index < std::size(s_command_names); index++)
if (s_command_names[index].command == m_command) if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string; command_string = s_command_names[index].string;
LOG1(command_string, m_address); LOG1(command_string, m_address);
@ -565,7 +565,7 @@ void eeprom_serial_base_device::execute_write_command()
{ COMMAND_WRITEALL, "Execute write command: WRITEALL (%X) = 0x%X\n" }, { COMMAND_WRITEALL, "Execute write command: WRITEALL (%X) = 0x%X\n" },
}; };
const char *command_string = "UNKNOWN"; const char *command_string = "UNKNOWN";
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) for (int index = 0; index < std::size(s_command_names); index++)
if (s_command_names[index].command == m_command) if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string; command_string = s_command_names[index].string;
LOG1(command_string, m_address, m_shift_register); LOG1(command_string, m_address, m_shift_register);
@ -807,7 +807,7 @@ void eeprom_serial_x24c44_device::execute_command()
{ COMMAND_COPY_RAM_TO_EEPROM, "Execute command:COPY_RAM_TO_EEPROM\n" }, { COMMAND_COPY_RAM_TO_EEPROM, "Execute command:COPY_RAM_TO_EEPROM\n" },
}; };
const char *command_string = s_command_names[0].string; const char *command_string = s_command_names[0].string;
for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) for (int index = 0; index < std::size(s_command_names); index++)
if (s_command_names[index].command == m_command) if (s_command_names[index].command == m_command)
command_string = s_command_names[index].string; command_string = s_command_names[index].string;
LOG1(command_string, m_address); LOG1(command_string, m_address);

View File

@ -127,7 +127,7 @@ bool fdc_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *flop
if(etime > limit) if(etime > limit)
return true; return true;
if(bit && write_position < ARRAY_LENGTH(write_buffer)) if(bit && write_position < std::size(write_buffer))
write_buffer[write_position++] = ctime + period/2; write_buffer[write_position++] = ctime + period/2;
tm = etime; tm = etime;

View File

@ -243,10 +243,8 @@ void gt64xxx_device::device_start()
save_item(NAME(m_cpu_stalled_mem_mask)); save_item(NAME(m_cpu_stalled_mem_mask));
save_item(NAME(m_prev_addr)); save_item(NAME(m_prev_addr));
save_item(NAME(m_reg)); save_item(NAME(m_reg));
for (int i = 0; i < ARRAY_LENGTH(m_timer); i++) { save_item(STRUCT_MEMBER(m_timer, active));
save_item(NAME(m_timer[i].active), i); save_item(STRUCT_MEMBER(m_timer, count));
save_item(NAME(m_timer[i].count), i);
}
save_item(NAME(m_dma_active)); save_item(NAME(m_dma_active));
// m_ram[4] // m_ram[4]
save_pointer(NAME(m_ram[0].data()), m_simm_size[0] / 4); save_pointer(NAME(m_ram[0].data()), m_simm_size[0] / 4);

View File

@ -298,7 +298,7 @@ void i8279_device::timer_mainloop()
{ {
u8 rl = m_in_rl_cb(0) ^ 0xff; // inverted u8 rl = m_in_rl_cb(0) ^ 0xff; // inverted
u8 addr = m_scanner & 7; u8 addr = m_scanner & 7;
assert(addr < ARRAY_LENGTH(m_s_ram)); assert(addr < std::size(m_s_ram));
// see if key still down from last time // see if key still down from last time
u8 keys_down = rl & ~m_s_ram[addr]; u8 keys_down = rl & ~m_s_ram[addr];
@ -444,7 +444,7 @@ u8 i8279_device::data_r()
if (sensor_mode) if (sensor_mode)
{ {
// read sensor ram // read sensor ram
assert(m_s_ram_ptr < ARRAY_LENGTH(m_s_ram)); assert(m_s_ram_ptr < std::size(m_s_ram));
data = m_s_ram[m_s_ram_ptr]; data = m_s_ram[m_s_ram_ptr];
if (!machine().side_effects_disabled()) if (!machine().side_effects_disabled())
{ {

View File

@ -106,8 +106,8 @@ void device_matrix_keyboard_interface<ROW_COUNT>::typematic_stop()
template <uint8_t ROW_COUNT> template <uint8_t ROW_COUNT>
TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface<ROW_COUNT>::scan_row) TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface<ROW_COUNT>::scan_row)
{ {
assert(m_next_row < ARRAY_LENGTH(m_key_rows)); assert(m_next_row < std::size(m_key_rows));
assert(m_next_row < ARRAY_LENGTH(m_key_states)); assert(m_next_row < std::size(m_key_states));
will_scan_row(m_next_row); will_scan_row(m_next_row);
@ -128,7 +128,7 @@ TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface<ROW_COUNT>::scan_row)
} }
} }
m_next_row = (m_next_row + 1) % ARRAY_LENGTH(m_key_rows); m_next_row = (m_next_row + 1) % std::size(m_key_rows);
if (m_next_row == 0) if (m_next_row == 0)
scan_complete(); scan_complete();
} }

View File

@ -201,7 +201,7 @@ uint32_t laserdisc_device::screen_update(screen_device &screen, bitmap_rgb32 &bi
} }
// swap to the next bitmap // swap to the next bitmap
m_overindex = (m_overindex + 1) % ARRAY_LENGTH(m_overbitmap); m_overindex = (m_overindex + 1) % std::size(m_overbitmap);
} }
return 0; return 0;
} }
@ -870,7 +870,7 @@ laserdisc_device::frame_data &laserdisc_device::current_frame()
// determine the most recent live set of frames // determine the most recent live set of frames
frame_data *frame = &m_frame[m_videoindex]; frame_data *frame = &m_frame[m_videoindex];
if (frame->m_numfields < 2) if (frame->m_numfields < 2)
frame = &m_frame[(m_videoindex + ARRAY_LENGTH(m_frame) - 1) % ARRAY_LENGTH(m_frame)]; frame = &m_frame[(m_videoindex + std::size(m_frame) - 1) % std::size(m_frame)];
return *frame; return *frame;
} }
@ -906,7 +906,7 @@ void laserdisc_device::read_track_data()
if ((vbidata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE) if ((vbidata.line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
{ {
if (frame->m_numfields >= 2) if (frame->m_numfields >= 2)
m_videoindex = (m_videoindex + 1) % ARRAY_LENGTH(m_frame); m_videoindex = (m_videoindex + 1) % std::size(m_frame);
frame = &m_frame[m_videoindex]; frame = &m_frame[m_videoindex];
frame->m_numfields = 0; frame->m_numfields = 0;
} }

View File

@ -392,7 +392,7 @@ uint8_t pioneer_ldv1000_device::z80_decoder_display_port_r(offs_t offset)
if (m_portselect == 4) if (m_portselect == 4)
{ {
m_vbiready = false; m_vbiready = false;
result = m_vbi[m_vbiindex++ % ARRAY_LENGTH(m_vbi)]; result = m_vbi[m_vbiindex++ % std::size(m_vbi)];
} }
} }
return result; return result;

View File

@ -233,7 +233,7 @@ void philips_22vp931_device::device_timer(emu_timer &timer, device_timer_id id,
m_fromcontroller_pending = true; m_fromcontroller_pending = true;
// track the commands for debugging purposes // track the commands for debugging purposes
if (m_cmdcount < ARRAY_LENGTH(m_cmdbuf)) if (m_cmdcount < std::size(m_cmdbuf))
{ {
m_cmdbuf[m_cmdcount++ % 3] = param; m_cmdbuf[m_cmdcount++ % 3] = param;
if (LOG_COMMANDS && m_cmdcount % 3 == 0) if (LOG_COMMANDS && m_cmdcount % 3 == 0)

View File

@ -108,7 +108,7 @@ void ns32081_device::device_start()
void ns32081_device::device_reset() void ns32081_device::device_reset()
{ {
m_fsr = 0; m_fsr = 0;
std::fill_n(&m_f[0], ARRAY_LENGTH(m_f), 0); std::fill(std::begin(m_f), std::end(m_f), 0);
m_state = IDLE; m_state = IDLE;
} }

View File

@ -544,7 +544,7 @@ bool nscsi_full_device::scsi_command_done(uint8_t command, uint8_t length)
nscsi_full_device::control *nscsi_full_device::buf_control_push() nscsi_full_device::control *nscsi_full_device::buf_control_push()
{ {
if(buf_control_wpos == int(ARRAY_LENGTH(buf_control))) if(buf_control_wpos == int(std::size(buf_control)))
throw emu_fatalerror("%s: buf_control overflow\n", tag()); throw emu_fatalerror("%s: buf_control overflow\n", tag());
control *c = buf_control + buf_control_wpos; control *c = buf_control + buf_control_wpos;

View File

@ -104,9 +104,7 @@ void pci_device::device_start()
bank_count = 0; bank_count = 0;
bank_reg_count = 0; bank_reg_count = 0;
for (int i = 0; i < ARRAY_LENGTH(bank_infos); i++) { save_item(STRUCT_MEMBER(bank_infos, adr));
save_item(NAME(bank_infos[i].adr), i);
}
save_item(NAME(command)); save_item(NAME(command));
save_item(NAME(command_mask)); save_item(NAME(command_mask));
save_item(NAME(status)); save_item(NAME(status));

View File

@ -315,10 +315,10 @@ void pc_keyboard_device::device_start()
save_item(NAME(m_on)); save_item(NAME(m_on));
save_item(NAME(m_head)); save_item(NAME(m_head));
save_item(NAME(m_tail)); save_item(NAME(m_tail));
save_pointer(NAME(m_queue), ARRAY_LENGTH(m_queue)); save_item(NAME(m_queue));
save_pointer(NAME(m_make), ARRAY_LENGTH(m_make)); save_item(NAME(m_make));
memset(m_make, 0, sizeof(m_make)); std::fill(std::begin(m_make), std::end(m_make), 0);
machine().natkeyboard().configure( machine().natkeyboard().configure(
ioport_queue_chars_delegate(&pc_keyboard_device::queue_chars, this), ioport_queue_chars_delegate(&pc_keyboard_device::queue_chars, this),
@ -383,7 +383,7 @@ void pc_keyboard_device::queue_insert(uint8_t data)
m_queue[m_head] = data; m_queue[m_head] = data;
m_head++; m_head++;
m_head %= ARRAY_LENGTH(m_queue); m_head %= std::size(m_queue);
} }
@ -392,7 +392,7 @@ int pc_keyboard_device::queue_size(void)
int queue_size; int queue_size;
queue_size = m_head - m_tail; queue_size = m_head - m_tail;
if (queue_size < 0) if (queue_size < 0)
queue_size += ARRAY_LENGTH(m_queue); queue_size += std::size(m_queue);
return queue_size; return queue_size;
} }
@ -626,7 +626,7 @@ uint8_t pc_keyboard_device::read()
logerror("read(): Keyboard Read 0x%02x\n",data); logerror("read(): Keyboard Read 0x%02x\n",data);
m_tail++; m_tail++;
m_tail %= ARRAY_LENGTH(m_queue); m_tail %= std::size(m_queue);
return data; return data;
} }

View File

@ -268,7 +268,7 @@ READ_LINE_MEMBER( rtc4543_device::data_r )
void rtc4543_device::load_bit(int reg) void rtc4543_device::load_bit(int reg)
{ {
assert(reg < ARRAY_LENGTH(m_regs)); assert(reg < std::size(m_regs));
int bit = m_curbit & 7; int bit = m_curbit & 7;
// reload data? // reload data?
@ -289,7 +289,7 @@ void rtc4543_device::load_bit(int reg)
void rtc4543_device::store_bit(int reg) void rtc4543_device::store_bit(int reg)
{ {
assert(reg < ARRAY_LENGTH(m_regs)); assert(reg < std::size(m_regs));
int bit = m_curbit & 7; int bit = m_curbit & 7;
m_regs[reg] &= ~(1 << bit); m_regs[reg] &= ~(1 << bit);

View File

@ -1919,7 +1919,7 @@ void S3C24_CLASS_NAME::s3c24xx_gpio_w(offs_t offset, uint32_t data, uint32_t mem
uint32_t S3C24_CLASS_NAME::s3c24xx_memcon_r(offs_t offset, uint32_t mem_mask) uint32_t S3C24_CLASS_NAME::s3c24xx_memcon_r(offs_t offset, uint32_t mem_mask)
{ {
assert(offset < ARRAY_LENGTH(m_memcon.regs.data)); assert(offset < std::size(m_memcon.regs.data));
uint32_t data = m_memcon.regs.data[offset]; uint32_t data = m_memcon.regs.data[offset];
LOGMASKED(LOG_MEMCON, "%s: memcon read: %08x = %08x & %08x\n", machine().describe_context(), S3C24XX_BASE_MEMCON + (offset << 2), data, mem_mask); LOGMASKED(LOG_MEMCON, "%s: memcon read: %08x = %08x & %08x\n", machine().describe_context(), S3C24XX_BASE_MEMCON + (offset << 2), data, mem_mask);
return data; return data;

View File

@ -429,7 +429,7 @@ void sa1110_periphs_device::rcv_complete()
void sa1110_periphs_device::tra_complete() void sa1110_periphs_device::tra_complete()
{ {
m_uart_regs.tx_fifo_count--; m_uart_regs.tx_fifo_count--;
m_uart_regs.tx_fifo_read_idx = (m_uart_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_uart_regs.tx_fifo); m_uart_regs.tx_fifo_read_idx = (m_uart_regs.tx_fifo_read_idx + 1) % std::size(m_uart_regs.tx_fifo);
m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT); m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT);
if (m_uart_regs.tx_fifo_count) if (m_uart_regs.tx_fifo_count)
@ -463,7 +463,7 @@ void sa1110_periphs_device::uart_update_eif_status()
bool has_error = false; bool has_error = false;
for (int i = 0; i < 4 && i < m_uart_regs.rx_fifo_count; i++) for (int i = 0; i < 4 && i < m_uart_regs.rx_fifo_count; i++)
{ {
const int read_idx = (m_uart_regs.rx_fifo_read_idx + i) % ARRAY_LENGTH(m_uart_regs.rx_fifo); const int read_idx = (m_uart_regs.rx_fifo_read_idx + i) % std::size(m_uart_regs.rx_fifo);
if (m_uart_regs.rx_fifo[read_idx] & 0x700) if (m_uart_regs.rx_fifo[read_idx] & 0x700)
{ {
has_error = true; has_error = true;
@ -485,7 +485,7 @@ void sa1110_periphs_device::uart_update_eif_status()
void sa1110_periphs_device::uart_write_receive_fifo(uint16_t data_and_flags) void sa1110_periphs_device::uart_write_receive_fifo(uint16_t data_and_flags)
{ {
if (m_uart_regs.rx_fifo_count >= ARRAY_LENGTH(m_uart_regs.rx_fifo)) if (m_uart_regs.rx_fifo_count >= std::size(m_uart_regs.rx_fifo))
return; return;
if (!BIT(m_uart_regs.utcr[3], UTCR3_RXE_BIT)) if (!BIT(m_uart_regs.utcr[3], UTCR3_RXE_BIT))
return; return;
@ -493,7 +493,7 @@ void sa1110_periphs_device::uart_write_receive_fifo(uint16_t data_and_flags)
// fill FIFO entry // fill FIFO entry
m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_write_idx] = data_and_flags; m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_write_idx] = data_and_flags;
m_uart_regs.rx_fifo_count++; m_uart_regs.rx_fifo_count++;
m_uart_regs.rx_fifo_write_idx = (m_uart_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_uart_regs.rx_fifo); m_uart_regs.rx_fifo_write_idx = (m_uart_regs.rx_fifo_write_idx + 1) % std::size(m_uart_regs.rx_fifo);
// update error flags // update error flags
uart_update_eif_status(); uart_update_eif_status();
@ -507,7 +507,7 @@ uint8_t sa1110_periphs_device::uart_read_receive_fifo()
const uint8_t data = m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_read_idx]; const uint8_t data = m_uart_regs.rx_fifo[m_uart_regs.rx_fifo_read_idx];
if (m_uart_regs.rx_fifo_count) if (m_uart_regs.rx_fifo_count)
{ {
m_uart_regs.rx_fifo_read_idx = (m_uart_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_uart_regs.rx_fifo); m_uart_regs.rx_fifo_read_idx = (m_uart_regs.rx_fifo_read_idx + 1) % std::size(m_uart_regs.rx_fifo);
m_uart_regs.rx_fifo_count--; m_uart_regs.rx_fifo_count--;
if (m_uart_regs.rx_fifo_count) if (m_uart_regs.rx_fifo_count)
{ {
@ -545,7 +545,7 @@ void sa1110_periphs_device::uart_check_rx_fifo_service()
void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data) void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data)
{ {
if (m_uart_regs.tx_fifo_count >= ARRAY_LENGTH(m_uart_regs.tx_fifo)) if (m_uart_regs.tx_fifo_count >= std::size(m_uart_regs.tx_fifo))
return; return;
if (!BIT(m_uart_regs.utcr[3], UTCR3_TXE_BIT)) if (!BIT(m_uart_regs.utcr[3], UTCR3_TXE_BIT))
return; return;
@ -560,7 +560,7 @@ void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data)
// fill FIFO entry // fill FIFO entry
m_uart_regs.tx_fifo[m_uart_regs.tx_fifo_write_idx] = data; m_uart_regs.tx_fifo[m_uart_regs.tx_fifo_write_idx] = data;
m_uart_regs.tx_fifo_count++; m_uart_regs.tx_fifo_count++;
m_uart_regs.tx_fifo_write_idx = (m_uart_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_uart_regs.tx_fifo); m_uart_regs.tx_fifo_write_idx = (m_uart_regs.tx_fifo_write_idx + 1) % std::size(m_uart_regs.tx_fifo);
// update FIFO-service interrupt // update FIFO-service interrupt
uart_check_tx_fifo_service(); uart_check_tx_fifo_service();
@ -568,7 +568,7 @@ void sa1110_periphs_device::uart_write_transmit_fifo(uint8_t data)
void sa1110_periphs_device::uart_check_tx_fifo_service() void sa1110_periphs_device::uart_check_tx_fifo_service()
{ {
if (m_uart_regs.tx_fifo_count < ARRAY_LENGTH(m_uart_regs.tx_fifo)) if (m_uart_regs.tx_fifo_count < std::size(m_uart_regs.tx_fifo))
m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT); m_uart_regs.utsr1 |= (1 << UTSR1_TNF_BIT);
else else
m_uart_regs.utsr1 &= ~(1 << UTSR1_TNF_BIT); m_uart_regs.utsr1 &= ~(1 << UTSR1_TNF_BIT);
@ -808,7 +808,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::mcp_audio_tx_callback)
if (m_mcp_regs.audio_tx_fifo_count) if (m_mcp_regs.audio_tx_fifo_count)
{ {
m_mcp_regs.audio_tx_fifo_count--; m_mcp_regs.audio_tx_fifo_count--;
m_mcp_regs.audio_tx_fifo_read_idx = (m_mcp_regs.audio_tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo); m_mcp_regs.audio_tx_fifo_read_idx = (m_mcp_regs.audio_tx_fifo_read_idx + 1) % std::size(m_mcp_regs.audio_tx_fifo);
m_mcp_regs.mcsr &= ~(1 << MCSR_ATU_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_ATU_BIT);
m_mcp_irqs->in_w<MCP_AUDIO_UNDERRUN>(0); m_mcp_irqs->in_w<MCP_AUDIO_UNDERRUN>(0);
@ -833,7 +833,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::mcp_telecom_tx_callback)
if (m_mcp_regs.telecom_tx_fifo_count) if (m_mcp_regs.telecom_tx_fifo_count)
{ {
m_mcp_regs.telecom_tx_fifo_count--; m_mcp_regs.telecom_tx_fifo_count--;
m_mcp_regs.telecom_tx_fifo_read_idx = (m_mcp_regs.telecom_tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo); m_mcp_regs.telecom_tx_fifo_read_idx = (m_mcp_regs.telecom_tx_fifo_read_idx + 1) % std::size(m_mcp_regs.telecom_tx_fifo);
m_mcp_regs.mcsr &= ~(1 << MCSR_TTU_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_TTU_BIT);
m_mcp_irqs->in_w<MCP_TELECOM_UNDERRUN>(0); m_mcp_irqs->in_w<MCP_TELECOM_UNDERRUN>(0);
@ -853,7 +853,7 @@ uint16_t sa1110_periphs_device::mcp_read_audio_fifo()
if (m_mcp_regs.audio_rx_fifo_count) if (m_mcp_regs.audio_rx_fifo_count)
{ {
m_mcp_regs.audio_rx_fifo_count--; m_mcp_regs.audio_rx_fifo_count--;
m_mcp_regs.audio_rx_fifo_read_idx = (m_mcp_regs.audio_rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_rx_fifo); m_mcp_regs.audio_rx_fifo_read_idx = (m_mcp_regs.audio_rx_fifo_read_idx + 1) % std::size(m_mcp_regs.audio_rx_fifo);
const bool half_full = m_mcp_regs.audio_rx_fifo_count >= 4; const bool half_full = m_mcp_regs.audio_rx_fifo_count >= 4;
m_mcp_regs.mcsr &= ~(1 << MCSR_ARS_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_ARS_BIT);
@ -878,7 +878,7 @@ uint16_t sa1110_periphs_device::mcp_read_telecom_fifo()
if (m_mcp_regs.telecom_rx_fifo_count) if (m_mcp_regs.telecom_rx_fifo_count)
{ {
m_mcp_regs.telecom_rx_fifo_count--; m_mcp_regs.telecom_rx_fifo_count--;
m_mcp_regs.telecom_rx_fifo_read_idx = (m_mcp_regs.telecom_rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_rx_fifo); m_mcp_regs.telecom_rx_fifo_read_idx = (m_mcp_regs.telecom_rx_fifo_read_idx + 1) % std::size(m_mcp_regs.telecom_rx_fifo);
const bool half_full = m_mcp_regs.telecom_rx_fifo_count >= 4; const bool half_full = m_mcp_regs.telecom_rx_fifo_count >= 4;
m_mcp_regs.mcsr &= ~(1 << MCSR_TRS_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_TRS_BIT);
@ -935,14 +935,14 @@ void sa1110_periphs_device::mcp_set_enabled(bool enabled)
void sa1110_periphs_device::mcp_audio_tx_fifo_push(const uint16_t value) void sa1110_periphs_device::mcp_audio_tx_fifo_push(const uint16_t value)
{ {
if (m_mcp_regs.audio_rx_fifo_count == ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)) if (m_mcp_regs.audio_rx_fifo_count == std::size(m_mcp_regs.audio_tx_fifo))
return; return;
m_mcp_regs.audio_tx_fifo[m_mcp_regs.audio_tx_fifo_write_idx] = value; m_mcp_regs.audio_tx_fifo[m_mcp_regs.audio_tx_fifo_write_idx] = value;
m_mcp_regs.audio_rx_fifo_write_idx = (m_mcp_regs.audio_tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo); m_mcp_regs.audio_rx_fifo_write_idx = (m_mcp_regs.audio_tx_fifo_write_idx + 1) % std::size(m_mcp_regs.audio_tx_fifo);
m_mcp_regs.audio_rx_fifo_count++; m_mcp_regs.audio_rx_fifo_count++;
if (m_mcp_regs.audio_tx_fifo_count == ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)) if (m_mcp_regs.audio_tx_fifo_count == std::size(m_mcp_regs.audio_tx_fifo))
m_mcp_regs.mcsr &= ~(1 << MCSR_ANF_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_ANF_BIT);
if (m_mcp_regs.audio_tx_fifo_count >= 4) if (m_mcp_regs.audio_tx_fifo_count >= 4)
@ -961,14 +961,14 @@ void sa1110_periphs_device::mcp_audio_tx_fifo_push(const uint16_t value)
void sa1110_periphs_device::mcp_telecom_tx_fifo_push(const uint16_t value) void sa1110_periphs_device::mcp_telecom_tx_fifo_push(const uint16_t value)
{ {
if (m_mcp_regs.telecom_rx_fifo_count == ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)) if (m_mcp_regs.telecom_rx_fifo_count == std::size(m_mcp_regs.telecom_tx_fifo))
return; return;
m_mcp_regs.telecom_tx_fifo[m_mcp_regs.telecom_tx_fifo_write_idx] = value; m_mcp_regs.telecom_tx_fifo[m_mcp_regs.telecom_tx_fifo_write_idx] = value;
m_mcp_regs.telecom_rx_fifo_write_idx = (m_mcp_regs.telecom_tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo); m_mcp_regs.telecom_rx_fifo_write_idx = (m_mcp_regs.telecom_tx_fifo_write_idx + 1) % std::size(m_mcp_regs.telecom_tx_fifo);
m_mcp_regs.telecom_rx_fifo_count++; m_mcp_regs.telecom_rx_fifo_count++;
if (m_mcp_regs.telecom_tx_fifo_count == ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)) if (m_mcp_regs.telecom_tx_fifo_count == std::size(m_mcp_regs.telecom_tx_fifo))
m_mcp_regs.mcsr &= ~(1 << MCSR_TNF_BIT); m_mcp_regs.mcsr &= ~(1 << MCSR_TNF_BIT);
if (m_mcp_regs.audio_tx_fifo_count >= 4) if (m_mcp_regs.audio_tx_fifo_count >= 4)
@ -1156,7 +1156,7 @@ TIMER_CALLBACK_MEMBER(sa1110_periphs_device::ssp_tx_callback)
const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx]; const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx];
m_ssp_out(data); m_ssp_out(data);
m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % std::size(m_ssp_regs.tx_fifo);
m_ssp_regs.tx_fifo_count--; m_ssp_regs.tx_fifo_count--;
m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT);
@ -1169,7 +1169,7 @@ void sa1110_periphs_device::ssp_update_enable_state()
{ {
if (BIT(m_ssp_regs.sscr0, SSCR0_SSE_BIT)) if (BIT(m_ssp_regs.sscr0, SSCR0_SSE_BIT))
{ {
if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo))
m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT);
else else
m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT); m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT);
@ -1227,10 +1227,10 @@ void sa1110_periphs_device::ssp_update_rx_level()
void sa1110_periphs_device::ssp_rx_fifo_push(const uint16_t data) void sa1110_periphs_device::ssp_rx_fifo_push(const uint16_t data)
{ {
if (m_ssp_regs.rx_fifo_count < ARRAY_LENGTH(m_ssp_regs.rx_fifo)) if (m_ssp_regs.rx_fifo_count < std::size(m_ssp_regs.rx_fifo))
{ {
m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data; m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data;
m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % std::size(m_ssp_regs.rx_fifo);
m_ssp_regs.rx_fifo_count++; m_ssp_regs.rx_fifo_count++;
m_ssp_regs.sssr |= (1 << SSSR_RNE_BIT); m_ssp_regs.sssr |= (1 << SSSR_RNE_BIT);
@ -1249,13 +1249,13 @@ void sa1110_periphs_device::ssp_update_tx_level()
void sa1110_periphs_device::ssp_tx_fifo_push(const uint16_t data) void sa1110_periphs_device::ssp_tx_fifo_push(const uint16_t data)
{ {
if (m_ssp_regs.tx_fifo_count < ARRAY_LENGTH(m_ssp_regs.tx_fifo)) if (m_ssp_regs.tx_fifo_count < std::size(m_ssp_regs.tx_fifo))
{ {
m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data; m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data;
m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % std::size(m_ssp_regs.tx_fifo);
m_ssp_regs.tx_fifo_count++; m_ssp_regs.tx_fifo_count++;
if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo))
m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT); m_ssp_regs.sssr |= (1 << SSSR_TNF_BIT);
else else
m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT); m_ssp_regs.sssr &= ~(1 << SSSR_TNF_BIT);
@ -1274,7 +1274,7 @@ uint16_t sa1110_periphs_device::ssp_rx_fifo_pop()
uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx]; uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx];
if (m_ssp_regs.rx_fifo_count) if (m_ssp_regs.rx_fifo_count)
{ {
m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % std::size(m_ssp_regs.rx_fifo);
m_ssp_regs.rx_fifo_count--; m_ssp_regs.rx_fifo_count--;
if (m_ssp_regs.rx_fifo_count == 0) if (m_ssp_regs.rx_fifo_count == 0)
@ -2464,15 +2464,15 @@ void sa1110_periphs_device::device_reset()
m_udc_regs.udcsr = 0; m_udc_regs.udcsr = 0;
// init ICP // init ICP
memset(m_icp_regs.uart.utcr, 0, sizeof(uint32_t) * 4); std::fill_n(&m_icp_regs.uart.utcr[0], 4, 0);
m_icp_regs.uart.utsr0 = 0; m_icp_regs.uart.utsr0 = 0;
m_icp_regs.uart.utsr1 = 0; m_icp_regs.uart.utsr1 = 0;
memset(m_icp_regs.uart.rx_fifo, 0, sizeof(uint16_t) * 12); std::fill_n(&m_icp_regs.uart.rx_fifo[0], 12, 0);
m_icp_regs.uart.rx_fifo_read_idx = 0; m_icp_regs.uart.rx_fifo_read_idx = 0;
m_icp_regs.uart.rx_fifo_write_idx = 0; m_icp_regs.uart.rx_fifo_write_idx = 0;
m_icp_regs.uart.rx_fifo_count = 0; m_icp_regs.uart.rx_fifo_count = 0;
m_icp_regs.uart_rx_timer->adjust(attotime::never); m_icp_regs.uart_rx_timer->adjust(attotime::never);
memset(m_icp_regs.uart.tx_fifo, 0, 8); std::fill_n(&m_icp_regs.uart.tx_fifo[0], 8, 0);
m_icp_regs.uart.tx_fifo_read_idx = 0; m_icp_regs.uart.tx_fifo_read_idx = 0;
m_icp_regs.uart.tx_fifo_write_idx = 0; m_icp_regs.uart.tx_fifo_write_idx = 0;
m_icp_regs.uart.tx_fifo_count = 0; m_icp_regs.uart.tx_fifo_count = 0;
@ -2484,26 +2484,26 @@ void sa1110_periphs_device::device_reset()
m_icp_regs.hssp.hscr1 = 0; m_icp_regs.hssp.hscr1 = 0;
m_icp_regs.hssp.hssr0 = 0; m_icp_regs.hssp.hssr0 = 0;
m_icp_regs.hssp.hssr1 = 0; m_icp_regs.hssp.hssr1 = 0;
memset(m_icp_regs.hssp.rx_fifo, 0, sizeof(uint16_t) * 8); std::fill_n(&m_icp_regs.hssp.rx_fifo[0], 4, 0);
m_icp_regs.hssp.rx_fifo_read_idx = 0; m_icp_regs.hssp.rx_fifo_read_idx = 0;
m_icp_regs.hssp.rx_fifo_write_idx = 0; m_icp_regs.hssp.rx_fifo_write_idx = 0;
m_icp_regs.hssp.rx_fifo_count = 0; m_icp_regs.hssp.rx_fifo_count = 0;
m_icp_regs.hssp.rx_timer->adjust(attotime::never); m_icp_regs.hssp.rx_timer->adjust(attotime::never);
memset(m_icp_regs.hssp.tx_fifo, 0, sizeof(uint16_t) * 8); std::fill_n(&m_icp_regs.hssp.tx_fifo[0], 12, 0);
m_icp_regs.hssp.tx_fifo_read_idx = 0; m_icp_regs.hssp.tx_fifo_read_idx = 0;
m_icp_regs.hssp.tx_fifo_write_idx = 0; m_icp_regs.hssp.tx_fifo_write_idx = 0;
m_icp_regs.hssp.tx_fifo_count = 0; m_icp_regs.hssp.tx_fifo_count = 0;
m_icp_regs.hssp.tx_timer->adjust(attotime::never); m_icp_regs.hssp.tx_timer->adjust(attotime::never);
// init UART3 // init UART3
memset(m_uart_regs.utcr, 0, sizeof(uint32_t) * 4); std::fill_n(&m_uart_regs.utcr[0], 4, 0);
m_uart_regs.utsr0 = 0; m_uart_regs.utsr0 = 0;
m_uart_regs.utsr1 = 0; m_uart_regs.utsr1 = 0;
memset(m_uart_regs.rx_fifo, 0, sizeof(uint16_t) * 12); std::fill_n(&m_uart_regs.rx_fifo[0], 12, 0);
m_uart_regs.rx_fifo_read_idx = 0; m_uart_regs.rx_fifo_read_idx = 0;
m_uart_regs.rx_fifo_write_idx = 0; m_uart_regs.rx_fifo_write_idx = 0;
m_uart_regs.rx_fifo_count = 0; m_uart_regs.rx_fifo_count = 0;
memset(m_uart_regs.tx_fifo, 0, 8); std::fill_n(&m_uart_regs.tx_fifo[0], 8, 0);
m_uart_regs.tx_fifo_read_idx = 0; m_uart_regs.tx_fifo_read_idx = 0;
m_uart_regs.tx_fifo_write_idx = 0; m_uart_regs.tx_fifo_write_idx = 0;
m_uart_regs.tx_fifo_count = 0; m_uart_regs.tx_fifo_count = 0;
@ -2517,20 +2517,20 @@ void sa1110_periphs_device::device_reset()
m_mcp_regs.mccr1 = 0; m_mcp_regs.mccr1 = 0;
m_mcp_regs.mcdr2 = 0; m_mcp_regs.mcdr2 = 0;
m_mcp_regs.mcsr = (1 << MCSR_ANF_BIT) | (1 << MCSR_TNF_BIT); m_mcp_regs.mcsr = (1 << MCSR_ANF_BIT) | (1 << MCSR_TNF_BIT);
memset(m_mcp_regs.audio_rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.audio_rx_fifo)); std::fill(std::begin(m_mcp_regs.audio_rx_fifo), std::end(m_mcp_regs.audio_rx_fifo), 0);
m_mcp_regs.audio_rx_fifo_read_idx = 0; m_mcp_regs.audio_rx_fifo_read_idx = 0;
m_mcp_regs.audio_rx_fifo_write_idx = 0; m_mcp_regs.audio_rx_fifo_write_idx = 0;
m_mcp_regs.audio_rx_fifo_count = 0; m_mcp_regs.audio_rx_fifo_count = 0;
memset(m_mcp_regs.audio_tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.audio_tx_fifo)); std::fill(std::begin(m_mcp_regs.audio_tx_fifo), std::end(m_mcp_regs.audio_tx_fifo), 0);
m_mcp_regs.audio_tx_fifo_read_idx = 0; m_mcp_regs.audio_tx_fifo_read_idx = 0;
m_mcp_regs.audio_tx_fifo_write_idx = 0; m_mcp_regs.audio_tx_fifo_write_idx = 0;
m_mcp_regs.audio_tx_fifo_count = 0; m_mcp_regs.audio_tx_fifo_count = 0;
m_mcp_regs.audio_tx_timer->adjust(attotime::never); m_mcp_regs.audio_tx_timer->adjust(attotime::never);
memset(m_mcp_regs.telecom_rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.telecom_rx_fifo)); std::fill(std::begin(m_mcp_regs.telecom_rx_fifo), std::end(m_mcp_regs.telecom_rx_fifo), 0);
m_mcp_regs.telecom_rx_fifo_read_idx = 0; m_mcp_regs.telecom_rx_fifo_read_idx = 0;
m_mcp_regs.telecom_rx_fifo_write_idx = 0; m_mcp_regs.telecom_rx_fifo_write_idx = 0;
m_mcp_regs.telecom_rx_fifo_count = 0; m_mcp_regs.telecom_rx_fifo_count = 0;
memset(m_mcp_regs.telecom_tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_mcp_regs.telecom_tx_fifo)); std::fill(std::begin(m_mcp_regs.telecom_tx_fifo), std::end(m_mcp_regs.telecom_tx_fifo), 0);
m_mcp_regs.telecom_tx_fifo_read_idx = 0; m_mcp_regs.telecom_tx_fifo_read_idx = 0;
m_mcp_regs.telecom_tx_fifo_write_idx = 0; m_mcp_regs.telecom_tx_fifo_write_idx = 0;
m_mcp_regs.telecom_tx_fifo_count = 0; m_mcp_regs.telecom_tx_fifo_count = 0;
@ -2540,19 +2540,19 @@ void sa1110_periphs_device::device_reset()
m_ssp_regs.sscr0 = 0; m_ssp_regs.sscr0 = 0;
m_ssp_regs.sscr1 = 0; m_ssp_regs.sscr1 = 0;
m_ssp_regs.sssr = (1 << SSSR_TNF_BIT); m_ssp_regs.sssr = (1 << SSSR_TNF_BIT);
memset(m_ssp_regs.rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.rx_fifo)); std::fill(std::begin(m_ssp_regs.rx_fifo), std::end(m_ssp_regs.rx_fifo), 0);
m_ssp_regs.rx_fifo_read_idx = 0; m_ssp_regs.rx_fifo_read_idx = 0;
m_ssp_regs.rx_fifo_write_idx = 0; m_ssp_regs.rx_fifo_write_idx = 0;
m_ssp_regs.rx_fifo_count = 0; m_ssp_regs.rx_fifo_count = 0;
m_ssp_regs.rx_timer->adjust(attotime::never); m_ssp_regs.rx_timer->adjust(attotime::never);
memset(m_ssp_regs.tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.tx_fifo)); std::fill(std::begin(m_ssp_regs.tx_fifo), std::end(m_ssp_regs.tx_fifo), 0);
m_ssp_regs.tx_fifo_read_idx = 0; m_ssp_regs.tx_fifo_read_idx = 0;
m_ssp_regs.tx_fifo_write_idx = 0; m_ssp_regs.tx_fifo_write_idx = 0;
m_ssp_regs.tx_fifo_count = 0; m_ssp_regs.tx_fifo_count = 0;
m_ssp_regs.tx_timer->adjust(attotime::never); m_ssp_regs.tx_timer->adjust(attotime::never);
// init OS timers // init OS timers
memset(m_ostmr_regs.osmr, 0, sizeof(uint32_t) * 4); std::fill_n(&m_ostmr_regs.osmr[0], 4, 0);
m_ostmr_regs.ower = 0; m_ostmr_regs.ower = 0;
m_ostmr_regs.ossr = 0; m_ostmr_regs.ossr = 0;
m_ostmr_regs.oier = 0; m_ostmr_regs.oier = 0;
@ -2570,7 +2570,13 @@ void sa1110_periphs_device::device_reset()
m_rtc_regs.tick_timer->adjust(attotime::from_seconds(1), 0, attotime::from_seconds(1)); m_rtc_regs.tick_timer->adjust(attotime::from_seconds(1), 0, attotime::from_seconds(1));
// init power regs // init power regs
memset(&m_power_regs, 0, sizeof(m_power_regs)); m_power_regs.pmcr = 0;
m_power_regs.pssr = 0;
m_power_regs.pspr = 0;
m_power_regs.pwer = 0;
m_power_regs.pcfr = 0;
m_power_regs.ppcr = 0;
m_power_regs.pgsr = 0;
m_power_regs.posr = 1; // flag oscillator OK m_power_regs.posr = 1; // flag oscillator OK
// init PPC regs // init PPC regs
@ -2581,17 +2587,34 @@ void sa1110_periphs_device::device_reset()
m_ppc_regs.ppfr = 0x0007f001; m_ppc_regs.ppfr = 0x0007f001;
// init DMA regs // init DMA regs
for (int channel = 0; channel < 6; channel++) for (dma_regs &regs : m_dma_regs)
{ {
m_dma_regs[channel].ddar = 0; regs.ddar = 0;
m_dma_regs[channel].dsr = 0; regs.dsr = 0;
memset(m_dma_regs[channel].dbs, 0, sizeof(uint32_t) * 2); std::fill_n(&regs.dbs[0], 2, 0);
memset(m_dma_regs[channel].dbt, 0, sizeof(uint32_t) * 2); std::fill_n(&regs.dbt[0], 2, 0);
} }
// bulk-init other registers
m_rcsr = 0x00000001; // indicate hardware reset m_rcsr = 0x00000001; // indicate hardware reset
memset(&m_gpio_regs, 0, sizeof(m_gpio_regs));
memset(&m_intc_regs, 0, sizeof(m_intc_regs)); m_gpio_regs.gplr = 0;
m_gpio_regs.gpdr = 0;
m_gpio_regs.grer = 0;
m_gpio_regs.gfer = 0;
m_gpio_regs.gedr = 0;
m_gpio_regs.gafr = 0;
m_gpio_regs.any_edge_mask = 0;
m_gpio_regs.output_latch = 0;
m_gpio_regs.input_latch = 0;
m_gpio_regs.alt_output_latch = 0;
m_gpio_regs.alt_input_latch = 0;
m_intc_regs.icip = 0;
m_intc_regs.icmr = 0;
m_intc_regs.iclr = 0;
m_intc_regs.iccr = 0;
m_intc_regs.icfp = 0;
m_intc_regs.icpr = 0;
uart_check_rx_fifo_service(); uart_check_rx_fifo_service();
uart_check_tx_fifo_service(); uart_check_tx_fifo_service();

View File

@ -478,7 +478,7 @@ TIMER_CALLBACK_MEMBER(sa1111_device::audio_tx_dma_callback)
{ {
const uint32_t buf = BIT(m_audio_regs.sadtcs, SADTCS_TBIU_BIT); const uint32_t buf = BIT(m_audio_regs.sadtcs, SADTCS_TBIU_BIT);
const uint32_t remaining = m_audio_regs.sadtcc >> 2; const uint32_t remaining = m_audio_regs.sadtcc >> 2;
const uint32_t avail = ARRAY_LENGTH(m_audio_regs.tx_fifo) - m_audio_regs.tx_fifo_count; const uint32_t avail = std::size(m_audio_regs.tx_fifo) - m_audio_regs.tx_fifo_count;
if (remaining == 0 || avail == 0) if (remaining == 0 || avail == 0)
return; return;
@ -655,12 +655,12 @@ void sa1111_device::audio_start_rx_dma(const uint32_t buf)
void sa1111_device::audio_update_tx_fifo_levels() void sa1111_device::audio_update_tx_fifo_levels()
{ {
uint32_t &status = BIT(m_sbi_regs.skcr, SKCR_SACMDSL_BIT) ? m_audio_regs.sasr1 : m_audio_regs.sasr0; uint32_t &status = BIT(m_sbi_regs.skcr, SKCR_SACMDSL_BIT) ? m_audio_regs.sasr1 : m_audio_regs.sasr0;
if (m_audio_regs.tx_fifo_count < ARRAY_LENGTH(m_audio_regs.tx_fifo)) if (m_audio_regs.tx_fifo_count < std::size(m_audio_regs.tx_fifo))
status |= (1 << SASR_TNF_BIT); status |= (1 << SASR_TNF_BIT);
else else
status &= ~(1 << SASR_TNF_BIT); status &= ~(1 << SASR_TNF_BIT);
const uint32_t tfl = ((m_audio_regs.tx_fifo_count == ARRAY_LENGTH(m_audio_regs.tx_fifo)) ? (m_audio_regs.tx_fifo_count - 1) : m_audio_regs.tx_fifo_count); const uint32_t tfl = ((m_audio_regs.tx_fifo_count == std::size(m_audio_regs.tx_fifo)) ? (m_audio_regs.tx_fifo_count - 1) : m_audio_regs.tx_fifo_count);
status &= ~SASR_TFL_MASK; status &= ~SASR_TFL_MASK;
status |= (tfl << SASR_TFL_BIT); status |= (tfl << SASR_TFL_BIT);
@ -685,7 +685,7 @@ void sa1111_device::audio_update_rx_fifo_levels()
else else
status &= ~(1 << SASR_RNE_BIT); status &= ~(1 << SASR_RNE_BIT);
const uint32_t rfl = ((m_audio_regs.rx_fifo_count == ARRAY_LENGTH(m_audio_regs.rx_fifo)) ? (m_audio_regs.rx_fifo_count - 1) : m_audio_regs.rx_fifo_count); const uint32_t rfl = ((m_audio_regs.rx_fifo_count == std::size(m_audio_regs.rx_fifo)) ? (m_audio_regs.rx_fifo_count - 1) : m_audio_regs.rx_fifo_count);
status &= ~SASR_RFL_MASK; status &= ~SASR_RFL_MASK;
status |= (rfl << SASR_RFL_BIT); status |= (rfl << SASR_RFL_BIT);
@ -713,10 +713,10 @@ void sa1111_device::audio_update_busy_flag()
void sa1111_device::audio_tx_fifo_push(uint32_t data) void sa1111_device::audio_tx_fifo_push(uint32_t data)
{ {
if (m_audio_regs.tx_fifo_count < ARRAY_LENGTH(m_audio_regs.tx_fifo)) if (m_audio_regs.tx_fifo_count < std::size(m_audio_regs.tx_fifo))
{ {
m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_write_idx] = data; m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_write_idx] = data;
m_audio_regs.tx_fifo_write_idx = (m_audio_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_audio_regs.tx_fifo); m_audio_regs.tx_fifo_write_idx = (m_audio_regs.tx_fifo_write_idx + 1) % std::size(m_audio_regs.tx_fifo);
m_audio_regs.tx_fifo_count++; m_audio_regs.tx_fifo_count++;
audio_update_tx_fifo_levels(); audio_update_tx_fifo_levels();
if (m_audio_regs.tx_timer->remaining() == attotime::never) if (m_audio_regs.tx_timer->remaining() == attotime::never)
@ -734,7 +734,7 @@ uint32_t sa1111_device::audio_tx_fifo_pop()
if (m_audio_regs.tx_fifo_count > 0) if (m_audio_regs.tx_fifo_count > 0)
{ {
const uint32_t data = m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_read_idx]; const uint32_t data = m_audio_regs.tx_fifo[m_audio_regs.tx_fifo_read_idx];
m_audio_regs.tx_fifo_read_idx = (m_audio_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_audio_regs.tx_fifo); m_audio_regs.tx_fifo_read_idx = (m_audio_regs.tx_fifo_read_idx + 1) % std::size(m_audio_regs.tx_fifo);
m_audio_regs.tx_fifo_count--; m_audio_regs.tx_fifo_count--;
audio_update_tx_fifo_levels(); audio_update_tx_fifo_levels();
if (m_audio_regs.tx_fifo_count == 0) if (m_audio_regs.tx_fifo_count == 0)
@ -754,10 +754,10 @@ uint32_t sa1111_device::audio_tx_fifo_pop()
void sa1111_device::audio_rx_fifo_push(uint32_t data) void sa1111_device::audio_rx_fifo_push(uint32_t data)
{ {
if (m_audio_regs.rx_fifo_count < ARRAY_LENGTH(m_audio_regs.rx_fifo)) if (m_audio_regs.rx_fifo_count < std::size(m_audio_regs.rx_fifo))
{ {
m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_write_idx] = data; m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_write_idx] = data;
m_audio_regs.rx_fifo_write_idx = (m_audio_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_audio_regs.rx_fifo); m_audio_regs.rx_fifo_write_idx = (m_audio_regs.rx_fifo_write_idx + 1) % std::size(m_audio_regs.rx_fifo);
m_audio_regs.rx_fifo_count++; m_audio_regs.rx_fifo_count++;
audio_update_rx_fifo_levels(); audio_update_rx_fifo_levels();
} }
@ -774,7 +774,7 @@ uint32_t sa1111_device::audio_rx_fifo_pop()
if (m_audio_regs.rx_fifo_count > 0) if (m_audio_regs.rx_fifo_count > 0)
{ {
const uint32_t data = m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_read_idx]; const uint32_t data = m_audio_regs.rx_fifo[m_audio_regs.rx_fifo_read_idx];
m_audio_regs.rx_fifo_read_idx = (m_audio_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_audio_regs.rx_fifo); m_audio_regs.rx_fifo_read_idx = (m_audio_regs.rx_fifo_read_idx + 1) % std::size(m_audio_regs.rx_fifo);
m_audio_regs.rx_fifo_count--; m_audio_regs.rx_fifo_count--;
audio_update_rx_fifo_levels(); audio_update_rx_fifo_levels();
return data; return data;
@ -1247,7 +1247,7 @@ TIMER_CALLBACK_MEMBER(sa1111_device::ssp_tx_callback)
const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx]; const uint16_t data = m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_read_idx];
m_ssp_out(data); m_ssp_out(data);
m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_read_idx = (m_ssp_regs.tx_fifo_read_idx + 1) % std::size(m_ssp_regs.tx_fifo);
m_ssp_regs.tx_fifo_count--; m_ssp_regs.tx_fifo_count--;
m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT);
@ -1265,7 +1265,7 @@ void sa1111_device::ssp_update_enable_state()
const uint32_t tft = (m_ssp_regs.sspsr & SSPCR1_TFT_MASK) >> SSPCR1_TFT_BIT; const uint32_t tft = (m_ssp_regs.sspsr & SSPCR1_TFT_MASK) >> SSPCR1_TFT_BIT;
const uint32_t rft = (m_ssp_regs.sspsr & SSPCR1_RFT_MASK) >> SSPCR1_RFT_BIT; const uint32_t rft = (m_ssp_regs.sspsr & SSPCR1_RFT_MASK) >> SSPCR1_RFT_BIT;
if (tfl != (ARRAY_LENGTH(m_ssp_regs.tx_fifo) - 1)) if (tfl != (std::size(m_ssp_regs.tx_fifo) - 1))
m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT);
else else
m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT); m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT);
@ -1328,10 +1328,10 @@ void sa1111_device::ssp_update_rx_level()
void sa1111_device::ssp_rx_fifo_push(const uint16_t data) void sa1111_device::ssp_rx_fifo_push(const uint16_t data)
{ {
if (m_ssp_regs.rx_fifo_count < ARRAY_LENGTH(m_ssp_regs.rx_fifo)) if (m_ssp_regs.rx_fifo_count < std::size(m_ssp_regs.rx_fifo))
{ {
m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data; m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_write_idx] = data;
m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_write_idx = (m_ssp_regs.rx_fifo_write_idx + 1) % std::size(m_ssp_regs.rx_fifo);
m_ssp_regs.rx_fifo_count++; m_ssp_regs.rx_fifo_count++;
m_ssp_regs.sspsr |= (1 << SSPSR_RNE_BIT); m_ssp_regs.sspsr |= (1 << SSPSR_RNE_BIT);
@ -1355,13 +1355,13 @@ void sa1111_device::ssp_update_tx_level()
void sa1111_device::ssp_tx_fifo_push(const uint16_t data) void sa1111_device::ssp_tx_fifo_push(const uint16_t data)
{ {
if (m_ssp_regs.tx_fifo_count < ARRAY_LENGTH(m_ssp_regs.tx_fifo)) if (m_ssp_regs.tx_fifo_count < std::size(m_ssp_regs.tx_fifo))
{ {
m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data; m_ssp_regs.tx_fifo[m_ssp_regs.tx_fifo_write_idx] = data;
m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % ARRAY_LENGTH(m_ssp_regs.tx_fifo); m_ssp_regs.tx_fifo_write_idx = (m_ssp_regs.tx_fifo_write_idx + 1) % std::size(m_ssp_regs.tx_fifo);
m_ssp_regs.tx_fifo_count++; m_ssp_regs.tx_fifo_count++;
if (m_ssp_regs.tx_fifo_count != ARRAY_LENGTH(m_ssp_regs.tx_fifo)) if (m_ssp_regs.tx_fifo_count != std::size(m_ssp_regs.tx_fifo))
m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT); m_ssp_regs.sspsr |= (1 << SSPSR_TNF_BIT);
else else
m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT); m_ssp_regs.sspsr &= ~(1 << SSPSR_TNF_BIT);
@ -1375,7 +1375,7 @@ uint16_t sa1111_device::ssp_rx_fifo_pop()
uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx]; uint16_t data = m_ssp_regs.rx_fifo[m_ssp_regs.rx_fifo_read_idx];
if (m_ssp_regs.rx_fifo_count) if (m_ssp_regs.rx_fifo_count)
{ {
m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % ARRAY_LENGTH(m_ssp_regs.rx_fifo); m_ssp_regs.rx_fifo_read_idx = (m_ssp_regs.rx_fifo_read_idx + 1) % std::size(m_ssp_regs.rx_fifo);
m_ssp_regs.rx_fifo_count--; m_ssp_regs.rx_fifo_count--;
if (m_ssp_regs.rx_fifo_count == 0) if (m_ssp_regs.rx_fifo_count == 0)
@ -2112,11 +2112,11 @@ void sa1111_device::device_reset()
m_sk_regs.skpen1 = 0; m_sk_regs.skpen1 = 0;
m_sk_regs.skpwm1 = 0; m_sk_regs.skpwm1 = 0;
memset(m_usb_regs.ohci, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_usb_regs.ohci)); std::fill(std::begin(m_usb_regs.ohci), std::end(m_usb_regs.ohci), 0);
m_usb_regs.status = 0; m_usb_regs.status = 0;
m_usb_regs.reset = (1 << USBRST_FHR_BIT) | (1 << USBRST_FIR_BIT); m_usb_regs.reset = (1 << USBRST_FHR_BIT) | (1 << USBRST_FIR_BIT);
m_usb_regs.int_test = 0; m_usb_regs.int_test = 0;
memset(m_usb_regs.fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_usb_regs.fifo)); std::fill(std::begin(m_usb_regs.fifo), std::end(m_usb_regs.fifo), 0);
m_audio_regs.sacr0 = (0x7 << SACR0_RFTH_BIT) | (0x7 << SACR0_TFTH_BIT); m_audio_regs.sacr0 = (0x7 << SACR0_RFTH_BIT) | (0x7 << SACR0_TFTH_BIT);
m_audio_regs.sacr1 = 0; m_audio_regs.sacr1 = 0;
@ -2130,23 +2130,23 @@ void sa1111_device::device_reset()
m_audio_regs.acsar = 0; m_audio_regs.acsar = 0;
m_audio_regs.acsdr = 0; m_audio_regs.acsdr = 0;
m_audio_regs.sadtcs = 0; m_audio_regs.sadtcs = 0;
memset(m_audio_regs.sadts, 0, sizeof(uint32_t) * 2); std::fill_n(&m_audio_regs.sadts[0], 2, 0);
memset(m_audio_regs.sadtc, 0, sizeof(uint32_t) * 2); std::fill_n(&m_audio_regs.sadtc[0], 2, 0);
m_audio_regs.sadta = 0; m_audio_regs.sadta = 0;
m_audio_regs.sadtcc = 0; m_audio_regs.sadtcc = 0;
m_audio_regs.sadrcs = 0; m_audio_regs.sadrcs = 0;
memset(m_audio_regs.sadrs, 0, sizeof(uint32_t) * 2); std::fill_n(&m_audio_regs.sadrs[0], 2, 0);
memset(m_audio_regs.sadrc, 0, sizeof(uint32_t) * 2); std::fill_n(&m_audio_regs.sadrc[0], 2, 0);
m_audio_regs.sadra = 0; m_audio_regs.sadra = 0;
m_audio_regs.sadrcc = 0; m_audio_regs.sadrcc = 0;
m_audio_regs.saitr = 0; m_audio_regs.saitr = 0;
memset(m_audio_regs.rx_fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_audio_regs.rx_fifo)); std::fill(std::begin(m_audio_regs.rx_fifo), std::end(m_audio_regs.rx_fifo), 0);
m_audio_regs.rx_fifo_read_idx = 0; m_audio_regs.rx_fifo_read_idx = 0;
m_audio_regs.rx_fifo_write_idx = 0; m_audio_regs.rx_fifo_write_idx = 0;
m_audio_regs.rx_fifo_count = 0; m_audio_regs.rx_fifo_count = 0;
m_audio_regs.rx_timer->adjust(attotime::never); m_audio_regs.rx_timer->adjust(attotime::never);
m_audio_regs.rx_dma_timer->adjust(attotime::never); m_audio_regs.rx_dma_timer->adjust(attotime::never);
memset(m_audio_regs.tx_fifo, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_audio_regs.tx_fifo)); std::fill(std::begin(m_audio_regs.tx_fifo), std::end(m_audio_regs.tx_fifo), 0);
m_audio_regs.tx_fifo_read_idx = 0; m_audio_regs.tx_fifo_read_idx = 0;
m_audio_regs.tx_fifo_write_idx = 0; m_audio_regs.tx_fifo_write_idx = 0;
m_audio_regs.tx_fifo_count = 0; m_audio_regs.tx_fifo_count = 0;
@ -2157,35 +2157,43 @@ void sa1111_device::device_reset()
m_ssp_regs.sspcr1 = (0x7 << SSPCR1_RFT_BIT) | (0x7 << SSPCR1_TFT_BIT); m_ssp_regs.sspcr1 = (0x7 << SSPCR1_RFT_BIT) | (0x7 << SSPCR1_TFT_BIT);
m_ssp_regs.sspsr = 0; m_ssp_regs.sspsr = 0;
m_ssp_regs.sspitr = 0; m_ssp_regs.sspitr = 0;
memset(m_ssp_regs.rx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.rx_fifo)); std::fill(std::begin(m_ssp_regs.rx_fifo), std::end(m_ssp_regs.rx_fifo), 0);
m_ssp_regs.rx_fifo_read_idx = 0; m_ssp_regs.rx_fifo_read_idx = 0;
m_ssp_regs.rx_fifo_write_idx = 0; m_ssp_regs.rx_fifo_write_idx = 0;
m_ssp_regs.rx_fifo_count = 0; m_ssp_regs.rx_fifo_count = 0;
m_ssp_regs.rx_timer->adjust(attotime::never); m_ssp_regs.rx_timer->adjust(attotime::never);
memset(m_ssp_regs.tx_fifo, 0, sizeof(uint16_t) * ARRAY_LENGTH(m_ssp_regs.tx_fifo)); std::fill(std::begin(m_ssp_regs.tx_fifo), std::end(m_ssp_regs.tx_fifo), 0);
m_ssp_regs.tx_fifo_read_idx = 0; m_ssp_regs.tx_fifo_read_idx = 0;
m_ssp_regs.tx_fifo_write_idx = 0; m_ssp_regs.tx_fifo_write_idx = 0;
m_ssp_regs.tx_fifo_count = 0; m_ssp_regs.tx_fifo_count = 0;
m_ssp_regs.tx_timer->adjust(attotime::never); m_ssp_regs.tx_timer->adjust(attotime::never);
memset(&m_track_regs, 0, sizeof(ps2_regs)); for (ps2_regs &regs : { std::ref(m_track_regs), std::ref(m_mouse_regs) })
memset(&m_mouse_regs, 0, sizeof(ps2_regs)); {
regs.kbdcr = 0;
regs.kbdstat = 0;
regs.kbddata_tx = 0;
regs.kbddata_rx = 0;
regs.kbdclkdiv = 0;
regs.kbdprecnt = 0;
regs.kbditr = 0;
}
memset(m_gpio_regs.ddr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.ddr)); std::fill(std::begin(m_gpio_regs.ddr), std::end(m_gpio_regs.ddr), 0);
memset(m_gpio_regs.level, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.level)); std::fill(std::begin(m_gpio_regs.level), std::end(m_gpio_regs.level), 0);
memset(m_gpio_regs.sdr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.sdr)); std::fill(std::begin(m_gpio_regs.sdr), std::end(m_gpio_regs.sdr), 0);
memset(m_gpio_regs.ssr, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.ssr)); std::fill(std::begin(m_gpio_regs.ssr), std::end(m_gpio_regs.ssr), 0);
memset(m_gpio_regs.out_latch, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.out_latch)); std::fill(std::begin(m_gpio_regs.out_latch), std::end(m_gpio_regs.out_latch), 0);
memset(m_gpio_regs.in_latch, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_gpio_regs.in_latch)); std::fill(std::begin(m_gpio_regs.in_latch), std::end(m_gpio_regs.in_latch), 0);
memset(m_intc_regs.inttest, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.inttest)); std::fill(std::begin(m_intc_regs.inttest), std::end(m_intc_regs.inttest), 0);
memset(m_intc_regs.inten, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.inten)); std::fill(std::begin(m_intc_regs.inten), std::end(m_intc_regs.inten), 0);
memset(m_intc_regs.intpol, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intpol)); std::fill(std::begin(m_intc_regs.intpol), std::end(m_intc_regs.intpol), 0);
m_intc_regs.inttstsel = 0; m_intc_regs.inttstsel = 0;
memset(m_intc_regs.intstat, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intstat)); std::fill(std::begin(m_intc_regs.intstat), std::end(m_intc_regs.intstat), 0);
memset(m_intc_regs.wake_en, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.wake_en)); std::fill(std::begin(m_intc_regs.wake_en), std::end(m_intc_regs.wake_en), 0);
memset(m_intc_regs.wake_pol, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.wake_pol)); std::fill(std::begin(m_intc_regs.wake_pol), std::end(m_intc_regs.wake_pol), 0);
memset(m_intc_regs.intraw, 0, sizeof(uint32_t) * ARRAY_LENGTH(m_intc_regs.intraw)); std::fill(std::begin(m_intc_regs.intraw), std::end(m_intc_regs.intraw), 0);
m_card_regs.pccr = 0; m_card_regs.pccr = 0;
m_card_regs.pcssr = 0; m_card_regs.pcssr = 0;

View File

@ -404,7 +404,7 @@ void scc2698b_device::device_reset()
void scc2698b_device::write_line_tx(int port, int value) void scc2698b_device::write_line_tx(int port, int value)
{ {
if ((0 <= port) && (ARRAY_LENGTH(write_tx) > port)) if ((0 <= port) && (std::size(write_tx) > port))
write_tx[port](value); write_tx[port](value);
else else
logerror("Unsupported port %d in write_line_tx\n", port); logerror("Unsupported port %d in write_line_tx\n", port);
@ -412,7 +412,7 @@ void scc2698b_device::write_line_tx(int port, int value)
void scc2698b_device::write_line_mpp1(int port, int value) void scc2698b_device::write_line_mpp1(int port, int value)
{ {
if ((0 <= port) && (ARRAY_LENGTH(write_mpp1) > port)) if ((0 <= port) && (std::size(write_mpp1) > port))
write_mpp1[port](value); write_mpp1[port](value);
else else
logerror("Unsupported port %d in write_line_mpp1\n", port); logerror("Unsupported port %d in write_line_mpp1\n", port);
@ -420,7 +420,7 @@ void scc2698b_device::write_line_mpp1(int port, int value)
void scc2698b_device::write_line_mpp2(int port, int value) void scc2698b_device::write_line_mpp2(int port, int value)
{ {
if ((0 <= port) && (ARRAY_LENGTH(write_mpp2) > port)) if ((0 <= port) && (std::size(write_mpp2) > port))
write_mpp2[port](value); write_mpp2[port](value);
else else
logerror("Unsupported port %d in write_line_mpp2\n", port); logerror("Unsupported port %d in write_line_mpp2\n", port);
@ -428,7 +428,7 @@ void scc2698b_device::write_line_mpp2(int port, int value)
void scc2698b_device::write_line_mpo(int port, int value) void scc2698b_device::write_line_mpo(int port, int value)
{ {
if ((0 <= port) && (ARRAY_LENGTH(write_mpo) > port)) if ((0 <= port) && (std::size(write_mpo) > port))
write_mpo[port](value); write_mpo[port](value);
else else
logerror("Unsupported port %d in write_line_mpo\n", port); logerror("Unsupported port %d in write_line_mpo\n", port);

View File

@ -127,7 +127,7 @@ void sensorboard_device::device_start()
m_upointer = 0; m_upointer = 0;
m_ufirst = 0; m_ufirst = 0;
m_ulast = 0; m_ulast = 0;
m_usize = ARRAY_LENGTH(m_history); m_usize = std::size(m_history);
// register for savestates // register for savestates
save_item(NAME(m_nosensors)); save_item(NAME(m_nosensors));

View File

@ -179,7 +179,7 @@ void spg2xx_io_device::device_start()
void spg2xx_io_device::device_reset() void spg2xx_io_device::device_reset()
{ {
memset(m_io_regs, 0, 0x100 * sizeof(uint16_t)); std::fill_n(&m_io_regs[0], 0x100, 0);
m_timer_a_preload = 0; m_timer_a_preload = 0;
m_timer_b_preload = 0; m_timer_b_preload = 0;
@ -190,7 +190,7 @@ void spg2xx_io_device::device_reset()
m_io_regs[REG_PRNG1] = 0x1418; m_io_regs[REG_PRNG1] = 0x1418;
m_io_regs[REG_PRNG2] = 0x1658; m_io_regs[REG_PRNG2] = 0x1658;
memset(m_uart_rx_fifo, 0, ARRAY_LENGTH(m_uart_rx_fifo)); std::fill(std::begin(m_uart_rx_fifo), std::end(m_uart_rx_fifo), 0);
m_uart_rx_fifo_start = 0; m_uart_rx_fifo_start = 0;
m_uart_rx_fifo_end = 0; m_uart_rx_fifo_end = 0;
m_uart_rx_fifo_count = 0; m_uart_rx_fifo_count = 0;
@ -198,14 +198,14 @@ void spg2xx_io_device::device_reset()
m_uart_tx_irq = false; m_uart_tx_irq = false;
m_uart_rx_irq = false; m_uart_rx_irq = false;
memset(m_spi_tx_fifo, 0, ARRAY_LENGTH(m_spi_tx_fifo)); std::fill(std::begin(m_spi_tx_fifo), std::end(m_spi_tx_fifo), 0);
m_spi_tx_fifo_start = 0; m_spi_tx_fifo_start = 0;
m_spi_tx_fifo_end = 0; m_spi_tx_fifo_end = 0;
m_spi_tx_fifo_count = 0; m_spi_tx_fifo_count = 0;
m_spi_tx_buf = 0x00; m_spi_tx_buf = 0x00;
m_spi_tx_bit = 8; m_spi_tx_bit = 8;
memset(m_spi_rx_fifo, 0, ARRAY_LENGTH(m_spi_rx_fifo)); std::fill(std::begin(m_spi_rx_fifo), std::end(m_spi_rx_fifo), 0);
m_spi_rx_fifo_start = 0; m_spi_rx_fifo_start = 0;
m_spi_rx_fifo_end = 0; m_spi_rx_fifo_end = 0;
m_spi_rx_fifo_count = 0; m_spi_rx_fifo_count = 0;
@ -214,7 +214,7 @@ void spg2xx_io_device::device_reset()
m_spi_rate = 0; m_spi_rate = 0;
memset(m_extint, 0, sizeof(bool) * 2); std::fill_n(&m_extint[0], 2, false);
m_4khz_timer->adjust(attotime::from_hz(4096), 0, attotime::from_hz(4096)); m_4khz_timer->adjust(attotime::from_hz(4096), 0, attotime::from_hz(4096));
@ -252,7 +252,7 @@ void spg2xx_io_device::uart_rx(uint8_t data)
if (BIT(m_io_regs[REG_UART_CTRL], 6)) if (BIT(m_io_regs[REG_UART_CTRL], 6))
{ {
m_uart_rx_fifo[m_uart_rx_fifo_end] = data; m_uart_rx_fifo[m_uart_rx_fifo_end] = data;
m_uart_rx_fifo_end = (m_uart_rx_fifo_end + 1) % ARRAY_LENGTH(m_uart_rx_fifo); m_uart_rx_fifo_end = (m_uart_rx_fifo_end + 1) % std::size(m_uart_rx_fifo);
m_uart_rx_fifo_count++; m_uart_rx_fifo_count++;
if (m_uart_rx_timer->remaining() == attotime::never) if (m_uart_rx_timer->remaining() == attotime::never)
m_uart_rx_timer->adjust(attotime::from_ticks(BIT(m_io_regs[REG_UART_CTRL], 5) ? 11 : 10, m_uart_baud_rate)); m_uart_rx_timer->adjust(attotime::from_ticks(BIT(m_io_regs[REG_UART_CTRL], 5) ? 11 : 10, m_uart_baud_rate));
@ -535,7 +535,7 @@ uint16_t spg2xx_io_device::io_extended_r(offs_t offset)
LOGMASKED(LOG_UART, "%s: Remaining count %d, value %02x\n", machine().describe_context(), m_uart_rx_fifo_count, m_uart_rx_fifo[m_uart_rx_fifo_start]); LOGMASKED(LOG_UART, "%s: Remaining count %d, value %02x\n", machine().describe_context(), m_uart_rx_fifo_count, m_uart_rx_fifo[m_uart_rx_fifo_start]);
m_io_regs[REG_UART_RXBUF] = m_uart_rx_fifo[m_uart_rx_fifo_start]; m_io_regs[REG_UART_RXBUF] = m_uart_rx_fifo[m_uart_rx_fifo_start];
val = m_io_regs[REG_UART_RXBUF]; val = m_io_regs[REG_UART_RXBUF];
m_uart_rx_fifo_start = (m_uart_rx_fifo_start + 1) % ARRAY_LENGTH(m_uart_rx_fifo); m_uart_rx_fifo_start = (m_uart_rx_fifo_start + 1) % std::size(m_uart_rx_fifo);
m_uart_rx_fifo_count--; m_uart_rx_fifo_count--;
if (m_uart_rx_fifo_count == 0) if (m_uart_rx_fifo_count == 0)

View File

@ -2540,7 +2540,7 @@ bool wd_fdc_digital_device_base::digital_pll_t::write_next_bit(bool bit, attotim
uint16_t pre_counter = counter; uint16_t pre_counter = counter;
counter += increment; counter += increment;
if(bit && !(pre_counter & 0x400) && (counter & 0x400)) if(bit && !(pre_counter & 0x400) && (counter & 0x400))
if(write_position < ARRAY_LENGTH(write_buffer)) if(write_position < std::size(write_buffer))
write_buffer[write_position++] = etime; write_buffer[write_position++] = etime;
slot++; slot++;
tm = etime; tm = etime;

View File

@ -506,7 +506,7 @@ int z80sio_device::z80daisy_irq_state()
// loop over all interrupt sources // loop over all interrupt sources
int state = 0; int state = 0;
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
// if we're servicing a request, don't indicate more interrupts // if we're servicing a request, don't indicate more interrupts
if (m_int_state[prio[i]] & Z80_DAISY_IEO) if (m_int_state[prio[i]] & Z80_DAISY_IEO)
@ -531,7 +531,7 @@ int z80sio_device::z80daisy_irq_ack()
// loop over all interrupt sources // loop over all interrupt sources
int const *const prio = interrupt_priorities(); int const *const prio = interrupt_priorities();
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
// find the first channel with an interrupt requested // find the first channel with an interrupt requested
if (m_int_state[prio[i]] & Z80_DAISY_INT) if (m_int_state[prio[i]] & Z80_DAISY_INT)
@ -597,7 +597,7 @@ int i8274_device::z80daisy_irq_ack()
{ {
// loop over all interrupt sources // loop over all interrupt sources
int const *const prio = interrupt_priorities(); int const *const prio = interrupt_priorities();
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
// find the first channel with an interrupt requested // find the first channel with an interrupt requested
if (m_int_state[prio[i]] & Z80_DAISY_INT) if (m_int_state[prio[i]] & Z80_DAISY_INT)
@ -711,7 +711,7 @@ void z80sio_device::return_from_interrupt()
{ {
// loop over all interrupt sources // loop over all interrupt sources
int const *const prio = interrupt_priorities(); int const *const prio = interrupt_priorities();
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
// find the first channel with an interrupt requested // find the first channel with an interrupt requested
if (m_int_state[prio[i]] & (Z80_DAISY_IEO)) if (m_int_state[prio[i]] & (Z80_DAISY_IEO))
@ -741,7 +741,7 @@ uint8_t z80sio_device::read_vector()
// modify vector for highest-priority pending interrupt // modify vector for highest-priority pending interrupt
int const *const prio = interrupt_priorities(); int const *const prio = interrupt_priorities();
vec &= 0xf1U; vec &= 0xf1U;
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
if (m_int_state[prio[i]] & Z80_DAISY_INT) if (m_int_state[prio[i]] & Z80_DAISY_INT)
{ {
@ -797,7 +797,7 @@ uint8_t i8274_device::read_vector()
// modify vector for highest-priority pending interrupt // modify vector for highest-priority pending interrupt
int const *const prio = interrupt_priorities(); int const *const prio = interrupt_priorities();
for (int i = 0; ARRAY_LENGTH(m_int_state) > i; ++i) for (int i = 0; std::size(m_int_state) > i; ++i)
{ {
if (m_int_state[prio[i]] & Z80_DAISY_INT) if (m_int_state[prio[i]] & Z80_DAISY_INT)
{ {

View File

@ -748,7 +748,7 @@ void cio_base_device::external_port_w(int port, int bit, int state)
case PORT_A: case PORT_A:
case PORT_B: case PORT_B:
{ {
assert((PORT_A_DATA_DIRECTION + (port << 3)) >= 0 && (PORT_A_DATA_DIRECTION + (port << 3)) < ARRAY_LENGTH(m_register)); assert((PORT_A_DATA_DIRECTION + (port << 3)) >= 0 && (PORT_A_DATA_DIRECTION + (port << 3)) < std::size(m_register));
u8 ddr = m_register[PORT_A_DATA_DIRECTION + (port << 3)]; u8 ddr = m_register[PORT_A_DATA_DIRECTION + (port << 3)];
if (!BIT(ddr, bit)) return; if (!BIT(ddr, bit)) return;

View File

@ -94,7 +94,7 @@ void nile_device::sound_stream_update(sound_stream &stream, std::vector<read_str
lsptr=leptr=0; lsptr=leptr=0;
sound_assert(outputs[0].samples() * 2 < ARRAY_LENGTH(mix)); sound_assert(outputs[0].samples() * 2 < std::size(mix));
std::fill_n(&mix[0], outputs[0].samples()*2, 0); std::fill_n(&mix[0], outputs[0].samples()*2, 0);
for (v = 0; v < NILE_VOICES; v++) for (v = 0; v < NILE_VOICES; v++)

View File

@ -617,7 +617,7 @@ spu_device::reverb_preset spu_device::reverb_presets[]=
float spu_device::get_linear_rate(const int n) float spu_device::get_linear_rate(const int n)
{ {
static constexpr int num_linear_rates=ARRAY_LENGTH(linear_rate); static constexpr int num_linear_rates=std::size(linear_rate);
if (n>=num_linear_rates) return 0.0f; if (n>=num_linear_rates) return 0.0f;
return linear_rate[n]*freq_multiplier; return linear_rate[n]*freq_multiplier;
} }
@ -630,7 +630,7 @@ float spu_device::get_linear_rate_neg_phase(const int n)
float spu_device::get_pos_exp_rate(const int n) float spu_device::get_pos_exp_rate(const int n)
{ {
static constexpr int num_pos_exp_rates=ARRAY_LENGTH(pos_exp_rate); static constexpr int num_pos_exp_rates=std::size(pos_exp_rate);
if (n>=num_pos_exp_rates) return 0.0f; if (n>=num_pos_exp_rates) return 0.0f;
return pos_exp_rate[n]*freq_multiplier; return pos_exp_rate[n]*freq_multiplier;
} }
@ -643,7 +643,7 @@ float spu_device::get_pos_exp_rate_neg_phase(const int n)
float spu_device::get_neg_exp_rate(const int n) float spu_device::get_neg_exp_rate(const int n)
{ {
static constexpr int num_neg_exp_rates=ARRAY_LENGTH(neg_exp_rate); static constexpr int num_neg_exp_rates=std::size(neg_exp_rate);
if (n>=num_neg_exp_rates) return 0.0f; if (n>=num_neg_exp_rates) return 0.0f;
return -neg_exp_rate[n]*freq_multiplier; return -neg_exp_rate[n]*freq_multiplier;
} }
@ -666,14 +666,14 @@ float spu_device::get_sustain_level(const int n)
float spu_device::get_linear_release_rate(const int n) float spu_device::get_linear_release_rate(const int n)
{ {
static constexpr int num_linear_release_rates=ARRAY_LENGTH(linear_release_rate); static constexpr int num_linear_release_rates=std::size(linear_release_rate);
if (n>=num_linear_release_rates) return 0.0f; if (n>=num_linear_release_rates) return 0.0f;
return linear_release_rate[n]*freq_multiplier; return linear_release_rate[n]*freq_multiplier;
} }
float spu_device::get_exp_release_rate(const int n) float spu_device::get_exp_release_rate(const int n)
{ {
static constexpr int num_exp_release_rates=ARRAY_LENGTH(exp_release_rate); static constexpr int num_exp_release_rates=std::size(exp_release_rate);
if (n>=num_exp_release_rates) return 0.0f; if (n>=num_exp_release_rates) return 0.0f;
return exp_release_rate[n]*freq_multiplier; return exp_release_rate[n]*freq_multiplier;
} }

View File

@ -1605,52 +1605,47 @@ void ym2413_device::device_start()
save_item(NAME(inst_tab)); save_item(NAME(inst_tab));
save_item(NAME(address)); save_item(NAME(address));
for (int chnum = 0; chnum < ARRAY_LENGTH(P_CH); chnum++) save_item(STRUCT_MEMBER(P_CH, block_fnum));
save_item(STRUCT_MEMBER(P_CH, fc));
save_item(STRUCT_MEMBER(P_CH, ksl_base));
save_item(STRUCT_MEMBER(P_CH, kcode));
save_item(STRUCT_MEMBER(P_CH, sus));
for (int chnum = 0; chnum < std::size(P_CH); chnum++)
{ {
OPLL_CH *ch = &P_CH[chnum]; OPLL_CH &ch = P_CH[chnum];
save_item(NAME(ch->block_fnum), chnum); save_item(STRUCT_MEMBER(ch.SLOT, ar), chnum);
save_item(NAME(ch->fc), chnum); save_item(STRUCT_MEMBER(ch.SLOT, dr), chnum);
save_item(NAME(ch->ksl_base), chnum); save_item(STRUCT_MEMBER(ch.SLOT, rr), chnum);
save_item(NAME(ch->kcode), chnum); save_item(STRUCT_MEMBER(ch.SLOT, KSR), chnum);
save_item(NAME(ch->sus), chnum); save_item(STRUCT_MEMBER(ch.SLOT, ksl), chnum);
save_item(STRUCT_MEMBER(ch.SLOT, ksr), chnum);
for (int slotnum = 0; slotnum < ARRAY_LENGTH(ch->SLOT); slotnum++) save_item(STRUCT_MEMBER(ch.SLOT, mul), chnum);
{ save_item(STRUCT_MEMBER(ch.SLOT, phase), chnum);
OPLL_SLOT *sl = &ch->SLOT[slotnum]; save_item(STRUCT_MEMBER(ch.SLOT, freq), chnum);
save_item(STRUCT_MEMBER(ch.SLOT, fb_shift), chnum);
save_item(NAME(sl->ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, op1_out), chnum);
save_item(NAME(sl->dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_type), chnum);
save_item(NAME(sl->rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, state), chnum);
save_item(NAME(sl->KSR), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, TL), chnum);
save_item(NAME(sl->ksl), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, TLL), chnum);
save_item(NAME(sl->ksr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, volume), chnum);
save_item(NAME(sl->mul), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, sl), chnum);
save_item(NAME(sl->phase), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_dp), chnum);
save_item(NAME(sl->freq), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_dp), chnum);
save_item(NAME(sl->fb_shift), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_ar), chnum);
save_item(NAME(sl->op1_out), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_ar), chnum);
save_item(NAME(sl->eg_type), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_dr), chnum);
save_item(NAME(sl->state), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_dr), chnum);
save_item(NAME(sl->TL), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_rr), chnum);
save_item(NAME(sl->TLL), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_rr), chnum);
save_item(NAME(sl->volume), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sh_rs), chnum);
save_item(NAME(sl->sl), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, eg_sel_rs), chnum);
save_item(NAME(sl->eg_sh_dp), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, key), chnum);
save_item(NAME(sl->eg_sel_dp), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, AMmask), chnum);
save_item(NAME(sl->eg_sh_ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, vib), chnum);
save_item(NAME(sl->eg_sel_ar), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum); save_item(STRUCT_MEMBER(ch.SLOT, wavetable), chnum);
save_item(NAME(sl->eg_sh_dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->eg_sel_dr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->eg_sh_rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->eg_sel_rr), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->eg_sh_rs), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->eg_sel_rs), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->key), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->AMmask), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->vib), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
save_item(NAME(sl->wavetable), chnum * ARRAY_LENGTH(ch->SLOT) + slotnum);
}
} }
} }

View File

@ -429,15 +429,12 @@ void dmg_ppu_device::common_start()
save_item(NAME(m_next_state)); save_item(NAME(m_next_state));
save_item(NAME(m_old_curline)); save_item(NAME(m_old_curline));
for (int i = 0; i < ARRAY_LENGTH(m_layer); i++) save_item(STRUCT_MEMBER(m_layer, enabled));
{ save_item(STRUCT_MEMBER(m_layer, xindex));
save_item(NAME(m_layer[i].enabled), i); save_item(STRUCT_MEMBER(m_layer, xshift));
save_item(NAME(m_layer[i].xindex), i); save_item(STRUCT_MEMBER(m_layer, xstart));
save_item(NAME(m_layer[i].xshift), i); save_item(STRUCT_MEMBER(m_layer, xend));
save_item(NAME(m_layer[i].xstart), i); save_item(STRUCT_MEMBER(m_layer, bgline));
save_item(NAME(m_layer[i].xend), i);
save_item(NAME(m_layer[i].bgline), i);
}
save_item(NAME(m_line.tile_cycle)); save_item(NAME(m_line.tile_cycle));
save_item(NAME(m_line.tile_count)); save_item(NAME(m_line.tile_count));
@ -465,16 +462,13 @@ void dmg_ppu_device::common_start()
save_item(NAME(m_line.window_enable)); save_item(NAME(m_line.window_enable));
save_item(NAME(m_line.window_enable_index)); save_item(NAME(m_line.window_enable_index));
save_item(NAME(m_line.window_should_trigger)); save_item(NAME(m_line.window_should_trigger));
for (int i = 0; i < ARRAY_LENGTH(m_line.sprite); i++) save_item(STRUCT_MEMBER(m_line.sprite, enabled));
{ save_item(STRUCT_MEMBER(m_line.sprite, x));
save_item(NAME(m_line.sprite[i].enabled), i); save_item(STRUCT_MEMBER(m_line.sprite, y));
save_item(NAME(m_line.sprite[i].x), i); save_item(STRUCT_MEMBER(m_line.sprite, pattern));
save_item(NAME(m_line.sprite[i].y), i); save_item(STRUCT_MEMBER(m_line.sprite, flags));
save_item(NAME(m_line.sprite[i].pattern), i); save_item(STRUCT_MEMBER(m_line.sprite, tile_plane_0));
save_item(NAME(m_line.sprite[i].flags), i); save_item(STRUCT_MEMBER(m_line.sprite, tile_plane_1));
save_item(NAME(m_line.sprite[i].tile_plane_0), i);
save_item(NAME(m_line.sprite[i].tile_plane_1), i);
}
save_item(NAME(m_frame_window_active)); save_item(NAME(m_frame_window_active));
} }
@ -1034,14 +1028,14 @@ void dmg_ppu_device::check_start_of_window()
} }
// 4 makes most tests pass // 4 makes most tests pass
m_line.window_start_y[(m_line.window_start_y_index + 4) % ARRAY_LENGTH(m_line.window_start_y)] = WNDPOSY; m_line.window_start_y[(m_line.window_start_y_index + 4) % std::size(m_line.window_start_y)] = WNDPOSY;
// 2-4 makes most tests pass // 2-4 makes most tests pass
m_line.window_start_x[(m_line.window_start_y_index + 4) % ARRAY_LENGTH(m_line.window_start_x)] = WNDPOSX; m_line.window_start_x[(m_line.window_start_y_index + 4) % std::size(m_line.window_start_x)] = WNDPOSX;
m_line.window_start_y_index = (m_line.window_start_y_index + 1) % ARRAY_LENGTH(m_line.window_start_y); m_line.window_start_y_index = (m_line.window_start_y_index + 1) % std::size(m_line.window_start_y);
// 3 makes most tests pass // 3 makes most tests pass
m_line.window_enable[(m_line.window_enable_index + 3) % ARRAY_LENGTH(m_line.window_enable)] = LCDCONT; m_line.window_enable[(m_line.window_enable_index + 3) % std::size(m_line.window_enable)] = LCDCONT;
m_line.window_enable_index = (m_line.window_enable_index + 1) % ARRAY_LENGTH(m_line.window_enable); m_line.window_enable_index = (m_line.window_enable_index + 1) % std::size(m_line.window_enable);
if (!m_line.starting && m_line.tile_cycle < 8) if (!m_line.starting && m_line.tile_cycle < 8)
{ {
@ -1545,7 +1539,7 @@ void sgb_ppu_device::update_scanline(uint32_t cycles_to_go)
while (i > 0) while (i > 0)
{ {
/* Figure out which palette we're using */ /* Figure out which palette we're using */
assert(((m_end_x - i) >> 3) >= 0 && ((m_end_x - i) >> 3) < ARRAY_LENGTH(m_sgb_pal_map)); assert(((m_end_x - i) >> 3) >= 0 && ((m_end_x - i) >> 3) < std::size(m_sgb_pal_map));
sgb_palette = m_sgb_pal_map[(m_end_x - i) >> 3][m_current_line >> 3] << 2; sgb_palette = m_sgb_pal_map[(m_end_x - i) >> 3][m_current_line >> 3] << 2;
while ((m_layer[l].xshift < 8) && i) while ((m_layer[l].xshift < 8) && i)
@ -2209,13 +2203,13 @@ void dmg_ppu_device::update_state()
break; break;
case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */ case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */
for (int i = 0; i < ARRAY_LENGTH(m_line.window_start_y); i++) for (int i = 0; i < std::size(m_line.window_start_y); i++)
{ {
m_line.window_start_y[i] = WNDPOSY; m_line.window_start_y[i] = WNDPOSY;
m_line.window_start_x[i] = WNDPOSX; m_line.window_start_x[i] = WNDPOSX;
} }
m_line.window_start_y_index = 0; m_line.window_start_y_index = 0;
for (int i = 0; i < ARRAY_LENGTH(m_line.window_enable); i++) for (int i = 0; i < std::size(m_line.window_enable); i++)
{ {
m_line.window_enable[i] = LCDCONT; m_line.window_enable[i] = LCDCONT;
} }
@ -2640,13 +2634,13 @@ void cgb_ppu_device::update_state()
break; break;
case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */ case GB_LCD_STATE_LYXX_M3: /* Switch to mode 3 */
for (int i = 0; i < ARRAY_LENGTH(m_line.window_start_y); i++) for (int i = 0; i < std::size(m_line.window_start_y); i++)
{ {
m_line.window_start_y[i] = WNDPOSY; m_line.window_start_y[i] = WNDPOSY;
m_line.window_start_x[i] = WNDPOSX; m_line.window_start_x[i] = WNDPOSX;
} }
m_line.window_start_y_index = 0; m_line.window_start_y_index = 0;
for (int i = 0; i < ARRAY_LENGTH(m_line.window_enable); i++) for (int i = 0; i < std::size(m_line.window_enable); i++)
{ {
m_line.window_enable[i] = LCDCONT; m_line.window_enable[i] = LCDCONT;
} }

View File

@ -1577,7 +1577,7 @@ uint32_t gba_lcd_device::video_r(offs_t offset, uint32_t mem_mask)
break; break;
} }
if (offset >= ARRAY_LENGTH(reg_names) / 2) if (offset >= std::size(reg_names) / 2)
throw emu_fatalerror("gba_lcd_device::video_r: Not enough register names in gba_lcd_device"); throw emu_fatalerror("gba_lcd_device::video_r: Not enough register names in gba_lcd_device");
if (ACCESSING_BITS_0_15) if (ACCESSING_BITS_0_15)
@ -1593,7 +1593,7 @@ void gba_lcd_device::video_w(offs_t offset, uint32_t data, uint32_t mem_mask)
{ {
COMBINE_DATA(&m_regs[offset]); COMBINE_DATA(&m_regs[offset]);
if (offset >= ARRAY_LENGTH(reg_names) / 2) if (offset >= std::size(reg_names) / 2)
throw emu_fatalerror("gba_lcd_device::video_w: Not enough register names in gba_lcd_device"); throw emu_fatalerror("gba_lcd_device::video_w: Not enough register names in gba_lcd_device");
if (ACCESSING_BITS_0_15) if (ACCESSING_BITS_0_15)

View File

@ -591,7 +591,7 @@ void i8244_device::char_pixel(u8 index, int x, int y, u8 pixel, u16 color, bitma
void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect) void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
// quad objects // quad objects
for (int i = ARRAY_LENGTH(m_vdc.s.quad) - 1; i >= 0; i--) for (int i = std::size(m_vdc.s.quad) - 1; i >= 0; i--)
{ {
int y = m_vdc.s.quad[i].single[0].y; int y = m_vdc.s.quad[i].single[0].y;
if (is_ntsc() && y < 0xe) if (is_ntsc() && y < 0xe)
@ -605,7 +605,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl
{ {
int x = (m_vdc.s.quad[i].single[0].x + 5) * 2; int x = (m_vdc.s.quad[i].single[0].x + 5) * 2;
for (int j = 0; j < ARRAY_LENGTH(m_vdc.s.quad[0].single); j++, x += 16) for (int j = 0; j < std::size(m_vdc.s.quad[0].single); j++, x += 16)
{ {
int offset = (m_vdc.s.quad[i].single[j].ptr | ((m_vdc.s.quad[i].single[j].color & 0x01) << 8)) + (y >> 1) + ((scanline - y) >> 1); int offset = (m_vdc.s.quad[i].single[j].ptr | ((m_vdc.s.quad[i].single[j].color & 0x01) << 8)) + (y >> 1) + ((scanline - y) >> 1);
@ -617,7 +617,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl
} }
// regular foreground objects // regular foreground objects
for (int i = ARRAY_LENGTH(m_vdc.s.foreground) - 1; i >= 0; i--) for (int i = std::size(m_vdc.s.foreground) - 1; i >= 0; i--)
{ {
int y = m_vdc.s.foreground[i].y; int y = m_vdc.s.foreground[i].y;
if (is_ntsc() && y < 0xe) if (is_ntsc() && y < 0xe)
@ -642,7 +642,7 @@ void i8244_device::draw_major(int scanline, bitmap_ind16 &bitmap, const rectangl
void i8244_device::draw_minor(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect) void i8244_device::draw_minor(int scanline, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
// minor system (sprites) // minor system (sprites)
for (int i = ARRAY_LENGTH(m_vdc.s.sprites) - 1; i >= 0; i--) for (int i = std::size(m_vdc.s.sprites) - 1; i >= 0; i--)
{ {
int y = m_vdc.s.sprites[i].y; int y = m_vdc.s.sprites[i].y;
int height = 8; int height = 8;

View File

@ -256,7 +256,7 @@ void i82730_device::execute_command()
uint8_t command = read_byte(m_cbp + 1); uint8_t command = read_byte(m_cbp + 1);
uint16_t tmp; uint16_t tmp;
if (VERBOSE_COMMANDS && command < ARRAY_LENGTH(s_command_names)) if (VERBOSE_COMMANDS && command < std::size(s_command_names))
logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), s_command_names[command], m_cbp); logerror("%s('%s'): executing command: %s [cbp = %08x]\n", shortname(), basetag(), s_command_names[command], m_cbp);
tmp = read_word(m_cbp + 2); tmp = read_word(m_cbp + 2);

View File

@ -92,7 +92,7 @@ void jangou_blitter_device::device_start()
void jangou_blitter_device::device_reset() void jangou_blitter_device::device_reset()
{ {
memset(m_pen_data, 0, ARRAY_LENGTH(m_pen_data)); std::fill(std::begin(m_pen_data), std::end(m_pen_data), 0);
m_bltflip = false; m_bltflip = false;
m_src_addr = 0; m_src_addr = 0;
} }

View File

@ -555,7 +555,7 @@ mc6847_base_device::mc6847_base_device(const machine_config &mconfig, device_typ
{ {
m_palette = s_palette; m_palette = s_palette;
for (int i = 0; i < ARRAY_LENGTH(s_palette); i++) for (int i = 0; i < std::size(s_palette); i++)
{ {
m_bw_palette[i] = black_and_white(s_palette[i]); m_bw_palette[i] = black_and_white(s_palette[i]);
} }
@ -693,7 +693,7 @@ void mc6847_base_device::record_scanline_res(int scanline, int32_t start_pos, in
{ {
// update values // update values
//assert(current_sample_count >= 0); //assert(current_sample_count >= 0);
assert(current_sample_count < ARRAY_LENGTH(m_data[scanline].m_mode)); assert(current_sample_count < std::size(m_data[scanline].m_mode));
update_value(&m_data[scanline].m_mode[current_sample_count], simplify_mode(data, m_mode)); update_value(&m_data[scanline].m_mode[current_sample_count], simplify_mode(data, m_mode));
update_value(&m_data[scanline].m_data[current_sample_count], data); update_value(&m_data[scanline].m_data[current_sample_count], data);
current_sample_count++; current_sample_count++;
@ -948,7 +948,7 @@ mc6847_friend_device::character_map::character_map(const uint8_t *text_fontdata,
m_stripes[i] = ~(i / 12); m_stripes[i] = ~(i / 12);
// loop through all modes // loop through all modes
for (mode = 0; mode < ARRAY_LENGTH(m_entries); mode++) for (mode = 0; mode < std::size(m_entries); mode++)
{ {
const uint8_t *fontdata; const uint8_t *fontdata;
uint8_t character_mask; uint8_t character_mask;

View File

@ -107,7 +107,7 @@ protected:
uint8_t character = data[i]; uint8_t character = data[i];
// based on the mode, determine which entry to use // based on the mode, determine which entry to use
const entry *e = &m_entries[mode % ARRAY_LENGTH(m_entries)]; const entry *e = &m_entries[mode % std::size(m_entries)];
// identify the character in the font data // identify the character in the font data
const uint8_t *font_character = e->m_fontdata + (character & e->m_character_mask) * 12; const uint8_t *font_character = e->m_fontdata + (character & e->m_character_mask) * 12;

View File

@ -331,7 +331,7 @@ void nt7534_device::data_write(uint8_t data)
LOG("RAM write %x %x '%c'\n", m_page*132 + m_column, m_dr, isprint(m_dr) ? m_dr : '.'); LOG("RAM write %x %x '%c'\n", m_page*132 + m_column, m_dr, isprint(m_dr) ? m_dr : '.');
if (m_page*132 + m_column < ARRAY_LENGTH(m_ddram)) if (m_page*132 + m_column < std::size(m_ddram))
m_ddram[m_page*132 + m_column] = m_dr; m_ddram[m_page*132 + m_column] = m_dr;
if (m_column < 131) if (m_column < 131)
@ -342,7 +342,7 @@ void nt7534_device::data_write(uint8_t data)
uint8_t nt7534_device::data_read() uint8_t nt7534_device::data_read()
{ {
if (m_page*132 + m_column >= ARRAY_LENGTH(m_ddram)) if (m_page*132 + m_column >= std::size(m_ddram))
return 0; return 0;
uint8_t data = m_ddram[m_page*132 + m_column]; uint8_t data = m_ddram[m_page*132 + m_column];

View File

@ -341,7 +341,7 @@ poly_manager<BaseType, ObjectData, MaxParams, MaxPolys>::~poly_manager()
{ {
// accumulate stats over the entire collection // accumulate stats over the entire collection
int conflicts = 0, resolved = 0; int conflicts = 0, resolved = 0;
for (int i = 0; i < ARRAY_LENGTH(m_conflicts); i++) for (int i = 0; i < std::size(m_conflicts); i++)
{ {
conflicts += m_conflicts[i]; conflicts += m_conflicts[i];
resolved += m_resolved[i]; resolved += m_resolved[i];

View File

@ -360,8 +360,8 @@ void poly_free(legacy_poly_manager *poly)
{ {
#if KEEP_STATISTICS #if KEEP_STATISTICS
{ {
int i, conflicts = 0, resolved = 0; int conflicts = 0, resolved = 0;
for (i = 0; i < ARRAY_LENGTH(poly->conflicts); i++) for (int i = 0; i < std::size(poly->conflicts); i++)
{ {
conflicts += poly->conflicts[i]; conflicts += poly->conflicts[i];
resolved += poly->resolved[i]; resolved += poly->resolved[i];

View File

@ -84,9 +84,10 @@ void pwm_display_device::device_start()
} }
// initialize // initialize
std::fill_n(m_rowdata, ARRAY_LENGTH(m_rowdata), 0); std::fill(std::begin(m_rowdata), std::end(m_rowdata), 0);
std::fill_n(m_rowdata_prev, ARRAY_LENGTH(m_rowdata_prev), 0); std::fill(std::begin(m_rowdata_prev), std::end(m_rowdata_prev), 0);
std::fill_n(*m_bri, ARRAY_LENGTH(m_bri) * ARRAY_LENGTH(m_bri[0]), 0.0); for (auto &bri : m_bri)
std::fill(std::begin(bri), std::end(bri), 0.0);
m_frame_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pwm_display_device::frame_tick),this)); m_frame_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pwm_display_device::frame_tick),this));
m_update_time = machine().time(); m_update_time = machine().time();
@ -215,7 +216,7 @@ void pwm_display_device::update()
void pwm_display_device::schedule_frame() void pwm_display_device::schedule_frame()
{ {
std::fill_n(*m_acc, m_height * ARRAY_LENGTH(m_acc[0]), attotime::zero); std::fill_n(*m_acc, m_height * std::size(m_acc[0]), attotime::zero);
m_framerate = m_framerate_set; m_framerate = m_framerate_set;
m_frame_timer->adjust(m_framerate); m_frame_timer->adjust(m_framerate);

View File

@ -21,7 +21,7 @@ public:
pwm_display_device &set_refresh(attotime duration) { m_framerate_set = duration; return *this; } // time between each outputs refresh pwm_display_device &set_refresh(attotime duration) { m_framerate_set = duration; return *this; } // time between each outputs refresh
pwm_display_device &set_interpolation(double factor) { m_interpolation = factor; return *this; } // frame interpolation (0.0 - 1.0) pwm_display_device &set_interpolation(double factor) { m_interpolation = factor; return *this; } // frame interpolation (0.0 - 1.0)
pwm_display_device &set_segmask(u64 digits, u64 mask); // mask for multi-state outputs, eg. 7seg led pwm_display_device &set_segmask(u64 digits, u64 mask); // mask for multi-state outputs, eg. 7seg led
pwm_display_device &reset_segmask() { std::fill_n(m_segmask, ARRAY_LENGTH(m_segmask), 0); return *this; } pwm_display_device &reset_segmask() { std::fill(std::begin(m_segmask), std::end(m_segmask), 0); return *this; }
pwm_display_device &set_bri_levels(double l0, double l1 = 1.0, double l2 = 1.0, double l3 = 1.0); // brightness threshold per level (0.0 - 1.0) pwm_display_device &set_bri_levels(double l0, double l1 = 1.0, double l2 = 1.0, double l3 = 1.0); // brightness threshold per level (0.0 - 1.0)
pwm_display_device &set_bri_minimum(u8 i) { m_level_min = i; return *this; } // minimum level index for element to be considered "on" pwm_display_device &set_bri_minimum(u8 i) { m_level_min = i; return *this; } // minimum level index for element to be considered "on"
pwm_display_device &set_bri_maximum(double b) { m_level_max = b; return *this; } // maximum brightness level, 0.0 for auto pwm_display_device &set_bri_maximum(double b) { m_level_max = b; return *this; } // maximum brightness level, 0.0 for auto
@ -31,7 +31,7 @@ public:
auto output_a() { return m_output_a_cb.bind(); } auto output_a() { return m_output_a_cb.bind(); }
auto output_digit() { return m_output_digit_cb.bind(); } auto output_digit() { return m_output_digit_cb.bind(); }
void reset_bri_levels() { std::fill_n(m_levels, ARRAY_LENGTH(m_levels), 1.0); } void reset_bri_levels() { std::fill(std::begin(m_levels), std::end(m_levels), 1.0); }
void set_bri_one(u8 i, double level) { m_levels[i] = level; } void set_bri_one(u8 i, double level) { m_levels[i] = level; }
void segmask_one(u8 y, u64 mask) { m_segmask[y] = mask; } void segmask_one(u8 y, u64 mask) { m_segmask[y] = mask; }

View File

@ -251,15 +251,12 @@ void snes_ppu_device::device_start()
} }
} }
for (int i = 0; i < ARRAY_LENGTH(m_scanlines); i++) save_item(STRUCT_MEMBER(m_scanlines, enable));
{ save_item(STRUCT_MEMBER(m_scanlines, clip));
save_item(NAME(m_scanlines[i].enable), i); save_item(STRUCT_MEMBER(m_scanlines, buffer));
save_item(NAME(m_scanlines[i].clip), i); save_item(STRUCT_MEMBER(m_scanlines, priority));
save_item(NAME(m_scanlines[i].buffer), i); save_item(STRUCT_MEMBER(m_scanlines, layer));
save_item(NAME(m_scanlines[i].priority), i); save_item(STRUCT_MEMBER(m_scanlines, blend_exception));
save_item(NAME(m_scanlines[i].layer), i);
save_item(NAME(m_scanlines[i].blend_exception), i);
}
save_item(STRUCT_MEMBER(m_layer, window1_enabled)); save_item(STRUCT_MEMBER(m_layer, window1_enabled));
save_item(STRUCT_MEMBER(m_layer, window1_invert)); save_item(STRUCT_MEMBER(m_layer, window1_invert));
@ -283,8 +280,7 @@ void snes_ppu_device::device_start()
save_item(STRUCT_MEMBER(m_layer, mosaic_counter)); save_item(STRUCT_MEMBER(m_layer, mosaic_counter));
save_item(STRUCT_MEMBER(m_layer, mosaic_offset)); save_item(STRUCT_MEMBER(m_layer, mosaic_offset));
for (int i = 0; i < ARRAY_LENGTH(m_clipmasks); i++) save_item(NAME(m_clipmasks));
save_item(NAME(m_clipmasks[i]), i);
save_item(NAME(m_oam.address)); save_item(NAME(m_oam.address));
save_item(NAME(m_oam.base_address)); save_item(NAME(m_oam.base_address));

Some files were not shown because too many files have changed in this diff Show More