diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/cchance.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/champbwl.cpp | 21 | ||||
-rw-r--r-- | src/mame/drivers/m5.cpp | 10 | ||||
-rw-r--r-- | src/mame/drivers/seta.cpp | 284 | ||||
-rw-r--r-- | src/mame/drivers/srmp2.cpp | 15 | ||||
-rw-r--r-- | src/mame/drivers/taito_x.cpp | 13 | ||||
-rw-r--r-- | src/mame/drivers/thedealr.cpp | 5 | ||||
-rw-r--r-- | src/mame/drivers/tnzs.cpp | 2 | ||||
-rw-r--r-- | src/mame/includes/seta.h | 15 | ||||
-rw-r--r-- | src/mame/includes/srmp2.h | 1 | ||||
-rw-r--r-- | src/mame/video/seta.cpp | 115 | ||||
-rw-r--r-- | src/mame/video/seta001.cpp | 38 | ||||
-rw-r--r-- | src/mame/video/srmp2.cpp | 26 | ||||
-rw-r--r-- | src/mame/video/tnzs.cpp | 3 | ||||
-rw-r--r-- | src/mame/video/x1_012.cpp | 5 | ||||
-rw-r--r-- | src/mame/video/x1_012.h | 5 |
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; }; |