mirror of
https://github.com/holub/mame
synced 2025-04-17 22:13:04 +03:00
New systems marked not working
------------------------------ Flower World 3 (V118CN) [little0, XingXing] New clones marked not working ----------------------------- Super Star 97 / Ming Xing 97 Jianan Ban [little0] Tumble Pop (Electronic Devices bootleg) [Hammy] - neogeo/neogeo.cpp: updated documentation [JacKc] - various drivers: identified manufacturers for some bootlegs [Hammy] - devices/cpu/alto2/a2disp.cpp: removed use of memset on non-trivial object
This commit is contained in:
parent
f1efcbd75f
commit
14d11c479e
@ -499,7 +499,7 @@ void alto2_cpu_device::f2_late_evenfield()
|
||||
*/
|
||||
void alto2_cpu_device::init_disp()
|
||||
{
|
||||
memset(&m_dsp, 0, sizeof(m_dsp));
|
||||
m_dsp.clear();
|
||||
save_item(NAME(m_dsp.state));
|
||||
save_item(NAME(m_dsp.hlc));
|
||||
save_item(NAME(m_dsp.setmode));
|
||||
|
@ -193,6 +193,17 @@
|
||||
#ifndef MAME_CPU_ALTO2_A2DISP_H
|
||||
#define MAME_CPU_ALTO2_A2DISP_H
|
||||
struct {
|
||||
|
||||
void clear()
|
||||
{
|
||||
state = hlc = setmode = inverse = scanline = 0;
|
||||
halfclock = vblank = false;
|
||||
std::fill(std::begin(fifo), std::end(fifo), 0);
|
||||
wa = ra = a63 = a66 = 0;
|
||||
dht_blocks = dwt_blocks = curt_blocks = curt_wakeup = false;
|
||||
xpreg = csr = 0;
|
||||
}
|
||||
|
||||
uint32_t state; //!< current state of the display_state_machine()
|
||||
uint32_t hlc; //!< horizontal line counter
|
||||
uint32_t setmode; //!< value written by last SETMODE<-
|
||||
|
@ -2137,6 +2137,19 @@ ROM_START( sstar97a )
|
||||
ROM_LOAD16_BYTE( "105.u22", 0x40001, 0x20000, CRC(ca17a632) SHA1(d491310ccdbe9b59a1e607f9254646f20700d79d) )
|
||||
ROM_END
|
||||
|
||||
|
||||
// PCB has a Z84C0008PEC, 2x 82C55AC-2, AT89C2051 MCU, ATF1508AS EEPLD, 24C04AN, JFC 95101 (AY-8910 clone), Altera EPM7032LC44-15
|
||||
ROM_START( sstar97jb )
|
||||
ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "star97jianan.u6", 0x00000, 0x20000, CRC(23904300) SHA1(8d4c9478250aaa1f7abdc2fd84a1e83be61723a0) ) // encrypted, address line based
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", 0 )
|
||||
ROM_LOAD( "star97jianan.u8", 0x00000, 0x80000, CRC(644f6ca8) SHA1(7d0b8c2c488f4169018e5bf861dc73eaeef9d9df) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx2", 0 )
|
||||
ROM_LOAD( "star97jianan.u9", 0x00000, 0x80000, CRC(31289532) SHA1(27243de8e79c552ba71aa8ea0ee7197228b55528) )
|
||||
ROM_END
|
||||
|
||||
/*
|
||||
蝴蝶梦 97 (Húdié Mèng 97)
|
||||
Game is encrypted and needs better decoded graphics.
|
||||
@ -2587,6 +2600,7 @@ GAME( 199?, miaction, 0, skylncr, skylncr, skylncr_state, init_miacti
|
||||
GAME( 199?, tigerslt, 0, skylncr, skylncr, skylncr_state, init_miaction, ROT0, "bootleg", "Tiger (slot)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 199?, sstar97, 0, sstar97, sstar97, skylncr_state, empty_init, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 (version V153B)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 199?, sstar97a, sstar97, sstar97, sstar97, skylncr_state, init_sstar97a, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 (version V168A)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 199?, sstar97jb, sstar97, sstar97, sstar97, skylncr_state, empty_init, ROT0, "Bordun International", "Super Star 97 / Ming Xing 97 Jianan Ban", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs decryption
|
||||
GAME( 1995, bdream97, 0, bdream97, skylncr, skylncr_state, empty_init, ROT0, "bootleg (KKK)", "Hudie Meng 97", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 2000?,olymp, 0, olymp, skylncr, skylncr_state, init_olymp, ROT0, "Z Games", "Olympus (Z Games, version 10)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // Still has Bordun International 1992 strings
|
||||
GAME( 2000, sonikfig, 0, skylncr, sonikfig, skylncr_state, init_sonikfig, ROT0, "Z Games", "Sonik Fighter (version 02, encrypted)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -15024,7 +15024,7 @@ GAME( 1991, 3wondersr1, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1,
|
||||
GAME( 1991, 3wondersu, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "Capcom", "Three Wonders (USA 910520)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, wonder3, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "Capcom", "Wonder 3 (Japan 910520)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "bootleg", "Three Wonders (bootleg)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
|
||||
GAME( 1991, 3wondersbi, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "bootleg (Impeuropex)", "Three Wonders (Italian bootleg)", MACHINE_NOT_WORKING |MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
|
||||
GAME( 1991, 3wondersbi, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "bootleg (Electronic Devices)", "Three Wonders (Italian bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
|
||||
GAME( 1991, 3wondersh, 3wonders, cps1_10MHz, 3wonders, cps_state, init_cps1, ROT0, "bootleg", "Three Wonders (hack)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
|
||||
GAME( 1991, kod, 0, cps1_10MHz, kod, cps_state, init_cps1, ROT0, "Capcom", "The King of Dragons (World 910805)", MACHINE_SUPPORTS_SAVE ) // "ETC"
|
||||
GAME( 1991, kodr1, kod, cps1_10MHz, kodr1, cps_state, init_cps1, ROT0, "Capcom", "The King of Dragons (World 910711)", MACHINE_SUPPORTS_SAVE ) // "ETC"
|
||||
|
@ -1,5 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:David Haywood
|
||||
// copyright-holders: David Haywood
|
||||
|
||||
/* Diver Boy
|
||||
(c)1992 Device Electronics
|
||||
|
||||
@ -46,13 +47,16 @@
|
||||
* 5th coin : adds 1 credit
|
||||
* 6th coin : adds 1 credit ...
|
||||
|
||||
TODO: tumblebed uses more GFX features, which need implementing
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
@ -71,68 +75,57 @@ public:
|
||||
m_oki(*this, "oki"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_soundlatch(*this, "soundlatch")
|
||||
m_palette(*this, "palette")
|
||||
{ }
|
||||
|
||||
void diverboy(machine_config &config);
|
||||
void diverboy(machine_config &config) ATTR_COLD;
|
||||
void tumblebed(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
/* memory pointers */
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<okim6295_device> m_oki;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
void soundcmd_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
|
||||
void okibank_w(uint8_t data);
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void video_start() override ATTR_COLD;
|
||||
uint32_t screen_update_diverboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void diverboy_map(address_map &map) ATTR_COLD;
|
||||
void tumblebed_map(address_map &map) ATTR_COLD;
|
||||
void snd_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
void diverboy_state::video_start()
|
||||
{
|
||||
}
|
||||
|
||||
void diverboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
|
||||
void diverboy_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
uint16_t *source = m_spriteram;
|
||||
uint16_t *finish = source + (m_spriteram.bytes() / 2);
|
||||
uint16_t const *finish = source + (m_spriteram.bytes() / 2);
|
||||
|
||||
while (source < finish)
|
||||
{
|
||||
int16_t xpos, ypos, number, colr, bank, flash;
|
||||
|
||||
ypos = source[4];
|
||||
xpos = source[0];
|
||||
colr = (source[1] & 0x00f0) >> 4;
|
||||
number = source[3];
|
||||
flash = source[1] & 0x1000;
|
||||
int16_t ypos = source[4];
|
||||
int16_t const xpos = source[0];
|
||||
int16_t colr = (source[1] & 0x00f0) >> 4;
|
||||
int16_t const number = source[3];
|
||||
int16_t const flash = source[1] & 0x1000;
|
||||
|
||||
colr |= ((source[1] & 0x000c) << 2);
|
||||
|
||||
ypos = 0x100 - ypos;
|
||||
|
||||
bank = (source[1] & 0x0002) >> 1;
|
||||
int16_t const bank = (source[1] & 0x0002) >> 1;
|
||||
|
||||
if (!flash || (m_screen->frame_number() & 1))
|
||||
{
|
||||
m_gfxdecode->gfx(bank)->transpen(bitmap,cliprect,
|
||||
m_gfxdecode->gfx(bank)->transpen(bitmap, cliprect,
|
||||
number,
|
||||
colr,
|
||||
0,0,
|
||||
xpos,ypos,
|
||||
0, 0,
|
||||
xpos, ypos,
|
||||
(source[1] & 0x0008) ? -1 : 0);
|
||||
}
|
||||
|
||||
@ -140,7 +133,7 @@ void diverboy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipr
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t diverboy_state::screen_update_diverboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
uint32_t diverboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
// bitmap.fill(m_palette->black_pen(), cliprect);
|
||||
draw_sprites(bitmap, cliprect);
|
||||
@ -148,19 +141,10 @@ uint32_t diverboy_state::screen_update_diverboy(screen_device &screen, bitmap_in
|
||||
}
|
||||
|
||||
|
||||
void diverboy_state::soundcmd_w(offs_t offset, uint16_t data, uint16_t mem_mask)
|
||||
{
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
m_soundlatch->write(data & 0xff);
|
||||
m_audiocpu->set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
void diverboy_state::okibank_w(uint8_t data)
|
||||
{
|
||||
/* bit 2 might be reset */
|
||||
// popmessage("%02x",data);
|
||||
// bit 2 might be reset
|
||||
// popmessage("%02x", data);
|
||||
m_oki->set_rom_bank(data & 3);
|
||||
}
|
||||
|
||||
@ -171,7 +155,7 @@ void diverboy_state::diverboy_map(address_map &map)
|
||||
map(0x000000, 0x03ffff).rom();
|
||||
map(0x040000, 0x04ffff).ram();
|
||||
map(0x080000, 0x083fff).ram().share("spriteram");
|
||||
map(0x100000, 0x100001).w(FUNC(diverboy_state::soundcmd_w));
|
||||
map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write));
|
||||
map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x180000, 0x180001).portr("P1_P2");
|
||||
map(0x180002, 0x180003).portr("DSW");
|
||||
@ -184,13 +168,32 @@ void diverboy_state::diverboy_map(address_map &map)
|
||||
// map(0x340002, 0x340003).nopw();
|
||||
}
|
||||
|
||||
void diverboy_state::tumblebed_map(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
map(0x080000, 0x083fff).ram().share("spriteram");
|
||||
map(0x100001, 0x100001).w("soundlatch", FUNC(generic_latch_8_device::write));
|
||||
map(0x120000, 0x123fff).ram();
|
||||
map(0x140000, 0x1407ff).w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x1a0000, 0x1a07ff).ram();
|
||||
map(0x180000, 0x180001).portr("P1_P2");
|
||||
map(0x180002, 0x180003).portr("DSW");
|
||||
map(0x180008, 0x180009).portr("COINS");
|
||||
// map(0x18000a, 0x18000b).nopr();
|
||||
// map(0x18000c, 0x18000d).nopw();
|
||||
map(0x320000, 0x3207ff).nopw(); /* ?? */
|
||||
map(0x322000, 0x3227ff).nopw(); /* ?? */
|
||||
// map(0x340000, 0x340001).nopw();
|
||||
// map(0x340002, 0x340003).nopw();
|
||||
}
|
||||
|
||||
void diverboy_state::snd_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom();
|
||||
map(0x8000, 0x87ff).ram();
|
||||
map(0x9000, 0x9000).w(FUNC(diverboy_state::okibank_w));
|
||||
map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
|
||||
map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
|
||||
}
|
||||
|
||||
|
||||
@ -258,13 +261,9 @@ static GFXDECODE_START( gfx_diverboy )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
void diverboy_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
void diverboy_state::diverboy(machine_config &config)
|
||||
{
|
||||
M68000(config, m_maincpu, 12000000); /* guess */
|
||||
M68000(config, m_maincpu, 12000000); // guess
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &diverboy_state::diverboy_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(diverboy_state::irq6_line_hold));
|
||||
|
||||
@ -279,7 +278,7 @@ void diverboy_state::diverboy(machine_config &config)
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
m_screen->set_size(64*8, 32*8);
|
||||
m_screen->set_visarea(0*8+4, 40*8+1, 2*8, 32*8-1);
|
||||
m_screen->set_screen_update(FUNC(diverboy_state::screen_update_diverboy));
|
||||
m_screen->set_screen_update(FUNC(diverboy_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
|
||||
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x400);
|
||||
@ -287,14 +286,21 @@ void diverboy_state::diverboy(machine_config &config)
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
GENERIC_LATCH_8(config, m_soundlatch);
|
||||
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0);
|
||||
|
||||
OKIM6295(config, m_oki, 1320000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); // clock frequency & pin 7 not verified
|
||||
}
|
||||
|
||||
void diverboy_state::tumblebed(machine_config &config)
|
||||
{
|
||||
diverboy(config);
|
||||
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &diverboy_state::tumblebed_map);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
both program roms contain the following string (at the same location)
|
||||
both program ROMs contain the following string (at the same location)
|
||||
|
||||
This Game is programmed by the freelance group GAMART.
|
||||
ADRESS: C\SAnt Ramon,11 08130-STA PERPETUA DE MOGODA - BARCELONA (SPAIN)
|
||||
@ -304,36 +310,69 @@ Fax (93) 574 18 34
|
||||
*/
|
||||
|
||||
ROM_START( diverboy )
|
||||
ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 Code */
|
||||
ROM_REGION( 0x40000, "maincpu", 0 ) // 68000 Code
|
||||
ROM_LOAD16_BYTE( "db_01.bin", 0x00000, 0x20000, CRC(6aa11366) SHA1(714c8a4a64c18632825a734a76a2d1b031106d76) )
|
||||
ROM_LOAD16_BYTE( "db_02.bin", 0x00001, 0x20000, CRC(45f8a673) SHA1(4eea1374cafacb4a2e0b623fcb802deb5fca1b3a) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* z80 */
|
||||
ROM_LOAD( "db_05.bin", 0x00000, 0x8000, CRC(ffeb49ec) SHA1(911b13897ff4ace3940bfff4ab88584a93796c24) ) /* this part is empty */
|
||||
ROM_CONTINUE( 0x0000, 0x8000 ) /* this part contains the code */
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) // z80
|
||||
ROM_LOAD( "db_05.bin", 0x00000, 0x8000, CRC(ffeb49ec) SHA1(911b13897ff4ace3940bfff4ab88584a93796c24) ) // this part is empty
|
||||
ROM_CONTINUE( 0x0000, 0x8000 ) // this part contains the code
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 ) /* GFX */
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "db_08.bin", 0x000000, 0x80000, CRC(7bb96220) SHA1(671b3f218106e594b13ae5f2e680cf2e2cfc5501) )
|
||||
ROM_LOAD16_BYTE( "db_09.bin", 0x000001, 0x80000, CRC(12b15476) SHA1(400a5b846f70567de137e0b95586dd9cfc27becb) )
|
||||
|
||||
ROM_REGION( 0x180000, "gfx2", 0 ) /* GFX */
|
||||
ROM_REGION( 0x180000, "gfx2", 0 )
|
||||
ROM_LOAD16_BYTE( "db_07.bin", 0x000000, 0x20000, CRC(18485741) SHA1(a8edceaf34a98f2aa2bfada9d6e06fb82639a4e0) )
|
||||
ROM_LOAD16_BYTE( "db_10.bin", 0x000001, 0x20000, CRC(c381d1cc) SHA1(88b97d8893c500951cfe8e7e7f0b547b36bbe2c0) )
|
||||
ROM_LOAD16_BYTE( "db_06.bin", 0x040000, 0x20000, CRC(21b4e352) SHA1(a553de67e5dc751ea81ec4739724e0e46e8c5fab) )
|
||||
ROM_LOAD16_BYTE( "db_11.bin", 0x040001, 0x20000, CRC(41d29c81) SHA1(448fd5c1b16159d03436b8bd71ffe871c8daf7fa) )
|
||||
|
||||
ROM_REGION( 0x100000, "oki", 0 ) /* Sound */
|
||||
ROM_REGION( 0x100000, "oki", 0 )
|
||||
ROM_LOAD( "db_03.bin", 0x00000, 0x20000, CRC(50457505) SHA1(faf1c055ec56d2ed7f5e6993cc04d3317bf1c3cc) )
|
||||
ROM_CONTINUE( 0x40000, 0x20000 )
|
||||
ROM_CONTINUE( 0x80000, 0x20000 )
|
||||
ROM_CONTINUE( 0xc0000, 0x20000 )
|
||||
ROM_LOAD( "db_04.bin", 0x20000, 0x20000, CRC(01b81da0) SHA1(914802f3206dc59a720af9d57eb2285bc8ba822b) ) /* same as tumble pop?, is this used? */
|
||||
ROM_LOAD( "db_04.bin", 0x20000, 0x20000, CRC(01b81da0) SHA1(914802f3206dc59a720af9d57eb2285bc8ba822b) ) // same as Tumble Pop?, is this used?
|
||||
ROM_RELOAD( 0x60000, 0x20000 )
|
||||
ROM_RELOAD( 0xa0000, 0x20000 )
|
||||
ROM_RELOAD( 0xe0000, 0x20000 )
|
||||
ROM_END
|
||||
|
||||
ROM_START( tumblebed )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE ("3.ep1", 0x00000, 0x20000, CRC(8b6950ec) SHA1(b55a84df208822084304109bf85a17ccee210e25) )
|
||||
ROM_LOAD16_BYTE( "4.ep0", 0x00001, 0x20000, CRC(8199c74d) SHA1(7436a4bebc85ff5e47eae93353ab8fcb98c2fd30) )
|
||||
ROM_LOAD16_BYTE ("2.ep3", 0x40000, 0x20000, CRC(cb27d9ca) SHA1(d105e6397efa4d5d31faad7d7e574f21d3bc14b5) )
|
||||
ROM_LOAD16_BYTE( "5.ep2", 0x40001, 0x20000, CRC(3a9ad326) SHA1(7d2078e8e98fa4ae6d251ff100792b36c0506e86) )
|
||||
|
||||
ROM_REGION( 0x8000, "audiocpu", 0 )
|
||||
ROM_LOAD( "1.u4", 0x0000, 0x8000, CRC(ffeb49ec) SHA1(911b13897ff4ace3940bfff4ab88584a93796c24) ) // 011xxxxxxxxxxxxx = 0xFF
|
||||
ROM_CONTINUE( 0x0000, 0x8000 )
|
||||
|
||||
ROM_REGION( 0x100000, "gfx1", 0 )
|
||||
ROM_LOAD16_BYTE( "10.u33", 0x00000, 0x80000, CRC(631b8d08) SHA1(4cb9b314209d863361d04683a881c92614640344) )
|
||||
ROM_LOAD16_BYTE( "11.u34", 0x00001, 0x80000, CRC(b686cf86) SHA1(9fe83abc5bd687056d814bce36d93564fb99256f) )
|
||||
|
||||
ROM_REGION( 0x180000, "gfx2", 0 )
|
||||
ROM_LOAD16_BYTE( "9.u35", 0x00000, 0x20000, CRC(d3227e05) SHA1(2d11b5feae84545c3d3e48c55f7d9f4feac7a481) )
|
||||
ROM_LOAD16_BYTE( "12.u36", 0x00001, 0x20000, CRC(0c468815) SHA1(9cc086e252851c6e461a85549019fb3113912ce0) )
|
||||
ROM_LOAD16_BYTE( "8.u37", 0x40000, 0x20000, CRC(9a7f7866) SHA1(0f275d6f5696b064fbee1ce93bf7623d9d3d3738) )
|
||||
ROM_LOAD16_BYTE( "13.u38", 0x40001, 0x20000, CRC(effa3b5d) SHA1(e33b221f77f05ac7808d4b056f7a46efa4957837) )
|
||||
|
||||
ROM_REGION( 0x100000, "oki", 0 )
|
||||
ROM_LOAD( "7.u11", 0x00000, 0x20000, CRC(50457505) SHA1(faf1c055ec56d2ed7f5e6993cc04d3317bf1c3cc) )
|
||||
ROM_CONTINUE( 0x40000, 0x20000 )
|
||||
ROM_CONTINUE( 0x80000, 0x20000 )
|
||||
ROM_CONTINUE( 0xc0000, 0x20000 )
|
||||
ROM_LOAD( "6.u22", 0x20000, 0x20000, CRC(01b81da0) SHA1(914802f3206dc59a720af9d57eb2285bc8ba822b) )
|
||||
ROM_RELOAD( 0x60000, 0x20000 )
|
||||
ROM_RELOAD( 0xa0000, 0x20000 )
|
||||
ROM_RELOAD( 0xe0000, 0x20000 )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
GAME( 1992, diverboy, 0, diverboy, diverboy, diverboy_state, empty_init, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, diverboy, 0, diverboy, diverboy, diverboy_state, empty_init, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, tumblebed, tumblep, tumblebed, diverboy, diverboy_state, empty_init, ORIENTATION_FLIP_X, "bootleg (Electronic Devices)", "Tumble Pop (Electronic Devices bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
256
src/mame/igs/igs_m027_033vid.cpp
Normal file
256
src/mame/igs/igs_m027_033vid.cpp
Normal file
@ -0,0 +1,256 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:
|
||||
|
||||
/*
|
||||
IGS ARM7 (IGS027A) based mahjong / gambling platform(s),
|
||||
with IGS 033 custom video chip.
|
||||
|
||||
Main components for the IGS PCB-0405-02-FZ are:
|
||||
- IGS 027A (ARM7-based MCU)
|
||||
- 24 MHz XTAL
|
||||
- IGS 033 graphics chip
|
||||
- 82C55 2K15 PPI
|
||||
- K668 ADPCM chip (M6295 clone)
|
||||
- 3 banks of 8 DIP switches
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "igs027a.h"
|
||||
#include "pgmcrypt.h"
|
||||
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "machine/ticket.h"
|
||||
#include "machine/timer.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
|
||||
#include "endianness.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class igs_m027_033vid_state : public driver_device
|
||||
{
|
||||
public:
|
||||
igs_m027_033vid_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_external_rom(*this, "user1"),
|
||||
m_nvram(*this, "nvram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette")
|
||||
//m_video(*this, "igs033")
|
||||
{ }
|
||||
|
||||
void m027_033vid(machine_config &config) ATTR_COLD;
|
||||
|
||||
void init_flowerw3() ATTR_COLD;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
virtual void video_start() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
required_region_ptr<u32> m_external_rom;
|
||||
required_shared_ptr<u32> m_nvram;
|
||||
|
||||
required_device<igs027a_cpu_device> m_maincpu;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
//required_device<igs033_video_device> m_video;
|
||||
|
||||
u32 m_xor_table[0x100];
|
||||
|
||||
u32 external_rom_r(offs_t offset);
|
||||
void xor_table_w(offs_t offset, u8 data);
|
||||
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void screen_vblank(int state);
|
||||
|
||||
void m027_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
void igs_m027_033vid_state::machine_start()
|
||||
{
|
||||
std::fill(std::begin(m_xor_table), std::end(m_xor_table), 0);
|
||||
|
||||
save_item(NAME(m_xor_table));
|
||||
}
|
||||
|
||||
void igs_m027_033vid_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
void igs_m027_033vid_state::video_start()
|
||||
{
|
||||
}
|
||||
|
||||
u32 igs_m027_033vid_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void igs_m027_033vid_state::screen_vblank(int state)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Memory Maps
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
void igs_m027_033vid_state::m027_map(address_map &map) // TODO: everything to be verified
|
||||
{
|
||||
map(0x0800'0000, 0x0807'ffff).r(FUNC(igs_m027_033vid_state::external_rom_r)); // Game ROM
|
||||
|
||||
map(0x1800'0000, 0x1800'7fff).ram().share(m_nvram);
|
||||
|
||||
map(0x2800'0000, 0x2800'0fff).ram();
|
||||
|
||||
map(0x3800'0000, 0x3800'7fff).noprw(); // TODO: IGS033
|
||||
map(0x38a0'0000, 0x38a0'11ff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
|
||||
|
||||
map(0x5000'0000, 0x5000'03ff).umask32(0x0000'00ff).w(FUNC(igs_m027_033vid_state::xor_table_w)); // uploads XOR table to external ROM here
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Input Ports
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
INPUT_PORTS_START( flowerw3 )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT(0xffff, 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")
|
||||
|
||||
PORT_START("DSW3")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW3:1")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW3:2")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW3:3")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW3:4")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW3:5")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW3:6")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW3:7")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW3:8")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Machine Drivers
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
u32 igs_m027_033vid_state::external_rom_r(offs_t offset)
|
||||
{
|
||||
return m_external_rom[offset] ^ m_xor_table[offset & 0x00ff];
|
||||
}
|
||||
|
||||
void igs_m027_033vid_state::xor_table_w(offs_t offset, u8 data)
|
||||
{
|
||||
m_xor_table[offset] = (u32(data) << 24) | (u32(data) << 8);
|
||||
}
|
||||
|
||||
|
||||
void igs_m027_033vid_state::m027_033vid(machine_config &config)
|
||||
{
|
||||
IGS027A(config, m_maincpu, 24_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &igs_m027_033vid_state::m027_map);
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1000));
|
||||
m_screen->set_size(512, 256);
|
||||
m_screen->set_visarea(0, 448-1, 0, 224-1);
|
||||
m_screen->set_screen_update(FUNC(igs_m027_033vid_state::screen_update));
|
||||
m_screen->set_palette(m_palette);
|
||||
m_screen->screen_vblank().set(FUNC(igs_m027_033vid_state::screen_vblank));
|
||||
|
||||
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x1200/2);
|
||||
|
||||
// IGS033_VIDEO(config, m_video, 0);
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
OKIM6295(config, "oki", 24_MHz_XTAL / 24, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.5); // divider and pin 7 not verified
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
ROMs Loading
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
// IGS PCB-0405-02-FZ
|
||||
// SP and IGS027A ROMs have original labels with '花花世界3'
|
||||
ROM_START( flowerw3 )
|
||||
ROM_REGION( 0x4000, "maincpu", 0 )
|
||||
// Internal rom of IGS027A ARM based MCU
|
||||
ROM_LOAD( "f8_027a.bin", 0x0000, 0x4000, CRC(4662f015) SHA1(c10889964b675f5c11ea1571332f3eec418c9a28) )
|
||||
|
||||
ROM_REGION32_LE( 0x80000, "user1", ROMREGION_ERASEFF ) // external ARM data / prg
|
||||
ROM_LOAD( "v118.u12", 0x00000, 0x80000, CRC(c2729fbe) SHA1(2153675a1161bd6aea6367c55fcf801c7fb0dd3a) )
|
||||
|
||||
ROM_REGION( 0x80000, "igs033", 0 )
|
||||
ROM_LOAD( "7e.u20", 0x000000, 0x080000, CRC(a7b65af6) SHA1(bef13d38eb793b2860c2922f0cfb4b011fd9991b) )
|
||||
|
||||
ROM_REGION( 0x80000, "oki", 0 )
|
||||
ROM_LOAD( "sp.3", 0x00000, 0x80000, CRC(06b70fe9) SHA1(5df34f870d32893b5c3095fb9653954209712cdb) )
|
||||
ROM_END
|
||||
|
||||
|
||||
void igs_m027_033vid_state::init_flowerw3()
|
||||
{
|
||||
flowerw3_decrypt(machine());
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game Drivers
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
GAME( 200?, flowerw3, 0, m027_033vid, flowerw3, igs_m027_033vid_state, init_flowerw3, ROT0, "IGS", "Flower World 3 (V118CN)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // title to be adjusted once it works
|
@ -1969,3 +1969,26 @@ void mxsqy_decrypt(running_machine &machine)
|
||||
src[i] ^= x;
|
||||
}
|
||||
}
|
||||
|
||||
void flowerw3_decrypt(running_machine &machine)
|
||||
{
|
||||
memory_region *const region = machine.root_device().memregion("user1");
|
||||
auto const src = util::little_endian_cast<u16>(reinterpret_cast<u32 *>(region->base()));
|
||||
auto const rom_size = region->bytes();
|
||||
|
||||
for (int i = 0; i < rom_size / 2; i++)
|
||||
{
|
||||
uint16_t x = 0;
|
||||
|
||||
IGS27_CRYPT1_ALT
|
||||
IGS27_CRYPT2_ALT
|
||||
IGS27_CRYPT3
|
||||
IGS27_CRYPT4
|
||||
IGS27_CRYPT5_ALT
|
||||
IGS27_CRYPT6
|
||||
IGS27_CRYPT7
|
||||
IGS27_CRYPT8
|
||||
|
||||
src[i] ^= x;
|
||||
}
|
||||
}
|
||||
|
@ -64,5 +64,6 @@ void extradrw_decrypt(running_machine &machine) ATTR_COLD;
|
||||
void cjddzlf_decrypt(running_machine &machine) ATTR_COLD;
|
||||
void cjtljp_decrypt(running_machine& machine) ATTR_COLD;
|
||||
void mxsqy_decrypt(running_machine& machine) ATTR_COLD;
|
||||
void flowerw3_decrypt(running_machine& machine) ATTR_COLD;
|
||||
|
||||
#endif // MAME_IGS_PGMCRYPT_H
|
||||
|
@ -15195,6 +15195,7 @@ speedway
|
||||
speedwaya
|
||||
sstar97
|
||||
sstar97a
|
||||
sstar97jb
|
||||
superb2k
|
||||
tigerslt
|
||||
|
||||
@ -17792,6 +17793,7 @@ cgenienz
|
||||
|
||||
@source:edevices/diverboy.cpp
|
||||
diverboy
|
||||
tumblebed
|
||||
|
||||
@source:edevices/fantland.cpp
|
||||
borntofi
|
||||
@ -20589,6 +20591,9 @@ zhongguo
|
||||
@source:igs/igs_m027_023vid.cpp
|
||||
mxsqy
|
||||
|
||||
@source:igs/igs_m027_033vid.cpp
|
||||
flowerw3
|
||||
|
||||
@source:igs/igs_m027_link.cpp
|
||||
cjslh
|
||||
cjsll
|
||||
|
@ -4728,6 +4728,7 @@ ROM_START( aof ) /* MVS AND AES VERSION */
|
||||
ROM_REGION( 0x400000, "cslot1:ymsnd:adpcma", 0 )
|
||||
ROM_LOAD( "044-v2.v2", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) ) /* TC5316200 */
|
||||
ROM_LOAD( "044-v4.v4", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) ) /* TC5316200 */
|
||||
/* Also found MVS set with different label: 044-v2.v1 and 044-v4.v2 */
|
||||
|
||||
ROM_REGION( 0x800000, "cslot1:sprites", 0 )
|
||||
ROM_LOAD16_BYTE( "044-c1.c1", 0x000000, 0x100000, CRC(ddab98a7) SHA1(f20eb81ec431268798c142c482146c1545af1c24) ) /* Plane 0,1 */ /* TC5316200 */
|
||||
@ -4858,6 +4859,7 @@ ROM_END
|
||||
ID-0047
|
||||
. NGM-047
|
||||
NEO-MVS PROG-G2 (SNK-9201) / NEO-MVS CHA42G-1
|
||||
NEO-MVS PROG-G2 (SNK-9201) / NEO-MVS CHA42G-2
|
||||
. NGH-047
|
||||
NEO-AEG PROG-G2 (PRO-CT0) / NEO-AEG CHA42G-2B
|
||||
NEO-AEG PROG-G2 (PRO-CT0) / NEO-AEG CHA42G-2
|
||||
@ -4866,7 +4868,7 @@ ROM_END
|
||||
ROM_START( fatfury2 ) /* MVS AND AES VERSION */
|
||||
ROM_REGION( 0x100000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
|
||||
ROM_LOAD16_WORD_SWAP( "047-p1.p1", 0x000000, 0x100000, CRC(ecfdbb69) SHA1(59e2f137c6eaf043df4ddae865a9159a10265c60) ) /* TC538200 */
|
||||
/* The original P1 is 8mbit; also found sets with P1 / P2 4mbit on eprom. */
|
||||
/* The original P1 is 8mbit; also found sets with EP1 / EP2 4mbit on eprom. */
|
||||
|
||||
NEO_SFIX_128K( "047-s1.s1", CRC(d7dbbf39) SHA1(29253e596f475ebd41a6e3bb53952e3a0ccd2eed) ) /* TC531000 */
|
||||
|
||||
@ -5286,6 +5288,7 @@ ROM_START( fatfursp ) /* MVS AND AES VERSION */
|
||||
ROM_REGION( 0x180000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
|
||||
ROM_LOAD16_WORD_SWAP( "058-p1.p1", 0x000000, 0x100000, CRC(2f585ba2) SHA1(429b4bf43fb9b1082c15d645ca328f9d175b976b) ) /* mask rom TC538200 */
|
||||
ROM_LOAD16_WORD_SWAP( "058-p2.sp2", 0x100000, 0x080000, CRC(d7c71a6b) SHA1(b3428063031a2e5857da40a5d2ffa87fb550c1bb) ) /* mask rom TC534200 */
|
||||
/* also found MVS set with EP1 / EP2 / SP2 on eprom; correct chip label unknown */
|
||||
|
||||
NEO_SFIX_128K( "058-s1.s1", CRC(2df03197) SHA1(24083cfc97e720ac9e131c9fe37df57e27c49294) ) /* mask rom TC531000 */
|
||||
|
||||
@ -5416,6 +5419,7 @@ ROM_END
|
||||
ID-0061
|
||||
. NGM-061
|
||||
NEO-MVS PROGGSC / NEO-MVS CHA256
|
||||
NEO-MVS PROGGSC / NEO-MVS CHA256B
|
||||
NEO-MVS PROGTOP / NEO-MVS CHA256
|
||||
NEO-MVS PROG 4096 B / NEO-MVS CHA256
|
||||
. NGH-061
|
||||
@ -6073,6 +6077,7 @@ ROM_END
|
||||
NEO-MVS PROGBK1 / NEO-MVS CHA256
|
||||
NEO-MVS PROGTOP / NEO-MVS CHA256B
|
||||
NEO-MVS PROG 4096 B / NEO-MVS CHA 42G-3
|
||||
NEO-MVS PROGGSC / NEO-MVS CHA 42G-3B
|
||||
. NGH-082
|
||||
NEO-AEG PROGTOP2 / NEO-AEG CHA256 B
|
||||
****************************************/
|
||||
@ -7851,6 +7856,7 @@ ROM_END
|
||||
ID-0233
|
||||
. NGM-2330
|
||||
NEO-MVS PROGBK1 / NEO-MVS CHA256
|
||||
NEO-MVS PROGBK1 / NEO-MVS CHA256B
|
||||
. NGH-2330
|
||||
NEO-AEG PROGBK1Y / NEO-AEG CHA256RY
|
||||
****************************************/
|
||||
|
@ -10604,7 +10604,7 @@ GAME( 1993, powerinspu, powerins, powerins, powerinj, nmk16_state,
|
||||
GAME( 1993, powerinspj, powerins, powerins, powerinj, nmk16_state, empty_init, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan, prototype)", MACHINE_SUPPORTS_SAVE ) // boots as 93.10.20 just like the other sets, but code is different
|
||||
GAME( 1993, powerinsa, powerins, powerinsa, powerins, nmk16_state, init_powerinsa, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, powerinsb, powerins, powerinsb, powerins, nmk16_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1993, powerinsc, powerins, powerinsc, powerins, nmk16_state, empty_init, ROT0, "bootleg", "Power Instinct (USA, bootleg set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different sprites' format not implemented
|
||||
GAME( 1993, powerinsc, powerins, powerinsc, powerins, nmk16_state, empty_init, ROT0, "bootleg (Electronic Devices)", "Power Instinct (USA, bootleg set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different sprites' format not implemented
|
||||
|
||||
// Non NMK boards
|
||||
|
||||
|
@ -620,4 +620,4 @@ ROM_END
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
GAME( 1992, goal92, cupsoc, goal92, goal92, goal92_state, empty_init, ROT0, "bootleg", "Goal! '92", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, goal92, cupsoc, goal92, goal92, goal92_state, empty_init, ROT0, "bootleg (Electronic Devices)", "Goal! '92", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -120,7 +120,7 @@ GFXDECODE_END
|
||||
|
||||
void vgame_state::vgame(machine_config &config)
|
||||
{
|
||||
ARM7(config, m_maincpu, 44_MHz_XTAL); // CPU core and divider unknown; ROMs seem to contain at least some ARM or Thumb code
|
||||
ARM7(config, m_maincpu, 44_MHz_XTAL); // CPU core unknown; ROMs seem to contain at least some ARM or Thumb code
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &vgame_state::program_map);
|
||||
// m_maincpu->set_vblank_int("screen", FUNC(vgame_state::irq0_line_hold));
|
||||
|
||||
@ -139,7 +139,7 @@ void vgame_state::vgame(machine_config &config)
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
OKIM6295(config, "oki", 44_MHz_XTAL / 44, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // pin 7 and clock not verified
|
||||
OKIM6295(config, "oki", 44_MHz_XTAL / 44, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);
|
||||
}
|
||||
|
||||
// VGAME-0030-02-AI PCB
|
||||
@ -181,7 +181,7 @@ same text font but with a simpler modern design using mostly surface-mounted par
|
||||
similar format to IGS PCBs. It is possible VGAME is an IGS company or it was run by ex-IGS employees who set
|
||||
up their own company doing the same thing using knowledge gained from working at IGS.
|
||||
|
||||
The CPU is a QFP128 which is an unusual footprint for a CPU and appears to be similar (bot not identical) to
|
||||
The CPU is a QFP128 which is an unusual footprint for a CPU and appears to be similar (but not identical) to
|
||||
the special IGS027A used by lhzb3sjb. The same pin that was found to be the serial port when trojaning
|
||||
lhzb3sjb goes to a connector on the edge of the board and appears to be the debug/programming port. When the
|
||||
program ROM is removed the message that shows on screen from the internal ROM is very similar to the messages
|
||||
@ -224,7 +224,7 @@ Notes:
|
||||
"VGAME-007" - Chao Ji Dou Niu
|
||||
007 also seen on Mahjong School 2 and Chaoji Laizi Dou Dizhu so these might use the same internal ROM.
|
||||
VGAME-003 - QFP240 Custom Graphics Chip. Possibly similar to IGS023 or IGS031. Chip has additional
|
||||
logic and other functions such providing the 1MHz clock for the M6295.
|
||||
logic and other functions such as providing the 1MHz clock for the M6295.
|
||||
The same type of chip exists on Mahjong School 2 and Chaoji Laizi Dou Dizhu marked "VGAME-008"
|
||||
6295 - OKI M6295 4-Channel ADPCM Voice Synthesis LSI. Clock Input 1.000MHz [44/44]. Pin 7 HIGH
|
||||
1MHz clock comes from VGAME-003.
|
||||
|
@ -5685,4 +5685,4 @@ GAME( 1993, qcrayon2, 0, qcrayon2, qcrayon2, taitof2_state, empty_i
|
||||
GAME( 1991, driftout, 0, driftout, driftout, dondokod_state, empty_init, ROT270, "Visco", "Drift Out (Europe)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, driftoutct, driftout, driftoutct,driftoutct, cameltry_state, empty_init, ROT270, "Visco", "Drift Out (Europe, Cameltry conversion)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, driftoutj, driftout, driftout, driftout, dondokod_state, empty_init, ROT270, "Visco", "Drift Out (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, driveout, driftout, driveout, driftout, driveout_state, empty_init, ROT270, "bootleg", "Drive Out (bootleg of Drift Out)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1991, driveout, driftout, driveout, driftout, driveout_state, empty_init, ROT270, "bootleg (Electronic Devices)", "Drive Out (bootleg of Drift Out)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -771,4 +771,4 @@ GAME( 1992, fixeightat, fixeight, fixeight, fixeight, fixeight_state, empty
|
||||
GAME( 1992, fixeightut, fixeight, fixeight, fixeight, fixeight_state, empty_init, ROT270, "Toaplan (Taito license)", "FixEight (USA, Taito license)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, fixeightjt, fixeight, fixeight, fixeight, fixeight_state, empty_init, ROT270, "Toaplan (Taito license)", "FixEight - Jigoku no Eiyuu Densetsu (Japan, Taito license)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1992, fixeightbl, fixeight, fixeightbl, fixeightbl, fixeight_bootleg_state, init_fixeightbl, ROT270, "bootleg", "FixEight (Korea, bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1992, fixeightbl, fixeight, fixeightbl, fixeightbl, fixeight_bootleg_state, init_fixeightbl, ROT270, "bootleg (Shine)", "FixEight (Korea, bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user