summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2025-07-08 18:42:24 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2025-07-08 18:42:24 +0200
commit1a580f3e71c3812bf636a3797623bef93ee41564 (patch)
tree46957009cca0702ba94cb4dacd7451880a78de3d
parentd1aeddf321145bb7fcbd183c701604e47530aeb7 (diff)
New working clones
------------------ Butterfly Video Game (version U863M) [Mr.Fu] - seibu/banprestomsz80.cpp: added sprites, some dip descriptions
-rw-r--r--src/mame/bordun/skylncr.cpp49
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/seibu/banprestomsz80.cpp165
-rw-r--r--src/mame/seta/speedatk.cpp2
4 files changed, 133 insertions, 84 deletions
diff --git a/src/mame/bordun/skylncr.cpp b/src/mame/bordun/skylncr.cpp
index d4e2bffd100..5e5ca7377e2 100644
--- a/src/mame/bordun/skylncr.cpp
+++ b/src/mame/bordun/skylncr.cpp
@@ -1795,7 +1795,7 @@ Notes:
*/
ROM_START( skylncr )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27512.u35", 0x00000, 0x10000, CRC(98b1c9fe) SHA1(9ca1706d25038a078fb07ba5c2e6681ed468bc88) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1806,7 +1806,7 @@ ROM_START( skylncr )
ROM_END
ROM_START( butrfly ) // this has original Bordun copyright in ROMs and test mode in Chinese
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "sub-pcb.bin", 0x00000, 0x10000, CRC(f5618f8e) SHA1(390b238821b195f444e69c45786617524e6f5394) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1822,8 +1822,26 @@ ROM_START( butrfly ) // this has original Bordun copyright in ROMs and test mode
ROM_LOAD16_BYTE( "u58", 0x40001, 0x20000, CRC(a69b5994) SHA1(f7f849c752740089a49dc6693822466d73010ea0) )
ROM_END
+ROM_START( butrflya ) // this was on an original Bordun PCB, with Bordun copyright in ROMs and title screen, test mode in Chinese
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "u15.u15", 0x00000, 0x08000, CRC(31f7dca8) SHA1(c433b3a4f5c7f504dfc89f499fa244e59235bc89) ) // 27256
+ ROM_LOAD( "u48", 0x0c000, 0x04000, CRC(39c391c5) SHA1(326f4d72d546bc902542e628a6e87dc941ef0ef4) ) // 27128, no label
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) // all 27010
+ ROM_LOAD16_BYTE( "100.u20", 0x00000, 0x20000, CRC(2ff775ea) SHA1(2219c75cbac2969485607446ab116587bdee7278) )
+ ROM_LOAD16_BYTE( "102.u21", 0x00001, 0x20000, CRC(029d2214) SHA1(cf8256157db0b297ed457b3da6b6517907128843) )
+ ROM_LOAD16_BYTE( "103.u22", 0x40000, 0x20000, CRC(37bad677) SHA1(c077f0c07b097b376a01e5637446e4c4f82d9e28) )
+ ROM_LOAD16_BYTE( "104.u23", 0x40001, 0x20000, CRC(d14c7713) SHA1(c229ef64f3b0a04ff8e27bc56cff6a55ca34b80c) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) // all 27010
+ ROM_LOAD16_BYTE( "105.u22", 0x00000, 0x20000, CRC(15051537) SHA1(086c38c05c605f297a7bc470eb51763a7648e72c) )
+ ROM_LOAD16_BYTE( "106.u21", 0x00001, 0x20000, CRC(8e34d029) SHA1(ae316f2f34768938a07d62db110ce59d2751abaa) )
+ ROM_LOAD16_BYTE( "107.u20", 0x40000, 0x20000, CRC(226cb483) SHA1(89efa0e11700bcab0024a6058a5f1ee6b4a09953) )
+ ROM_LOAD16_BYTE( "108.u19", 0x40001, 0x20000, CRC(a69b5994) SHA1(f7f849c752740089a49dc6693822466d73010ea0) )
+ROM_END
+
ROM_START( butrflybl ) // this has Bordun copyright removed and test mode in English
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "butterfly.prg", 0x00000, 0x10000, CRC(b35b289c) SHA1(5a02bfb6e1fb608099b9f491c10795ef888a3b36) ) // Mata Electronic / Sen Xing Trading copyright instead of Bordun
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1840,7 +1858,7 @@ ROM_START( butrflybl ) // this has Bordun copyright removed and test mode in Eng
ROM_END
ROM_START( mbutrfly )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "magical_butterfy_x4_cleco.bin", 0x00000, 0x10000, CRC(2391778f) SHA1(f82ee9fb571547fda70867e091317779e2fe6e80) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1857,7 +1875,7 @@ ROM_START( mbutrfly )
ROM_END
ROM_START( gallag50 )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27512.u9", 0x00000, 0x10000, CRC(355f8c3b) SHA1(d419fcb96bf936eaf7afb1a4b38a9e1d2a191686) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1904,7 +1922,7 @@ Notes:
*/
ROM_START( madzoo )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27512.u9", 0x00000, 0x10000, CRC(98b1c9fe) SHA1(9ca1706d25038a078fb07ba5c2e6681ed468bc88) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1921,7 +1939,7 @@ ROM_START( madzoo )
ROM_END
ROM_START( leader )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "leader.prg", 0x00000, 0x10000, CRC(1a6e1129) SHA1(639f687e7720bab89628b377dca0475f17a35041) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1938,7 +1956,7 @@ ROM_START( leader )
ROM_END
ROM_START( leadera ) // this has the same GFX ROMs as butrfly, with different program
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "leader 2ka.bin", 0x00000, 0x10000, CRC(2664db55) SHA1(de4c07a8ba8fab772441395b6d05272ee54d9614) ) // on sub board with Altera EPM7032
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1962,7 +1980,7 @@ ROM_END
Maybe it's a leftover, or it's a sort of stealth game.
*/
ROM_START( neraidou )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "aepi.prg", 0x00000, 0x10000, CRC(7ac74830) SHA1(1e3322341711e329b40d94ac6ec25fbafb1d4d62) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -1986,7 +2004,7 @@ ROM_END
But is not the real title.
*/
ROM_START( miaction )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27c512_sub_board_miaction.bin", 0x00000, 0x10000, CRC(4865a6de) SHA1(cfa23eef004f9a29d462676d9b9b94a1e84064d6) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -2011,7 +2029,7 @@ ROM_END
*/
ROM_START( tigerslt )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "27c512_sub_board_tiger.bin", 0x00000, 0x10000, CRC(3c4181bf) SHA1(afc4fcd7ec9a48406242fe7e01a32e1a20216330) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -2236,7 +2254,7 @@ ROM_END
Program ROM is encrypted.
*/
ROM_START( sonikfig )
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "subboard_27c512.bin", 0x00000, 0x10000, CRC(f9b5b03e) SHA1(3832a7d70b41052f9dca46faa6f311ccc5a817b7) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -2369,7 +2387,7 @@ ROM_START( speedwaya ) // runs on a Rolla PCB with small sub board with main CPU
ROM_END
ROM_START( seadevil ) // on a POCKBOY REV.0 PCB
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "v42 scr scm.u13", 0x00000, 0x10000, CRC(23b6eb48) SHA1(469d9f766ce96d2c850d611cd9a8b48545c71aaf) ) // on sub PCB, M27C512
ROM_REGION( 0x80000, "gfx1", 0 ) // all AM27C010
@@ -2386,7 +2404,7 @@ ROM_START( seadevil ) // on a POCKBOY REV.0 PCB
ROM_END
ROM_START( spcliner ) // on a ROLLA PCB, might actually be another title, won't know until palette is fixed. GFX ROM loading is wrong.
- ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "9.sub", 0x00000, 0x10000, CRC(80f65def) SHA1(a0716d57ae4935a79d32971d0bcb9f40dd9f1d54) ) // on sub PCB
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -2403,7 +2421,7 @@ ROM_START( spcliner ) // on a ROLLA PCB, might actually be another title, won't
ROM_END
ROM_START( blshark )
- ROM_REGION( 0x80000, "maincpu", 0 ) // on sub PCB
+ ROM_REGION( 0x10000, "maincpu", 0 ) // on sub PCB
ROM_LOAD( "sub", 0x00000, 0x10000, CRC(ed005267) SHA1(b20c62d76d4d49ee42e1f2f922015bec3cbbd25d) )
ROM_REGION( 0x80000, "gfx1", 0 )
@@ -2637,6 +2655,7 @@ void skylncr_state::init_blshark() // done by comparing code to skylancr, may be
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS
GAME( 1995, skylncr, 0, skylncr, skylncr, skylncr_state, empty_init, ROT0, "Bordun International", "Sky Lancer (Bordun, version U450C)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, butrfly, 0, skylncr, skylncr, skylncr_state, init_butrfly, ROT0, "Bordun International", "Butterfly Video Game (version A00)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, butrflya, butrfly, skylncr, skylncr, skylncr_state, empty_init, ROT0, "Bordun International", "Butterfly Video Game (version U863M)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, butrflybl, butrfly, skylncr, skylncr, skylncr_state, empty_init, ROT0, "bootleg", "Butterfly Video Game (version U350C)", MACHINE_SUPPORTS_SAVE )
GAME( 1999, mbutrfly, 0, mbutrfly, mbutrfly, skylncr_state, init_mbutrfly, ROT0, "Bordun International", "Magical Butterfly (version U350C, protected)", MACHINE_SUPPORTS_SAVE )
GAME( 1995, madzoo, 0, skylncr, skylncr, skylncr_state, empty_init, ROT0, "Bordun International", "Mad Zoo (version U450C)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 4dd72fbb7f7..6de9daa1010 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -15214,6 +15214,7 @@ lianhp3
bdream97
blshark
butrfly
+butrflya
butrflybl
dbsha
gallag50
diff --git a/src/mame/seibu/banprestomsz80.cpp b/src/mame/seibu/banprestomsz80.cpp
index 620eee57963..85bac4ffe3c 100644
--- a/src/mame/seibu/banprestomsz80.cpp
+++ b/src/mame/seibu/banprestomsz80.cpp
@@ -21,10 +21,11 @@ Main components:
- OKI M6295
TODO:
-- sprites
-- visible area
-- hopper
-- more tilemaps?
+- hopper (stops the game from working)
+- sprites' priority
+- check visible area
+- 2 more tilemaps (don't seem used by the dumped game)
+- enable NVRAM support once it works
*/
#include "emu.h"
@@ -42,7 +43,7 @@ TODO:
#include "tilemap.h"
-//namespace {
+namespace {
class banprestomsz80_state : public driver_device
{
@@ -55,8 +56,8 @@ public:
m_palette(*this, "palette"),
m_hopper(*this, "hopper"),
m_charram(*this, "charram"),
- m_bgram(*this, "bgram")
- //m_spriteram(*this, "sprite_ram")
+ m_bgram(*this, "bgram"),
+ m_spriteram(*this, "sprite_ram")
{ }
void banprestomsz80(machine_config &config) ATTR_COLD;
@@ -73,12 +74,14 @@ private:
required_shared_ptr<uint8_t> m_charram;
required_shared_ptr<uint8_t> m_bgram;
- //required_shared_ptr<uint8_t> m_spriteram;
+ required_shared_ptr<uint8_t> m_spriteram;
tilemap_t *m_char_tilemap = nullptr;
tilemap_t *m_bg_tilemap = nullptr;
uint8_t m_crtc_upper_data = 0;
+ uint16_t m_layer_en = 0;
+ uint16_t m_scrollram[6] {};
void output_w(uint8_t data);
void output2_w(uint8_t data);
@@ -90,6 +93,8 @@ private:
void crtc_upper_data_w(uint8_t data);
void crtc_w(offs_t offset, uint8_t data);
+ void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
+
TILE_GET_INFO_MEMBER(get_char_tile_info);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
@@ -109,9 +114,10 @@ void banprestomsz80_state::video_start()
m_bg_tilemap->set_transparent_pen(0x0f);
save_item(NAME(m_crtc_upper_data));
+ save_item(NAME(m_layer_en));
+ save_item(NAME(m_scrollram));
}
-
void banprestomsz80_state::charram_w(offs_t offset, uint8_t data)
{
m_charram[offset] = data;
@@ -129,7 +135,7 @@ TILE_GET_INFO_MEMBER(banprestomsz80_state::get_char_tile_info)
int const tile = m_charram[2 * tile_index] | ((m_charram[2 * tile_index + 1] & 0x07) << 8);
int const color = m_charram[2 * tile_index + 1] >> 4;
- tileinfo.set(2, tile, color, 0);
+ tileinfo.set(0, tile, color, 0);
}
TILE_GET_INFO_MEMBER(banprestomsz80_state::get_bg_tile_info)
@@ -140,10 +146,33 @@ TILE_GET_INFO_MEMBER(banprestomsz80_state::get_bg_tile_info)
tileinfo.set(1, tile, color, 0);
}
+void banprestomsz80_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ for (int i = 0x200 - 4; i > -1; i -= 4)
+ {
+ int const tile = m_spriteram[i] | ((m_spriteram[i + 1] & 0x70) << 4);
+ int const color = m_spriteram[i + 1] & 0x0f;
+ int const y = m_spriteram[i + 2];
+ int const x = m_spriteram[i + 3];
+
+ m_gfxdecode->gfx(2)->transpen(bitmap, cliprect, tile, color, 0, 0, x, y, 0xf);
+ }
+}
+
uint32_t banprestomsz80_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_char_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ screen.priority().fill(0, cliprect);
+
+ m_bg_tilemap->set_scrollx(0, m_scrollram[4]);
+ m_bg_tilemap->set_scrolly(0, m_scrollram[5]);
+
+ // are these two tilemaps used? doesn't seem so
+ //if (BIT(~m_layer_en, 0)) { tilemap0->draw(screen, bitmap, cliprect, 0, 1); }
+ //if (BIT(~m_layer_en, 1)) { tilemap1->draw(screen, bitmap, cliprect, 0, 2); }
+
+ if (BIT(~m_layer_en, 2)) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 4); }
+ if (BIT(~m_layer_en, 3)) { m_char_tilemap->draw(screen, bitmap, cliprect, 0, 8); }
+ if (BIT(~m_layer_en, 4)) { draw_sprites(bitmap, cliprect); }
return 0;
}
@@ -196,7 +225,8 @@ void banprestomsz80_state::program_map(address_map &map)
map(0xe000, 0xe7ff).ram();
map(0xe800, 0xefff).ram().w(FUNC(banprestomsz80_state::charram_w)).share(m_charram);
map(0xf000, 0xf7ff).ram().w(FUNC(banprestomsz80_state::bgram_w)).share(m_bgram);
- map(0xf800, 0xffff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xfdff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xfe00, 0xffff).ram().share(m_spriteram);
}
// TODO: various writes
@@ -241,70 +271,67 @@ static INPUT_PORTS_START( dnjsenso )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
PORT_START("IN2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME( "Bet 1" )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME( "Bet 2" )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME( "Bet 3" )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) PORT_NAME( "Bet 4" )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(4) PORT_NAME( "Bet 5" )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(4) PORT_NAME( "Bet 6" )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_PLAYER(4) PORT_NAME( "Bet 7" )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // No effect in test mode
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) PORT_NAME("Bet 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) PORT_NAME("Bet 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_NAME("Bet 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) PORT_NAME("Bet 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(4) PORT_NAME("Bet 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(4) PORT_NAME("Bet 6")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_PLAYER(4) PORT_NAME("Bet 7")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // no effect in test mode
+ // Switch effects taken from test mode. No medal in rate shown, so possibly a couple of the unknown ones are that
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW1:1,2") // 100 Yen
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_10C ) )
+ PORT_DIPSETTING( 0x03, "1 Coin/11 Credits" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:3") // no effect in test mode
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:4") // no effect in test mode
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:5") // no effect in test mode
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, "Voice" ) PORT_DIPLOCATION("DSW1:6")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW1:7,8") // 10 Yen
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
PORT_START("DSW2")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x07, 0x07, "Payout Rate" ) PORT_DIPLOCATION("DSW2:1,2,3")
+ PORT_DIPSETTING( 0x07, "50%" )
+ PORT_DIPSETTING( 0x03, "60%" )
+ PORT_DIPSETTING( 0x05, "65%" )
+ PORT_DIPSETTING( 0x01, "70%" )
+ PORT_DIPSETTING( 0x06, "75%" )
+ PORT_DIPSETTING( 0x02, "80%" )
+ PORT_DIPSETTING( 0x04, "85%" )
+ PORT_DIPSETTING( 0x00, "90%" )
+ PORT_DIPNAME( 0x08, 0x08, "Winwave" ) PORT_DIPLOCATION("DSW2:4") // ??
+ PORT_DIPSETTING( 0x08, "Small" )
+ PORT_DIPSETTING( 0x00, "Big" )
+ PORT_DIPNAME( 0x30, 0x30, "G Medal Rate" ) PORT_DIPLOCATION("DSW2:5,6")
+ PORT_DIPSETTING( 0x30, "03%" )
+ PORT_DIPSETTING( 0x10, "05%" )
+ PORT_DIPSETTING( 0x20, "07%" )
+ PORT_DIPSETTING( 0x00, "10%" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:7") // no effect shown in test mode
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:8") // no effect shown in test mode
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-// TODO: maybe not 100% correct
static const gfx_layout charlayout =
{
8,8,
@@ -331,7 +358,7 @@ static const gfx_layout tilelayout =
static GFXDECODE_START( gfx )
GFXDECODE_ENTRY( "tiles", 0, charlayout, 0x200, 16 )
GFXDECODE_ENTRY( "tiles", 0, tilelayout, 0, 16 )
- GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0x300, 16 )
+ GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0x100, 16 )
GFXDECODE_END
@@ -352,14 +379,16 @@ void banprestomsz80_state::banprestomsz80(machine_config &config)
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_visarea(0, 32*8-1, 0, 28*8-1);
screen.set_screen_update(FUNC(banprestomsz80_state::screen_update));
screen.set_palette(m_palette);
SEIBU_CRTC(config, m_crtc, 0);
+ m_crtc->layer_en_callback().set([this] (uint16_t data) { m_layer_en = data; });
+ m_crtc->layer_scroll_callback().set([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { COMBINE_DATA(&m_scrollram[offset]); });
GFXDECODE(config, m_gfxdecode, m_palette, gfx);
- PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x400);
+ PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x300);
// sound hardware
SPEAKER(config, "mono").front_center();
@@ -368,14 +397,14 @@ void banprestomsz80_state::banprestomsz80(machine_config &config)
}
-// ウルトラマン超闘士激戦 - 大日本重弾戦争 (Ultraman Chō Tōshi Gekisen - Dai Nippon Jūdan Sensō)
+// ウルトラマン倶楽部 大地防衛戦 (Club Ultraman - Daichikyū Bōeisen)
ROM_START( dnjsenso )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "s83-c01.u0129", 0x00000, 0x10000, CRC(b9cb8a41) SHA1(4ca9c6dd44691e90ac8373fc7e1e6c704cb2f64c) )
ROM_REGION( 0x40000, "sprites", 0 )
- ROM_LOAD16_BYTE( "s83-a05.u052", 0x00000, 0x20000, CRC(e7fdc950) SHA1(3fe2839a8a8402aa3ee1e867d249b53a4f5bf7a1) )
- ROM_LOAD16_BYTE( "s83-a06.u0510", 0x00001, 0x20000, CRC(d2221ab9) SHA1(168ca7cca0d759e7de9d20f838ed9a303ce7bfa8) )
+ ROM_LOAD16_BYTE( "s83-a06.u0510", 0x00000, 0x20000, CRC(d2221ab9) SHA1(168ca7cca0d759e7de9d20f838ed9a303ce7bfa8) )
+ ROM_LOAD16_BYTE( "s83-a05.u052", 0x00001, 0x20000, CRC(e7fdc950) SHA1(3fe2839a8a8402aa3ee1e867d249b53a4f5bf7a1) )
ROM_REGION( 0x40000, "tiles", 0 )
ROM_LOAD16_BYTE( "s83-a03.u049", 0x00000, 0x20000, CRC(dced1091) SHA1(03cb87330bed98b96c3ef790bc4dafb744e2f3c9) )
@@ -389,7 +418,7 @@ ROM_START( dnjsenso )
ROM_LOAD( "scz02.u061", 0x200, 0x155, NO_DUMP ) // 18CV8-PC25
ROM_END
-//} // anonymous namespace
+} // anonymous namespace
-GAME( 1992, dnjsenso, 0, banprestomsz80, dnjsenso, banprestomsz80_state, empty_init, ROT0, "Banpresto", "Ultraman Cho Toshi Gekisen - Dai Nippon Judan Senso", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dnjsenso, 0, banprestomsz80, dnjsenso, banprestomsz80_state, empty_init, ROT0, "Banpresto", "Club Ultraman - Daichikyu Boeisen", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/seta/speedatk.cpp b/src/mame/seta/speedatk.cpp
index b50a0de143a..0fe09a66038 100644
--- a/src/mame/seta/speedatk.cpp
+++ b/src/mame/seta/speedatk.cpp
@@ -792,4 +792,4 @@ GAME( 1983, daifugo, 0, daifugo, daifugo, speedatk_state, empty_init, ROT90,
GAME( 1984, speedatk, 0, speedatk, speedatk, speedatk_state, empty_init, ROT0, "Seta Kikaku", "Speed Attack! (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1985, hanaren2, 0, harashi, speedatk, speedatk_state, empty_init, ROT0, "K & K Electron", "Hana no Ren-Chan II (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
GAME( 1993, harashi, 0, harashi, speedatk, speedatk_state, empty_init, ROT0, "Asahi Bussan", "Hana Arashi (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-GAME( 1982, unkalba, 0, harashi, speedatk, speedatk_state, empty_init, ROT90, "Alba", "unknown Alba game", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1982, unkalba, 0, harashi, speedatk, speedatk_state, empty_init, ROT90, "Alba", "unknown Alba game", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )