summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2025-07-06 02:25:23 +0200
committer hap <happppp@users.noreply.github.com>2025-07-06 02:25:33 +0200
commit867ae9a635dc810861ec9700a741a918e47dd15d (patch)
treeeb6099385d58af37790b764fa038b69664facbee /src
parentb2ff28758894cf6351dfab6158532f1c7c4aeadd (diff)
starforc: boardset has 4mhz and 12mhz xtals, copy paste screen raw params from bombjack (pace matches pcb video)
Diffstat (limited to 'src')
-rw-r--r--src/mame/tecmo/senjyo.cpp49
-rw-r--r--src/mame/tecmo/senjyo_v.cpp13
2 files changed, 35 insertions, 27 deletions
diff --git a/src/mame/tecmo/senjyo.cpp b/src/mame/tecmo/senjyo.cpp
index be7d03a88a3..bcfc395ecf7 100644
--- a/src/mame/tecmo/senjyo.cpp
+++ b/src/mame/tecmo/senjyo.cpp
@@ -546,13 +546,13 @@ static const gfx_layout spritelayout2 =
};
static GFXDECODE_START( gfx_senjyo )
- GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 ) /* 0- 63 characters */
- GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 64, 8 ) /* 64-127 background #1 */
- GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 128, 8 ) /* 128-191 background #2 */
- GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 192, 8 ) /* 192-255 background #3 */
- GFXDECODE_ENTRY( "gfx5", 0, spritelayout1, 320, 8 ) /* 320-383 normal sprites */
- GFXDECODE_ENTRY( "gfx5", 0, spritelayout2, 320, 8 ) /* 320-383 large sprites */
- /* 384-399 is background */
+ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 8 ) // 0- 63 characters
+ GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 64, 8 ) // 64-127 background #1
+ GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 128, 8 ) // 128-191 background #2
+ GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 192, 8 ) // 192-255 background #3
+ GFXDECODE_ENTRY( "gfx5", 0, spritelayout1, 320, 8 ) // 320-383 normal sprites
+ GFXDECODE_ENTRY( "gfx5", 0, spritelayout2, 320, 8 ) // 320-383 large sprites
+ // // 384-399 is background
GFXDECODE_END
@@ -566,31 +566,28 @@ static const z80_daisy_config senjyo_daisy_chain[] =
void senjyo_state::senjyo(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, 4000000); /* 4 MHz? */
+ // basic machine hardware
+ Z80(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &senjyo_state::senjyo_map);
m_maincpu->set_vblank_int("screen", FUNC(senjyo_state::irq0_line_assert));
- z80_device& sub(Z80(config, "sub", 2000000)); /* 2 MHz? */
+ z80_device& sub(Z80(config, "sub", 4_MHz_XTAL / 2)); // 2 MHz?
sub.set_daisy_config(senjyo_daisy_chain);
sub.set_addrmap(AS_PROGRAM, &senjyo_state::senjyo_sound_map);
sub.set_addrmap(AS_IO, &senjyo_state::senjyo_sound_io_map);
- Z80PIO(config, m_pio, 2000000);
+ Z80PIO(config, m_pio, 4_MHz_XTAL / 2);
m_pio->out_int_callback().set_inputline("sub", INPUT_LINE_IRQ0);
m_pio->in_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
- z80ctc_device& ctc(Z80CTC(config, "z80ctc", 2000000 /* same as "sub" */));
+ z80ctc_device& ctc(Z80CTC(config, "z80ctc", 4_MHz_XTAL / 2 /* same as "sub */));
ctc.intr_callback().set_inputline("sub", INPUT_LINE_IRQ0);
ctc.zc_callback<0>().set("z80ctc", FUNC(z80ctc_device::trg1));
ctc.zc_callback<2>().set(FUNC(senjyo_state::dac_clock_w));
- /* video hardware */
+ // video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(60);
- screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
- screen.set_size(32*8, 32*8);
- screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
+ screen.set_raw(12_MHz_XTAL / 2, 384, 0, 256, 264, 16, 240);
screen.set_screen_update(FUNC(senjyo_state::screen_update));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_senjyo);
@@ -598,12 +595,12 @@ void senjyo_state::senjyo(machine_config &config)
PALETTE(config, m_palette, palette_device::BLACK).set_format(1, &senjyo_state::IIBBGGRR, 512);
PALETTE(config, m_radar_palette, FUNC(senjyo_state::radar_palette), 2);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "speaker").front_center();
- SN76489A(config, "sn1", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
- SN76489A(config, "sn2", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
- SN76489A(config, "sn3", 2000000).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ SN76489A(config, "sn1", 4_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ SN76489A(config, "sn2", 4_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "speaker", 0.5);
+ SN76489A(config, "sn3", 4_MHz_XTAL / 2).add_route(ALL_OUTPUTS, "speaker", 0.5);
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set(m_pio, FUNC(z80pio_device::strobe_a)).invert();
@@ -613,11 +610,11 @@ void senjyo_state::senjyo(machine_config &config)
}
-
void senjyo_state::senjyox_e(machine_config &config)
{
senjyo(config);
- sega_315_5015_device &maincpu(SEGA_315_5015(config.replace(), m_maincpu, 4000000)); /* 4 MHz? */
+
+ sega_315_5015_device &maincpu(SEGA_315_5015(config.replace(), m_maincpu, 4_MHz_XTAL));
maincpu.set_addrmap(AS_PROGRAM, &senjyo_state::senjyo_map);
maincpu.set_addrmap(AS_OPCODES, &senjyo_state::decrypted_opcodes_map);
maincpu.set_vblank_int("screen", FUNC(senjyo_state::irq0_line_assert));
@@ -627,7 +624,8 @@ void senjyo_state::senjyox_e(machine_config &config)
void senjyo_state::senjyox_a(machine_config &config)
{
senjyo(config);
- sega_315_5018_device &maincpu(SEGA_315_5018(config.replace(), m_maincpu, 4000000)); /* 4 MHz? */
+
+ sega_315_5018_device &maincpu(SEGA_315_5018(config.replace(), m_maincpu, 4_MHz_XTAL));
maincpu.set_addrmap(AS_PROGRAM, &senjyo_state::senjyo_map);
maincpu.set_addrmap(AS_OPCODES, &senjyo_state::decrypted_opcodes_map);
maincpu.set_vblank_int("screen", FUNC(senjyo_state::irq0_line_assert));
@@ -639,7 +637,7 @@ void senjyo_state::starforb(machine_config &config)
{
senjyox_e(config);
- /* basic machine hardware */
+ // basic machine hardware
m_maincpu->set_addrmap(AS_PROGRAM, &senjyo_state::starforb_map);
subdevice<z80_device>("sub")->set_addrmap(AS_PROGRAM, &senjyo_state::starforb_sound_map);
@@ -970,6 +968,7 @@ void senjyo_state::init_starforc()
m_is_senjyo = 0;
m_scrollhack = 1;
}
+
void senjyo_state::init_starfore()
{
m_is_senjyo = 0;
diff --git a/src/mame/tecmo/senjyo_v.cpp b/src/mame/tecmo/senjyo_v.cpp
index 0784574c08a..c3431c0def8 100644
--- a/src/mame/tecmo/senjyo_v.cpp
+++ b/src/mame/tecmo/senjyo_v.cpp
@@ -135,21 +135,25 @@ void senjyo_state::fgvideoram_w(offs_t offset, uint8_t data)
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
+
void senjyo_state::fgcolorram_w(offs_t offset, uint8_t data)
{
m_fgcolorram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
+
void senjyo_state::bg1videoram_w(offs_t offset, uint8_t data)
{
m_bg1videoram[offset] = data;
m_bg1_tilemap->mark_tile_dirty(offset);
}
+
void senjyo_state::bg2videoram_w(offs_t offset, uint8_t data)
{
m_bg2videoram[offset] = data;
m_bg2_tilemap->mark_tile_dirty(offset);
}
+
void senjyo_state::bg3videoram_w(offs_t offset, uint8_t data)
{
m_bg3videoram[offset] = data;
@@ -181,11 +185,15 @@ void senjyo_state::draw_bgbitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect
for (int x = 0;x < 256;x++)
{
if (flip)
+ {
for (int y = 0;y < 256;y++)
bitmap.pix(y, 255 - x) = m_palette->pen_color(384 + pen);
+ }
else
+ {
for (int y = 0;y < 256;y++)
bitmap.pix(y, x) = m_palette->pen_color(384 + pen);
+ }
count += 0x10;
if (count >= strwid)
@@ -231,11 +239,13 @@ void senjyo_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
big = (m_spriteram[offs] & 0x80);
else /* Star Force */
big = ((m_spriteram[offs] & 0xc0) == 0xc0);
- sx = m_spriteram[offs+3];
+
if (big)
sy = 224-m_spriteram[offs+2];
else
sy = 240-m_spriteram[offs+2];
+
+ sx = m_spriteram[offs+3];
flipx = m_spriteram[offs+1] & 0x40;
flipy = m_spriteram[offs+1] & 0x80;
@@ -256,7 +266,6 @@ void senjyo_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect,
}
}
-
m_gfxdecode->gfx(big ? 5 : 4)->transpen(bitmap,cliprect,
m_spriteram[offs],
m_spriteram[offs + 1] & 0x07,