summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <hazemamewip@hotmail.com>2018-02-08 21:04:28 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2018-02-08 16:04:28 -0500
commit556bdf249f76f415cc7fc8f2d72762688ef97440 (patch)
tree654c6adec70633108ba2fbb879bf76c8d4badf0f
parentf2caf3fbb009076d3c8ab3dae7de4982dcc07e3c (diff)
new machines marked as NOT WORKING - Hammer Boy [alt/deepfb, Dan Dare, mad3001, Habi, AdonĂ­as, cpcmaniaco, Robocfg, Pablo Ruiz, Recreativas.org, DU] (#3181)
-rw-r--r--src/mame/drivers/megaphx.cpp80
-rw-r--r--src/mame/machine/inder_vid.cpp30
-rw-r--r--src/mame/machine/inder_vid.h8
-rw-r--r--src/mame/mame.lst1
4 files changed, 95 insertions, 24 deletions
diff --git a/src/mame/drivers/megaphx.cpp b/src/mame/drivers/megaphx.cpp
index e33cc0492f0..c155e8d14d6 100644
--- a/src/mame/drivers/megaphx.cpp
+++ b/src/mame/drivers/megaphx.cpp
@@ -88,10 +88,10 @@ class megaphx_state : public driver_device
public:
megaphx_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
+ m_indervid(*this, "inder_vid"),
m_maincpu(*this, "maincpu"),
m_mainram(*this, "mainram"),
m_indersb(*this, "inder_sb"),
- m_indervid(*this, "inder_vid"),
m_ppi(*this, "ppi8255_0"),
m_dsw_shifter{ {*this, "ttl166_1"}, {*this, "ttl166_2"} },
m_dsw_data(0),
@@ -110,11 +110,14 @@ public:
DECLARE_DRIVER_INIT(megaphx);
void megaphx(machine_config &config);
+
+protected:
+ virtual void machine_reset() override;
+ required_device<inder_vid_device> m_indervid;
private:
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint16_t> m_mainram;
required_device<inder_sb_device> m_indersb;
- required_device<inder_vid_device> m_indervid;
required_device<i8255_device> m_ppi;
required_device<ttl166_device> m_dsw_shifter[2];
@@ -126,17 +129,35 @@ private:
int m_pic_to_ppi_data;
};
+class hamboy_state : public megaphx_state
+{
+public:
+ hamboy_state(const machine_config &mconfig, device_type type, const char *tag)
+ : megaphx_state(mconfig, type, tag)
+ { }
+
+protected:
+ virtual void machine_reset() override;
+};
+
+void megaphx_state::machine_reset()
+{
+ m_indervid->set_bpp(8);
+}
+
+void hamboy_state::machine_reset()
+{
+ m_indervid->set_bpp(4);
+}
static ADDRESS_MAP_START( megaphx_68k_map, AS_PROGRAM, 16, megaphx_state )
- AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("roms67", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things..
- AM_RANGE(0x000000, 0x0013ff) AM_RAM AM_SHARE("mainram") // maps over part of the rom??
+ AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_REGION("boot", 0x00000) // or the rom doesn't map here? it contains the service mode grid amongst other things..
+ AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_SHARE("mainram") // maps over part of the rom??
AM_RANGE(0x040000, 0x040007) AM_DEVREADWRITE("inder_vid:tms", tms34010_device, host_r, host_w)
AM_RANGE(0x050000, 0x050001) AM_DEVWRITE("inder_sb", inder_sb_device, megaphx_0x050000_w)
AM_RANGE(0x050002, 0x050003) AM_DEVREAD("inder_sb", inder_sb_device, megaphx_0x050002_r)
AM_RANGE(0x060000, 0x060007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
- AM_RANGE(0x800000, 0x83ffff) AM_ROM AM_REGION("roms01", 0x00000) // code + bg gfx are in here
- AM_RANGE(0x840000, 0x87ffff) AM_ROM AM_REGION("roms23", 0x00000) // bg gfx are in here
- AM_RANGE(0x880000, 0x8bffff) AM_ROM AM_REGION("roms45", 0x00000) // bg gfx + title screen in here
+ AM_RANGE(0x800000, 0x8fffff) AM_ROM AM_REGION("data", 0x00000)
ADDRESS_MAP_END
@@ -335,28 +356,24 @@ MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(megaphx_state, megaphx)
{
- uint16_t *src = (uint16_t*)memregion( "roms67" )->base();
+ uint16_t *src = (uint16_t*)memregion( "boot" )->base();
// copy vector table? - it must be writable because the game write the irq vector..
memcpy(m_mainram, src, 0x80);
}
ROM_START( megaphx )
- ROM_REGION16_BE( 0x40000, "roms67", 0 ) // the majority of the data in these does not get used?! (only the vector table) is it just garbage??
+ ROM_REGION16_BE( 0x40000, "boot", 0 ) // the majority of the data in these does not get used?! (only the vector table) is it just garbage??
ROM_LOAD16_BYTE( "mph6.u32", 0x000001, 0x20000, CRC(b99703d4) SHA1(393b6869e71d4c61060e66e0e9e36a1e6ca345d1) )
ROM_LOAD16_BYTE( "mph7.u21", 0x000000, 0x20000, CRC(f11e7449) SHA1(1017142d10011d68e49d3ccdb1ac4e815c03b17a) )
- ROM_REGION16_BE( 0x40000, "roms01", 0 )
+ ROM_REGION16_BE( 0x100000, "data", 0 )
ROM_LOAD16_BYTE( "mph0.u38", 0x000001, 0x20000, CRC(b63dd20f) SHA1(c8ce5985a6ba49428d66a49d9d623ccdfce422c2) )
ROM_LOAD16_BYTE( "mph1.u27", 0x000000, 0x20000, CRC(4dcbf44b) SHA1(a8fa49ecd033f1aeb323e0032ddcf5f8f9463ac0) )
-
- ROM_REGION16_BE( 0x40000, "roms23", 0 )
- ROM_LOAD16_BYTE( "mph2.u37", 0x000001, 0x20000, CRC(a0f69c27) SHA1(d0c5c241d94a1f03f51e7e517e2f9dec6abcf75a) )
- ROM_LOAD16_BYTE( "mph3.u26", 0x000000, 0x20000, CRC(4db84cc5) SHA1(dd74acd4b32c7e7553554ac0f9ba13503358e869) )
-
- ROM_REGION16_BE( 0x40000, "roms45", 0 )
- ROM_LOAD16_BYTE( "mph4.u36", 0x000001, 0x20000, CRC(c8e0725e) SHA1(b3af315b9a94a692e81e0dbfd4035036c2af4f50) )
- ROM_LOAD16_BYTE( "mph5.u25", 0x000000, 0x20000, CRC(c95ccb69) SHA1(9d14cbfafd943f6ff461a7f373170a35e36eb695) )
+ ROM_LOAD16_BYTE( "mph2.u37", 0x040001, 0x20000, CRC(a0f69c27) SHA1(d0c5c241d94a1f03f51e7e517e2f9dec6abcf75a) )
+ ROM_LOAD16_BYTE( "mph3.u26", 0x040000, 0x20000, CRC(4db84cc5) SHA1(dd74acd4b32c7e7553554ac0f9ba13503358e869) )
+ ROM_LOAD16_BYTE( "mph4.u36", 0x080001, 0x20000, CRC(c8e0725e) SHA1(b3af315b9a94a692e81e0dbfd4035036c2af4f50) )
+ ROM_LOAD16_BYTE( "mph5.u25", 0x080000, 0x20000, CRC(c95ccb69) SHA1(9d14cbfafd943f6ff461a7f373170a35e36eb695) )
ROM_REGION( 0x200000, "inder_sb:user2", 0 )
ROM_LOAD( "sonido_mph1.u39", 0x00000, 0x20000, CRC(f5e65557) SHA1(5ae759c2bcef96fbda42f088c02b6dec208030f3) )
@@ -373,4 +390,31 @@ ROM_START( megaphx )
ROM_LOAD( "p40_u29_palce16v8h-25.jed", 0x000, 0xbd4, CRC(44b7e51c) SHA1(b8b34f3b319d664ec3ad72ed87d9f65701f183a5) )
ROM_END
+ROM_START( hamboy )
+ ROM_REGION16_BE( 0x40000, "boot", 0 ) // these only contain the boot vectors(!)
+ ROM_LOAD16_BYTE( "HB8 - U32.bin", 0x000001, 0x20000, CRC(4f7b142a) SHA1(e6e6cb05672e4f99def69be2f4cbc56f5d37f226) )
+ ROM_LOAD16_BYTE( "HB9 - U21.bin", 0x000000, 0x20000, CRC(138e294f) SHA1(671b34395f0773889ddf6aa1f4291df981d1b059) )
+
+ ROM_REGION16_BE( 0x100000, "data", 0 )
+ ROM_LOAD16_BYTE( "HB0 - U38.bin", 0x000001, 0x20000, CRC(b946a47f) SHA1(7f78a198fa3c5a00c124ab62473da4cddc0ac31f) )
+ ROM_LOAD16_BYTE( "HB1 - U27.bin", 0x000000, 0x20000, CRC(890e1571) SHA1(e4a50a1849e9bc9853070da160e042f13737d8d2) )
+ ROM_LOAD16_BYTE( "HB2 - U37.bin", 0x040001, 0x20000, CRC(b71b0aad) SHA1(fb2525a1581e6aa9a60ce76a09947b8d1941951c) )
+ ROM_LOAD16_BYTE( "HB3 - U26.bin", 0x040000, 0x20000, CRC(1d0d61b9) SHA1(d747c8c31a81364d85ac00c50cefd695868d916d) )
+ ROM_LOAD16_BYTE( "HB4 - U36.bin", 0x080001, 0x20000, CRC(9b81948e) SHA1(9e8bbee7f19e97d81205add7dbe89b353c6ab25a) )
+ ROM_LOAD16_BYTE( "HB5 - U25.bin", 0x080000, 0x20000, CRC(23885e08) SHA1(f0233e3e007715d1b0b94fd52ffb597d667dc818) )
+ ROM_LOAD16_BYTE( "HB6 - U35.bin", 0x0c0001, 0x20000, CRC(0c479648) SHA1(a07947b0b4e526b853782545bfdf73effa6c6579) )
+ ROM_LOAD16_BYTE( "HB7 - U24.bin", 0x0c0000, 0x20000, CRC(297a6944) SHA1(7c5c66412db7905b0302a4e451fc20c20233990e) )
+
+ ROM_REGION( 0x200000, "inder_sb:user2", 0 )
+ ROM_LOAD( "Sonido HammerBoy 0 - U39.bin", 0x00000, 0x20000, CRC(8d94ac97) SHA1(3447e4b5670880a9b222cba84f5630e8ed42c2d3) )
+ ROM_LOAD( "Sonido HammerBoy 1 - U38.bin", 0x20000, 0x20000, CRC(f92e5098) SHA1(10c869c7b1250a119bf201bfc8c586e9340c2a66) )
+
+ ROM_REGION( 0x100000, "inder_sb:audiocpu", 0 )
+ ROM_LOAD( "HammerBoy - U35.bin", 0x000000, 0x2000, CRC(cd22f2a4) SHA1(c5cf5b1ce528412493e2b5f565ed38e3e9123d37) )
+
+ ROM_REGION( 0x100000, "pic", 0 )
+ ROM_LOAD( "pic16c54-xt.bin", 0x000000, 0x430, BAD_DUMP CRC(21f396fb) SHA1(c8badb9b3681e684bced0ced1de4c3a15641de8b) ) // from Mega Phoenix, probably wrong for this
+ROM_END
+
GAME( 1991, megaphx, 0, megaphx, megaphx, megaphx_state, megaphx, ROT0, "Dinamic / Inder", "Mega Phoenix", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1990, hamboy, 0, megaphx, megaphx, hamboy_state, megaphx, ROT0, "Dinamic / Inder", "Hammer Boy", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/machine/inder_vid.cpp b/src/mame/machine/inder_vid.cpp
index 3db45e7e43c..8e665e9c250 100644
--- a/src/mame/machine/inder_vid.cpp
+++ b/src/mame/machine/inder_vid.cpp
@@ -16,7 +16,8 @@ inder_vid_device::inder_vid_device(const machine_config &mconfig, const char *ta
/* device_video_interface(mconfig, *this, false), */
m_vram(*this, "vram"),
m_palette(*this, "palette"),
- m_tms(*this, "tms")
+ m_tms(*this, "tms"),
+ m_bpp_mode(8)
{
}
@@ -43,13 +44,30 @@ TMS340X0_SCANLINE_RGB32_CB_MEMBER(inder_vid_device::scanline)
int coladdr = params->coladdr;
int x;
- for (x = params->heblnk; x < params->hsblnk; x += 2)
+ if (m_bpp_mode == 8)
{
- uint16_t pixels = vram[coladdr++ & 0xff];
- dest[x + 0] = paldata[pixels & 0xff];
- dest[x + 1] = paldata[pixels >> 8];
+ for (x = params->heblnk; x < params->hsblnk; x += 2)
+ {
+ uint16_t pixels = vram[coladdr++ & 0xff];
+ dest[x + 0] = paldata[pixels & 0xff];
+ dest[x + 1] = paldata[pixels >> 8];
+ }
+ }
+ else if (m_bpp_mode == 4)
+ {
+ for (x = params->heblnk; x < params->hsblnk; x += 4)
+ {
+ uint16_t pixels = vram[coladdr++ & 0xff];
+ dest[x + 3] = paldata[((pixels & 0xf000) >> 12)];
+ dest[x + 2] = paldata[((pixels & 0x0f00) >> 8)];
+ dest[x + 1] = paldata[((pixels & 0x00f0) >> 4)];
+ dest[x + 0] = paldata[((pixels & 0x000f) >> 0)];
+ }
+ }
+ else
+ {
+ fatalerror("inder_vid_device unsupported mode, not 4bpp or 8bpp");
}
-
}
diff --git a/src/mame/machine/inder_vid.h b/src/mame/machine/inder_vid.h
index 5be0ea3e56d..982c75cb5b5 100644
--- a/src/mame/machine/inder_vid.h
+++ b/src/mame/machine/inder_vid.h
@@ -28,6 +28,12 @@ public:
// construction/destruction
inder_vid_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // probably set by a register somewhere either on TMS side or 68k side
+ void set_bpp(int bpp)
+ {
+ m_bpp_mode = bpp;
+ }
+
protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
@@ -45,6 +51,8 @@ private:
TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline);
+
+ int m_bpp_mode;
};
#endif // MAME_MACHINE_INDER_VID_H
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index b0ea565f4de..c268afa6c3b 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -20528,6 +20528,7 @@ rad_ssoc // (c)2004 Radica
@source:megaphx.cpp
megaphx // (c) 1991 Dinamic / Inder
+hamboy // (c) 1990 Dinamic / Inder
@source:megaplay.cpp
megaplay //