summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/rabbit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/rabbit.cpp')
-rw-r--r--src/mame/drivers/rabbit.cpp94
1 files changed, 67 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<cpu_device> m_maincpu;
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<gfxdecode_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.