mirror of
https://github.com/holub/mame
synced 2025-06-02 02:49:44 +03:00
MT 5700 [Alex Jackson]
This commit is contained in:
parent
6bb0f325dc
commit
7eb14cd2b7
@ -182,7 +182,7 @@ static ADDRESS_MAP_START( terracre_map, AS_PROGRAM, 16, terracre_state )
|
||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
||||
AM_RANGE(0x020000, 0x0201ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x020200, 0x021fff) AM_RAM
|
||||
AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("amazon_videoram")
|
||||
AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram")
|
||||
AM_RANGE(0x023000, 0x023fff) AM_RAM
|
||||
AM_RANGE(0x024000, 0x024001) AM_READ_PORT("P1")
|
||||
AM_RANGE(0x024002, 0x024003) AM_READ_PORT("P2")
|
||||
@ -192,14 +192,14 @@ static ADDRESS_MAP_START( terracre_map, AS_PROGRAM, 16, terracre_state )
|
||||
AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w)
|
||||
AM_RANGE(0x026004, 0x026005) AM_WRITE(amazon_scrolly_w)
|
||||
AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w)
|
||||
AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( amazon_map, AS_PROGRAM, 16, terracre_state )
|
||||
AM_RANGE(0x000000, 0x01ffff) AM_ROM
|
||||
AM_RANGE(0x040000, 0x0401ff) AM_RAM AM_SHARE("spriteram")
|
||||
AM_RANGE(0x040200, 0x040fff) AM_RAM
|
||||
AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("amazon_videoram")
|
||||
AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram")
|
||||
AM_RANGE(0x044000, 0x044001) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x044002, 0x044003) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x044004, 0x044005) AM_READ_PORT("IN2")
|
||||
@ -208,7 +208,7 @@ static ADDRESS_MAP_START( amazon_map, AS_PROGRAM, 16, terracre_state )
|
||||
AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w)
|
||||
AM_RANGE(0x046004, 0x046005) AM_WRITE(amazon_scrolly_w)
|
||||
AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w)
|
||||
AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram")
|
||||
AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -510,42 +510,6 @@ static GFXDECODE_START( terracre )
|
||||
GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 1*16+16*16, 256 )
|
||||
GFXDECODE_END
|
||||
|
||||
static MACHINE_CONFIG_START( amazon, terracre_state )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz
|
||||
MCFG_CPU_PROGRAM_MAP(amazon_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) // 4mhz? should be derived from XTAL_22MHz? how?
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
MCFG_CPU_IO_MAP(sound_3526_io_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ?
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(terracre_state,amazon)
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE( 60 )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre)
|
||||
MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256)
|
||||
MCFG_PALETTE_INDIRECT_ENTRIES(256)
|
||||
MCFG_PALETTE_INIT_OWNER(terracre_state, terracre)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM3526, XTAL_16MHz/4)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_DAC_ADD("dac1")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
|
||||
MCFG_DAC_ADD("dac2")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( ym3526, terracre_state )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz
|
||||
@ -557,12 +521,15 @@ static MACHINE_CONFIG_START( ym3526, terracre_state )
|
||||
MCFG_CPU_IO_MAP(sound_3526_io_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ?
|
||||
|
||||
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE( 60 )
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
|
||||
MCFG_SCREEN_VBLANK_DEVICE("spriteram", buffered_spriteram16_device, vblank_copy_rising)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre)
|
||||
@ -582,42 +549,24 @@ static MACHINE_CONFIG_START( ym3526, terracre_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( ym2203, terracre_state )
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) // 8mhz
|
||||
MCFG_CPU_PROGRAM_MAP(terracre_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", terracre_state, irq1_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) // 4.0mhz when compared to sound recordings, should be derived from XTAL_22MHz? how?
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
static MACHINE_CONFIG_DERIVED( ym2203, ym3526 )
|
||||
MCFG_CPU_MODIFY("audiocpu")
|
||||
MCFG_CPU_IO_MAP(sound_2203_io_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(terracre_state, irq0_line_hold, XTAL_16MHz/4/512) // ?
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||
MCFG_SCREEN_SIZE(32*8, 32*8)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
|
||||
MCFG_SCREEN_UPDATE_DRIVER(terracre_state, screen_update_amazon)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", terracre)
|
||||
MCFG_PALETTE_ADD("palette", 1*16+16*16+16*256)
|
||||
MCFG_PALETTE_INDIRECT_ENTRIES(256)
|
||||
MCFG_PALETTE_INIT_OWNER(terracre_state, terracre)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_DEVICE_REMOVE("ymsnd")
|
||||
|
||||
MCFG_SOUND_ADD("ym1", YM2203, XTAL_16MHz/4)
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.20)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.20)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.20)
|
||||
MCFG_SOUND_ROUTE(3, "mono", 0.40)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MCFG_DAC_ADD("dac1")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
static MACHINE_CONFIG_DERIVED( amazon, ym3526 )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(amazon_map)
|
||||
|
||||
MCFG_DAC_ADD("dac2")
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
MCFG_MACHINE_START_OVERRIDE(terracre_state,amazon)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -1,18 +1,24 @@
|
||||
#include "video/bufsprite.h"
|
||||
|
||||
class terracre_state : public driver_device
|
||||
{
|
||||
public:
|
||||
terracre_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_amazon_videoram(*this, "amazon_videoram"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette") { }
|
||||
m_palette(*this, "palette"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_bg_videoram(*this, "bg_videoram"),
|
||||
m_fg_videoram(*this, "fg_videoram") { }
|
||||
|
||||
required_shared_ptr<UINT16> m_spriteram;
|
||||
required_shared_ptr<UINT16> m_amazon_videoram;
|
||||
required_shared_ptr<UINT16> m_videoram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<buffered_spriteram16_device> m_spriteram;
|
||||
|
||||
required_shared_ptr<UINT16> m_bg_videoram;
|
||||
required_shared_ptr<UINT16> m_fg_videoram;
|
||||
|
||||
const UINT16 *m_mpProtData;
|
||||
UINT8 m_mAmazonProtCmd;
|
||||
@ -40,7 +46,4 @@ public:
|
||||
DECLARE_MACHINE_START(amazon);
|
||||
UINT32 screen_update_amazon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
};
|
||||
|
@ -15,15 +15,14 @@ TILE_GET_INFO_MEMBER(terracre_state::get_bg_tile_info)
|
||||
/* xxxx.----.----.----
|
||||
* ----.xx--.----.----
|
||||
* ----.--xx.xxxx.xxxx */
|
||||
unsigned data = m_amazon_videoram[tile_index];
|
||||
unsigned data = m_bg_videoram[tile_index];
|
||||
unsigned color = data>>11;
|
||||
SET_TILE_INFO_MEMBER(1,data&0x3ff,color,0 );
|
||||
}
|
||||
|
||||
TILE_GET_INFO_MEMBER(terracre_state::get_fg_tile_info)
|
||||
{
|
||||
UINT16 *videoram = m_videoram;
|
||||
int data = videoram[tile_index];
|
||||
unsigned data = m_fg_videoram[tile_index];
|
||||
SET_TILE_INFO_MEMBER(0,data&0xff,0,0 );
|
||||
}
|
||||
|
||||
@ -31,8 +30,8 @@ void terracre_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
|
||||
{
|
||||
const UINT8 *spritepalettebank = memregion("user1")->base();
|
||||
gfx_element *pGfx = m_gfxdecode->gfx(2);
|
||||
const UINT16 *pSource = m_spriteram;
|
||||
int i;
|
||||
const UINT16 *pSource = m_spriteram->buffer();
|
||||
int flip = flip_screen();
|
||||
int transparent_pen;
|
||||
|
||||
if( pGfx->elements() > 0x200 )
|
||||
@ -43,7 +42,7 @@ void terracre_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
|
||||
{
|
||||
transparent_pen = 0x0;
|
||||
}
|
||||
for( i=0; i<0x200; i+=8 )
|
||||
for( int i=0; i<0x200; i+=8 )
|
||||
{
|
||||
int tile = pSource[1]&0xff;
|
||||
int attrs = pSource[2];
|
||||
@ -73,7 +72,7 @@ void terracre_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
|
||||
color += 16 * (spritepalettebank[(tile>>1)&0xff] & 0x0f);
|
||||
}
|
||||
|
||||
if (flip_screen())
|
||||
if (flip)
|
||||
{
|
||||
sx=240-sx;
|
||||
sy=240-sy;
|
||||
@ -146,14 +145,13 @@ PALETTE_INIT_MEMBER(terracre_state, terracre)
|
||||
|
||||
WRITE16_MEMBER(terracre_state::amazon_background_w)
|
||||
{
|
||||
COMBINE_DATA( &m_amazon_videoram[offset] );
|
||||
COMBINE_DATA( &m_bg_videoram[offset] );
|
||||
m_background->mark_tile_dirty(offset );
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(terracre_state::amazon_foreground_w)
|
||||
{
|
||||
UINT16 *videoram = m_videoram;
|
||||
COMBINE_DATA( &videoram[offset] );
|
||||
COMBINE_DATA( &m_fg_videoram[offset] );
|
||||
m_foreground->mark_tile_dirty(offset );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user