summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tecmosys.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tecmosys.cpp')
-rw-r--r--src/mame/drivers/tecmosys.cpp705
1 files changed, 0 insertions, 705 deletions
diff --git a/src/mame/drivers/tecmosys.cpp b/src/mame/drivers/tecmosys.cpp
deleted file mode 100644
index 4f081da5348..00000000000
--- a/src/mame/drivers/tecmosys.cpp
+++ /dev/null
@@ -1,705 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Farfetch'd,David Haywood,Tomasz Slanina
-/* Tecmo System
- Driver by Farfetch'd, David Haywood & Tomasz Slanina
- Protection simulation by nuapete
-
- TODO:
- - Dump / Decap MCUs to allow for proper protection emulation.
- - tkdenshoa pcb shows some garbage sprites at the top during y-scroll
- - Flip screen is wrong
- - Line scroll is unimplemented(but it seems like unused)
- - Unknowns of sprite/tilemap registers
- - Verify priority/mixing from real PCB
-
-
-T.Slanina 20040530 :
- - preliminary gfx decode,
- - Angel Eyes - patched interrupt level1 vector
- - EEPROM r/w
- - txt layer
- - added hacks to see more gfx (press Z or X)
- - palette (press X in angel eyes to see 'color bar chack'(!))
- - watchdog (?) simulation
-
- 20080528
- - Removed ROM patches and debug keypresses
- - Added protection simulation in machine/tecmosys.cpp
- - Fixed inputs
- - Added watchdog
-
- To enter test mode, you have to press the test switch before you insert any coins.
-
-*/
-
-
-/*
-
-Deroon Dero Dero
-Tecmo, 1996
-
-This game is a Puyo Puyo rip-off.
-
-PCB Layout
-----------
-
-TECMO SYSTEM BOARD A
-|-------------------------------------------------------------------------|
-| LM324 UPC452C 16.9MHz |--------| |--------| 6264 |
-| TA8205 LM324 YAC513 YMF262 YMZ280B |TECMO | |TECMO | 6264 |
-| LM324 M6295 UPC452C |AA03-8431 |AA02-1927 |
-| YAC512 | | | | |
-| |--------| |--------| |
-| Z80 6264 28MHz 14.31818MHz |--------| |
-| 16MHz 62256 |TECMO | |
-| TA8030 62256 |AA02-1927 6264 |
-| | | 6264 |
-|J 93C46 |--------| |--------| |
-|A |TECMO | |--------| |
-|M |AA03-8431 |TECMO | |
-|M 68000 | | |AA02-1927 |
-|A |--------| | | 6264 |
-| PAL 6116 |--------| 6264 |
-| 6116 |--------| |
-| |--------| |TECMO | |
-| |TECMO | PAL |AA02-1927 |
-| |AA03-8431 62256 | | 6264 |
-| | | 62256 |--------| 6264 |
-| |--------| |---------| |
-| |TECMO | |
-| |AA03-8431| |
-| | | |
-| |---------| 424260|
-| 62256 62256 424260|
-|-------------------------------------------------------------------------|
-Notes:
-68000 @ 16MHz
-Z80 @ 8MHz [16/2]
-YMZ280B @ 16.9MHz
-YMF262 @ 14.31818MHz
-OKI M6295 @ 2MHz [16/8]. Pin 7 HIGH
-
-Game Board
-----------
-
-TECMO SYSTEM BOARD B2
-|-------------------------------------------------------------------------|
-| T201_DIP42_MASK.UBB1 |
-| |----| T202_DIP42_MASK.UBC1|
-| |* | |
-| |----| |
-| |
-| T003_2M_EPROM.UZ1 T101_SOP44.UAH1 |
-| |
-| T301_DIP42_MASK.UBD1 |
-| |
-| |
-| |
-| T401_DIP42_MASK.UYA1 T104_SOP44.UCL1 T001_4M_EPROM.UPAU1 |
-| T103_SOP44.UBL1 |
-| T501_DIP32_MASK.UAD1 T102_SOP44.UAL1 |
-| T002_4M_EPROM.UPAL1 |
-|-------------------------------------------------------------------------|
-Notes:
- * - QFP64 microcontroller marked 'TECMO SC432146FU E23D 185 SSAB9540B'
- this is a 68HC11A8 with 8k ROM, 512 bytes EEPROM and 256 bytes on-chip RAM.
- Clocks: pin 33 - 8MHz, pin 31: 8MHz, pin 29 - 2MHz
- GND on pins 49, 23, 24, 27
- Power on pins 55, 25
- Note - Pins 25 and 27 are tied to some jumpers, so these
- appear to be some kind of configuration setting.
-
-CPU : TMP68HC000P-16
-Sound: TMPZ84C00AP-8 YMF262 YMZ280B M6295
-OSC : 14.3181MHz (X1) 28.0000MHz (X2) 16.0000MHz (X3) 16.9MHz (X4)
-
-Custom chips:
-TECMO AA02-1927 (160pin PQFP) (x4)
-TECMO AA03-8431 (208pin PQFP) (x4)
-
-Others:
-93C46 EEPROM (settings are stored to this)
-
-ROMs:
-
-name type
-t001.upau1 27c040 dip32 eprom
-t002.upal1 27c040 dip32 eprom
-t003.uz1 27c2001 dip32 eprom
-
-t101.uah1 23c16000 sop44 maskrom
-t102.ual1 23c16000 sop44 maskrom
-t103.ubl1 23c32000 sop44 maskrom
-t104.ucl1 23c16000 sop44 maskrom
-t201.ubb1 23c8000 dip42 maskrom
-t202.ubc1 23c8000 dip42 maskrom
-t301.ubd1 23c8000 dip42 maskrom
-t401.uya1 23c16000 dip42 maskrom
-t501.uad1 23c4001 dip32 maskrom
-
-*/
-
-/*
-
-Toukidenshou -Angel Eyes-
-(c)1996 Tecmo
-Tecmo System Board
-
-CPU : TMP68HC000P-16
-Sound: TMPZ84C00AP-8 YMF262 YMZ280B M6295
-OSC : 14.3181MHz (X1) 28.0000MHz (X2) 16.0000MHz (X3) 16.9MHz (X4)
-
-Custom chips:
-TECMO AA02-1927 (160pin PQFP) (x4)
-TECMO AA03-8431 (208pin PQFP) (x4)
-
-Others:
-93C46 EEPROM (settings are stored to this)
-
-EPROMs:
-aeprge-2.pal - Main program (even) (27c4001)
-aeprgo-2.pau - Main program (odd) (27c4001)
-
-aesprg-2.z1 - Sound program (27c1001)
-
-Mask ROMs:
-ae100h.ah1 - Graphics (23c32000/16000 SOP)
-ae100.al1 |
-ae101h.bh1 |
-ae101.bl1 |
-ae102h.ch1 |
-ae102.cl1 |
-ae104.el1 |
-ae105.fl1 |
-ae106.gl1 /
-
-ae200w74.ba1 - Graphics (23c16000)
-ae201w75.bb1 |
-ae202w76.bc1 /
-
-ae300w36.bd1 - Graphics (23c4000)
-
-ae400t23.ya1 - YMZ280B Samples (23c16000)
-ae401t24.yb1 /
-
-ae500w07.ad1 - M6295 Samples (23c4001)
-
-*/
-
-#include "emu.h"
-#include "includes/tecmosys.h"
-
-#include "cpu/m68000/m68000.h"
-#include "cpu/z80/z80.h"
-#include "sound/262intf.h"
-#include "sound/okim6295.h"
-#include "sound/ymz280b.h"
-#include "speaker.h"
-
-
-READ8_MEMBER(tecmosys_state::sound_command_pending_r)
-{
- return m_soundlatch->pending_r();
-}
-
-WRITE8_MEMBER(tecmosys_state::sound_nmi_disable_w)
-{
- // 00 and FF are the only values written here; the latter value is set during initialization and NMI processing
- m_soundnmi->in_w<1>(data == 0);
-}
-
-/*
- 880000 and 880002 might be video related,
- see sub @ 68k:002e5e where they are written if the screen is set to inverted.
- Also, irq code at 22c4 :
- - 880000 & 00, execute irq code
- - 880000 & 01, scroll?
- - 880000 & 03, crash
-*/
-
-WRITE16_MEMBER(tecmosys_state::unk880000_w)
-{
- COMBINE_DATA(&m_880000regs[offset]);
-
- switch( offset )
- {
- case 0x00/2:
- break; // global x scroll for sprites?
-
- case 0x02/2:
- break; // global y scroll for sprites
-
- case 0x08/2:
- m_spritelist = data & 0x3; // which of the 4 spritelists to use (buffering)
- break;
-
- case 0x22/2:
- m_watchdog->watchdog_reset();
- //logerror( "watchdog_w( %06x, %04x ) @ %06x\n", (offset * 2)+0x880000, data, m_maincpu->_pc() );
- break;
-
- default:
- logerror( "unk880000_w( %06x, %04x ) @ %06x\n", (offset * 2)+0x880000, data, m_maincpu->pc() );
- break;
- }
-}
-
-READ16_MEMBER(tecmosys_state::unk880000_r)
-{
- //uint16_t ret = m_880000regs[offset];
-
- logerror( "unk880000_r( %06x ) @ %06x = %04x\n", (offset * 2 ) +0x880000, m_maincpu->pc(), m_880000regs[offset] );
-
- /* this code allows scroll regs to be updated, but tkdensho at least resets perodically */
-
- switch( offset )
- {
- case 0:
- return (m_screen->vpos() >= 240) ? 0 : 1;
-
- default:
- return 0;
- }
-}
-
-READ16_MEMBER(tecmosys_state::eeprom_r)
-{
- return ((m_eeprom->do_read() & 0x01) << 11);
-}
-
-WRITE16_MEMBER(tecmosys_state::eeprom_w)
-{
- if ( ACCESSING_BITS_8_15 )
- {
- m_eeprom->di_write((data & 0x0800) >> 11);
- m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE );
- m_eeprom->clk_write((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE );
- }
-}
-
-template<int Layer>
-WRITE16_MEMBER(tecmosys_state::vram_w)
-{
- COMBINE_DATA(&m_vram[Layer][offset]);
- m_tilemap[Layer]->mark_tile_dirty(offset/2);
-}
-
-template<int Layer>
-WRITE16_MEMBER(tecmosys_state::lineram_w)
-{
- COMBINE_DATA(&m_lineram[Layer][offset]);
- if (data!=0x0000) popmessage("non 0 write to bg%01x lineram %04x %04x",Layer,offset,data);
-}
-
-void tecmosys_state::main_map(address_map &map)
-{
- map(0x000000, 0x0fffff).rom();
- map(0x200000, 0x20ffff).ram(); // work ram
- map(0x210000, 0x210001).nopr(); // single byte overflow on stack defined as 0x210000
- map(0x300000, 0x300fff).ram().w(FUNC(tecmosys_state::vram_w<1>)).share("vram_1"); // bg0 ram
- map(0x301000, 0x3013ff).ram().w(FUNC(tecmosys_state::lineram_w<0>)).share("bg0_lineram");// bg0 linescroll? (guess)
-
- map(0x400000, 0x400fff).ram().w(FUNC(tecmosys_state::vram_w<2>)).share("vram_2"); // bg1 ram
- map(0x401000, 0x4013ff).ram().w(FUNC(tecmosys_state::lineram_w<1>)).share("bg1_lineram");// bg1 linescroll? (guess)
-
- map(0x500000, 0x500fff).ram().w(FUNC(tecmosys_state::vram_w<3>)).share("vram_3"); // bg2 ram
- map(0x501000, 0x5013ff).ram().w(FUNC(tecmosys_state::lineram_w<2>)).share("bg2_lineram"); // bg2 linescroll? (guess)
-
- map(0x700000, 0x703fff).ram().w(FUNC(tecmosys_state::vram_w<0>)).share("vram_0"); // fix ram
- map(0x800000, 0x80ffff).ram().share("spriteram"); // obj ram
- map(0x880000, 0x88000b).r(FUNC(tecmosys_state::unk880000_r));
- map(0x880000, 0x88002f).w(FUNC(tecmosys_state::unk880000_w)).share("880000regs"); // 10 byte dta@88000c, 880022=watchdog?
- map(0x900000, 0x907fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // .writeonly(); // obj pal
-
- //map(0x980000, 0x9807ff).writeonly(); // bg pal
- //map(0x980800, 0x980fff).w(FUNC(tecmosys_state::paletteram_xGGGGGRRRRRBBBBB_word_w)).share("paletteram"); // fix pal
- // the two above are as tested by the game code, I've only rolled them into one below to get colours to show right.
- map(0x980000, 0x980fff).ram().w(FUNC(tecmosys_state::tilemap_paletteram16_xGGGGGRRRRRBBBBB_word_w)).share("tmap_palette");
-
- map(0xa00000, 0xa00001).w(FUNC(tecmosys_state::eeprom_w));
- map(0xa80000, 0xa80005).writeonly().share("scroll_2"); // a80000-3 scroll? a80004 inverted ? 3 : 0
- map(0xb00000, 0xb00005).writeonly().share("scroll_3"); // b00000-3 scrool?, b00004 inverted ? 3 : 0
- map(0xb80000, 0xb80001).rw(FUNC(tecmosys_state::prot_status_r), FUNC(tecmosys_state::prot_status_w));
- map(0xc00000, 0xc00005).writeonly().share("scroll_0"); // c00000-3 scroll? c00004 inverted ? 13 : 10
- map(0xc80000, 0xc80005).writeonly().share("scroll_1"); // c80000-3 scrool? c80004 inverted ? 3 : 0
- map(0xd00000, 0xd00001).portr("P1");
- map(0xd00002, 0xd00003).portr("P2");
- map(0xd80000, 0xd80001).r(FUNC(tecmosys_state::eeprom_r));
- map(0xe00001, 0xe00001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- map(0xe80000, 0xe80001).w(FUNC(tecmosys_state::prot_data_w));
- map(0xf00001, 0xf00001).r(FUNC(tecmosys_state::sound_command_pending_r));
- map(0xf80000, 0xf80001).r(FUNC(tecmosys_state::prot_data_r));
-}
-
-
-WRITE8_MEMBER(tecmosys_state::z80_bank_w)
-{
- m_audiobank->set_entry(data);
-}
-
-WRITE8_MEMBER(tecmosys_state::oki_bank_w)
-{
- m_okibank[0]->set_entry((data & 0x03) >> 0);
- m_okibank[1]->set_entry((data & 0x30) >> 4);
-}
-
-
-void tecmosys_state::sound_map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("audiobank");
- map(0xe000, 0xf7ff).ram();
-}
-
-void tecmosys_state::oki_map(address_map &map)
-{
- map(0x00000, 0x1ffff).bankr("okibank1");
- map(0x20000, 0x3ffff).bankr("okibank2");
-}
-
-void tecmosys_state::io_map(address_map &map)
-{
- map.global_mask(0xff);
- map(0x00, 0x03).rw("ymf", FUNC(ymf262_device::read), FUNC(ymf262_device::write));
- map(0x10, 0x10).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x20, 0x20).w(FUNC(tecmosys_state::oki_bank_w));
- map(0x30, 0x30).w(FUNC(tecmosys_state::z80_bank_w));
- map(0x40, 0x40).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- map(0x50, 0x50).w(FUNC(tecmosys_state::sound_nmi_disable_w));
- map(0x60, 0x61).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
-}
-
-
-static INPUT_PORTS_START( tecmosys )
- PORT_START("P1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
-
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("P2")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
-
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-static GFXDECODE_START( gfx_tecmosys )
- GFXDECODE_ENTRY( "layer0", 0, gfx_8x8x4_packed_msb, 0x4400, 0x40 )
- GFXDECODE_ENTRY( "layer1", 0, gfx_8x8x4_row_2x2_group_packed_msb, 0x4000, 0x40 )
- GFXDECODE_ENTRY( "layer2", 0, gfx_8x8x4_row_2x2_group_packed_msb, 0x4000, 0x40 )
- GFXDECODE_ENTRY( "layer3", 0, gfx_8x8x4_row_2x2_group_packed_msb, 0x4000, 0x40 )
-GFXDECODE_END
-
-
-void tecmosys_state::machine_start()
-{
- m_audiobank->configure_entries(0, 16, memregion("audiocpu")->base(), 0x4000);
- for (int bank = 0; bank < 2; bank++)
- m_okibank[bank]->configure_entries(0, 4, memregion("oki")->base(), 0x20000);
-
- save_item(NAME(m_device_read_ptr));
- save_item(NAME(m_device_status));
- save_item(NAME(m_device_value));
-}
-
-void tecmosys_state::tecmosys(machine_config &config)
-{
- M68000(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &tecmosys_state::main_map);
- m_maincpu->set_vblank_int("screen", FUNC(tecmosys_state::irq1_line_hold));
-
- WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 400); // guess
-
- Z80(config, m_audiocpu, XTAL(16'000'000)/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &tecmosys_state::sound_map);
- m_audiocpu->set_addrmap(AS_IO, &tecmosys_state::io_map);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_tecmosys);
-
- EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK);
- m_screen->set_refresh_hz(57.4458);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(3000));
- m_screen->set_size(64*8, 64*8);
- m_screen->set_visarea(0*8, 40*8-1, 0*8, 30*8-1);
- m_screen->set_screen_update(FUNC(tecmosys_state::screen_update));
-
- PALETTE(config, m_palette).set_format(palette_device::xGRB_555, 0x4000+0x800);
-
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- GENERIC_LATCH_8(config, m_soundlatch);
- m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
-
- INPUT_MERGER_ALL_HIGH(config, m_soundnmi);
- m_soundnmi->output_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
-
- ymf262_device &ymf(YMF262(config, "ymf", XTAL(14'318'181)));
- ymf.irq_handler().set_inputline("audiocpu", 0);
- ymf.add_route(0, "lspeaker", 1.00);
- ymf.add_route(1, "rspeaker", 1.00);
- ymf.add_route(2, "lspeaker", 1.00);
- ymf.add_route(3, "rspeaker", 1.00);
-
- okim6295_device &oki(OKIM6295(config, "oki", XTAL(16'000'000)/8, okim6295_device::PIN7_HIGH));
- oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50);
- oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50);
- oki.set_addrmap(0, &tecmosys_state::oki_map);
-
- ymz280b_device &ymz(YMZ280B(config, "ymz", XTAL(16'934'400)));
- ymz.add_route(0, "lspeaker", 0.30);
- ymz.add_route(1, "rspeaker", 0.30);
-}
-
-ROM_START( deroon )
- ROM_REGION( 0x100000, "maincpu", 0 ) // Main Program
- ROM_LOAD16_BYTE( "t001.upau1", 0x00000, 0x80000, CRC(14b92c18) SHA1(b47b8c828222a3f7c0fe9271899bd38171d972fb) )
- ROM_LOAD16_BYTE( "t002.upal1", 0x00001, 0x80000, CRC(0fb05c68) SHA1(5140592e15414770fb46d5ac9ba8f76e3d4ab323) )
-
- ROM_REGION( 0x040000, "audiocpu", 0 ) // Sound Program
- ROM_LOAD( "t003.uz1", 0x000000, 0x040000, CRC(8bdfafa0) SHA1(c0cf3eb7a65d967958fe2aace171859b0faf7753) )
-
- ROM_REGION( 0x2200, "cpu2", 0 ) // MCU is a 68HC11A8 with 8k ROM, 512 bytes EEPROM
- ROM_LOAD( "deroon_68hc11a8.rom", 0x0000, 0x2000, NO_DUMP )
- ROM_LOAD( "deroon_68hc11a8.eeprom", 0x2000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00 ) // Sprites (non-tile based)
- /* all these roms need verifying, they could be half size */
-
- ROM_LOAD16_BYTE( "t101.uah1", 0x0000000, 0x200000, CRC(74baf845) SHA1(935d2954ba227a894542be492654a2750198e1bc) )
- ROM_LOAD16_BYTE( "t102.ual1", 0x0000001, 0x200000, CRC(1a02c4a3) SHA1(5155eeaef009fc9a9f258e3e54ca2a7f78242df5) )
- /* 0x8000000, 0x400000 - no rom loaded here, these gfx are 4bpp */
- ROM_LOAD16_BYTE( "t103.ubl1", 0x0800001, 0x400000, CRC(84e7da88) SHA1(b5c3234f33bb945cc9762b91db087153a0589cfb) )
- /* 0x1000000, 0x400000 - no rom loaded here, these gfx are 4bpp */
- ROM_LOAD16_BYTE( "t104.ucl1", 0x1000001, 0x200000, CRC(66eb611a) SHA1(64435d35677fea3c06fdb03c670f3f63ee481c02) )
-
- ROM_REGION( 0x100000, "layer0", 0 ) // 8x8 4bpp tiles
- ROM_LOAD( "t301.ubd1", 0x000000, 0x100000, CRC(8b026177) SHA1(3887856bdaec4d9d3669fe3bc958ef186fbe9adb) )
-
- ROM_REGION( 0x100000, "layer1", ROMREGION_ERASE00) // 16x16 4bpp tiles
- /* not used? */
-
- ROM_REGION( 0x100000, "layer2", ROMREGION_ERASE00 ) // 16x16 4bpp tiles
- ROM_LOAD( "t201.ubb1", 0x000000, 0x100000, CRC(d5a087ac) SHA1(5098160ce7719d93e3edae05f6edd317d4c61f0d) )
-
- ROM_REGION( 0x100000, "layer3", ROMREGION_ERASE00 ) // 16x16 4bpp tiles
- ROM_LOAD( "t202.ubc1", 0x000000, 0x100000, CRC(f051dae1) SHA1(f5677c07fe644b3838657370f0309fb09244c619) )
-
- ROM_REGION( 0x200000, "ymz", 0 ) // YMZ280B Samples
- ROM_LOAD( "t401.uya1", 0x000000, 0x200000, CRC(92111992) SHA1(ae27e11ae76dec0b9892ad32e1a8bf6ab11f2e6c) )
-
- ROM_REGION( 0x80000, "oki", 0 ) // M6295 Samples
- ROM_LOAD( "t501.uad1", 0x000000, 0x080000, CRC(2fbcfe27) SHA1(f25c830322423f0959a36955edb563a6150f2142) )
-ROM_END
-
-/*
-About the Deroon DeroDero listed below:
-
- This set contains less Japanese text and English translations for some game aspects such as game menus.
- Coining up displays "TECMO STACKERS" but this set doesn't seem to include a "How to Play" demo like the parent set
-
- PCB contained genuine Tecmo dvelopment labels, it's unknown which specific region this set was intended for.
- Still missing the full English version titled Temco Stackers if it exists.
-
-*/
-ROM_START( deroon2 )
- ROM_REGION( 0x100000, "maincpu", 0 ) // Main Program
- ROM_LOAD16_BYTE( "stk_t01.upau1", 0x00000, 0x80000, CRC(90c794df) SHA1(b6edd62bedf609551f4e1c19ada20bd1373deca2) )
- ROM_LOAD16_BYTE( "stk_t02.upal1", 0x00001, 0x80000, CRC(cca9f87c) SHA1(0637b0b979f4c6c6b16cf2a21dd193b7d7ec311f) )
-
- ROM_REGION( 0x040000, "audiocpu", 0 ) // Sound Program
- ROM_LOAD( "t003.uz1", 0x000000, 0x040000, CRC(8bdfafa0) SHA1(c0cf3eb7a65d967958fe2aace171859b0faf7753) )
-
- ROM_REGION( 0x2200, "cpu2", 0 ) // MCU is a 68HC11A8 with 8k ROM, 512 bytes EEPROM
- ROM_LOAD( "deroon_68hc11a8.rom", 0x0000, 0x2000, NO_DUMP )
- ROM_LOAD( "deroon_68hc11a8.eeprom", 0x2000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00 ) // Sprites (non-tile based)
- ROM_LOAD16_BYTE( "t101.uah1", 0x0000000, 0x200000, CRC(74baf845) SHA1(935d2954ba227a894542be492654a2750198e1bc) )
- ROM_LOAD16_BYTE( "t102.ual1", 0x0000001, 0x200000, CRC(1a02c4a3) SHA1(5155eeaef009fc9a9f258e3e54ca2a7f78242df5) )
- /* 0x8000000, 0x400000 - no rom loaded here, these gfx are 4bpp */
- ROM_LOAD16_BYTE( "t103.ubl1", 0x0800001, 0x400000, CRC(84e7da88) SHA1(b5c3234f33bb945cc9762b91db087153a0589cfb) )
- /* 0x1000000, 0x400000 - no rom loaded here, these gfx are 4bpp */
- ROM_LOAD16_BYTE( "t104.ucl1", 0x1000001, 0x200000, CRC(66eb611a) SHA1(64435d35677fea3c06fdb03c670f3f63ee481c02) )
-
- ROM_REGION( 0x100000, "layer0", 0 ) // 8x8 4bpp tiles
- ROM_LOAD( "t301.ubd1", 0x000000, 0x100000, CRC(8b026177) SHA1(3887856bdaec4d9d3669fe3bc958ef186fbe9adb) )
-
- ROM_REGION( 0x100000, "layer1", ROMREGION_ERASE00) // 16x16 4bpp tiles
- /* not used? */
-
- ROM_REGION( 0x100000, "layer2", ROMREGION_ERASE00 ) // 16x16 4bpp tiles
- ROM_LOAD( "t201.ubb1", 0x000000, 0x100000, CRC(d5a087ac) SHA1(5098160ce7719d93e3edae05f6edd317d4c61f0d) )
-
- ROM_REGION( 0x100000, "layer3", ROMREGION_ERASE00 ) // 16x16 4bpp tiles
- ROM_LOAD( "t202.ubc1", 0x000000, 0x100000, CRC(f051dae1) SHA1(f5677c07fe644b3838657370f0309fb09244c619) )
-
- ROM_REGION( 0x200000, "ymz", 0 ) // YMZ280B Samples
- ROM_LOAD( "t401.uya1", 0x000000, 0x200000, CRC(92111992) SHA1(ae27e11ae76dec0b9892ad32e1a8bf6ab11f2e6c) )
-
- ROM_REGION( 0x80000, "oki", 0 ) // M6295 Samples
- ROM_LOAD( "t501.uad1", 0x000000, 0x080000, CRC(2fbcfe27) SHA1(f25c830322423f0959a36955edb563a6150f2142) )
-ROM_END
-
-ROM_START( tkdensho )
- ROM_REGION( 0x600000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "aeprge-2.pal", 0x00000, 0x80000, CRC(25e453d6) SHA1(9c84e2af42eff5cc9b14c1759d5bab42fa7bb663) )
- ROM_LOAD16_BYTE( "aeprgo-2.pau", 0x00001, 0x80000, CRC(22d59510) SHA1(5ade482d6ab9a22df2ee8337458c22cfa9045c73) )
-
- ROM_REGION( 0x040000, "audiocpu", 0 ) // Sound Program
- ROM_LOAD( "aesprg-2.z1", 0x000000, 0x020000, CRC(43550ab6) SHA1(2580129ef8ebd9295249175de4ba985c752e06fe) )
- ROM_RELOAD( 0x020000, 0x020000) // for banks
-
- ROM_REGION( 0x2200, "cpu2", 0 ) // MCU is a 68HC11A8 with 8k ROM, 512 bytes EEPROM
- ROM_LOAD( "tkdensho_68hc11a8.rom", 0x0000, 0x2000, NO_DUMP )
- ROM_LOAD( "tkdensho_68hc11a8.eeprom", 0x2000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x4000000, "sprites", ROMREGION_ERASE00 ) // Graphics - mostly (maybe all?) not tile based
- ROM_LOAD16_BYTE( "ae100h.ah1", 0x0000000, 0x0400000, CRC(06be252b) SHA1(08d1bb569fd2e66e2c2f47da7780b31945232e62) )
- ROM_LOAD16_BYTE( "ae100.al1", 0x0000001, 0x0400000, CRC(009cdff4) SHA1(fd88f07313d14fd4429b09a1e8d6b595df3b98e5) )
- ROM_LOAD16_BYTE( "ae101h.bh1", 0x0800000, 0x0400000, CRC(f2469eff) SHA1(ba49d15cc7949437ba9f56d9b425a5f0e62137df) )
- ROM_LOAD16_BYTE( "ae101.bl1", 0x0800001, 0x0400000, CRC(db7791bb) SHA1(1fe40b747b7cee7a9200683192b1d60a735a0446) )
- ROM_LOAD16_BYTE( "ae102h.ch1", 0x1000000, 0x0200000, CRC(f9d2a343) SHA1(d141ac0b20be587e77a576ef78f15d269d9c84e5) )
- ROM_LOAD16_BYTE( "ae102.cl1", 0x1000001, 0x0200000, CRC(681be889) SHA1(8044ca7cbb325e6dcadb409f91e0c01b88a1bca7) )
- ROM_LOAD16_BYTE( "ae104.el1", 0x2000001, 0x0400000, CRC(e431b798) SHA1(c2c24d4f395bba8c78a45ecf44009a830551e856) )
- ROM_LOAD16_BYTE( "ae105.fl1", 0x2800001, 0x0400000, CRC(b7f9ebc1) SHA1(987f664072b43a578b39fa6132aaaccc5fe5bfc2) )
- ROM_LOAD16_BYTE( "ae106.gl1", 0x3000001, 0x0200000, CRC(7c50374b) SHA1(40865913125230122072bb13f46fb5fb60c088ea) )
-
- ROM_REGION( 0x080000, "layer0", 0 ) // 8x8 4bpp tiles
- ROM_LOAD( "ae300w36.bd1", 0x000000, 0x0080000, CRC(e829f29e) SHA1(e56bfe2669ed1d1ae394c644def426db129d97e3) )
-
- ROM_REGION( 0x100000, "layer1", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae200w74.ba1", 0x000000, 0x0100000, CRC(c1645041) SHA1(323670a6aa2a4524eb968cc0b4d688098ffeeb12) )
-
- ROM_REGION( 0x100000, "layer2", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae201w75.bb1", 0x000000, 0x0100000, CRC(3f63bdff) SHA1(0d3d57fdc0ec4bceef27c11403b3631d23abadbf) )
-
- ROM_REGION( 0x100000, "layer3", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae202w76.bc1", 0x000000, 0x0100000, CRC(5cc857ca) SHA1(2553fb5220433acc15dfb726dc064fe333e51d88) )
-
- ROM_REGION( 0x400000, "ymz", 0 ) // YMZ280B Samples
- ROM_LOAD( "ae400t23.ya1", 0x000000, 0x200000, CRC(c6ffb043) SHA1(e0c6c5f6b840f63c9a685a2c3be66efa4935cbeb) )
- ROM_LOAD( "ae401t24.yb1", 0x200000, 0x200000, CRC(d83f1a73) SHA1(412b7ac9ff09a984c28b7d195330d78c4aac3dc5) )
-
- ROM_REGION( 0x80000, "oki", 0 ) // M6295 Samples
- ROM_LOAD( "ae500w07.ad1", 0x000000, 0x080000, CRC(3734f92c) SHA1(048555b5aa89eaf983305c439ba08d32b4a1bb80) )
-ROM_END
-
-ROM_START( tkdenshoa )
- ROM_REGION( 0x600000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "aeprge.pal", 0x00000, 0x80000, CRC(17a209ff) SHA1(b5dbea9868cbb89d4e27bf19fdb616ac256985b4) )
- ROM_LOAD16_BYTE( "aeprgo.pau", 0x00001, 0x80000, CRC(d265e6a1) SHA1(f39d8ce115f197a660f5210b2483108854eb12a9) )
-
- ROM_REGION( 0x040000, "audiocpu", 0 ) // Sound Program
- ROM_LOAD( "aesprg-2.z1", 0x000000, 0x020000, CRC(43550ab6) SHA1(2580129ef8ebd9295249175de4ba985c752e06fe) )
- ROM_RELOAD( 0x020000, 0x020000) // for banks
-
- ROM_REGION( 0x2200, "cpu2", 0 ) // MCU is a 68HC11A8 with 8k ROM, 512 bytes EEPROM
- ROM_LOAD( "tkdensho_68hc11a8.rom", 0x0000, 0x2000, NO_DUMP )
- ROM_LOAD( "tkdensho_68hc11a8.eeprom", 0x2000, 0x0200, NO_DUMP )
-
- ROM_REGION( 0x4000000, "sprites", ROMREGION_ERASE00 ) // Graphics - mostly (maybe all?) not tile based
- ROM_LOAD16_BYTE( "ae100h.ah1", 0x0000000, 0x0400000, CRC(06be252b) SHA1(08d1bb569fd2e66e2c2f47da7780b31945232e62) )
- ROM_LOAD16_BYTE( "ae100.al1", 0x0000001, 0x0400000, CRC(009cdff4) SHA1(fd88f07313d14fd4429b09a1e8d6b595df3b98e5) )
- ROM_LOAD16_BYTE( "ae101h.bh1", 0x0800000, 0x0400000, CRC(f2469eff) SHA1(ba49d15cc7949437ba9f56d9b425a5f0e62137df) )
- ROM_LOAD16_BYTE( "ae101.bl1", 0x0800001, 0x0400000, CRC(db7791bb) SHA1(1fe40b747b7cee7a9200683192b1d60a735a0446) )
- ROM_LOAD16_BYTE( "ae102h.ch1", 0x1000000, 0x0200000, CRC(f9d2a343) SHA1(d141ac0b20be587e77a576ef78f15d269d9c84e5) )
- ROM_LOAD16_BYTE( "ae102.cl1", 0x1000001, 0x0200000, CRC(681be889) SHA1(8044ca7cbb325e6dcadb409f91e0c01b88a1bca7) )
- ROM_LOAD16_BYTE( "ae104.el1", 0x2000001, 0x0400000, CRC(e431b798) SHA1(c2c24d4f395bba8c78a45ecf44009a830551e856) )
- ROM_LOAD16_BYTE( "ae105.fl1", 0x2800001, 0x0400000, CRC(b7f9ebc1) SHA1(987f664072b43a578b39fa6132aaaccc5fe5bfc2) )
- ROM_LOAD16_BYTE( "ae106.gl1", 0x3000001, 0x0200000, CRC(7c50374b) SHA1(40865913125230122072bb13f46fb5fb60c088ea) )
-
- ROM_REGION( 0x080000, "layer0", 0 ) // 8x8 4bpp tiles
- ROM_LOAD( "ae300w36.bd1", 0x000000, 0x0080000, CRC(e829f29e) SHA1(e56bfe2669ed1d1ae394c644def426db129d97e3) )
-
- ROM_REGION( 0x100000, "layer1", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae200w74.ba1", 0x000000, 0x0100000, CRC(c1645041) SHA1(323670a6aa2a4524eb968cc0b4d688098ffeeb12) )
-
- ROM_REGION( 0x100000, "layer2", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae201w75.bb1", 0x000000, 0x0100000, CRC(3f63bdff) SHA1(0d3d57fdc0ec4bceef27c11403b3631d23abadbf) )
-
- ROM_REGION( 0x100000, "layer3", 0 ) // 16x16 4bpp tiles
- ROM_LOAD( "ae202w76.bc1", 0x000000, 0x0100000, CRC(5cc857ca) SHA1(2553fb5220433acc15dfb726dc064fe333e51d88) )
-
- ROM_REGION( 0x400000, "ymz", 0 ) // YMZ280B Samples
- ROM_LOAD( "ae400t23.ya1", 0x000000, 0x200000, CRC(c6ffb043) SHA1(e0c6c5f6b840f63c9a685a2c3be66efa4935cbeb) )
- ROM_LOAD( "ae401t24.yb1", 0x200000, 0x200000, CRC(d83f1a73) SHA1(412b7ac9ff09a984c28b7d195330d78c4aac3dc5) )
-
- ROM_REGION( 0x80000, "oki", 0 ) // M6295 Samples
- ROM_LOAD( "ae500w07.ad1", 0x000000, 0x080000, CRC(3734f92c) SHA1(048555b5aa89eaf983305c439ba08d32b4a1bb80) )
-ROM_END
-
-void tecmosys_state::descramble()
-{
- int i;
-
- for (i=0; i < m_sprite_region.length(); i+=4)
- {
- uint8_t tmp[4];
-
- tmp[2] = ((m_sprite_region[i+0]&0xf0)>>0) | ((m_sprite_region[i+1]&0xf0)>>4); // 0, 1, 2, 3 8, 9,10,11
- tmp[3] = ((m_sprite_region[i+0]&0x0f)<<4) | ((m_sprite_region[i+1]&0x0f)<<0); // 4, 5, 6, 7, 12,13,14,15
- tmp[0] = ((m_sprite_region[i+2]&0xf0)>>0) | ((m_sprite_region[i+3]&0xf0)>>4); // 16,17,18,19, 24,25,26,27
- tmp[1] = ((m_sprite_region[i+2]&0x0f)<<4) | ((m_sprite_region[i+3]&0x0f)>>0); // 20,21,22,23, 28,29,30,31
-
- m_sprite_region[i+0] = tmp[0];
- m_sprite_region[i+1] = tmp[1];
- m_sprite_region[i+2] = tmp[2];
- m_sprite_region[i+3] = tmp[3];
- }
-}
-
-void tecmosys_state::init_deroon()
-{
- descramble();
- prot_init(0); // machine/tecmosys.cpp
-}
-
-void tecmosys_state::init_tkdensho()
-{
- descramble();
- prot_init(1);
-}
-
-void tecmosys_state::init_tkdensha()
-{
- descramble();
- prot_init(2);
-}
-
-GAME( 1995, deroon, 0, tecmosys, tecmosys, tecmosys_state, init_deroon, ROT0, "Tecmo", "Deroon DeroDero (earlier)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1996, deroon2, deroon, tecmosys, tecmosys, tecmosys_state, init_deroon, ROT0, "Tecmo", "Deroon DeroDero / Tecmo Stackers", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // some parts translated in English, attract without 'how to play'
-GAME( 1996, tkdensho, 0, tecmosys, tecmosys, tecmosys_state, init_tkdensho, ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960614)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1996, tkdenshoa, tkdensho, tecmosys, tecmosys, tecmosys_state, init_tkdensha, ROT0, "Tecmo", "Toukidenshou - Angel Eyes (VER. 960427)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )