static WRITE16_HANDLER( protection_w ) { COMBINE_DATA(prot+offset); if (offset == 1) { UINT32 cmd = (prot[0] << 16) | prot[1]; switch (cmd >> 24) { case 0x64: { UINT32 param1 = (cpu_readmem24bew_word(cmd & 0xffffff) << 16) | cpu_readmem24bew_word((cmd & 0xffffff) + 2); UINT32 param2 = (cpu_readmem24bew_word((cmd & 0xffffff) + 4) << 16) | cpu_readmem24bew_word((cmd & 0xffffff) + 6); switch (param1 >> 24) { case 0x22: { int size = param2 >> 24; param1 &= 0xffffff; param2 &= 0xffffff; while(size >= 0) { cpu_writemem24bew_word(param2, cpu_readmem24bew_word(param1)); param1 += 2; param2 += 2; size--; } break; } } break; } } }
static data32_t readlong_a24_d16(offs_t address) { data32_t result = cpu_readmem24bew_word(address) << 16; return result | cpu_readmem24bew_word(address + 2); }