mirror of
https://github.com/holub/mame
synced 2025-10-05 00:38:58 +03:00
Coco loco (set 3): Added technical notes about the code analysis.
The program is bitrotten and needs a redump. Added a little patch for testing purposes. [Roberto Fresca]
This commit is contained in:
parent
ea7c12ce96
commit
deb8df74fc
@ -161,13 +161,15 @@
|
|||||||
|
|
||||||
The third set is resetting after drawing the maze, and when start a game.
|
The third set is resetting after drawing the maze, and when start a game.
|
||||||
|
|
||||||
The attract one:
|
Attract reset:
|
||||||
|
|
||||||
bp D28E (this is after all the jsr tables that draw the maze)
|
bp d28e (this is after all the jsr tables that draw the maze)
|
||||||
$D296: jsr $E0CD...
|
$d296: jsr $e0cd...
|
||||||
$E189 (jsr $6337) ; $6337 ---> Goes nowhere. Hit the 00's (BRK) and reset.
|
$e189 (jsr $6337) ; $6337 ---> Goes nowhere. Hit the 00's (BRK) and reset.
|
||||||
|
|
||||||
Maybe should be jsr $E337 (MSB active)? There, there is a subroutina that has sense.
|
Start reset:
|
||||||
|
|
||||||
|
$e0e9: 4c ee 60 ; jmp $60ee <--- nothing here.
|
||||||
|
|
||||||
***************************************************************************************
|
***************************************************************************************
|
||||||
|
|
||||||
@ -220,6 +222,8 @@ public:
|
|||||||
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
|
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(cocob);
|
||||||
|
|
||||||
virtual void video_start() override;
|
virtual void video_start() override;
|
||||||
DECLARE_PALETTE_INIT(cocoloco);
|
DECLARE_PALETTE_INIT(cocoloco);
|
||||||
|
|
||||||
@ -582,11 +586,17 @@ ROM_START( cocolocoa )
|
|||||||
ROM_LOAD( "tbp28l22.bin", 0x0000, 0x0100, CRC(3bf3ccb0) SHA1(d61d19d38045f42a9adecf295e479fee239bed48) ) // same decode prom from abattle (astrof.cpp)
|
ROM_LOAD( "tbp28l22.bin", 0x0000, 0x0100, CRC(3bf3ccb0) SHA1(d61d19d38045f42a9adecf295e479fee239bed48) ) // same decode prom from abattle (astrof.cpp)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
/* This Petaco's 2-player game
|
||||||
|
seems to soffer of some bitrot.
|
||||||
|
|
||||||
|
The code executes subroutines located out of the ROM space.
|
||||||
|
Finally jumps to nowhere.
|
||||||
|
*/
|
||||||
ROM_START( cocolocob )
|
ROM_START( cocolocob )
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
ROM_LOAD( "b1.bin", 0xd000, 0x0800, CRC(5ead42c4) SHA1(f2b8bf48f80c99c8c109ec67cdd6e1105f7f9702) )
|
ROM_LOAD( "b1.bin", 0xd000, 0x0800, CRC(5ead42c4) SHA1(f2b8bf48f80c99c8c109ec67cdd6e1105f7f9702) )
|
||||||
ROM_LOAD( "b-c1.bin", 0xd800, 0x0800, CRC(104db6b3) SHA1(d0a9ce1b920124078f442bdcb226e8da9f96d60a) )
|
ROM_LOAD( "b-c1.bin", 0xd800, 0x0800, CRC(104db6b3) SHA1(d0a9ce1b920124078f442bdcb226e8da9f96d60a) )
|
||||||
ROM_LOAD( "c1.bin", 0xe000, 0x0800, CRC(8774b1bc) SHA1(b7c09883c136dedfffd0724b49cc5ff987831850) )
|
ROM_LOAD( "c1.bin", 0xe000, 0x0800, BAD_DUMP CRC(8774b1bc) SHA1(b7c09883c136dedfffd0724b49cc5ff987831850) )
|
||||||
ROM_LOAD( "d1.bin", 0xe800, 0x0800, CRC(41b22627) SHA1(241659448074e5101ca7da3feb4a0a38580b12e9) )
|
ROM_LOAD( "d1.bin", 0xe800, 0x0800, CRC(41b22627) SHA1(241659448074e5101ca7da3feb4a0a38580b12e9) )
|
||||||
ROM_LOAD( "d-e1.bin", 0xf000, 0x0800, CRC(db93f941) SHA1(b827341e408b5dc50acdfd3586f829f7bb2bb915) )
|
ROM_LOAD( "d-e1.bin", 0xf000, 0x0800, CRC(db93f941) SHA1(b827341e408b5dc50acdfd3586f829f7bb2bb915) )
|
||||||
ROM_LOAD( "e1.bin", 0xf800, 0x0800, CRC(4e5705f0) SHA1(271d6c8eff331327dc1a75f7a4b0c64d3e363e3d) )
|
ROM_LOAD( "e1.bin", 0xf800, 0x0800, CRC(4e5705f0) SHA1(271d6c8eff331327dc1a75f7a4b0c64d3e363e3d) )
|
||||||
@ -596,11 +606,29 @@ ROM_START( cocolocob )
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
/***********************************
|
||||||
|
* Driver Init *
|
||||||
|
***********************************/
|
||||||
|
|
||||||
|
DRIVER_INIT_MEMBER(cocoloco_state, cocob)
|
||||||
|
{
|
||||||
|
// Just for testing...
|
||||||
|
|
||||||
|
UINT8 *rom = memregion("maincpu")->base();
|
||||||
|
|
||||||
|
rom[0xe18b] = rom[0xe18b] ^ 0x80; // with jsr $e337, the character doesn't turn and eat straight (maze included)
|
||||||
|
|
||||||
|
rom[0xe049] = 0xea;
|
||||||
|
rom[0xe04a] = 0xea;
|
||||||
|
rom[0xe04b] = 0xea;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************
|
/***********************************
|
||||||
* Game Drivers *
|
* Game Drivers *
|
||||||
***********************************/
|
***********************************/
|
||||||
|
|
||||||
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
|
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
|
||||||
GAME( 198?, cocoloco, 0, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco (set 1)", MACHINE_SUPPORTS_SAVE )
|
GAME( 198?, cocoloco, 0, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 198?, cocolocoa, cocoloco, cocoloco, cocolocoa, driver_device, 0, ROT90, "Recel S.A.", "Coco Loco (set 2)", MACHINE_SUPPORTS_SAVE )
|
GAME( 198?, cocolocoa, cocoloco, cocoloco, cocolocoa, driver_device, 0, ROT90, "Recel S.A.", "Coco Loco (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 198?, cocolocob, cocoloco, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco (set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
GAME( 198?, cocolocob, cocoloco, cocoloco, cocoloco, cocoloco_state, cocob, ROT90, "Petaco S.A.", "Coco Loco (set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||||
|
Loading…
Reference in New Issue
Block a user