mirror of
https://github.com/holub/mame
synced 2025-04-19 07:00:31 +03:00
reverted this commit
This commit is contained in:
parent
a37a2b6664
commit
25a8f0715d
@ -2202,7 +2202,6 @@ files {
|
||||
createMAMEProjects(_target, _subtarget, "nintendo")
|
||||
files {
|
||||
MAME_DIR .. "src/mame/drivers/cham24.c",
|
||||
MAME_DIR .. "src/mame/drivers/mnkymgic.c",
|
||||
MAME_DIR .. "src/mame/drivers/dkong.c",
|
||||
MAME_DIR .. "src/mame/audio/dkong.c",
|
||||
MAME_DIR .. "src/mame/video/dkong.c",
|
||||
|
@ -1196,7 +1196,6 @@ superdqs // ???? (c) 1984
|
||||
superdqa // ???? (c) 1984
|
||||
|
||||
// Nintendo games
|
||||
mnkymgic // (c) 1979 Nintendo
|
||||
spacefev // (c) 1979 Nintendo
|
||||
spacefevo // (c) 1979 Nintendo
|
||||
spacefevo2 // (c) 1979 Nintendo
|
||||
|
@ -1,413 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Hau, Chack'n
|
||||
/***************************************************************************
|
||||
|
||||
|
||||
Monkey Magic
|
||||
(c)1979 Nintendo
|
||||
|
||||
|
||||
--- Team Japump!!! ---
|
||||
Dumped by Chack'n
|
||||
Written by Hau
|
||||
01/Jun/2015
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/i8085/i8085.h"
|
||||
#include "sound/samples.h"
|
||||
|
||||
#define USE_SAMPLES (1)
|
||||
|
||||
|
||||
class mnkymgic_state : public driver_device
|
||||
{
|
||||
public:
|
||||
mnkymgic_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
#if (USE_SAMPLES)
|
||||
m_samples(*this, "samples")
|
||||
#endif
|
||||
{ }
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
#if (USE_SAMPLES)
|
||||
required_device<samples_device> m_samples;
|
||||
#endif
|
||||
|
||||
/* misc */
|
||||
tilemap_t *m_bg_tilemap;
|
||||
UINT8 m_obj_ball_x;
|
||||
UINT8 m_obj_ball_y;
|
||||
UINT8 m_color_map;
|
||||
UINT8 m_sound_state;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(mnkymgic_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(mnkymgic_obj_ball_x_w);
|
||||
DECLARE_WRITE8_MEMBER(mnkymgic_obj_ball_y_w);
|
||||
DECLARE_WRITE8_MEMBER(mnkymgic_colormap_w);
|
||||
DECLARE_WRITE8_MEMBER(mnkymgic_audio_w);
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
virtual void video_start();
|
||||
DECLARE_PALETTE_INIT(mnkymgic);
|
||||
void draw_ball(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
UINT32 screen_update_mnkymgic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
};
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Video system
|
||||
*
|
||||
*************************************/
|
||||
|
||||
PALETTE_INIT_MEMBER(mnkymgic_state, mnkymgic)
|
||||
{
|
||||
offs_t i;
|
||||
|
||||
for (i = 0; i < palette.entries() / 2; i++)
|
||||
{
|
||||
palette.set_pen_color((i * 2) + 0, rgb_t::black);
|
||||
palette.set_pen_color((i * 2) + 1, rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(mnkymgic_state::get_bg_tile_info)
|
||||
{
|
||||
const UINT8 *prom = memregion("proms")->base();
|
||||
|
||||
int code = m_videoram[tile_index];
|
||||
int color = (prom[code + m_color_map] ^ 0xff) & 0x07;
|
||||
|
||||
SET_TILE_INFO_MEMBER(0, code, color, 0);
|
||||
}
|
||||
|
||||
|
||||
void mnkymgic_state::video_start()
|
||||
{
|
||||
m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(mnkymgic_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 12, 32, 16);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mnkymgic_state::mnkymgic_videoram_w)
|
||||
{
|
||||
m_videoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mnkymgic_state::mnkymgic_obj_ball_x_w)
|
||||
{
|
||||
m_obj_ball_x = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mnkymgic_state::mnkymgic_obj_ball_y_w)
|
||||
{
|
||||
m_obj_ball_y = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(mnkymgic_state::mnkymgic_colormap_w)
|
||||
{
|
||||
m_color_map = (data & 0x08) << 4;
|
||||
}
|
||||
|
||||
|
||||
void mnkymgic_state::draw_ball(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
offs_t offs_x, offs_y;
|
||||
|
||||
if (m_obj_ball_x > 0x02 && m_obj_ball_x < 0xff && m_obj_ball_y > 0x02 && m_obj_ball_y < 0xff)
|
||||
{
|
||||
int ball_y = (((m_obj_ball_y & 0xf0) >> 4) * 12) + (m_obj_ball_y & 0x0f);
|
||||
|
||||
for (offs_y = 0; offs_y < 4; offs_y++)
|
||||
{
|
||||
for (offs_x = 0; offs_x < 4; offs_x++)
|
||||
{
|
||||
bitmap.pix16(ball_y-offs_y, m_obj_ball_x-offs_x) = m_palette->pen(0x0f);;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
UINT32 mnkymgic_state::screen_update_mnkymgic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
bitmap.fill(m_palette->black_pen(), cliprect);
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
draw_ball(bitmap, cliprect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Audio system
|
||||
*
|
||||
*************************************/
|
||||
|
||||
#define SAMPLE_SOUND1 0
|
||||
#define SAMPLE_SOUND2_1 1
|
||||
#define SAMPLE_SOUND2_2 2
|
||||
#define SAMPLE_SOUND3 3
|
||||
#define SAMPLE_SOUND4 4
|
||||
#define SAMPLE_SOUND5 5
|
||||
#define SAMPLE_SOUND6_1 6
|
||||
#define SAMPLE_SOUND6_2 7
|
||||
|
||||
#define CHANNEL_SOUND1 0
|
||||
|
||||
|
||||
#if (USE_SAMPLES)
|
||||
WRITE8_MEMBER(mnkymgic_state::mnkymgic_audio_w)
|
||||
{
|
||||
if (data != m_sound_state)
|
||||
{
|
||||
if (~data & 0x80)
|
||||
{
|
||||
switch (m_sound_state)
|
||||
{
|
||||
case 0xff:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND4);
|
||||
break;
|
||||
|
||||
case 0xfe:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND3);
|
||||
break;
|
||||
|
||||
case 0xfd:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND5);
|
||||
break;
|
||||
|
||||
case 0xfc:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND2_1);
|
||||
break;
|
||||
|
||||
case 0xfb:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND2_2);
|
||||
break;
|
||||
|
||||
case 0xfa:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND6_1);
|
||||
break;
|
||||
|
||||
case 0xf9:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND6_2);
|
||||
break;
|
||||
|
||||
case 0xf8:
|
||||
m_samples->start(CHANNEL_SOUND1, SAMPLE_SOUND1);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_sound_state = data;
|
||||
}
|
||||
|
||||
|
||||
static const char *const mnkymgic_sample_names[] =
|
||||
{
|
||||
"*mnkymgic",
|
||||
"1",
|
||||
"2",
|
||||
"2-2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"6-2",
|
||||
0
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Memory handlers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, mnkymgic_state )
|
||||
AM_RANGE(0x0000, 0x13ff) AM_ROM
|
||||
AM_RANGE(0x2000, 0x21ff) AM_RAM
|
||||
AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(mnkymgic_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x8002, 0x8002) AM_WRITE(mnkymgic_obj_ball_x_w)
|
||||
AM_RANGE(0x8003, 0x8003) AM_WRITE(mnkymgic_obj_ball_y_w)
|
||||
AM_RANGE(0x8004, 0x8004) AM_READ_PORT("VBLANK")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Port handlers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static ADDRESS_MAP_START( main_io_map, AS_IO, 8, mnkymgic_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x80, 0x80) AM_WRITE(mnkymgic_colormap_w)
|
||||
AM_RANGE(0x81, 0x81) AM_WRITE(mnkymgic_audio_w)
|
||||
AM_RANGE(0x85, 0x85) AM_READ_PORT("PADDLE")
|
||||
AM_RANGE(0x86, 0x86) AM_READ_PORT("INPUTS")
|
||||
AM_RANGE(0x87, 0x87) AM_READ_PORT("DSW")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Port definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static INPUT_PORTS_START( mnkymgic )
|
||||
PORT_START("VBLANK")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
|
||||
PORT_START("DSW")
|
||||
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) )
|
||||
PORT_DIPSETTING( 0x00, "6" )
|
||||
PORT_DIPSETTING( 0x08, "5" )
|
||||
PORT_DIPSETTING( 0x10, "4" )
|
||||
PORT_DIPSETTING( 0x18, "3" )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("INPUTS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("PADDLE")
|
||||
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_CENTERDELTA(0)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Graphics Layouts
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static const gfx_layout charlayout =
|
||||
{
|
||||
8,12,
|
||||
RGN_FRAC(1,1),
|
||||
1,
|
||||
{ 0 },
|
||||
{ 3, 2, 1, 0, 7, 6, 5, 4 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8 },
|
||||
8*16
|
||||
};
|
||||
|
||||
static GFXDECODE_START( mnkymgic )
|
||||
GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout, 0, 8 )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Machine drivers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void mnkymgic_state::machine_start()
|
||||
{
|
||||
/* Set up save state */
|
||||
save_item(NAME(m_obj_ball_x));
|
||||
save_item(NAME(m_obj_ball_y));
|
||||
save_item(NAME(m_color_map));
|
||||
save_item(NAME(m_sound_state));
|
||||
}
|
||||
|
||||
void mnkymgic_state::machine_reset()
|
||||
{
|
||||
m_obj_ball_x = 0;
|
||||
m_obj_ball_y = 0;
|
||||
m_sound_state = 0x80;
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( mnkymgic, mnkymgic_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", I8085A, 6144000/2) /* 3.072MHz ? */
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
MCFG_CPU_IO_MAP(main_io_map)
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mnkymgic)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_SIZE(256, 256)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(mnkymgic_state, screen_update_mnkymgic)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 16)
|
||||
MCFG_PALETTE_INIT_OWNER(mnkymgic_state, mnkymgic)
|
||||
|
||||
#if (USE_SAMPLES)
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("samples", SAMPLES, 0)
|
||||
MCFG_SAMPLES_CHANNELS(1)
|
||||
MCFG_SAMPLES_NAMES(mnkymgic_sample_names)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
#endif
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROM definitions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
ROM_START( mnkymgic )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "1a.bin", 0x0000, 0x0400, CRC(ec772e2e) SHA1(7efc1bbb24b2ed73c518aea1c4ef4b9a93034e31) )
|
||||
ROM_LOAD( "2a.bin", 0x0400, 0x0400, CRC(e5d482ca) SHA1(208b808e9208bb6f5f5f89ffbeb5a885be33733a) )
|
||||
ROM_LOAD( "3a.bin", 0x0800, 0x0400, CRC(e8d38deb) SHA1(d7384234fb47e4b1d0421f58571fa748662b05f5) )
|
||||
ROM_LOAD( "4a.bin", 0x0c00, 0x0400, CRC(3048bd6c) SHA1(740051589f6ba44b2ee68edf76a3177bb973d78e) )
|
||||
ROM_LOAD( "5a.bin", 0x1000, 0x0400, CRC(2cab8f04) SHA1(203a3c005f18f968cd14c972bbb9fd7e0fc3b670) )
|
||||
|
||||
ROM_REGION( 0x600, "gfx1", ROMREGION_INVERT )
|
||||
ROM_LOAD( "6h.bin", 0x0000, 0x0200, CRC(b6321b6f) SHA1(06611f7419d2982e006a3e81b79677e59e194f38) ) /* tilemap */
|
||||
ROM_LOAD( "7h.bin", 0x0200, 0x0200, CRC(9ec0e82c) SHA1(29983f690a1b6134bb1983921f42c14898788095) )
|
||||
ROM_LOAD( "6j.bin", 0x0400, 0x0200, CRC(7ce83302) SHA1(1870610ff07ab11622e183e04e3fce29328ff291) )
|
||||
|
||||
ROM_REGION( 0x200, "proms", 0 )
|
||||
ROM_LOAD( "7j.bin", 0x0000, 0x0200, CRC(b7eb8e1c) SHA1(b65a8efb88668dcf1c1d00e31a9b15a67c2972c8) ) /* tile palettes selector */
|
||||
ROM_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Game drivers
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAME(1979, mnkymgic, 0, mnkymgic, mnkymgic, driver_device, 0, ROT270, "Nintendo", "Monkey Magic (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
|
Loading…
Reference in New Issue
Block a user