diff --git a/src/mame/drivers/kangaroo.c b/src/mame/drivers/kangaroo.c index 61243ef4409..3c1334c789f 100644 --- a/src/mame/drivers/kangaroo.c +++ b/src/mame/drivers/kangaroo.c @@ -1,6 +1,17 @@ /*************************************************************************** - Sun Electronics Kangaroo hardware + Sun Electronics hardware: + + TVG-1-CPU-B + 2 x Z80 + AY-3-9810 + 8-way DipSwitch + Service Switch + Program ROMS (both Main & Sound) + MB8841 (at least for Kangaroo) + TVG-1-VIDEO-B + 10MHz OSC + Graphic ROMS driver by Ville Laitinen @@ -69,6 +80,65 @@ (CPU#0) standard IM 1 interrupt mode (rst #38 every vblank) (CPU#1) same here + + Kangaroo Memory Map + HEX R/W D7 D6 D5 D4 D3 D2 D2 D0 function + +------------ Game Microprocessor Memory Space (Z80 - IC15) -------------- + + 0000-5FFF R D D D D D D D D Z80 24K Program ROM + + E000-E3FF R/W D D D D D D D D 1K Working RAM + + E400-E400 R D D D D D D D D Option Switch (DSW0 8 way dipswitch) + + E800 W D D D D D D D D Low Byte\ Start Address of Data in Pictures ROM for DMA + E801 W D D D D D D D D High Byte/ + E802 W D D D D D D D D Low Byte\ Start Address in Bit Map RAM (where picture is to be written) During DMA + E803 W D D D D D D D D High Byte/ + E804 W D D D D D D D D Low Byte\ Picture Size for DMA and DMA Start + E805 W D D D D D D D D High Byte/ + E806 W D D D D D D D D Vertical Start Address in Bit Map + E807 W D D D D D D D D Horizontal Start Address in Bit Map + E808 W D D Bank Select Latch + E809 W D D D D D D A & B Bit Map Control Latch (A=playfield, B=motion) + E80A W D D D D D D Color Shading Latch + + EC00 W D D D D D D D D Sound DATA to Sound Microprocessor + EC00 R D Utility Coin Switch + EC00 R D 1 Player Start + EC00 R D 2 Player Start + EC00 R D Left Coin Input + EC00 R D Right Coin Input + + ED00 W D Coin Counter 1 + ED00 W D Coin Counter 2 (European games) + ED00 R D Player 1 Right + ED00 R D Player 1 Left + ED00 R D Player 1 Up + ED00 R D Player 1 Down + ED00 R D Player 1 Punch + + EE00 R D Player 2 Right + EE00 R D Player 2 Left + EE00 R D Player 2 Up + EE00 R D Player 2 Down + EE00 R D Player 2 Punch + + EFxx-EFxx W D D D D Output to Custom MB8841 Microcomputer + EFxx-EFxx R D D D D Input from Custom MB8841 Microcomputer + +------------ Sound Microprocessor Memory Space (Z80 - IC34) -------------- + + 0000-0FFF R D D D D D D D D Z80 4K Program ROM + + 4000-43FF R/W D D D D D D D D 1K Working RAM + + 6000 R D D D D D D D D Read DATA from Game Microprocessor + + 7000 W D D D D D D D D Write to Sound Chip (GI-AY-3-9810 - IC50) + 8000 W D D D D D D D D Read from Sound Chip + **************************************************************************** In test mode, to test sound press 1 and 2 player start simultaneously. @@ -78,8 +148,8 @@ resetting TODO: - - There is a custom microcontroller on the original Kangaroo board which is - not emulated. This MIGHT cause some problems, but we don't know of any. + - There is a custom MB8841 microcontroller on the original Kangaroo board which + is not emulated. This MIGHT cause some problems, but we don't know of any. ***************************************************************************/ @@ -145,7 +215,7 @@ static MACHINE_RESET( kangaroo ) * *************************************/ -/* I have no idea what the security chip is nor whether it really does, +/* The security chip is a MB8841 with 2K internal rom. Currently it's unknown what it really does, this just seems to do the trick -V- */ @@ -436,28 +506,28 @@ ROM_END ROM_START( kangaroo ) - ROM_REGION( 0x14000, "main", 0 ) - ROM_LOAD( "tvg_75.0", 0x0000, 0x1000, CRC(0d18c581) SHA1(0e0f89d644b79e887c53e5294783843ca7e875ba) ) - ROM_LOAD( "tvg_76.1", 0x1000, 0x1000, CRC(5978d37a) SHA1(684c1092de4a0927a03752903c86c3bbe99e868a) ) - ROM_LOAD( "tvg_77.2", 0x2000, 0x1000, CRC(522d1097) SHA1(09fe627a46d32df2e098d9fad7757f9d61bef41f) ) - ROM_LOAD( "tvg_78.3", 0x3000, 0x1000, CRC(063da970) SHA1(582ff21dd46c651f07a4846e0f8a7544a5891988) ) - ROM_LOAD( "tvg_79.4", 0x4000, 0x1000, CRC(9e5cf8ca) SHA1(015387f038c5670f88c9b22453d074bd9b2a129d) ) - ROM_LOAD( "tvg_80.5", 0x5000, 0x1000, CRC(2fc18049) SHA1(31fcac8eb660739a1672346136a1581a5ef20325) ) + ROM_REGION( 0x14000, "main", 0 ) /* On TVG-1-CPU-B board */ + ROM_LOAD( "tvg_75.0", 0x0000, 0x1000, CRC(0d18c581) SHA1(0e0f89d644b79e887c53e5294783843ca7e875ba) ) /* IC7 */ + ROM_LOAD( "tvg_76.1", 0x1000, 0x1000, CRC(5978d37a) SHA1(684c1092de4a0927a03752903c86c3bbe99e868a) ) /* IC8 */ + ROM_LOAD( "tvg_77.2", 0x2000, 0x1000, CRC(522d1097) SHA1(09fe627a46d32df2e098d9fad7757f9d61bef41f) ) /* IC9 */ + ROM_LOAD( "tvg_78.3", 0x3000, 0x1000, CRC(063da970) SHA1(582ff21dd46c651f07a4846e0f8a7544a5891988) ) /* IC10 */ + ROM_LOAD( "tvg_79.4", 0x4000, 0x1000, CRC(9e5cf8ca) SHA1(015387f038c5670f88c9b22453d074bd9b2a129d) ) /* IC16 */ + ROM_LOAD( "tvg_80.5", 0x5000, 0x1000, CRC(2fc18049) SHA1(31fcac8eb660739a1672346136a1581a5ef20325) ) /* IC17 */ - ROM_REGION( 0x10000, "audio", 0 ) - ROM_LOAD( "tvg_81.8", 0x0000, 0x1000, CRC(fb449bfd) SHA1(f593a0339f47e121736a927587132aeb52704557) ) + ROM_REGION( 0x10000, "audio", 0 ) /* On TVG-1-CPU-B board */ + ROM_LOAD( "tvg_81.8", 0x0000, 0x1000, CRC(fb449bfd) SHA1(f593a0339f47e121736a927587132aeb52704557) ) /* IC24 */ - ROM_REGION( 0x0800, "mcu", 0 ) /* code for the 8841 custom MCU */ - ROM_LOAD( "8841.rom", 0x0000, 0x0800, NO_DUMP ) + ROM_REGION( 0x0800, "mcu", 0 ) /* internal ROM from the 8841 custom MCU */ + ROM_LOAD( "mb8841.ic29", 0x0000, 0x0800, NO_DUMP ) ROM_REGION( 0x0800, "user1", 0 ) /* data for the 8841 custom MCU */ - ROM_LOAD( "tvg_82.12", 0x0000, 0x0800, CRC(57766f69) SHA1(94a7a557d8325799523d5e1a88653a9a3fbe34f9) ) + ROM_LOAD( "tvg_82.12", 0x0000, 0x0800, CRC(57766f69) SHA1(94a7a557d8325799523d5e1a88653a9a3fbe34f9) ) /* IC28 */ - ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "tvg_83.v0", 0x0000, 0x1000, CRC(c0446ca6) SHA1(fca6ba565051337c0198c93b7b8477632e0dd0b6) ) - ROM_LOAD( "tvg_85.v2", 0x1000, 0x1000, CRC(72c52695) SHA1(87f4715fbb7d509bd9cc4e71e2afb0d475bbac13) ) - ROM_LOAD( "tvg_84.v1", 0x2000, 0x1000, CRC(e4cb26c2) SHA1(5016db9d48fdcfb757618659d063b90862eb0e90) ) - ROM_LOAD( "tvg_86.v3", 0x3000, 0x1000, CRC(9e6a599f) SHA1(76b4eddb4efcd8189d8cc5962d8497e82885f212) ) + ROM_REGION( 0x4000, "gfx1", 0 ) /* On TVG-1-VIDEO-B board */ + ROM_LOAD( "tvg_83.v0", 0x0000, 0x1000, CRC(c0446ca6) SHA1(fca6ba565051337c0198c93b7b8477632e0dd0b6) ) /* IC76 */ + ROM_LOAD( "tvg_85.v2", 0x1000, 0x1000, CRC(72c52695) SHA1(87f4715fbb7d509bd9cc4e71e2afb0d475bbac13) ) /* IC77 */ + ROM_LOAD( "tvg_84.v1", 0x2000, 0x1000, CRC(e4cb26c2) SHA1(5016db9d48fdcfb757618659d063b90862eb0e90) ) /* IC52 */ + ROM_LOAD( "tvg_86.v3", 0x3000, 0x1000, CRC(9e6a599f) SHA1(76b4eddb4efcd8189d8cc5962d8497e82885f212) ) /* IC53 */ ROM_END @@ -473,8 +543,8 @@ ROM_START( kangaroa ) ROM_REGION( 0x10000, "audio", 0 ) ROM_LOAD( "136008-107.ic24", 0x0000, 0x1000, CRC(fb449bfd) SHA1(f593a0339f47e121736a927587132aeb52704557) ) - ROM_REGION( 0x0800, "mcu", 0 ) /* code for the 8841 custom MCU */ - ROM_LOAD( "8841.rom", 0x0000, 0x0800, NO_DUMP ) + ROM_REGION( 0x0800, "mcu", 0 ) /* internal ROM from the 8841 custom MCU */ + ROM_LOAD( "mb8841.ic29", 0x0000, 0x0800, NO_DUMP ) ROM_REGION( 0x0800, "user1", 0 ) /* data for the 8841 custom MCU */ ROM_LOAD( "136008-112.ic28", 0x0000, 0x0800, CRC(57766f69) SHA1(94a7a557d8325799523d5e1a88653a9a3fbe34f9) )