New systems marked not working

------------------------------
Xing Yun Pao Ma Di (V401CN) [dyq, little0, Guru]
Wang Pai Dou Dizhou [dyq, little0, Guru]
Wu Lin Zheng Ba [dyq, little0, Guru]

New clones marked not working
-----------------------------
Xing Yun Pao Ma Di (unknown ver) [dyq, little0, Guru]
This commit is contained in:
Ivan Vangelista 2025-03-05 18:32:07 +01:00
parent 48b7920613
commit 0d608ac822
8 changed files with 701 additions and 4 deletions

View File

@ -18,6 +18,7 @@ TODO:
dispensed" than the number of coins/tickets the games are supposed to
pay out.
* xyddzhh: Hook up mahjong-style inputs and improve DSW definitions
* xyddzhh: Add Oki banking
***************************************************************************/
@ -471,6 +472,7 @@ void bmcpokr_state::xyddzhh_map(address_map &map)
{
bmcpokr_mem(map);
map(0x00eec6, 0x00eec9).nopw(); // bug in the code?
map(0x330000, 0x330001).r(FUNC(bmcpokr_state::xyddzhh_prot_r));
map(0x340009, 0x340009).lr8(NAME([] () -> uint8_t { return 0xff; })); // andi.b #$7f, so returning 0x00 stops it from working
map(0x360000, 0x360001).r(FUNC(bmcpokr_state::xyddzhh_dsw_r));
@ -1633,4 +1635,4 @@ GAME( 1998, fengyunh, 0, fengyunh, fengyunh, bmcpokr_state, empty_init, R
GAME( 1998, shendeng, mjmaglmp, shendeng, shendeng, bmcpokr_state, empty_init, ROT0, "BMC", "Pili Shen Deng", MACHINE_SUPPORTS_SAVE )
GAME( 1999, bmcpokr, 0, bmcpokr, bmcpokr, bmcpokr_state, empty_init, ROT0, "BMC", "Dongfang Shenlong", MACHINE_SUPPORTS_SAVE )
GAME( 2000, mjmaglmp, 0, mjmaglmp, mjmaglmp, bmcpokr_state, empty_init, ROT0, "BMC", "Mahou no Lamp (v. JAA02)", MACHINE_SUPPORTS_SAVE )
GAME( 2006, xyddzhh, 0, xyddzhh, xyddzhh, bmcpokr_state, empty_init, ROT0, "Herb Home", "Xingyun Dou Dizhu", MACHINE_SUPPORTS_SAVE )
GAME( 2006, xyddzhh, 0, xyddzhh, xyddzhh, bmcpokr_state, empty_init, ROT0, "Herb Home", "Xingyun Dou Dizhu", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )

View File

@ -6,7 +6,7 @@ Bordun poker games on ATT / ATT III PCBs
TODO:
* this is basically misc/skylncr.cpp without reels and PPIs and with more advanced sound. Merge?
* this is basically bordun/skylncr.cpp without reels and PPIs and with more advanced sound. Merge?
* outputs
* lianhp3: title screen says 2003TM but PCB is from 2010? Was this really released in 2003?

View File

@ -12289,7 +12289,7 @@ RAMs
1x D4016C-1 u23
PLDs
1x unknowun Cl-001 (QFP144) CY144A read protected
1x unknown Cl-001 (QFP144) CY144A read protected
4x GAL20V8A-15LNC pl1, pl4, pl5, pl6 read protected
2x PALCE20V8H-25PC/4 u2,u? read protected
1x PALCE22V10H-25PC/4 u? read protected

View File

@ -0,0 +1,273 @@
// license:BSD-3-Clause
// copyright-holders:
/*
IGS games based on M68000 + IGS023 for video.
PGM-like but with different sound hardware.
TODO:
* currently stuck at ACK 2 error during boot (IGS025?)
* identify sound hardware
* identify where the M6502 core is contained
*/
#include "emu.h"
#include "igs023_video.h"
#include "cpu/m6502/m6502.h"
#include "cpu/m68000/m68000.h"
#include "machine/timer.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "tilemap.h"
namespace {
class igs_68k_023vid_state : public driver_device
{
public:
igs_68k_023vid_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_video(*this, "igs023"),
m_mainram(*this, "sram")
{ }
void xypmd(machine_config &config) ATTR_COLD;
private:
required_device<cpu_device> m_maincpu;
required_device<igs023_video_device> m_video;
required_shared_ptr<uint16_t> m_mainram;
void screen_vblank(int state);
TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
void main_program_map(address_map &map) ATTR_COLD;
void sub_program_map(address_map &map) ATTR_COLD;
};
TIMER_DEVICE_CALLBACK_MEMBER(igs_68k_023vid_state::interrupt)
{
int const scanline = param;
if (scanline == 0)
m_maincpu->set_input_line(4, HOLD_LINE);
}
void igs_68k_023vid_state::screen_vblank(int state)
{
// rising edge
if (state)
{
m_video->get_sprites();
// vblank start interrupt
m_maincpu->set_input_line(M68K_IRQ_6, HOLD_LINE);
}
}
void igs_68k_023vid_state::main_program_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x090000, 0x090001).portr("IN0");
//map(0x0c0000, 0x0c0001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // TODO: IGS025 here
//map(0x0c0002, 0x0c0003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
map(0x800000, 0x81ffff).ram().mirror(0x0e0000).share(m_mainram);
map(0x900000, 0x907fff).mirror(0x0f8000).rw(m_video, FUNC(igs023_video_device::videoram_r), FUNC(igs023_video_device::videoram_w));
map(0xa00000, 0xa011ff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0xb00000, 0xb0ffff).rw(m_video, FUNC(igs023_video_device::videoregs_r), FUNC(igs023_video_device::videoregs_w));
}
void igs_68k_023vid_state::sub_program_map(address_map &map)
{
map(0xe000, 0xffff).rom().region("subcpu", 0x0000);
}
static INPUT_PORTS_START( xypmd )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4")
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5")
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6")
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8")
PORT_START("DSW2")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4")
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5")
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6")
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8")
INPUT_PORTS_END
void igs_68k_023vid_state::xypmd(machine_config &config)
{
// basic machine hardware
M68000(config, m_maincpu, 20_MHz_XTAL / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &igs_68k_023vid_state::main_program_map);
TIMER(config, "scantimer").configure_scanline(FUNC(igs_68k_023vid_state::interrupt), "screen", 0, 1);
m6502_device &subcpu(M6502(config, "subcpu", 8_MHz_XTAL)); // TODO: something M6502 derived (data.u13 is M6502 derived code)
subcpu.set_addrmap(AS_PROGRAM, &igs_68k_023vid_state::sub_program_map);
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: verify everything once emulation works
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(1000));
screen.set_size(512, 256);
screen.set_visarea(0, 448-1, 0, 224-1);
screen.set_screen_update("igs023", FUNC(igs023_video_device::screen_update));
screen.screen_vblank().set(FUNC(igs_68k_023vid_state::screen_vblank));
screen.set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x1200 / 2);
IGS023_VIDEO(config, m_video, 0);
m_video->set_palette("palette");
m_video->read_spriteram_callback().set([this](offs_t offset) { return m_mainram[offset]; });
// sound hardware
SPEAKER(config, "mono").front_center();
// TODO: is sound provided by the two Novatek chips?
}
/*
Xing Yun Pao Ma Di, IGS, 2003
Hardware Info By Guru
---------------------
IGS PCB NO-0255-1
|----------------------------------------------|
| IDC34 SOCKET.U11 |------| TL082 VOL |
|-| |NOVATEK OM8383S|
|1 TLF521(x23) 8MHz |NT3570F TL082 |
|8 DATA.U13 |------| |
|W |
|A |------| 7805 |
|Y 24257 |NOVATEK |
|-| |NT3580F |
| 24257 24257 |------| T518B|
| TEXT.U5 |---------| |
|-| | IGS023 | PAL V-401CN.U26 |
|1 CG.U6 | | PAL 68000 24258 |
|0 | | PAL |
|W CG.U7 | | |-----| 24258 |
|A |---------| |IGS025 20MHz BATT|
|Y DSW1 50MHz| S8 | SW3 |
|-|ULN2004 DSW2 |-----| TLF521(x17) |
| TLF521(x6) |--| JAMMA |--| |
|-------------| |----------------------| |---|
Notes:
68000 - Clock 20MHz
24257 - 32kB x8-bit SRAM
24258 - 32kB x8-bit SRAM
IGS023 - Custom IGS023 Graphics Chip (also used on IGS PGM)
IGS025 - Custom IGS025 Chip with Sticker 'S8'
*/
ROM_START( xypmd )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "v-401cn.u26", 0x00000, 0x80000, CRC(84f4f46c) SHA1(c04d3aaf531caba6cdf8296570ce24964bd7a077) ) // version string at 0x360dc
ROM_REGION( 0x10000, "subcpu", 0 ) // TODO: sound related? almost empty
ROM_LOAD( "data.u13", 0x00000, 0x10000, CRC(7c0d8c8f) SHA1(d36ae4749fd248c399741f2024f2f44cf22536b8) ) // 111xxxxxxxxxxxxx = 0x00
ROM_REGION( 0x200000, "igs023", 0 )
ROM_LOAD( "text.u5", 0x000000, 0x200000, CRC(253b8517) SHA1(3f583410ab7083d5f45a5e23f73bddd18b000260) )
ROM_REGION16_LE( 0x200000, "igs023:sprcol", 0 )
ROM_LOAD( "cg.u6", 0x00000, 0x80000, CRC(20ff0cb3) SHA1(4562996675fe62563f393817f40395c8bce37c5f) )
ROM_REGION16_LE( 0x200000, "igs023:sprmask", 0 )
ROM_LOAD( "cg.u7", 0x000000, 0x200000, CRC(1c6764f2) SHA1(ed1efcab927bdc439247d422df5dedc72fce5682) ) // 1xxxxxxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x100000, "samples", 0 )
ROM_LOAD( "u11", 0x000000, 0x100000, NO_DUMP ) // probably removed from this PCB, possibly or even probably the same as xypmda
ROM_END
/*
Unknown IGS
Hardware Info By Guru
---------------------
IGS PCB NO-0198-2
Basically the same PCB as IGS PCB No-0255-1 with parts shuffled.
IGS did **MANY** board re-designs with no additional functionality.
Notes:
68000 - Clock 20MHz
2x 61256 - 32kB x8-bit SRAM (Main Work RAM)
3x 61256 - 32kB x8-bit SRAM (VRAM)
IGS023 - Custom IGS023 Graphics Chip (also used on IGS PGM)
IGS025 - Custom IGS025 Chip with Sticker 'T2'
CG/TEXT - vs 0255-1 PCB, this board has EPROMs replaced with SOP40 and SOP44 mask ROMs
*/
ROM_START( xypmda )
ROM_REGION( 0x80000, "maincpu", 0 )
ROM_LOAD16_WORD_SWAP( "prg.u36", 0x00000, 0x80000, CRC(99d6c58c) SHA1(c8db8689c18ef05ad52ef0476033b62f778e6abf) ) // no version string
ROM_REGION( 0x10000, "subcpu", 0 ) // TODO: sound related? almost empty
ROM_LOAD( "data.u33", 0x00000, 0x10000, CRC(5e3e3558) SHA1(ca9cdb4e8d124b4a7341ef6597c7ccdbbe124138) ) // 111xxxxxxxxxxxxx = 0x00
ROM_REGION( 0x200000, "igs023", 0 )
ROM_LOAD( "igs_t1801.u30", 0x000000, 0x200000, CRC(253b8517) SHA1(3f583410ab7083d5f45a5e23f73bddd18b000260) )
ROM_REGION16_LE( 0x200000, "igs023:sprcol", 0 )
ROM_LOAD( "igs_a1803.u39", 0x00000, 0x80000, CRC(20ff0cb3) SHA1(4562996675fe62563f393817f40395c8bce37c5f) )
ROM_REGION16_LE( 0x100000, "igs023:sprmask", 0 )
ROM_LOAD( "igs_a1802.u40", 0x000000, 0x100000, CRC(5bf791cc) SHA1(df23c8a25a26410ec4021948403bb4111810d7af) )
ROM_REGION( 0x100000, "samples", 0 )
ROM_LOAD( "igs_s1804_speech_v100.u32", 0x000000, 0x100000, CRC(d95220ee) SHA1(72259856bc2a12059ff481f7aab5ecc3118edd18) )
ROM_END
} // anonymous namespace
GAME( 2003, xypmd, 0, xypmd, xypmd, igs_68k_023vid_state, empty_init, ROT0, "IGS", "Xing Yun Pao Ma Di (V401CN)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
GAME( 2003, xypmda, xypmd, xypmd, xypmd, igs_68k_023vid_state, empty_init, ROT0, "IGS", "Xing Yun Pao Ma Di (unknown ver)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )

View File

@ -20514,6 +20514,10 @@ tarzanb
tarzanc
tjsb
@source:igs/igs_68k_023vid.cpp
xypmd
xypmda
@source:igs/igs_fear.cpp
fearless
icescape
@ -42760,6 +42764,9 @@ hprotr8a
@source:skeleton/ht68k.cpp
ht68k
@source:skeleton/huangyeh_m68k.cpp
wlzb
@source:skeleton/hudson_poems.cpp
marimba
poembase
@ -43072,6 +43079,9 @@ semcrossw
@source:skeleton/seoul88.cpp
seoul88
@source:skeleton/sgm.cpp
wpddz
@source:skeleton/sh4robot.cpp
sh4robot

View File

@ -2772,7 +2772,7 @@ Notes:
to be a microcontroller with internal ROM. When identically marked chips are swapped between
these two games the POST reports an error with this chip. When the chip is swapped back to
the correct board it works fine. The same chip was also swapped from San Se Caishen and also
shows this chip with a POST error.
shows this chip with a POST error. This has been verified not to be an 8x51 or MX10EXA.
*/
ROM_START( hgly )

View File

@ -0,0 +1,235 @@
// license:BSD-3-Clause
// copyright-holders:
/*
Wu Lin Zheng Ba, Huang Yeh, 1999?
Hardware Info by Guru
---------------------
HY-9802
|--------------------------------------------------------------|
| SW5 EPM7032 M5M482128 M5M482128 T518B|
| M5M482128 M5M482128 |
| |
|-| BATT |
| EPM7032 |
|-| |---------| |
| |HUANG YEH| |
| 22MHz | | PAL22V10 |
|J 68000 63484 | HY9920 | PAL16V8 |
|A | | |
|M |---------| |
|M 6116 |
|A Z80 U6612 |
| U34 |
| 6264 U9 U8 U41 U45 U42 U46 |
| 6264 M6295 U28 |
|-| 86171 |
| |
|-| 3.579545MHz U6614 |
| 8.448MHz |
| SW1 SW2 SW3* SW4* T518B LM324 TL084|
| ULN2003 1242H |
|----| 22WAY |-----------------| 10WAY |----|
|----------------------| |-----------|
Notes:
68000 - Motorola MC68000P8 CPU. Clock Input 8.448MHz
63484 - Hitachi HD63484P8 Advanced CRT Controller (ACRTC). Clock Input Pin 2CLK = 5.5MHz [22/4]
Z80 - Zilog Z84C0004 Z80 CPU. Clock Input 4.224MHz [8.448/2]
U6612 - Clone of YM3812 FM Operator Type-LII (OPLII) Sound Chip. Clock Input 3.579545MHz
U6614 - Clone of YM3014 Serial Input Floating D/A Converter
M6295 - OKI M6295 4-Channel ADPCM Voice Synthesis LSI. Clock Input 2.112MHz [8.448/4]. Pin 7 LOW
M5M482128 - Mitsubishi M5M482128AJ-8 1Mbit Dual Port RAM with 128kB x8-bit DRAM and 256 x8-bit Serial Port
6116 - 6116 2kB x8-bit SRAM
6264 - 6264 8kB x8-bit SRAM (both chips battery-backed)
HY9920 - Custom QFP160 Graphics Chip
86171 - HMC HM86171-80 Color Palette With Triple 6-Bit DAC
TL084 - Texas Instruments TL084 Quad JFET-Input Operational Amplifier
LM324 - Texas Instruments LM324 Quad Operational Amplifier
1242H - NEC uPC1242H Audio Power Amplifier
SW1-4 - 8-Position DIP Switch. * = SW3 and SW4 Not Populated.
SW5 - Reset Switch and Clear NVRAM
T518B - Mitsumi T518B Reset Chip (TO92)
BATT - 3.6V Ni-Cad Battery. Powers 2x 6264 SRAMs when power is off.
ULN2003 - ULN2003 7-Channel Darlington Transistor Array
EPM7032 - Altera EPM7032 CPLD
U8,U9 - 27C040 EPROM (68000 Program)
U4x - 27C040 EPROM (Graphics)
U34 - 27C256 EPROM (Z80 Program)
U28 - 27C040 EPROM (Oki Samples)
*/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "sound/okim6295.h"
#include "sound/ymopl.h"
#include "video/hd63484.h"
#include "video/ramdac.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "tilemap.h"
namespace {
class huangyeh_m68k_state : public driver_device
{
public:
huangyeh_m68k_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
{ }
void wlzb(machine_config &config) ATTR_COLD;
private:
required_device<cpu_device> m_maincpu;
void main_program_map(address_map &map) ATTR_COLD;
void audio_program_map(address_map &map) ATTR_COLD;
void ramdac_map(address_map &map) ATTR_COLD;
void hd63484_map(address_map &map) ATTR_COLD;
};
void huangyeh_m68k_state::main_program_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x0fffff).rom();
//map(0x1d0000, 0x1d0003).rw("acrtc", FUNC(hd63484_device::read16), FUNC(hd63484_device::write16));
//map(0x1d0009, 0x1d0009).w("ramdac", FUNC(ramdac_device::index_w));
//map(0x1d000b, 0x1d000b).w("ramdac", FUNC(ramdac_device::pal_w));
//map(0x1d000d, 0x1d000d).w("ramdac", FUNC(ramdac_device::mask_w));
map(0x1f0000, 0x1f3fff).ram();
}
void huangyeh_m68k_state::audio_program_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0xf000, 0xf7ff).ram();
map(0xf880, 0xf881).w("ymsnd", FUNC(ym3812_device::write));
}
void huangyeh_m68k_state::ramdac_map(address_map &map)
{
map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
}
void huangyeh_m68k_state::hd63484_map(address_map &map)
{
//map(0x00000, 0x7ffff).ram();
}
static INPUT_PORTS_START( wlzb )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4")
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5")
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6")
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8")
PORT_START("DSW2")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2")
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3")
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4")
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5")
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6")
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8")
INPUT_PORTS_END
// TODO
static GFXDECODE_START( gfx )
GFXDECODE_END
void huangyeh_m68k_state::wlzb(machine_config &config)
{
// basic machine hardware
M68000(config, m_maincpu, 8.448_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &huangyeh_m68k_state::main_program_map);
m_maincpu->set_vblank_int("screen", FUNC(huangyeh_m68k_state::irq0_line_hold));
z80_device &audiocpu(Z80(config, "audiocpu", 8.448_MHz_XTAL / 2));
audiocpu.set_addrmap(AS_PROGRAM, &huangyeh_m68k_state::audio_program_map);
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: verify everything once emulation works
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
screen.set_screen_update("acrtc", FUNC(hd63484_device::update_screen));
screen.set_palette("palette");
GFXDECODE(config, "gfxdecode", "palette", gfx);
PALETTE(config, "palette").set_entries(0x100); // TODO
RAMDAC(config, "ramdac", 0, "palette").set_addrmap(0, &huangyeh_m68k_state::ramdac_map);
HD63484(config, "acrtc", 22_MHz_XTAL / 4).set_addrmap(0, &huangyeh_m68k_state::hd63484_map);
// sound hardware
SPEAKER(config, "mono").front_center();
YM3812(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.0);
OKIM6295(config, "oki", 8.448_MHz_XTAL / 4, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( wlzb )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "w1-a.u9", 0x00000, 0x80000, CRC(2b6cd511) SHA1(0abfe24d83964eb45f348c5cbfd2ad50474db3c6) )
ROM_LOAD16_BYTE( "w2-a.u8", 0x00001, 0x80000, CRC(df068584) SHA1(de051d56b9d64027f1b6dee609272186c3575bef) )
ROM_REGION( 0x8000, "audiocpu", 0 )
ROM_LOAD( "w7.u34", 0x0000, 0x8000, CRC(c00786b3) SHA1(a8b3ddf3dd1b702d8719eace1b65f42c727b9473) )
ROM_REGION( 0x200000, "tiles", 0 )
ROM_LOAD( "w3.u41", 0x000000, 0x080000, CRC(58e57d87) SHA1(f870d0729528b2fda495da059f110e466ea58de5) )
ROM_LOAD( "w4.u45", 0x080000, 0x080000, CRC(5e993a35) SHA1(ed39dbc89cafebc8348f05a6327efa1ea26ff466) )
ROM_LOAD( "w5.u42", 0x100000, 0x080000, CRC(e728751d) SHA1(00bc65793a65ede318e5412d06eb85259015a5c1) )
ROM_LOAD( "w6.u46", 0x180000, 0x080000, CRC(a0ea7f31) SHA1(ef985de34485cb65ac59f7938583a0607213c81a) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "w8.u28", 0x00000, 0x80000, CRC(aad9367b) SHA1(e0b20087a8eab9d16e5cb1ed6415ca5373a43da7) )
ROM_END
} // anonymous namespace
GAME( 1999, wlzb, 0, wlzb, wlzb, huangyeh_m68k_state, empty_init, ROT0, "Huang Yeh", "Wu Lin Zheng Ba", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )

177
src/mame/skeleton/sgm.cpp Normal file
View File

@ -0,0 +1,177 @@
// license:BSD-3-Clause
// copyright-holders:
/*
Wang Pai Dou Dizhu, S.G.M., 2004?
Hardware Info by Guru
---------------------
SGM-0509L-1
|--------------------------------------|
| S2 JAMMA TA7252 |
| 6295 VOL |
|1 ULN2803 |
|8 |
|W |----| FLASH.U21 |
|A |CPU | 24MHz 6264 |
|Y FLASH.U15 | | |
| |----| 708SEN |
| FLASH.U16 |
| |
| BUTTON 22MHz |
| A3.3 |----------| |
|1 A1.8 | | |
|0 A5.0 | | 62LV12816 |
|W EPCS1N.U39 | ALTERA | |
|A | CYCLONE | |
|Y BATT | | 62LV12816 |
| JTAG |----------| |
|--------------------------------------|
Notes:
CPU - Unknown QFP144 CPU, looks like Hyperstone or ARM? Clock input 24.000MHz
ALTERA - Altera Cyclone (unknown model, surface scratched) QFP240 FPGA (Graphics Chip)
EPCS1N - Altera EPCS1N-9530B 128kB Serial Configuration Device for FPGA
JTAG - 10 pin JTAG Header
BATT - CR2032 Coin Battery
BUTTON - Push button, does nothing when pressed.
A3.3 - AMS1117-3.3 3.3V Linear Regulator
A1.8 - AMS1117-1.8 1.8V Linear Regulator
A5.0 - AMS1117-5.0 5.0V Linear Regulator
S2 - 8-Position DIP Switch
708SEN - Sipex 708SEN System Reset IC
ULN2803 - ULN2803 8-Channel Darlington Transistor Array
TA7252 - Toshiba TA7252 5.9W Audio Power Amplifier
6295 - Oki M6295 ADPCM Sample Player. Clock 1.100MHz [22/20]. Pin 7 HIGH.
Note title screen music is ripped off from cjddz!
FLASH.U21 - Macronix MX29F1615 1MB x16-bit DIP42 Flash ROM
FLASH.U15/U16 - Sharp LH28F320BJD-TTL80 2MB x16-bit DIP42 Flash ROM
6264 - 8kB x8-bit SRAM (battery-backed by CR2032 Coin Cell)
62LV12816 - ISSI IS62LV12816 128kB x16-bit SRAM
TODO:
- identify CPU arch. There is no obvious code in external ROMs. Encrypted or does it have
internal ROM? With either of the larger ROMs removed from PCB it doesn't boot.
*/
#include "emu.h"
#include "cpu/arm7/arm7.h"
#include "sound/okim6295.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "tilemap.h"
namespace {
class sgm_state : public driver_device
{
public:
sgm_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
{ }
void wpddz(machine_config &config) ATTR_COLD;
private:
required_device<cpu_device> m_maincpu;
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void program_map(address_map &map) ATTR_COLD;
};
uint32_t sgm_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
bitmap.fill(rgb_t::black(), cliprect);
return 0;
}
void sgm_state::program_map(address_map &map)
{
map(0x00000000, 0x0001ffff).rom();
}
static INPUT_PORTS_START( wpddz )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
// no DIP switches on PCB
INPUT_PORTS_END
// TODO
static GFXDECODE_START( gfx )
GFXDECODE_END
void sgm_state::wpddz(machine_config &config)
{
// basic machine hardware
ARM7(config, m_maincpu, 24_MHz_XTAL); // actual CPU arch unknown
m_maincpu->set_addrmap(AS_PROGRAM, &sgm_state::program_map);
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: verify everything once emulation works
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 64*8-1, 2*8, 30*8-1);
screen.set_screen_update(FUNC(sgm_state::screen_update));
GFXDECODE(config, "gfxdecode", "palette", gfx);
PALETTE(config, "palette").set_entries(0x100); // TODO
// sound hardware
SPEAKER(config, "mono").front_center();
OKIM6295(config, "oki", 22_MHz_XTAL / 20, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
}
ROM_START( wpddz )
ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "internal_rom", 0x00000, 0x20000, NO_DUMP ) // TODO: verify this theory
ROM_REGION( 0x20000, "cyclone_config", 0 )
ROM_LOAD( "epcs1n.u39", 0x000000, 0x20000, CRC(874f9122) SHA1(f9f5f721065cdb91416f611da987f2edece1237c) )
ROM_REGION( 0x800000, "gfx", 0 )
ROM_LOAD( "flash.u15", 0x000000, 0x400000, CRC(60a6bb59) SHA1(3f0e7e650643901ebbafd2ac195ad1a99cc645d9) )
ROM_LOAD( "flash.u16", 0x400000, 0x400000, CRC(429b4938) SHA1(4497ed85f6cbfb03b420ea68427f6a24d092f6b1) )
ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "flash.u21", 0x000000, 0x200000, CRC(e0813bdb) SHA1(41b487da6bfbfb231a0c7297d5a4955a5d4019ff) )
ROM_END
} // anonymous namespace
GAME( 2004?, wpddz, 0, wpddz, wpddz, sgm_state, empty_init, ROT0, "SGM", "Wang Pai Dou Dizhou", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )