From 37f6fd066c9f7232e443758ebde041ed6e9eaee0 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 30 Jul 2013 19:39:49 +0000 Subject: [PATCH] make puzzli2 play some intro music (nw) --- src/mame/machine/pgmprot_igs027a_type1.c | 28 +++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/mame/machine/pgmprot_igs027a_type1.c b/src/mame/machine/pgmprot_igs027a_type1.c index 0ed1fe36067..8456653e526 100644 --- a/src/mame/machine/pgmprot_igs027a_type1.c +++ b/src/mame/machine/pgmprot_igs027a_type1.c @@ -570,8 +570,12 @@ void pgm_arm_type1_state::command_handler_puzzli2(int pc) switch (m_ddp3lastcommand) { - case 0x13: // ASIC status? + case 0x13: // getting some kind of list maybe? + { + m_valueresponse = 0x74<<16; // 2d or 74! (based on?) + + } break; case 0x31: @@ -626,12 +630,30 @@ void pgm_arm_type1_state::command_handler_puzzli2(int pc) m_valueresponse = 0x36<<16; break; + + // 63/67 are used on startup to get the z80 music at least + case 0x63: // used as a read address by the 68k code (related to previous uploaded values like cave?) should point at a table of ~0x80 in size? seems to use values as further pointers? - m_valueresponse = 0x00600000; + if (m_value0==0x0002) + { + m_valueresponse = 0x0016ebf2; // right for puzzli2 , wrong for puzzli2s, probably calculated from the writes then? + } + else + { + m_valueresponse = 0x00600000; // wrong + + } break; case 0x67: // used as a read address by the 68k code (related to previous uploaded values like cave?) directly reads ~0xDBE from the address.. - m_valueresponse = 0x00400000; + if (m_value0==0x0002) + { + m_valueresponse = 0x00166178; // right for puzzli2 , wrong for puzzli2s, probably calculated from the writes then? + } + else + { + m_valueresponse = 0x00400000; // wrong + } break; default: