void darkedge_fd1149_vblank(void) { program_write_word(0x20f072, 0); program_write_word(0x20f082, 0); if( program_read_byte(0x20a12c) != 0 ) { program_write_byte(0x20a12c, program_read_byte(0x20a12c)-1 ); if( program_read_byte(0x20a12c) == 0 ) program_write_byte(0x20a12e, 1); } }
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 = (program_read_word(cmd & 0xffffff) << 16) | program_read_word((cmd & 0xffffff) + 2); UINT32 param2 = (program_read_word((cmd & 0xffffff) + 4) << 16) | program_read_word((cmd & 0xffffff) + 6); switch (param1 >> 24) { case 0x22: { int size = param2 >> 24; param1 &= 0xffffff; param2 &= 0xffffff; while(size >= 0) { program_write_word(param2, program_read_word(param1)); param1 += 2; param2 += 2; size--; } break; } } break; } } }