mirror of
https://github.com/holub/mame
synced 2025-05-22 21:58:57 +03:00
- Patched out the majority of the Quizard 1.2 protection check and made the patch more generic. [Harmony]
New games added or promoted from NOT_WORKING status --------------------------------------------------- Quizard 1.2 [Harmony]
This commit is contained in:
parent
47a0037db4
commit
e0a73faa0c
@ -199,6 +199,18 @@ static MACHINE_START( cdi )
|
||||
scc68070_register_globals(machine, &state->scc68070_regs);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( quizrd12 )
|
||||
{
|
||||
scc68070_set_hack_base(0x26F39C);
|
||||
scc68070_set_hack_value(0x021f);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( quizrd17 )
|
||||
{
|
||||
scc68070_set_hack_base(0x264C42);
|
||||
scc68070_set_hack_value(0x021f);
|
||||
}
|
||||
|
||||
static MACHINE_RESET( cdi )
|
||||
{
|
||||
cdi_state *state = machine->driver_data<cdi_state>();
|
||||
@ -208,7 +220,6 @@ static MACHINE_RESET( cdi )
|
||||
memcpy(dst, src, 0x8);
|
||||
|
||||
scc68070_init(machine, &state->scc68070_regs);
|
||||
scc68070_set_hack_value(0x021f);
|
||||
|
||||
machine->device("maincpu")->reset();
|
||||
|
||||
@ -377,9 +388,9 @@ GAME( 1991, cdi, 0, cdi, cdi, 0, ROT0, "Philips
|
||||
// Non-working
|
||||
GAME( 1996, quizard, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard 3.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd22, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard 2.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd12, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard 1.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd12, cdi, cdi, cdi, quizrd12, ROT0, "TAB Austria", "Quizard 1.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr42, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.2", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1998, quizrr41, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard Rainbow 4.1", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
|
||||
// Working
|
||||
GAME( 1995, quizrd17, cdi, cdi, cdi, 0, ROT0, "TAB Austria", "Quizard 1.7", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
GAME( 1995, quizrd17, cdi, cdi, cdi, quizrd17, ROT0, "TAB Austria", "Quizard 1.7", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
|
||||
|
@ -35,7 +35,7 @@ public:
|
||||
|
||||
#define VERBOSE_LEVEL (5)
|
||||
|
||||
#define ENABLE_VERBOSE_LOG (1)
|
||||
#define ENABLE_VERBOSE_LOG (0)
|
||||
|
||||
#define ENABLE_UART_PRINTING (0)
|
||||
|
||||
|
@ -61,17 +61,23 @@ static void scc68070_set_timer_callback(scc68070_regs_t *scc68070, int channel)
|
||||
|
||||
static bool hack_active = false;
|
||||
static UINT16 hack_value = 0;
|
||||
static UINT32 hack_base = 0;
|
||||
|
||||
void scc68070_set_hack_value(UINT16 value)
|
||||
{
|
||||
hack_value = 0x021f;
|
||||
hack_value = value;
|
||||
}
|
||||
|
||||
void scc68070_set_hack_base(UINT32 base)
|
||||
{
|
||||
hack_base = base;
|
||||
}
|
||||
|
||||
static void quizard_patch(running_machine *machine)
|
||||
{
|
||||
address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
|
||||
|
||||
if(space->read_byte(0x264dc4) == 0xfe && space->read_byte(0x264dc5) == 0xf0 && hack_active)
|
||||
if(hack_active)
|
||||
{
|
||||
// Patch out:
|
||||
// 00264C42: C0EE 86BE mulu.w (-$7942,A6), D0
|
||||
@ -89,27 +95,27 @@ static void quizard_patch(running_machine *machine)
|
||||
// 00264C66: B142 eor.w D0, D2
|
||||
// 00264C68: 7000 moveq #$0, D0
|
||||
// 00264C6A: 3002 move.w D2, D0
|
||||
space->write_word(0x264C42, 0);
|
||||
space->write_word(0x264C44, 0);
|
||||
space->write_word(0x264C46, 0);
|
||||
space->write_word(0x264C48, 0);
|
||||
space->write_word(0x264C4A, 0);
|
||||
space->write_word(0x264C4C, 0);
|
||||
space->write_word(0x264C4E, 0);
|
||||
space->write_word(0x264C50, 0);
|
||||
space->write_word(0x264C52, 0);
|
||||
space->write_word(0x264C54, 0);
|
||||
space->write_word(0x264C56, 0);
|
||||
space->write_word(0x264C58, 0);
|
||||
space->write_word(0x264C5A, 0);
|
||||
space->write_word(0x264C5C, 0);
|
||||
space->write_word(0x264C5E, 0);
|
||||
space->write_word(0x264C60, 0);
|
||||
space->write_word(0x264C62, 0);
|
||||
space->write_word(0x264C64, 0);
|
||||
space->write_word(0x264C66, 0x203C);
|
||||
space->write_word(0x264C68, 0x0000);
|
||||
space->write_word(0x264C6A, hack_value);
|
||||
space->write_word(hack_base + 0x00, 0);
|
||||
space->write_word(hack_base + 0x02, 0);
|
||||
space->write_word(hack_base + 0x04, 0);
|
||||
space->write_word(hack_base + 0x06, 0);
|
||||
space->write_word(hack_base + 0x08, 0);
|
||||
space->write_word(hack_base + 0x0a, 0);
|
||||
space->write_word(hack_base + 0x0c, 0);
|
||||
space->write_word(hack_base + 0x0e, 0);
|
||||
space->write_word(hack_base + 0x10, 0);
|
||||
space->write_word(hack_base + 0x12, 0);
|
||||
space->write_word(hack_base + 0x14, 0);
|
||||
space->write_word(hack_base + 0x16, 0);
|
||||
space->write_word(hack_base + 0x18, 0);
|
||||
space->write_word(hack_base + 0x1a, 0);
|
||||
space->write_word(hack_base + 0x1c, 0);
|
||||
space->write_word(hack_base + 0x1e, 0);
|
||||
space->write_word(hack_base + 0x20, 0);
|
||||
space->write_word(hack_base + 0x22, 0);
|
||||
space->write_word(hack_base + 0x24, 0x203C);
|
||||
space->write_word(hack_base + 0x26, 0x0000);
|
||||
space->write_word(hack_base + 0x28, hack_value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -239,6 +239,7 @@ extern WRITE16_HANDLER( scc68070_periphs_w );
|
||||
//extern READ16_HANDLER( uart_loopback_enable );
|
||||
|
||||
extern void scc68070_set_hack_value(UINT16 value);
|
||||
extern void scc68070_set_hack_base(UINT32 base);
|
||||
extern void scc68070_init(running_machine *machine, scc68070_regs_t *scc68070);
|
||||
extern void scc68070_uart_rx(running_machine *machine, scc68070_regs_t *scc68070, UINT8 data);
|
||||
extern void scc68070_uart_tx(running_machine *machine, scc68070_regs_t *scc68070, UINT8 data);
|
||||
|
Loading…
Reference in New Issue
Block a user