From 25811d74a8f456d96d061368baf34b5b225612b1 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 6 Feb 2018 18:10:22 +0100 Subject: new working clone ---------------------------- Rabbit (Japan, location test) [Hammy, Spinalfeyd, The Dumping Union] --- src/mame/drivers/rabbit.cpp | 94 ++++++++++++++++++++++++++++++++------------- src/mame/mame.lst | 1 + 2 files changed, 68 insertions(+), 27 deletions(-) diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp index f56eceb345a..24e6a305adb 100644 --- a/src/mame/drivers/rabbit.cpp +++ b/src/mame/drivers/rabbit.cpp @@ -5,7 +5,7 @@ -= 68020 + Imagetek I5000 Games =- driver by David Haywood - partly based on metro.c driver by Luca Elia + partly based on metro.cpp driver by Luca Elia Main CPU : MC68020 @@ -30,7 +30,7 @@ To Do: Notes: -(1) This is currently in its own driver "tmmjprd.c" because it uses the +(1) This is currently in its own driver "tmmjprd.cpp" because it uses the chip in a completely different way to Rabbit. They should be merged again later, once the chip is better understood. @@ -66,8 +66,6 @@ Notes: Only ROMs positions 60, 50, 40, 02, 03, 10, 11, 01, 00 are populated. - There is known to exist an earlier Japanese prototype version of Rabbit which is currently not dumped. - Tokimeki Mahjong Paradise - Dear My Love Board Notes ---------------------------------------------------- @@ -113,6 +111,28 @@ public: m_blitterregs(*this, "blitterregs"), m_spriteram(*this, "spriteram") { } + DECLARE_WRITE32_MEMBER(tilemap0_w); + DECLARE_WRITE32_MEMBER(tilemap1_w); + DECLARE_WRITE32_MEMBER(tilemap2_w); + DECLARE_WRITE32_MEMBER(tilemap3_w); + DECLARE_READ32_MEMBER(tilemap0_r); + DECLARE_READ32_MEMBER(tilemap1_r); + DECLARE_READ32_MEMBER(tilemap2_r); + DECLARE_READ32_MEMBER(tilemap3_r); + DECLARE_READ32_MEMBER(randomrabbits); + DECLARE_WRITE32_MEMBER(rombank_w); + DECLARE_WRITE32_MEMBER(blitter_w); + DECLARE_WRITE32_MEMBER(eeprom_write); + + DECLARE_DRIVER_INIT(rabbit); + + void rabbit(machine_config &config); + +protected: + virtual void video_start() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + +private: required_device m_maincpu; required_device m_eeprom; required_device m_gfxdecode; @@ -137,21 +157,6 @@ public: tilemap_t *m_tilemap[4]; emu_timer *m_blit_done_timer; - DECLARE_WRITE32_MEMBER(tilemap0_w); - DECLARE_WRITE32_MEMBER(tilemap1_w); - DECLARE_WRITE32_MEMBER(tilemap2_w); - DECLARE_WRITE32_MEMBER(tilemap3_w); - DECLARE_READ32_MEMBER(tilemap0_r); - DECLARE_READ32_MEMBER(tilemap1_r); - DECLARE_READ32_MEMBER(tilemap2_r); - DECLARE_READ32_MEMBER(tilemap3_r); - DECLARE_READ32_MEMBER(randomrabbits); - DECLARE_WRITE32_MEMBER(rombank_w); - DECLARE_WRITE32_MEMBER(blitter_w); - DECLARE_WRITE32_MEMBER(eeprom_write); - - DECLARE_DRIVER_INIT(rabbit); - TILE_GET_INFO_MEMBER(get_tilemap0_tile_info); TILE_GET_INFO_MEMBER(get_tilemap1_tile_info); TILE_GET_INFO_MEMBER(get_tilemap2_tile_info); @@ -159,8 +164,6 @@ public: INTERRUPT_GEN_MEMBER(vblank_interrupt); - virtual void video_start() override; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); inline void get_tilemap_info(tile_data &tileinfo, int tile_index, int whichtilemap, int tilesize); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); @@ -168,10 +171,6 @@ public: void draw_sprite_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect ); void drawtilemap( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int whichtilemap ); void do_blit(); - - void rabbit(machine_config &config); -protected: - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; @@ -361,7 +360,7 @@ void rabbit_state::clearspritebitmap( bitmap_ind16 &bitmap, const rectangle &cli } } -/* todo: fix zoom, its inaccurate and this code is ugly */ +/* todo: fix zoom, it's inaccurate and this code is ugly */ void rabbit_state::draw_sprite_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect ) { uint32_t x,y; @@ -984,5 +983,46 @@ ROM_START( rabbit ) ROM_LOAD( "rabbit.nv", 0x0000, 0x0080, CRC(73d471ed) SHA1(45e045f5ea9036342b88013e021d402741d98537) ) ROM_END +ROM_START( rabbitjt ) + ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 Code */ + ROM_LOAD32_BYTE( "wotr0.0", 0x000000, 0x080000, CRC(a1c30c91) SHA1(fe35c5521acba902ca74c6d1ea2b92593138a10a) ) + ROM_LOAD32_BYTE( "wotr1.1", 0x000001, 0x080000, CRC(9b7697e6) SHA1(c60cdc3db7321b2846637d92ae864ca80796ad73) ) + ROM_LOAD32_BYTE( "wotr2.2", 0x000002, 0x080000, CRC(9809b825) SHA1(05f965c87782062e66e5a88313a12b230de90800) ) + ROM_LOAD32_BYTE( "wotr3.3", 0x000003, 0x080000, CRC(ce8ebb82) SHA1(69eb8410a3b7d9cbb682d0911bcad1a92ac3aca7) ) + + +// the rom test tests as if things were mapped like this (video chip / blitter space?) +#if 0 + ROM_REGION( 0x9000000, "test", ROMREGION_ERASE ) + ROM_LOAD32_WORD( "jfv0.00", 0x0000002, 0x400000, CRC(b2a4d3d3) SHA1(0ab71d82a37ff94442b91712a28d3470619ba575) ) // sprite gfx + ROM_LOAD32_WORD( "jfv1.01", 0x0000000, 0x400000, CRC(83f3926e) SHA1(b1c479e675d35fc08c9a7648ff40348a24654e7e) ) // sprite gfx + ROM_LOAD32_WORD( "jsn0.11", 0x0800002, 0x400000, CRC(e1f726e8) SHA1(598d75f3ff9e43ec8ce6131ed37f4345bf2f2d8e) ) // sound + ROM_LOAD32_WORD( "jfv2.02", 0x2000002, 0x400000, CRC(b264bfb5) SHA1(8fafedb6af74150465b1773e80aef0edc3da4678) ) // sprite gfx + ROM_LOAD32_WORD( "jfv3.03", 0x2000000, 0x400000, CRC(3e1a9be2) SHA1(2082a4ae8cda84cec5ea0fc08753db387bb70d41) ) // sprite gfx + ROM_LOAD16_BYTE( "jbg0.40", 0x4000001, 0x200000, CRC(89662944) SHA1(ca916ba38480fa588af19fc9682603f5195ad6c7) ) // bg gfx (fails check?) + ROM_LOAD16_BYTE( "jbg1.50", 0x6000000, 0x200000, CRC(1fc7f6e0) SHA1(b36062d2a9683683ffffd3003d5244a185f53280) ) // bg gfx + ROM_LOAD16_BYTE( "jbg2.60", 0x8000001, 0x200000, CRC(aee265fc) SHA1(ec420ab30b9b5141162223fc1fbf663ad9f211e6) ) // bg gfx +#endif + + ROM_REGION( 0x1000000, "gfx1", 0 ) /* Sprite Roms (and Blitter Data) */ + ROM_LOAD32_WORD( "jfv0.00", 0x0000002, 0x400000, CRC(b2a4d3d3) SHA1(0ab71d82a37ff94442b91712a28d3470619ba575) ) + ROM_LOAD32_WORD( "jfv1.01", 0x0000000, 0x400000, CRC(83f3926e) SHA1(b1c479e675d35fc08c9a7648ff40348a24654e7e) ) + ROM_LOAD32_WORD( "jfv2.02", 0x0800002, 0x400000, CRC(b264bfb5) SHA1(8fafedb6af74150465b1773e80aef0edc3da4678) ) + ROM_LOAD32_WORD( "jfv3.03", 0x0800000, 0x400000, CRC(3e1a9be2) SHA1(2082a4ae8cda84cec5ea0fc08753db387bb70d41) ) + + + ROM_REGION( 0x600000, "gfx2", 0 ) /* BG Roms */ + ROM_LOAD( "jbg0.40", 0x000000, 0x200000, CRC(89662944) SHA1(ca916ba38480fa588af19fc9682603f5195ad6c7) ) + ROM_LOAD( "jbg1.50", 0x200000, 0x200000, CRC(1fc7f6e0) SHA1(b36062d2a9683683ffffd3003d5244a185f53280) ) + ROM_LOAD( "jbg2.60", 0x400000, 0x200000, CRC(aee265fc) SHA1(ec420ab30b9b5141162223fc1fbf663ad9f211e6) ) + + ROM_REGION( 0x400000, "i5000snd", ROMREGION_ERASE ) /* sound rom */ + ROM_LOAD( "jsn0.11", 0x000000, 0x000018, CRC(e1f726e8) SHA1(598d75f3ff9e43ec8ce6131ed37f4345bf2f2d8e) ) // header "VCDT i5000" + ROM_CONTINUE( 0x000000, 0x3fffe8 ) // sample data starts here + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD( "rabbit.nv", 0x0000, 0x0080, CRC(73d471ed) SHA1(45e045f5ea9036342b88013e021d402741d98537) ) +ROM_END -GAME( 1997, rabbit, 0, rabbit, rabbit, rabbit_state, rabbit, ROT0, "Aorn / Electronic Arts", "Rabbit (Asia 3/6)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // somewhat playable +GAME( 1997, rabbit, 0, rabbit, rabbit, rabbit_state, rabbit, ROT0, "Aorn / Electronic Arts", "Rabbit (Asia 3/6)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // This is the Asian version sold in Korea but the devs forgot to update the disclaimer. It has English text. +GAME( 1996, rabbitjt, rabbit, rabbit, rabbit, rabbit_state, rabbit, ROT0, "Aorn / Electronic Arts", "Rabbit (Japan, location test)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // Japanese text. diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4425f420bf5..1d83d9e0ad9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -32450,6 +32450,7 @@ r9751 // ROLM 9751 phone system @source:rabbit.cpp rabbit // (c) 1997 Electronic Arts +rabbitjt // (c) 1996 Electronic Arts @source:rad_eu3a14.cpp rad_gtg -- cgit v1.2.3