summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cchance.cpp2
-rw-r--r--src/mame/drivers/champbwl.cpp21
-rw-r--r--src/mame/drivers/m5.cpp10
-rw-r--r--src/mame/drivers/seta.cpp284
-rw-r--r--src/mame/drivers/srmp2.cpp15
-rw-r--r--src/mame/drivers/taito_x.cpp13
-rw-r--r--src/mame/drivers/thedealr.cpp5
-rw-r--r--src/mame/drivers/tnzs.cpp2
-rw-r--r--src/mame/includes/seta.h15
-rw-r--r--src/mame/includes/srmp2.h1
-rw-r--r--src/mame/video/seta.cpp115
-rw-r--r--src/mame/video/seta001.cpp38
-rw-r--r--src/mame/video/srmp2.cpp26
-rw-r--r--src/mame/video/tnzs.cpp3
-rw-r--r--src/mame/video/x1_012.cpp5
-rw-r--r--src/mame/video/x1_012.h5
16 files changed, 310 insertions, 250 deletions
diff --git a/src/mame/drivers/cchance.cpp b/src/mame/drivers/cchance.cpp
index d630d584e9e..57c9c3b255d 100644
--- a/src/mame/drivers/cchance.cpp
+++ b/src/mame/drivers/cchance.cpp
@@ -224,6 +224,8 @@ void cchance_state::cchance(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(cchance_state::irq0_line_hold));
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_cchance);
+ m_seta001->set_fg_yoffsets( -0x12, 0x0e );
+ m_seta001->set_bg_yoffsets( 0x1, -0x1 );
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp
index 9c2ae091076..5047de71e58 100644
--- a/src/mame/drivers/champbwl.cpp
+++ b/src/mame/drivers/champbwl.cpp
@@ -199,7 +199,6 @@ public:
DECLARE_MACHINE_START(doraemon);
void champbwl_palette(palette_device &palette) const;
uint32_t screen_update_champbwl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_doraemon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_champbwl);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_doraemon);
void champbwl(machine_config &config);
@@ -474,9 +473,6 @@ uint32_t champbwl_state::screen_update_champbwl(screen_device &screen, bitmap_in
{
bitmap.fill(0x1f0, cliprect);
- m_seta001->set_fg_yoffsets( -0x12, 0x0e );
- m_seta001->set_bg_yoffsets( 0x1, -0x1 );
-
m_seta001->draw_sprites(screen, bitmap, cliprect, 0x800);
return 0;
}
@@ -502,6 +498,8 @@ void champbwl_state::champbwl(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(champbwl_state,champbwl)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_champbwl);
+ m_seta001->set_fg_yoffsets( -0x12, 0x0e );
+ m_seta001->set_bg_yoffsets( 0x1, -0x1 );
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -527,17 +525,6 @@ void champbwl_state::champbwl(machine_config &config)
-uint32_t champbwl_state::screen_update_doraemon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- bitmap.fill(0x1f0, cliprect);
-
- m_seta001->set_bg_yoffsets( 0x00, 0x01 );
- m_seta001->set_fg_yoffsets( 0x00, 0x10 );
-
- m_seta001->draw_sprites(screen, bitmap, cliprect, 0x800);
- return 0;
-}
-
WRITE_LINE_MEMBER(champbwl_state::screen_vblank_doraemon)
{
// rising edge
@@ -561,6 +548,8 @@ void champbwl_state::doraemon(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
SETA001_SPRITE(config, m_seta001, 14'318'181, m_palette, gfx_champbwl);
+ m_seta001->set_bg_yoffsets( 0x00, 0x01 );
+ m_seta001->set_fg_yoffsets( 0x00, 0x10 );
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(2000), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW );
@@ -572,7 +561,7 @@ void champbwl_state::doraemon(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(320, 256);
screen.set_visarea(0, 320-1, 16, 256-16-1);
- screen.set_screen_update(FUNC(champbwl_state::screen_update_doraemon));
+ screen.set_screen_update(FUNC(champbwl_state::screen_update_champbwl));
screen.screen_vblank().set(FUNC(champbwl_state::screen_vblank_doraemon));
screen.set_palette(m_palette);
diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp
index ff70b0b00c8..d09010d2888 100644
--- a/src/mame/drivers/m5.cpp
+++ b/src/mame/drivers/m5.cpp
@@ -331,9 +331,6 @@ public:
void pal(machine_config &config);
void ntsc(machine_config &config);
- void init_pal();
- void init_ntsc();
-
protected:
required_device<z80_device> m_maincpu;
required_device<z80ctc_device> m_ctc;
@@ -1167,7 +1164,7 @@ void brno_state::m5_mem_brno(address_map &map)
map(0x0000, 0xffff).view(m_ram_view);
m_ram_view[0](0x0000, 0xffff).rw(FUNC(brno_state::ramdisk_r), FUNC(brno_state::ramdisk_w));
map(0x0000, 0x7fff).view(m_rom_view);
- m_rom_view[0](0x0000, 0x3fff).rom().region("maincpu", 0);
+ m_rom_view[0](0x0000, 0x3fff).rom().region("maincpu", 0).unmapw();
m_rom_view[0](0x7000, 0x7fff).ram();
}
@@ -1194,7 +1191,7 @@ void brno_state::brno_io(address_map &map)
map(0x64, 0x64).select(0xf000).mirror(0x0f03).w(FUNC(brno_state::mmu_w)); // MMU - page select (ramdisk memory paging)
map(0x68, 0x68).mirror(0xff03).w(FUNC(brno_state::ramsel_w)); // CASEN
map(0x6c, 0x6c).mirror(0xff03).w(FUNC(brno_state::romsel_w)); // RAMEN
-// map(0x70, 0x73).mirror(0xff04).rw(m_ppi, FUNC(i8255_device::read), FUNC(i8255_device::write)); // PIO
+ map(0x70, 0x73).mirror(0xff00).rw("pio", FUNC(i8255_device::read), FUNC(i8255_device::write)); // PIO
map(0x78, 0x7b).mirror(0xff00).rw(m_wdfdc, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)); // WD2797 registers -> 78 - status/cmd, 79 - track #, 7a - sector #, 7b - data
map(0x7c, 0x7c).mirror(0xff03).w(FUNC(brno_state::fd_w)); // drive select
}
@@ -1228,6 +1225,7 @@ void brno_state::mmu_w(offs_t offset, u8 data)
void brno_state::ramsel_w(u8 data) //out 6b
{
// 0=access to ramdisk enabled, 0xff=ramdisk access disabled(data protection), &80=ROM2+48k RAM, &81=ROM2+4k RAM
+ // Note that RAM disk is not banked in 0000-3FFF or 7000-7FFF unless ROM is disabled
if (!BIT(data, 0))
m_ram_view.select(0);
else
@@ -1627,6 +1625,8 @@ void brno_state::brno(machine_config &config)
m_ctc->zc_callback<2>().set("sio", FUNC(i8251_device::write_txc));
m_ctc->zc_callback<2>().append("sio", FUNC(i8251_device::write_rxc));
+ I8255(config, "pio");
+
// floppy
WD2797(config, m_wdfdc, 4_MHz_XTAL / 4);
FLOPPY_CONNECTOR(config, m_floppy0, brno_floppies, "35hd", brno_state::floppy_formats).enable_sound(true);
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index cf7d476d004..9e223d428af 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -7924,6 +7924,10 @@ void downtown_state::tndrcade(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(downtown_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (start grid, wall at beginning of game)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -7974,6 +7978,10 @@ void downtown_state::twineagl(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(downtown_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -7984,7 +7992,10 @@ void downtown_state::twineagl(machine_config &config)
screen.set_screen_update(FUNC(downtown_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_downtown).set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ m_layers[0]->set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ m_layers[0]->set_xoffsets(-3, 0);
+
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
@@ -8019,6 +8030,10 @@ void downtown_state::downtown(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(downtown_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 1); // sprites correct (test grid), tilemap unknown but at least -1 non-flipped to fix glitches later in the game
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8029,7 +8044,10 @@ void downtown_state::downtown(machine_config &config)
screen.set_screen_update(FUNC(downtown_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_downtown).set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ m_layers[0]->set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ m_layers[0]->set_xoffsets(0, -1);
+
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
@@ -8102,6 +8120,10 @@ void usclssic_state::usclssic(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(usclssic_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(2, 1); // correct (test grid and bg)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8112,7 +8134,10 @@ void usclssic_state::usclssic(machine_config &config)
screen.set_screen_update(FUNC(usclssic_state::screen_update_usclssic));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_usclssic).set_tile_offset_callback(FUNC(usclssic_state::tile_offset));
+ X1_012(config, m_layers[0], m_palette, gfx_usclssic);
+ m_layers[0]->set_tile_offset_callback(FUNC(usclssic_state::tile_offset));
+ m_layers[0]->set_xoffsets(-1, 0);
+
PALETTE(config, m_palette, FUNC(usclssic_state::usclssic_palette), 16*32 + 64*32*2, 0x400); // sprites, layer - layer is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(usclssic_state,seta)
@@ -8161,6 +8186,10 @@ void downtown_state::calibr50(machine_config &config)
SETA001_SPRITE(config, m_seta001, XTAL(16'000'000), m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(downtown_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(2, -1); // correct (test grid and roof in animation at beginning of game)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8172,6 +8201,8 @@ void downtown_state::calibr50(machine_config &config)
screen.set_palette(m_palette);
X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ m_layers[0]->set_xoffsets(-2, -3);
+
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
@@ -8209,6 +8240,10 @@ void downtown_state::metafox(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(downtown_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // sprites unknown, tilemap correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8219,7 +8254,10 @@ void downtown_state::metafox(machine_config &config)
screen.set_screen_update(FUNC(downtown_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_downtown).set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ m_layers[0]->set_tile_offset_callback(FUNC(downtown_state::twineagl_tile_offset));
+ m_layers[0]->set_xoffsets(-19, 16);
+
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
@@ -8234,6 +8272,14 @@ void downtown_state::metafox(machine_config &config)
m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
}
+void downtown_state::arbalest(machine_config &config)
+{
+ metafox(config);
+
+ m_seta001->set_fg_xoffsets(1, 0); // correct (test grid and landing pad at beginning of game)
+ m_layers[0]->set_xoffsets(-1, -2);
+}
+
/***************************************************************************
Athena no Hatena?
@@ -8248,6 +8294,10 @@ void seta_state::atehate(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8289,6 +8339,10 @@ void seta_state::blandia(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(8, 0); // correct (test grid, startup bg)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8301,8 +8355,8 @@ void seta_state::blandia(machine_config &config)
screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1).set_xoffsets(6, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(6, -2);
PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2); // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8324,6 +8378,10 @@ void seta_state::blandiap(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(8, 0); // correct (test grid, startup bg)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8336,8 +8394,8 @@ void seta_state::blandiap(machine_config &config)
screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1).set_xoffsets(6, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(6, -2);
PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2); // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8364,6 +8422,10 @@ void seta_state::blockcar(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8436,6 +8498,10 @@ void seta_state::daioh(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid, planet)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8446,8 +8512,8 @@ void seta_state::daioh(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-2, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8491,6 +8557,10 @@ void seta_state::drgnunit(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(2, 2); // correct (test grid and I/O test)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8502,7 +8572,7 @@ void seta_state::drgnunit(machine_config &config)
screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ X1_012(config, m_layers[0], m_palette, gfx_downtown).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8514,6 +8584,19 @@ void seta_state::drgnunit(machine_config &config)
m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
}
+void seta_state::stg(machine_config &config)
+{
+ drgnunit(config);
+ m_seta001->set_fg_xoffsets(0, 0); // sprites correct? (panel), tilemap correct (test grid)
+}
+
+void seta_state::qzkklogy(machine_config &config)
+{
+ drgnunit(config);
+ m_seta001->set_fg_xoffsets(1, 1); // correct (timer, test grid)
+ m_layers[0]->set_xoffsets(-1, -1);
+}
+
/* Same as qzkklogy, but with a 16MHz CPU */
void seta_state::qzkklgy2(machine_config &config)
@@ -8521,6 +8604,9 @@ void seta_state::qzkklgy2(machine_config &config)
drgnunit(config);
/* basic machine hardware */
m_maincpu->set_clock(16000000); /* 16 MHz */
+
+ m_seta001->set_fg_xoffsets(0, 0); // sprites unknown, tilemaps correct (test grid)
+ m_layers[0]->set_xoffsets(-3, -1);
}
@@ -8555,6 +8641,11 @@ void setaroul_state::setaroul(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_setaroul_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 7); // unknown (flipped offsets are unused: game handles flipping manually without setting the flip bit)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0, -0x1);
+ m_seta001->set_bg_xoffsets(0, 0x2);
NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
@@ -8573,10 +8664,10 @@ void setaroul_state::setaroul(machine_config &config)
screen.screen_vblank().set(FUNC(setaroul_state::screen_vblank));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_setaroul);
+ X1_012(config, m_layers[0], m_palette, gfx_setaroul).set_xoffsets(0, 5);
PALETTE(config, m_palette, FUNC(setaroul_state::setaroul_palette), 512);
- MCFG_VIDEO_START_OVERRIDE(setaroul_state,setaroul)
+ MCFG_VIDEO_START_OVERRIDE(setaroul_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -8605,6 +8696,10 @@ void seta_state::eightfrc(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(4, 3); // correct (test mode)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8649,6 +8744,10 @@ void seta_state::extdwnhl(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid, background images)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8659,8 +8758,8 @@ void seta_state::extdwnhl(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_zingzip_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_zingzip_layer1).set_xoffsets(-2, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600); // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8714,6 +8813,10 @@ void seta_state::gundhara(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test mode)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8762,6 +8865,9 @@ void zombraid_state::zombraid(machine_config &config)
adc0834_device &adc(ADC0834(config, "adc"));
adc.set_input_callback(FUNC(zombraid_state::adc_cb));
+ m_layers[0]->set_xoffsets(-2, -2); // correct for normal, flip screen not working yet
+ m_layers[1]->set_xoffsets(-2, -2);
+
m_x1->set_addrmap(0, &zombraid_state::zombraid_x1_map);
}
@@ -8783,6 +8889,10 @@ void seta_state::jjsquawk(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(1, 1); // correct (test mode)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8793,8 +8903,8 @@ void seta_state::jjsquawk(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_jjsquawk_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_jjsquawk_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_jjsquawk_layer1).set_xoffsets(-1, -1);
+ X1_012(config, m_layers[1], m_palette, gfx_jjsquawk_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8815,6 +8925,10 @@ void seta_state::jjsquawb(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(1, 1); // correct (test mode)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8825,8 +8939,8 @@ void seta_state::jjsquawb(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_jjsquawkb_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_jjsquawkb_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_jjsquawkb_layer1).set_xoffsets(-1, -1);
+ X1_012(config, m_layers[1], m_palette, gfx_jjsquawkb_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8859,6 +8973,10 @@ void seta_state::kamenrid(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (map, banpresto logo)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8869,8 +8987,8 @@ void seta_state::kamenrid(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-2, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -8898,6 +9016,10 @@ void seta_state::orbs(machine_config &config)
SETA001_SPRITE(config, m_seta001, 14318180, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8937,6 +9059,10 @@ void seta_state::keroppi(machine_config &config)
SETA001_SPRITE(config, m_seta001, 14318180, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -8982,6 +9108,10 @@ void seta_state::krzybowl(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9022,6 +9152,10 @@ void seta_state::madshark(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown (wrong when flipped, but along y)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
WATCHDOG_TIMER(config, "watchdog");
@@ -9072,6 +9206,10 @@ void seta_state::magspeed(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // floating tilemap maybe 1px off in test grid
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9082,8 +9220,8 @@ void seta_state::magspeed(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(0, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9115,6 +9253,10 @@ void seta_state::msgundam(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid, banpresto logo)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9126,8 +9268,8 @@ void seta_state::msgundam(machine_config &config)
screen.screen_vblank().set(FUNC(seta_state::screen_vblank_seta_buffer_sprites));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-2, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9159,6 +9301,10 @@ void seta_state::oisipuzl(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(1, 1); // correct (test mode) flip screen not supported?
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9169,8 +9315,8 @@ void seta_state::oisipuzl(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-1, -1);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state, oisipuzl) // flip is inverted for the tilemaps
@@ -9200,6 +9346,10 @@ void seta_state::triplfun(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(1, 1); // correct (test mode) flip screen not supported?
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9210,8 +9360,8 @@ void seta_state::triplfun(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-1, -1);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state, oisipuzl) // flip is inverted for the tilemaps
@@ -9247,6 +9397,10 @@ void kiwame_state::kiwame(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(kiwame_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(-16, 0); // correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9289,6 +9443,10 @@ void seta_state::rezon(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9299,8 +9457,8 @@ void seta_state::rezon(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(-2, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9328,6 +9486,10 @@ void seta_state::thunderl(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9400,6 +9562,10 @@ void seta_state::wiggie(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_wiggie);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // some problems but they seem y co-ordinate related?
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9438,6 +9604,10 @@ void seta_state::wits(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9473,6 +9643,10 @@ void seta_state::umanclub(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9512,6 +9686,10 @@ void seta_state::utoukond(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown (wrong when flipped, but along y)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9522,8 +9700,8 @@ void seta_state::utoukond(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_msgundam_layer1).set_xoffsets(0, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9570,6 +9748,10 @@ void seta_state::wrofaero(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // correct (test mode)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9612,6 +9794,10 @@ void seta_state::zingzip(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // sprites unknown, tilemaps correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
WATCHDOG_TIMER(config, "watchdog");
@@ -9624,8 +9810,8 @@ void seta_state::zingzip(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_zingzip_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_zingzip_layer1).set_xoffsets(-2, -1);
+ X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2).set_xoffsets(-2, -1);
PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600); // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9668,6 +9854,10 @@ void seta_state::pairlove(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_pairlove);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // unknown
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9714,6 +9904,10 @@ void seta_state::crazyfgt(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // wrong (empty background column in title screen, but aligned sprites in screen select)
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -9724,8 +9918,8 @@ void seta_state::crazyfgt(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1);
- X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2);
+ X1_012(config, m_layers[0], m_palette, gfx_blandia_layer1).set_xoffsets(0, -2);
+ X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette, FUNC(seta_state::gundhara_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep (seta_state,but have only 4 palettes)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
@@ -9783,6 +9977,10 @@ void jockeyc_state::jockeyc(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
+ // position kludges
+ m_seta001->set_fg_xoffsets(0, 0); // sprites correct? (bets), tilemap correct (test grid)
+ m_seta001->set_fg_yoffsets(-0x12+8, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM);
@@ -9802,10 +10000,10 @@ void jockeyc_state::jockeyc(machine_config &config)
screen.set_screen_update(FUNC(seta_state::screen_update_seta_layers));
screen.set_palette(m_palette);
- X1_012(config, m_layers[0], m_palette, gfx_downtown);
+ X1_012(config, m_layers[0], m_palette, gfx_downtown).set_xoffsets(126, -2);
PALETTE(config, m_palette, FUNC(seta_state::palette_init_RRRRRGGGGGBBBBB_proms), 512 * 1);
- MCFG_VIDEO_START_OVERRIDE(jockeyc_state,jockeyc)
+ MCFG_VIDEO_START_OVERRIDE(jockeyc_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -9839,6 +10037,8 @@ void jockeyc_state::inttoote(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(jockeyc_state, inttoote)
+ m_layers[0]->set_xoffsets(0, -2);
+
// I/O board (not hooked up yet)
PIA6821(config, "pia0", 0);
PIA6821(config, "pia1", 0);
@@ -12074,7 +12274,7 @@ GAME( 1989, usclssic, 0, usclssic, usclssic, usclssic_state, init_bank
GAME( 1989, calibr50, 0, calibr50, calibr50, downtown_state, init_bank6502, ROT270, "Athena / Seta", "Caliber 50 (Ver. 1.01)" , 0) // Country/License: DSW
-GAME( 1989, arbalest, 0, metafox, arbalest, downtown_state, init_arbalest, ROT270, "Seta", "Arbalester" , 0) // Country/License: DSW
+GAME( 1989, arbalest, 0, arbalest, arbalest, downtown_state, init_arbalest, ROT270, "Seta", "Arbalester" , 0) // Country/License: DSW
GAME( 1989, metafox, 0, metafox, metafox, downtown_state, init_metafox, ROT270, "Seta", "Meta Fox" , 0) // Country/License: DSW
@@ -12100,7 +12300,7 @@ GAME( 1998, inttoote, jockeyc, inttoote, inttoote, jockeyc_state, init_intt
GAME( 1991, rezon, 0, rezon, rezon, seta_state, init_rezon, ROT0, "Allumer", "Rezon", 0 )
GAME( 1992, rezont, rezon, rezon, rezont, seta_state, init_rezon, ROT0, "Allumer (Taito license)", "Rezon (Taito)", 0 )
-GAME( 1991, stg, 0, drgnunit, stg, seta_state, empty_init, ROT270, "Athena / Tecmo", "Strike Gunner S.T.G", 0 )
+GAME( 1991, stg, 0, stg, stg, seta_state, empty_init, ROT270, "Athena / Tecmo", "Strike Gunner S.T.G", 0 )
GAME( 1991, pairlove, 0, pairlove, pairlove, seta_state, init_pairlove, ROT270, "Athena", "Pairs Love", 0 )
@@ -12110,7 +12310,7 @@ GAME( 1992, blandiap, blandia, blandiap, blandia, seta_state, init_bank
GAME( 1992, blockcar, 0, blockcar, blockcar, seta_state, empty_init, ROT90, "Visco", "Block Carnival / Thunder & Lightning 2" , 0) // Title: DSW
GAME( 1992, blockcarb, blockcar, blockcarb, blockcar, seta_state, empty_init, ROT90, "bootleg", "Block Carnival / Thunder & Lightning 2 (bootleg)", MACHINE_IMPERFECT_SOUND)
-GAME( 1992, qzkklogy, 0, drgnunit, qzkklogy, seta_state, empty_init, ROT0, "Tecmo", "Quiz Kokology", 0 )
+GAME( 1992, qzkklogy, 0, qzkklogy, qzkklogy, seta_state, empty_init, ROT0, "Tecmo", "Quiz Kokology", 0 )
GAME( 1992, neobattl, 0, umanclub, neobattl, seta_state, empty_init, ROT270, "Banpresto / Sotsu Agency. Sunrise", "SD Gundam Neo Battling (Japan)", 0 )
diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp
index 5f4f4c8e928..b14ef945f57 100644
--- a/src/mame/drivers/srmp2.cpp
+++ b/src/mame/drivers/srmp2.cpp
@@ -1149,6 +1149,11 @@ void srmp2_state::srmp2(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
SETA001_SPRITE(config, m_seta001, 16000000, "palette", gfx_srmp2);
+ m_seta001->set_transpen(15);
+ m_seta001->set_fg_xoffsets( 0x10, 0x10 );
+ m_seta001->set_fg_yoffsets( 0x05, 0x07 );
+ m_seta001->set_bg_xoffsets( 0x00, 0x00 ); // bg not used?
+ m_seta001->set_bg_yoffsets( 0x00, 0x00 ); // bg not used?
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -1188,6 +1193,10 @@ void srmp2_state::srmp3(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, "palette", gfx_srmp3);
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback));
+ m_seta001->set_fg_xoffsets( 0x10, 0x10 );
+ m_seta001->set_fg_yoffsets( 0x06, 0x06 );
+ m_seta001->set_bg_xoffsets( -0x01, 0x10 );
+ m_seta001->set_bg_yoffsets( -0x06, 0x06 );
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -1238,6 +1247,10 @@ void srmp2_state::mjyuugi(machine_config &config)
SETA001_SPRITE(config, m_seta001, 16000000, "palette", gfx_srmp3);
m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback));
+ m_seta001->set_fg_xoffsets( 0x10, 0x10 );
+ m_seta001->set_fg_yoffsets( 0x06, 0x06 );
+ m_seta001->set_bg_yoffsets( 0x09, 0x07 );
+ m_seta001->set_spritelimit( 0x1ff-6 );
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -1245,7 +1258,7 @@ void srmp2_state::mjyuugi(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(400, 256-16);
screen.set_visarea(16, 400-1, 0, 256-1-16);
- screen.set_screen_update(FUNC(srmp2_state::screen_update_mjyuugi));
+ screen.set_screen_update(FUNC(srmp2_state::screen_update_srmp3));
screen.set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 512); // sprites only
diff --git a/src/mame/drivers/taito_x.cpp b/src/mame/drivers/taito_x.cpp
index 3b3ccb26094..32e2db43b21 100644
--- a/src/mame/drivers/taito_x.cpp
+++ b/src/mame/drivers/taito_x.cpp
@@ -826,7 +826,10 @@ void taitox_state::superman(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
- SETA001_SPRITE(config, m_seta001, 0, m_palette, gfx_taito_x);
+ SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_taito_x);
+ // position kludges
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -872,6 +875,9 @@ void taitox_state::daisenpu(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_taito_x);
+ // position kludges
+ m_seta001->set_fg_yoffsets(-0x12, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -960,6 +966,9 @@ void taitox_state::ballbros(machine_config &config)
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_taito_x);
+ // position kludges
+ m_seta001->set_fg_yoffsets(-0x0a, 0x0e);
+ m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
@@ -972,7 +981,7 @@ void taitox_state::ballbros(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
- MCFG_VIDEO_START_OVERRIDE(taitox_state, kyustrkr)
+ MCFG_VIDEO_START_OVERRIDE(taitox_state, seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/thedealr.cpp b/src/mame/drivers/thedealr.cpp
index fa72d9cf20f..14b4d076c55 100644
--- a/src/mame/drivers/thedealr.cpp
+++ b/src/mame/drivers/thedealr.cpp
@@ -111,9 +111,6 @@ uint32_t thedealr_state::screen_update(screen_device &screen, bitmap_ind16 &bitm
{
bitmap.fill(0x1f0, cliprect);
- m_seta001->set_bg_yoffsets( 0x11+1, -0x10 ); // + is up (down with flip)
- m_seta001->set_fg_yoffsets( -0x12+1, -0x01 );
-
m_seta001->draw_sprites(screen, bitmap, cliprect, 0x1000);
return 0;
}
@@ -556,6 +553,8 @@ void thedealr_state::thedealr(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_thedealr);
+ m_seta001->set_bg_yoffsets( 0x11+1, -0x10 ); // + is up (down with flip)
+ m_seta001->set_fg_yoffsets( -0x12+1, -0x01 );
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp
index 67a9266d83d..c45531a53fa 100644
--- a/src/mame/drivers/tnzs.cpp
+++ b/src/mame/drivers/tnzs.cpp
@@ -1545,6 +1545,8 @@ void tnzs_base_state::tnzs_base(machine_config &config)
/* video hardware */
SETA001_SPRITE(config, m_seta001, 12'000'000, m_palette, gfx_tnzs);
+ m_seta001->set_fg_yoffsets( -0x12, 0x0e );
+ m_seta001->set_bg_yoffsets( 0x1, -0x1 );
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index 2c516c7b4d8..9bcf747876f 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -37,14 +37,6 @@ public:
u8 reg[4]; //
};
- struct game_offset
- {
- /* 2 values, for normal and flipped */
- const char *gamename;
- int sprite_offs[2];
- int tilemap_offs[2];
- };
-
seta_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
@@ -87,6 +79,8 @@ public:
void crazyfgt(machine_config &config);
void keroppi(machine_config &config);
void drgnunit(machine_config &config);
+ void stg(machine_config &config);
+ void qzkklogy(machine_config &config);
void orbs(machine_config &config);
void daiohp(machine_config &config);
void magspeed(machine_config &config);
@@ -139,7 +133,6 @@ protected:
int m_samples_bank;
uPD71054_state m_uPD71054;
- const game_offset *m_global_offsets;
int m_keroppi_prize_hop;
int m_keroppi_protection_count;
@@ -170,7 +163,6 @@ protected:
u16 extra_r();
DECLARE_VIDEO_START(seta);
- DECLARE_VIDEO_START(kyustrkr);
void blandia_palette(palette_device &palette) const;
void zingzip_palette(palette_device &palette) const;
@@ -260,6 +252,7 @@ public:
void calibr50(machine_config &config);
void downtown(machine_config &config);
void metafox(machine_config &config);
+ void arbalest(machine_config &config);
void tndrcade(machine_config &config);
void twineagl(machine_config &config);
@@ -464,7 +457,6 @@ private:
DECLARE_MACHINE_START(setaroul);
DECLARE_MACHINE_RESET(setaroul);
- DECLARE_VIDEO_START(setaroul);
void setaroul_palette(palette_device &palette) const;
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -529,7 +521,6 @@ private:
DECLARE_MACHINE_START(jockeyc);
DECLARE_MACHINE_START(inttoote);
- DECLARE_VIDEO_START(jockeyc);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
diff --git a/src/mame/includes/srmp2.h b/src/mame/includes/srmp2.h
index 83d7c0700e2..f556968cf17 100644
--- a/src/mame/includes/srmp2.h
+++ b/src/mame/includes/srmp2.h
@@ -87,7 +87,6 @@ private:
uint32_t screen_update_srmp2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_srmp3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_mjyuugi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
SETA001_SPRITE_GFXBANK_CB_MEMBER(srmp3_gfxbank_callback);
uint8_t iox_key_matrix_calc(uint8_t p_side);
diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp
index d02891722ed..fc1375d3be3 100644
--- a/src/mame/video/seta.cpp
+++ b/src/mame/video/seta.cpp
@@ -141,82 +141,6 @@ Note: if MAME_DEBUG is defined, pressing Z with:
#include "includes/seta.h"
#include "screen.h"
-/* note that drgnunit, stg and qzkklogy run on the same board, yet they need different alignment */
-static const seta_state::game_offset game_offsets[] =
-{
- // x offsets
- // "game", { spr, spr_flip}, {tmap, tmap_flip}
-
- /* only sprites */
- { "tndrcade", { 0, 0 } }, // correct (start grid, wall at beginning of game)
- { "tndrcadej", { 0, 0 } }, // "
- { "wits", { 0, 0 } }, // unknown
- { "thunderl", { 0, 0 } }, // unknown
- { "wiggie", { 0, 0 } }, // some problems but they seem y co-ordinate related?
- { "superbar", { 0, 0 } }, // "
- { "pairlove", { 0, 0 } }, // unknown
- { "blockcar", { 0, 0 } }, // unknown
- { "neobattl", { 0, 0 } }, // correct (test grid)
- { "umanclub", { 0, 0 } }, // correct (test grid)
- { "atehate", { 0, 0 } }, // correct (test grid)
- { "kiwame", { 0,-16 } }, // correct (test grid)
- { "krzybowl", { 0, 0 } }, // correct (test grid)
- { "orbs", { 0, 0 } }, // unknown
- { "keroppi", { 0, 0 } }, // unknown
-
- /* 1 layer */
- { "twineagl", { 0, 0 }, { 0, -3 } }, // unknown
- { "downtown", { 1, 0 }, { -1, 0 } }, // sprites correct (test grid), tilemap unknown but at least -1 non-flipped to fix glitches later in the game
- { "downtown2", { 1, 0 }, { -1, 0 } }, // "
- { "downtownj", { 1, 0 }, { -1, 0 } }, // "
- { "downtownp", { 1, 0 }, { -1, 0 } }, // "
- { "usclssic", { 1, 2 }, { 0, -1 } }, // correct (test grid and bg)
- { "calibr50", { -1, 2 }, { -3, -2 } }, // correct (test grid and roof in animation at beginning of game)
- { "arbalest", { 0, 1 }, { -2, -1 } }, // correct (test grid and landing pad at beginning of game)
- { "metafox", { 0, 0 }, { 16, -19 } }, // sprites unknown, tilemap correct (test grid)
- { "setaroul", { 7, 0 }, { 5, 0 } }, // unknown (flipped offsets are unused: game handles flipping manually without setting the flip bit)
- { "drgnunit", { 2, 2 }, { -2, -2 } }, // correct (test grid and I/O test)
- { "jockeyc", { 0, 0 }, { -2, 126 } }, // sprites correct? (bets), tilemap correct (test grid)
- { "inttoote2", { 0, 0 }, { -2, 126 } }, // "
- { "inttoote", { 0, 0 }, { -2, 0 } }, // "
- { "stg", { 0, 0 }, { -2, -2 } }, // sprites correct? (panel), tilemap correct (test grid)
- { "qzkklogy", { 1, 1 }, { -1, -1 } }, // correct (timer, test grid)
- { "qzkklgy2", { 0, 0 }, { -1, -3 } }, // sprites unknown, tilemaps correct (test grid)
-
- /* 2 layers */
- { "rezon", { 0, 0 }, { -2, -2 } }, // correct (test grid)
- { "rezont", { 0, 0 }, { -2, -2 } }, // "
- { "blandia", { 0, 8 }, { -2, 6 } }, // correct (test grid, startup bg)
- { "blandiap", { 0, 8 }, { -2, 6 } }, // "
- { "zingzip", { 0, 0 }, { -1, -2 } }, // sprites unknown, tilemaps correct (test grid)
- { "eightfrc", { 3, 4 }, { 0, 0 } }, // correct (test mode)
- { "daioh", { 0, 0 }, { -1, -1 } }, // correct (test grid, planet)
- { "daioha", { 0, 0 }, { -1, -1 } }, // "
- { "daiohc", { 0, 0 }, { -1, -1 } }, // "
- { "daiohp", { 0, 0 }, { -1, -1 } }, // "
- { "msgundam", { 0, 0 }, { -2, -2 } }, // correct (test grid, banpresto logo)
- { "msgundam1", { 0, 0 }, { -2, -2 } }, // "
- { "oisipuzl", { 1, 1 }, { -1, -1 } }, // correct (test mode) flip screen not supported?
- { "triplfun", { 1, 1 }, { -1, -1 } }, // "
- { "wrofaero", { 0, 0 }, { 0, 0 } }, // correct (test mode)
- { "jjsquawk", { 1, 1 }, { -1, -1 } }, // correct (test mode)
- { "jjsquawkb", { 1, 1 }, { -1, -1 } }, // "
- { "kamenrid", { 0, 0 }, { -2, -2 } }, // correct (map, banpresto logo)
- { "extdwnhl", { 0, 0 }, { -2, -2 } }, // correct (test grid, background images)
- { "sokonuke", { 0, 0 }, { -2, -2 } }, // correct (game selection, test grid)
- { "gundhara", { 0, 0 }, { 0, 0 } }, // correct (test mode)
- { "zombraid", { 0, 0 }, { -2, -2 } }, // correct for normal, flip screen not working yet
- { "zombraidp", { 0, 0 }, { -2, -2 } }, // correct for normal, flip screen not working yet
- { "zombraidpj", { 0, 0 }, { -2, -2 } }, // correct for normal, flip screen not working yet
- { "madshark", { 0, 0 }, { 0, 0 } }, // unknown (wrong when flipped, but along y)
- { "utoukond", { 0, 0 }, { -2, 0 } }, // unknown (wrong when flipped, but along y)
- { "crazyfgt", { 0, 0 }, { -2, 0 } }, // wrong (empty background column in title screen, but aligned sprites in screen select)
- { "magspeed", { 0, 0 }, { -2, 0 } }, // floating tilemap maybe 1px off in test grid
-
- { nullptr }
-};
-
-
/* 76-- ----
--5- ---- Sound Enable
---4 ---- toggled in IRQ1 by many games, irq acknowledge?
@@ -325,26 +249,6 @@ VIDEO_START_MEMBER(seta_state,oisipuzl)
{
VIDEO_START_CALL_MEMBER(seta);
m_tilemaps_flip = 1;
-
- // position kludges
- m_seta001->set_fg_yoffsets(-0x12, 0x0e);
-}
-
-VIDEO_START_MEMBER(setaroul_state,setaroul)
-{
- VIDEO_START_CALL_MEMBER(seta);
-
- // position kludges
- m_seta001->set_bg_yoffsets(0, -0x1);
- m_seta001->set_bg_xoffsets(0, 0x2);
-}
-
-VIDEO_START_MEMBER(jockeyc_state,jockeyc)
-{
- VIDEO_START_CALL_MEMBER(seta);
-
- // position kludges
- m_seta001->set_fg_yoffsets(-0x12+8, 0x0e);
}
SETA001_SPRITE_GFXBANK_CB_MEMBER(seta_state::setac_gfxbank_callback)
@@ -359,31 +263,14 @@ VIDEO_START_MEMBER(seta_state,seta)
{
m_tilemaps_flip = 0;
- m_global_offsets = game_offsets;
- while (m_global_offsets->gamename && strcmp(machine().system().name, m_global_offsets->gamename))
- m_global_offsets++;
m_samples_bank = -1; // set the samples bank to an out of range value at start-up
if (m_x1_bank != nullptr)
m_x1_bank->set_entry(0); // TODO : Unknown init
- // position kludges
- m_seta001->set_fg_xoffsets(m_global_offsets->sprite_offs[1], m_global_offsets->sprite_offs[0]);
- m_seta001->set_fg_yoffsets(-0x12, 0x0e);
- m_seta001->set_bg_yoffsets(0x1, -0x1);
-
m_vregs = 0;
save_item(NAME(m_vregs));
}
-VIDEO_START_MEMBER(seta_state,kyustrkr)
-{
- VIDEO_START_CALL_MEMBER(seta);
-
- // position kludges
- m_seta001->set_fg_yoffsets(-0x0a, 0x0e);
- m_seta001->set_bg_yoffsets(0x1, -0x1);
-}
-
/***************************************************************************
@@ -604,7 +491,7 @@ void seta_state::seta_layers_update(screen_device &screen, bitmap_ind16 &bitmap,
fff0 0260 = -$10, $400-$190 -$10
ffe8 0272 = -$18, $400-$190 -$18 + $1a */
- m_layers[layer]->update_scroll(m_global_offsets->tilemap_offs[flip ? 1 : 0], vis_dimy, flip);
+ m_layers[layer]->update_scroll(vis_dimy, flip);
}
}
diff --git a/src/mame/video/seta001.cpp b/src/mame/video/seta001.cpp
index 44c00f3960e..4651c4c83cd 100644
--- a/src/mame/video/seta001.cpp
+++ b/src/mame/video/seta001.cpp
@@ -45,6 +45,17 @@ seta001_device::seta001_device(const machine_config &mconfig, const char *tag, d
: device_t(mconfig, SETA001_SPRITE, tag, owner, clock)
, device_gfx_interface(mconfig, *this)
, m_gfxbank_cb(*this)
+ , m_fg_flipxoffs(0)
+ , m_fg_noflipxoffs(0)
+ , m_fg_flipyoffs(0)
+ , m_fg_noflipyoffs(0)
+ , m_bg_flipyoffs(0)
+ , m_bg_noflipyoffs(0)
+ , m_bg_flipxoffs(0)
+ , m_bg_noflipxoffs(0)
+ , m_colorbase(0)
+ , m_spritelimit(0x1ff)
+ , m_transpen(0)
{
}
@@ -81,22 +92,6 @@ void seta001_device::device_start()
memset(m_spritecodelow.get(),0xff,0x2000);
memset(m_spritecodehigh.get(),0xff,0x2000);
- m_fg_flipxoffs = 0;
- m_fg_noflipxoffs = 0;
-
- m_fg_flipyoffs = 0;
- m_fg_noflipyoffs = 0;
-
- m_bg_flipyoffs = 0;
- m_bg_noflipyoffs = 0;
-
- m_bg_flipxoffs = 0;
- m_bg_noflipxoffs = 0;
-
- m_transpen = 0;
- m_colorbase = 0;
- m_spritelimit = 0x1ff;
-
m_bgflag = 0x00;
m_gfxbank_cb.resolve();
@@ -258,7 +253,7 @@ void seta001_device::draw_background( bitmap_ind16 &bitmap, const rectangle &cli
int const ctrl = m_spritectrl[0];
int const ctrl2 = m_spritectrl[1];
- int const flip = ctrl & 0x40;
+ bool const flip = BIT(ctrl, 6);
int numcol = ctrl2 & 0x0f;
int scrollx, scrolly;
@@ -360,9 +355,7 @@ void seta001_device::draw_background( bitmap_ind16 &bitmap, const rectangle &cli
void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size)
{
int const screenflip = (m_spritectrl[0] & 0x40) >> 6;
- int i;
int const ctrl2 = m_spritectrl[1];
- int xoffs, yoffs;
int const total_color_codes = gfx(0)->colors();
@@ -371,8 +364,9 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
uint8_t *ctrl_pointer = &m_spritecodehigh[0x0000];
uint8_t *color_pointer = &m_spritecodehigh[0x0200];
- xoffs = screenflip ? m_fg_flipxoffs : m_fg_noflipxoffs;
- yoffs = screenflip ? m_fg_flipyoffs : m_fg_noflipyoffs;
+ // note that drgnunit, stg and qzkklogy run on the same board, yet they need different alignment
+ int xoffs = screenflip ? m_fg_flipxoffs : m_fg_noflipxoffs;
+ int yoffs = screenflip ? m_fg_flipyoffs : m_fg_noflipyoffs;
if ((ctrl2 ^ (~ctrl2 << 1)) & 0x40)
{
@@ -385,7 +379,7 @@ void seta001_device::draw_foreground( screen_device &screen, bitmap_ind16 &bitma
int const max_y = screen.height();
/* Draw up to 512 sprites, mjyuugi has glitches if you draw them all.. */
- for (i = m_spritelimit; i >= 0; i--)
+ for (int i = m_spritelimit; i >= 0; i--)
{
int code, color, sx, sy, flipx, flipy;
diff --git a/src/mame/video/srmp2.cpp b/src/mame/video/srmp2.cpp
index 8200d4e53c7..086ca045a3d 100644
--- a/src/mame/video/srmp2.cpp
+++ b/src/mame/video/srmp2.cpp
@@ -41,15 +41,8 @@ uint32_t srmp2_state::screen_update_srmp2(screen_device &screen, bitmap_ind16 &b
{
bitmap.fill(0x1ff, cliprect);
- m_seta001->set_transpen(15);
-
m_seta001->set_colorbase(m_color_bank<<5);
- m_seta001->set_fg_xoffsets( 0x10, 0x10 );
- m_seta001->set_fg_yoffsets( 0x05, 0x07 );
- m_seta001->set_bg_xoffsets( 0x00, 0x00 ); // bg not used?
- m_seta001->set_bg_yoffsets( 0x00, 0x00 ); // bg not used?
-
m_seta001->draw_sprites(screen,bitmap,cliprect,0x1000);
return 0;
}
@@ -58,25 +51,6 @@ uint32_t srmp2_state::screen_update_srmp3(screen_device &screen, bitmap_ind16 &b
{
bitmap.fill(0x1f0, cliprect);
- m_seta001->set_fg_xoffsets( 0x10, 0x10 );
- m_seta001->set_fg_yoffsets( 0x06, 0x06 );
- m_seta001->set_bg_xoffsets( -0x01, 0x10 );
- m_seta001->set_bg_yoffsets( -0x06, 0x06 );
-
- m_seta001->draw_sprites(screen,bitmap,cliprect,0x1000);
- return 0;
-}
-
-uint32_t srmp2_state::screen_update_mjyuugi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- bitmap.fill(0x1f0, cliprect);
-
- m_seta001->set_fg_xoffsets( 0x10, 0x10 );
- m_seta001->set_fg_yoffsets( 0x06, 0x06 );
- m_seta001->set_bg_yoffsets( 0x09, 0x07 );
-
- m_seta001->set_spritelimit( 0x1ff-6 );
-
m_seta001->draw_sprites(screen,bitmap,cliprect,0x1000);
return 0;
}
diff --git a/src/mame/video/tnzs.cpp b/src/mame/video/tnzs.cpp
index 7bc7688c8f1..865bb321d37 100644
--- a/src/mame/video/tnzs.cpp
+++ b/src/mame/video/tnzs.cpp
@@ -47,9 +47,6 @@ uint32_t tnzs_base_state::screen_update_tnzs(screen_device &screen, bitmap_ind16
{
bitmap.fill(0x1f0, cliprect);
- m_seta001->set_fg_yoffsets( -0x12, 0x0e );
- m_seta001->set_bg_yoffsets( 0x1, -0x1 );
-
m_seta001->draw_sprites(screen, bitmap, cliprect, 0x800);
return 0;
}
diff --git a/src/mame/video/x1_012.cpp b/src/mame/video/x1_012.cpp
index 94ff7f26701..9e4a3a85456 100644
--- a/src/mame/video/x1_012.cpp
+++ b/src/mame/video/x1_012.cpp
@@ -21,6 +21,7 @@ x1_012_device::x1_012_device(const machine_config &mconfig, const char *tag, dev
, m_tile_offset_callback(*this)
, m_vram(*this, DEVICE_SELF)
, m_tilemap(nullptr)
+ , m_xoffsets{0, 0}
, m_rambank(0)
{
std::fill(std::begin(m_vctrl), std::end(m_vctrl), 0);
@@ -94,7 +95,7 @@ void x1_012_device::vctrl_w(offs_t offset, u16 data, u16 mem_mask)
}
-void x1_012_device::update_scroll(int xoffset, int vis_dimy, bool flip)
+void x1_012_device::update_scroll(int vis_dimy, bool flip)
{
int x = m_vctrl[0];
int y = m_vctrl[1];
@@ -107,7 +108,7 @@ void x1_012_device::update_scroll(int xoffset, int vis_dimy, bool flip)
fff0 0260 = -$10, $400-$190 -$10
ffe8 0272 = -$18, $400-$190 -$18 + $1a */
- x += 0x10 - xoffset;
+ x += 0x10 - m_xoffsets[flip ? 1 : 0];
y -= (256 - vis_dimy)/2;
if (flip)
{
diff --git a/src/mame/video/x1_012.h b/src/mame/video/x1_012.h
index 2828ffb9bfe..a47ef1a377d 100644
--- a/src/mame/video/x1_012.h
+++ b/src/mame/video/x1_012.h
@@ -20,13 +20,14 @@ public:
// configuration
template <typename... T> void set_tile_offset_callback(T &&... args) { m_tile_offset_callback.set(std::forward<T>(args)...); }
+ void set_xoffsets(int flip, int noflip) { m_xoffsets[1] = flip; m_xoffsets[0] = noflip; }
void vram_w(offs_t offset, u16 data, u16 mem_mask = 0xffff);
u16 vctrl_r(offs_t offset, u16 mem_mask = 0xffff);
void vctrl_w(offs_t offset, u16 data, u16 mem_mask = 0xffff);
u16 vctrl(int index) const { return m_vctrl[index]; }
- void update_scroll(int xoffset, int vis_dimy, bool flip);
+ void update_scroll(int vis_dimy, bool flip);
void set_flip(u32 flip) { m_tilemap->set_flip(flip); }
void mark_all_dirty() { m_tilemap->mark_all_dirty(); }
@@ -47,6 +48,8 @@ private:
tilemap_t *m_tilemap;
+ u8 m_xoffsets[2];
+
u16 m_vctrl[3];
u8 m_rambank;
};