New machines marked as NOT_WORKING

----------------------------------
Gun Shot [Museo del Recreativo]

- blktiger.cpp: used finders and some other small cleanups
This commit is contained in:
Ivan Vangelista 2022-03-23 18:46:47 +01:00
parent 1a7552a152
commit 18bdf245a2
6 changed files with 582 additions and 530 deletions

View File

@ -1528,8 +1528,6 @@ files {
MAME_DIR .. "src/mame/video/tigeroad_spr.cpp",
MAME_DIR .. "src/mame/video/tigeroad_spr.h",
MAME_DIR .. "src/mame/drivers/blktiger.cpp",
MAME_DIR .. "src/mame/includes/blktiger.h",
MAME_DIR .. "src/mame/video/blktiger.cpp",
MAME_DIR .. "src/mame/drivers/blktiger_ms.cpp",
MAME_DIR .. "src/mame/drivers/cbasebal.cpp",
MAME_DIR .. "src/mame/includes/cbasebal.h",

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,7 @@ Status:
ToDo:
- The "new cpu" machines are lacking mechanical sounds. The output bits vary per game.
- La Rana: playable. Needs its own layout. Inputs to be figured out.
- Gun Shot: needs device-ification and sharing of the sound board emulated in spinb.cpp.
********************************************************************************************************/
@ -73,6 +74,7 @@ public:
void inder(machine_config &config);
void brvteam(machine_config &config);
void canasta(machine_config &config);
void gunshot(machine_config &config);
void lapbylap(machine_config &config);
void init_0();
@ -1641,6 +1643,34 @@ ROM_START(larana)
ROM_LOAD("inder_sa_mod_la_rana_b_200690.bin", 0x00000, 0x10000, CRC(3aaa7c7d) SHA1(4a8531b6859fc1f2a4bb63a51da35e9081b7e88b))
ROM_END
/*-------------------------------------------------------------------
/ Gun Shot (199?)
/ Main PCB: Inder SA UCPU87 (only 3 of 4 I8255 sockets populated)
/ Sound PCB: unmarked (only 1 of 2 ROM sockets populated)
/-------------------------------------------------------------------*/
ROM_START(gunshot)
ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("m-177_gun_shot_rom_0_version_0.4.ci3", 0x0000, 0x4000, CRC(f0f4e01e) SHA1(27b28ce3a81e01d9c1bacebe078c135e24b637a7)) // 001xxxxxxxxxxxxx = 0xFF
ROM_CONTINUE( 0x0000, 0x4000)
ROM_CONTINUE( 0x0000, 0x4000)
ROM_CONTINUE( 0x0000, 0x4000)
// second ROM socket empty
ROM_REGION(0x2000, "audiocpu", 0)
ROM_LOAD("m-177_gun_shot_rom_1_version_0.0.ic9", 0x0000, 0x2000, CRC(737ea656) SHA1(0bb16ae4bef2800681aaa7741506f40a337e6af0)) // 000111xxxxxxxxxx = 0xFF
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_CONTINUE( 0x0000, 0x2000)
ROM_REGION(0x80000, "audiorom", 0)
ROM_LOAD("m-177_gun_shot_rom_2_version_0.0.ic16", 0x00000, 0x80000, CRC(f91ddd0c) SHA1(cc4e1440e76330872f512d56376f45b92a8dbee6))
// second ROM socket empty
ROM_END
/*-------------------------------------------------------------------
/ 250 CC (1992)
/-------------------------------------------------------------------*/
@ -1671,10 +1701,13 @@ GAME(1986, canasta, 0, canasta, canasta, inder_state, empty_init, ROT0, "In
GAME(1986, lapbylap, 0, lapbylap, lapbylap, inder_state, empty_init, ROT0, "Inder", "Lap By Lap", MACHINE_IS_SKELETON_MECHANICAL )
// new cpu board, sound board with msm5205
GAME(1987, pinmoonl, 0, inder, pinmoonl, inder_state, init_0, ROT0, "Inder", "Moon Light (Inder)", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1988, pinclown, 0, inder, pinclown, inder_state, init_1, ROT0, "Inder", "Clown (Inder)", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1989, corsario, 0, inder, corsario, inder_state, init_1, ROT0, "Inder", "Corsario", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1990, mundial, 0, inder, mundial, inder_state, init_1, ROT0, "Inder", "Mundial 90", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1991, atleta, 0, inder, atleta, inder_state, init_1, ROT0, "Inder", "Atleta", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1991, larana, 0, inder, larana, inder_state, init_0, ROT0, "Inder", "La Rana", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1992, ind250cc, 0, inder, ind250cc, inder_state, init_1, ROT0, "Inder", "250 CC", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1987, pinmoonl, 0, inder, pinmoonl, inder_state, init_0, ROT0, "Inder", " Moon Light (Inder)", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1988, pinclown, 0, inder, pinclown, inder_state, init_1, ROT0, "Inder", "Clown (Inder)", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1989, corsario, 0, inder, corsario, inder_state, init_1, ROT0, "Inder", "Corsario", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1990, mundial, 0, inder, mundial, inder_state, init_1, ROT0, "Inder", "Mundial 90", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1991, atleta, 0, inder, atleta, inder_state, init_1, ROT0, "Inder", "Atleta", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1991, larana, 0, inder, larana, inder_state, init_0, ROT0, "Inder", "La Rana", MACHINE_IS_SKELETON_MECHANICAL )
GAME(1992, ind250cc, 0, inder, ind250cc, inder_state, init_1, ROT0, "Inder", "250 CC", MACHINE_IS_SKELETON_MECHANICAL )
// new cpu board, sound board with msm6585 (like the ones in spinb.cpp)
GAME(199?, gunshot, 0, inder, larana, inder_state, init_0, ROT0, "Spinball", "Gun Shot", MACHINE_IS_SKELETON_MECHANICAL )

View File

@ -1,95 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Paul Leaman
/***************************************************************************
Black Tiger
***************************************************************************/
#ifndef MAME_INCLUDES_BLKTIGER_H
#define MAME_INCLUDES_BLKTIGER_H
#pragma once
#include "cpu/mcs51/mcs51.h"
#include "video/bufsprite.h"
#include "emupal.h"
#include "tilemap.h"
class blktiger_state : public driver_device
{
public:
blktiger_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_spriteram(*this, "spriteram"),
m_txvideoram(*this, "txvideoram"),
m_mcu(*this, "mcu"),
m_audiocpu(*this, "audiocpu"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
{ }
void init_blktigerb3();
void blktiger(machine_config &config);
void blktigerbl(machine_config &config);
private:
/* memory pointers */
required_device<buffered_spriteram8_device> m_spriteram;
required_shared_ptr<uint8_t> m_txvideoram;
/* video-related */
tilemap_t *m_tx_tilemap = nullptr;
tilemap_t *m_bg_tilemap8x4 = nullptr;
tilemap_t *m_bg_tilemap4x8 = nullptr;
uint32_t m_scroll_bank = 0U;
uint8_t m_scroll_x[2]{};
uint8_t m_scroll_y[2]{};
std::unique_ptr<uint8_t[]> m_scroll_ram{};
uint8_t m_screen_layout = 0U;
uint8_t m_chon = 0U;
uint8_t m_objon = 0U;
uint8_t m_bgon = 0U;
/* mcu-related */
uint8_t m_z80_latch = 0U;
uint8_t m_i8751_latch = 0U;
/* devices */
optional_device<i8751_device> m_mcu;
required_device<cpu_device> m_audiocpu;
uint8_t blktiger_from_mcu_r();
void blktiger_to_mcu_w(uint8_t data);
uint8_t blktiger_from_main_r();
void blktiger_to_main_w(uint8_t data);
void blktiger_bankswitch_w(uint8_t data);
void blktiger_coinlockout_w(uint8_t data);
void blktiger_txvideoram_w(offs_t offset, uint8_t data);
uint8_t blktiger_bgvideoram_r(offs_t offset);
void blktiger_bgvideoram_w(offs_t offset, uint8_t data);
void blktiger_bgvideoram_bank_w(uint8_t data);
void blktiger_scrolly_w(offs_t offset, uint8_t data);
void blktiger_scrollx_w(offs_t offset, uint8_t data);
void blktiger_video_control_w(uint8_t data);
void blktiger_video_enable_w(uint8_t data);
void blktiger_screen_layout_w(uint8_t data);
TILEMAP_MAPPER_MEMBER(bg8x4_scan);
TILEMAP_MAPPER_MEMBER(bg4x8_scan);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
uint32_t screen_update_blktiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
void blktiger_io_map(address_map &map);
void blktiger_map(address_map &map);
void blktiger_sound_map(address_map &map);
void blktigerbl_io_map(address_map &map);
};
#endif // MAME_INCLUDES_BLKTIGER_H

View File

@ -17325,6 +17325,7 @@ atleta //
brvteam //
canasta //
corsario //
gunshot //
ind250cc //
lapbylap //
larana //

View File

@ -1,238 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Paul Leaman
#include "emu.h"
#include "includes/blktiger.h"
#define BGRAM_BANK_SIZE 0x1000
#define BGRAM_BANKS 4
/***************************************************************************
Callbacks for the TileMap code
***************************************************************************/
TILEMAP_MAPPER_MEMBER(blktiger_state::bg8x4_scan)
{
/* logical (col,row) -> memory offset */
return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x70) << 4) + ((row & 0x30) << 7);
}
TILEMAP_MAPPER_MEMBER(blktiger_state::bg4x8_scan)
{
/* logical (col,row) -> memory offset */
return (col & 0x0f) + ((row & 0x0f) << 4) + ((col & 0x30) << 4) + ((row & 0x70) << 6);
}
TILE_GET_INFO_MEMBER(blktiger_state::get_bg_tile_info)
{
/* the tile priority table is a guess compiled by looking at the game. It
was not derived from a PROM so it could be wrong. */
static const uint8_t split_table[16] =
{
3,3,2,2,
1,1,0,0,
0,0,0,0,
0,0,0,0
};
uint8_t attr = m_scroll_ram[2 * tile_index + 1];
int color = (attr & 0x78) >> 3;
tileinfo.set(1,
m_scroll_ram[2 * tile_index] + ((attr & 0x07) << 8),
color,
(attr & 0x80) ? TILE_FLIPX : 0);
tileinfo.group = split_table[color];
}
TILE_GET_INFO_MEMBER(blktiger_state::get_tx_tile_info)
{
uint8_t attr = m_txvideoram[tile_index + 0x400];
tileinfo.set(0,
m_txvideoram[tile_index] + ((attr & 0xe0) << 3),
attr & 0x1f,
0);
}
/***************************************************************************
Start the video hardware emulation.
***************************************************************************/
void blktiger_state::video_start()
{
m_chon = 1;
m_bgon = 1;
m_objon = 1;
m_screen_layout = 0;
m_scroll_ram = std::make_unique<uint8_t[]>(BGRAM_BANK_SIZE * BGRAM_BANKS);
m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
m_bg_tilemap8x4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(blktiger_state::bg8x4_scan)), 16, 16, 128, 64);
m_bg_tilemap4x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(blktiger_state::bg4x8_scan)), 16, 16, 64, 128);
m_tx_tilemap->set_transparent_pen(3);
m_bg_tilemap8x4->set_transmask(0, 0xffff, 0x8000); /* split type 0 is totally transparent in front half */
m_bg_tilemap8x4->set_transmask(1, 0xfff0, 0x800f); /* split type 1 has pens 4-15 transparent in front half */
m_bg_tilemap8x4->set_transmask(2, 0xff00, 0x80ff); /* split type 1 has pens 8-15 transparent in front half */
m_bg_tilemap8x4->set_transmask(3, 0xf000, 0x8fff); /* split type 1 has pens 12-15 transparent in front half */
m_bg_tilemap4x8->set_transmask(0, 0xffff, 0x8000);
m_bg_tilemap4x8->set_transmask(1, 0xfff0, 0x800f);
m_bg_tilemap4x8->set_transmask(2, 0xff00, 0x80ff);
m_bg_tilemap4x8->set_transmask(3, 0xf000, 0x8fff);
m_tx_tilemap->set_scrolldx(128, 128);
m_tx_tilemap->set_scrolldy( 6, 6);
m_bg_tilemap8x4->set_scrolldx(128, 128);
m_bg_tilemap8x4->set_scrolldy( 6, 6);
m_bg_tilemap4x8->set_scrolldx(128, 128);
m_bg_tilemap4x8->set_scrolldy( 6, 6);
save_pointer(NAME(m_scroll_ram), BGRAM_BANK_SIZE * BGRAM_BANKS);
}
/***************************************************************************
Memory handlers
***************************************************************************/
void blktiger_state::blktiger_txvideoram_w(offs_t offset, uint8_t data)
{
m_txvideoram[offset] = data;
m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
}
uint8_t blktiger_state::blktiger_bgvideoram_r(offs_t offset)
{
return m_scroll_ram[offset + m_scroll_bank];
}
void blktiger_state::blktiger_bgvideoram_w(offs_t offset, uint8_t data)
{
offset += m_scroll_bank;
m_scroll_ram[offset] = data;
m_bg_tilemap8x4->mark_tile_dirty(offset / 2);
m_bg_tilemap4x8->mark_tile_dirty(offset / 2);
}
void blktiger_state::blktiger_bgvideoram_bank_w(uint8_t data)
{
m_scroll_bank = (data % BGRAM_BANKS) * BGRAM_BANK_SIZE;
}
void blktiger_state::blktiger_scrolly_w(offs_t offset, uint8_t data)
{
m_scroll_y[offset] = data;
int scrolly = m_scroll_y[0] | (m_scroll_y[1] << 8);
m_bg_tilemap8x4->set_scrolly(0, scrolly);
m_bg_tilemap4x8->set_scrolly(0, scrolly);
}
void blktiger_state::blktiger_scrollx_w(offs_t offset, uint8_t data)
{
m_scroll_x[offset] = data;
int scrollx = m_scroll_x[0] | (m_scroll_x[1] << 8);
m_bg_tilemap8x4->set_scrollx(0, scrollx);
m_bg_tilemap4x8->set_scrollx(0, scrollx);
}
void blktiger_state::blktiger_video_control_w(uint8_t data)
{
/* bits 0 and 1 are coin counters */
machine().bookkeeping().coin_counter_w(0,data & 1);
machine().bookkeeping().coin_counter_w(1,data & 2);
/* bit 5 resets the sound CPU */
m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
/* bit 6 flips screen */
flip_screen_set(data & 0x40);
/* bit 7 enables characters? Just a guess */
m_chon = ~data & 0x80;
}
void blktiger_state::blktiger_video_enable_w(uint8_t data)
{
/* not sure which is which, but I think that bit 1 and 2 enable background and sprites */
/* bit 1 enables bg ? */
m_bgon = ~data & 0x02;
/* bit 2 enables sprites ? */
m_objon = ~data & 0x04;
}
void blktiger_state::blktiger_screen_layout_w(uint8_t data)
{
m_screen_layout = data;
m_bg_tilemap8x4->enable(m_screen_layout);
m_bg_tilemap4x8->enable(!m_screen_layout);
}
/***************************************************************************
Display refresh
***************************************************************************/
void blktiger_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
{
uint8_t *buffered_spriteram = m_spriteram->buffer();
int offs;
/* Draw the sprites. */
for (offs = m_spriteram->bytes() - 4;offs >= 0;offs -= 4)
{
int attr = buffered_spriteram[offs+1];
int sx = buffered_spriteram[offs + 3] - ((attr & 0x10) << 4);
int sy = buffered_spriteram[offs + 2];
int code = buffered_spriteram[offs] | ((attr & 0xe0) << 3);
int color = attr & 0x07;
int flipx = attr & 0x08;
if (flip_screen())
{
sx = 240 - sx;
sy = 240 - sy;
flipx = !flipx;
}
m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
code,
color,
flipx,flip_screen(),
sx+128,sy+6,15);
}
}
uint32_t blktiger_state::screen_update_blktiger(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
bitmap.fill(1023, cliprect);
if (m_bgon)
(m_screen_layout ? m_bg_tilemap8x4 : m_bg_tilemap4x8)->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0);
if (m_objon)
draw_sprites(bitmap, cliprect);
if (m_bgon)
(m_screen_layout ? m_bg_tilemap8x4 : m_bg_tilemap4x8)->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0);
if (m_chon)
m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}