mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
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:
parent
48b7920613
commit
0d608ac822
@ -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 )
|
||||
|
@ -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?
|
||||
|
||||
|
@ -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
|
||||
|
273
src/mame/igs/igs_68k_023vid.cpp
Normal file
273
src/mame/igs/igs_68k_023vid.cpp
Normal 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 )
|
@ -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
|
||||
|
||||
|
@ -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 )
|
||||
|
235
src/mame/skeleton/huangyeh_m68k.cpp
Normal file
235
src/mame/skeleton/huangyeh_m68k.cpp
Normal 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
177
src/mame/skeleton/sgm.cpp
Normal 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 )
|
Loading…
Reference in New Issue
Block a user