mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
Added music and save states to bmcbowl. [Osso]
This commit is contained in:
parent
5fdb0de0fc
commit
ed645d1cd4
@ -33,7 +33,6 @@ BMC Bowling (c) 1994.05 BMC, Ltd
|
||||
TODO:
|
||||
|
||||
- scroll (writes to $91800 and VIA port A - not used in game (only in test mode))
|
||||
- music - writes ($20-$30 bytes) to $93000-$93003 range
|
||||
- VIA 6522(ports)
|
||||
- Crt
|
||||
- interrupts
|
||||
@ -106,6 +105,7 @@ Main board:
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/okim6295.h"
|
||||
#include "sound/2413intf.h"
|
||||
|
||||
#define NVRAM_HACK
|
||||
|
||||
@ -115,15 +115,17 @@ class bmcbowl_state : public driver_device
|
||||
public:
|
||||
bmcbowl_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_stats_ram(*this, "nvram", 16),
|
||||
m_vid1(*this, "vid1"),
|
||||
m_vid2(*this, "vid2"),
|
||||
m_maincpu(*this, "maincpu") { }
|
||||
m_colorram(*this, "colorram", 16) { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_shared_ptr<UINT8> m_stats_ram;
|
||||
required_shared_ptr<UINT16> m_vid1;
|
||||
required_shared_ptr<UINT16> m_vid2;
|
||||
UINT8 *m_bmc_colorram;
|
||||
required_shared_ptr<UINT8> m_colorram;
|
||||
int m_clr_offset;
|
||||
int m_bmc_input;
|
||||
DECLARE_READ16_MEMBER(bmc_random_read);
|
||||
@ -141,7 +143,6 @@ public:
|
||||
virtual void machine_reset();
|
||||
virtual void video_start();
|
||||
UINT32 screen_update_bmcbowl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
|
||||
@ -229,8 +230,8 @@ WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_offset_w)
|
||||
|
||||
WRITE16_MEMBER(bmcbowl_state::bmc_RAMDAC_color_w)
|
||||
{
|
||||
m_bmc_colorram[m_clr_offset]=data;
|
||||
palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_bmc_colorram[(m_clr_offset/3)*3]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_bmc_colorram[(m_clr_offset/3)*3+2]));
|
||||
m_colorram[m_clr_offset]=data;
|
||||
palette_set_color_rgb(machine(),m_clr_offset/3,pal6bit(m_colorram[(m_clr_offset/3)*3]),pal6bit(m_colorram[(m_clr_offset/3)*3+1]),pal6bit(m_colorram[(m_clr_offset/3)*3+2]));
|
||||
m_clr_offset=(m_clr_offset+1)%768;
|
||||
}
|
||||
|
||||
@ -322,8 +323,8 @@ void bmcbowl_state::machine_reset()
|
||||
static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state )
|
||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
||||
|
||||
AM_RANGE(0x090000, 0x090001) AM_WRITE(bmc_RAMDAC_offset_w)
|
||||
AM_RANGE(0x090002, 0x090003) AM_WRITE(bmc_RAMDAC_color_w)
|
||||
AM_RANGE(0x090000, 0x090001) AM_WRITE(bmc_RAMDAC_offset_w) AM_SHARE("colorram")
|
||||
AM_RANGE(0x090002, 0x090003) AM_WRITE(bmc_RAMDAC_color_w)
|
||||
AM_RANGE(0x090004, 0x090005) AM_WRITENOP//RAMDAC
|
||||
|
||||
AM_RANGE(0x090800, 0x090803) AM_WRITENOP
|
||||
@ -332,7 +333,7 @@ static ADDRESS_MAP_START( bmcbowl_mem, AS_PROGRAM, 16, bmcbowl_state )
|
||||
|
||||
AM_RANGE(0x092000, 0x09201f) AM_DEVREADWRITE8("via6522_0", via6522_device, read, write, 0x00ff)
|
||||
|
||||
AM_RANGE(0x093000, 0x093003) AM_WRITENOP // related to music
|
||||
AM_RANGE(0x093000, 0x093003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
|
||||
AM_RANGE(0x092800, 0x092803) AM_DEVWRITE8("aysnd", ay8910_device, data_address_w, 0xff00)
|
||||
AM_RANGE(0x092802, 0x092803) AM_DEVREAD8("aysnd", ay8910_device, data_r, 0xff00)
|
||||
AM_RANGE(0x093802, 0x093803) AM_READ_PORT("IN0")
|
||||
@ -469,7 +470,7 @@ static const ay8910_interface ay8910_config =
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
|
||||
MCFG_CPU_ADD("maincpu", M68000, 21477270/2 )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_21_4772MHz / 2 )
|
||||
MCFG_CPU_PROGRAM_MAP(bmcbowl_mem)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", bmcbowl_state, irq2_line_hold)
|
||||
|
||||
@ -485,8 +486,12 @@ static MACHINE_CONFIG_START( bmcbowl, bmcbowl_state )
|
||||
MCFG_NVRAM_ADD_1FILL("nvram")
|
||||
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz ) // guessed chip type, clock not verified
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
|
||||
|
||||
MCFG_SOUND_ADD("aysnd", AY8910, 3579545/2)
|
||||
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_3_579545MHz / 2)
|
||||
MCFG_SOUND_CONFIG(ay8910_config)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
|
||||
@ -524,7 +529,8 @@ ROM_END
|
||||
|
||||
DRIVER_INIT_MEMBER(bmcbowl_state,bmcbowl)
|
||||
{
|
||||
m_bmc_colorram = auto_alloc_array(machine(), UINT8, 768);
|
||||
save_item(NAME(m_clr_offset));
|
||||
save_item(NAME(m_bmc_input));
|
||||
}
|
||||
|
||||
GAME( 1994, bmcbowl, 0, bmcbowl, bmcbowl, bmcbowl_state, bmcbowl, ROT0, "BMC", "Konkyuu no Hoshi", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, bmcbowl, 0, bmcbowl, bmcbowl, bmcbowl_state, bmcbowl, ROT0, "BMC", "Konkyuu no Hoshi", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
|
||||
|
@ -13,6 +13,7 @@ public:
|
||||
m_k053252(*this, "k053252"),
|
||||
m_k056832(*this, "k056832"),
|
||||
m_k055673(*this, "k055673"),
|
||||
m_k054338(*this, "k054338"),
|
||||
m_gx_workram(*this,"gx_workram"),
|
||||
m_spriteram(*this,"spriteram")
|
||||
{ }
|
||||
@ -21,6 +22,7 @@ public:
|
||||
required_device<k053252_device> m_k053252;
|
||||
required_device<k056832_device> m_k056832;
|
||||
required_device<k055673_device> m_k055673;
|
||||
required_device<k054338_device> m_k054338;
|
||||
required_shared_ptr<UINT16> m_gx_workram;
|
||||
optional_shared_ptr<UINT16> m_spriteram;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user