summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/taitoair.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/taitoair.cpp')
-rw-r--r--src/mame/drivers/taitoair.cpp972
1 files changed, 0 insertions, 972 deletions
diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp
deleted file mode 100644
index f9d14be6eee..00000000000
--- a/src/mame/drivers/taitoair.cpp
+++ /dev/null
@@ -1,972 +0,0 @@
-// license:LGPL-2.1+
-// copyright-holders:Angelo Salese, Olivier Galibert
-/***************************************************************************
-
-Taito Air System
-----------------
-
-Top Landing (c) 1988 Taito
-Air Inferno (c) 1990 Taito
-
-
-(Thanks to Raine team for their preliminary drivers)
-
-Controls:
-
- P2 y analogue = throttle
- P1 analogue = pitch/yaw control
-
-Can someone with flight sim stick confirm this is sensible.
-I think we need OSD display for P1 l/r.
-
-
-System specs (from TaitoH: incorrect!)
-------------
-
- CPU : MC68000 (12 MHz) x 1, Z80 (4 MHz?, sound CPU) x 1
- Sound : YM2610, YM3016?
- OSC : 20.000 MHz, 8.000 MHz, 24.000 MHz
- Chips : TC0070RGB (Palette?)
- TC0220IOC (Input)
- TC0140SYT (Sound communication)
- TC0130LNB (???)
- TC0160ROM (???)
- TC0080VCO (Video?)
-
-From Ainferno readme
---------------------
-
-Location Type File ID
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-CPU IC5 9016* C45-01
-CPU IC4 9016* C45-02
-CPU IC3 9016* C45-03
-CPU IC2 9016* C45-04
-CPU IC1 9016* C45-05
-CPU IC31 9016* C45-06
-VID IC28 27C010 C45-11
-VID IC29 27C010 C45-12
-VID IC30 27C010 C45-13
-VID IC31 27C010 C45-14
-VID IC40 27C010 C45-15
-VID IC41 27C010 C45-16
-VID IC42 27C010 C45-17
-VID IC43 27C010 C45-18
-CPU IC14 27C010 C45-20
-CPU IC42 27C010 C45-21
-CPU IC43 27C010 C45-22
-CPU IC43 27C010 C45-23
-CPU IC6 LH5763 C45-24
-CPU IC35 LH5763 C45-25
-CPU IC13 27C010 C45-28
-
-VID IC6 PAL16L8B C45-07
-VID IC62 PAL16L8B C45-08
-VID IC63 PAL16L8B C45-09
-VID IC2 PAL20L8B C45-10
-CPU IC76 PAL16L8B C45-26
-CPU IC114 PAL16L8B C45-27
-CPU IC60 PAL20L8B B62-02
-CPU IC62 PAL20L8B B62-03
-CPU IC63 PAL20L8B B62-04
-CPU IC82 PAL16L8B B62-07
-VID IC23 PAL16L8B B62-08
-VID IC26 PAL16L8B B62-11
-VID IC27 PAL16L8B B62-12
-
-
-Notes: CPU - CPU PCB K1100586A M4300186A
- VID - Video PCB K1100576A M4300186A
-
-
-Known TC0080VCO issues (from TaitoH driver)
-----------------------
-
- - Y coordinate of sprite zooming is non-linear, so currently implemented
- hand-tuned value and this is used for only Record Breaker.
- - Sprite and BG1 priority bit is not understood. It is defined by sprite
- priority in Record Breaker and by zoom value and some scroll value in
- Dynamite League. So, some priority problems still remain.
- - Background zoom effect is not working in flip screen mode.
- - Sprite zoom is a bit wrong.
-
-
-Stephh's notes (based on the game M68000 code and some tests) :
-
-1) 'topland'
-
- - Region stored at 0x03fffe.w
- - Sets :
- * 'topland' : region = 0x0002
- - Coinage relies on the region (code at 0x0016e8) :
- * 0x0000 (Japan) and 0x0001 (US) use TAITO_COINAGE_JAPAN_OLD
- * 0x0002 (World) uses TAITO_COINAGE_WORLD
- - Notice screen only if region = 0x0000
-
-
-2) 'ainferno'
-
- - Region stored at 0x07fffe.w
- - Sets :
- * 'ainferno' : region = 0x0002
- - Coinage relies on the region (code at 0x000cec) :
- * 0x0001 (Japan) uses TAITO_COINAGE_JAPAN_OLD
- * 0x0002 (US) uses TAITO_COINAGE_US
- * 0x0003 (World) uses TAITO_COINAGE_WORLD
- - Notice screen only if region = 0x0001 or region = 0x0002
- - FBI logo only if region = 0x0002
-
-
-
-TODO (TC0080VCO issues shared with TaitoH driver)
-----
-
- - Fix sprite coordinates.
- - Improve zoom y coordinate.
-
-
-TODO
-----
-
-Video section hung off TaitoH driver, it should be separate.
-
-3d graphics h/w: do the gradiation ram and line ram map to
-hardware which creates the 3d background scenes? It seems
-the TMS320C25 is being used as a co-processor to relieve the
-68000 of 3d calculations... it has direct access to line ram
-along with the 68000.
-
-Gradiation RAM is used to display a rotatable gradient background.
-The rotation is handled by the TC0430GRW ROZ chip which outputs
-coordinates for a X=a1+b1*x+c1*y, Y=a2+b2*x+c2*y mapping. The
-coordinates are used unconventionally as indices in a color palette.
-
-"Power common ram" is for communication with a processor
-controlling the sit-in-cabinet (deluxe mechanized version only).
-The interface is similar to that used by Midnight Landing
-and though undumped, the motor CPU program may be identical.
-
-Unknown control bits remain in the 0x140000 write.
-
-
-DIPs
-----
-
-They're now correct (including locations) according to the
-manuals. Nevertheless, ainferno manual states that the coinage
-DIPs are the same as topland, which is clearly wrong if you try
-them ("SWB:7,8" do not set Coin B to multiple credits for each
-coin!)
-
-Therefore, some verification could still be needed, once the
-emulation is complete.
-
-
-Topland
--------
-
-After demo game in attract, palette seems too dark for a while.
-Palette corruption has occurred with areas not restored after a fade.
-Don't know why. (Perhaps 68000 relies on feedback from co-processor
-in determining what parts of palette ram to write... but this would
-then be fixed by hookup of 32025 core, which it isn't.)
-
-Mechanized cabinet has a problem with test mode: there is
-code at $d72 calling a sub which tests a silly amount of "power
-common ram"; $80000 words (only one byte per word used).
-Probably the address map wraps, and only $400 separate words
-are actually accessed ?
-
-TMS320C25 emulation: one unmapped read which appears to be
-discarded. But the cpu waits for a bit to be zero... some
-sort of frame flag or some "ready" message from the 3d h/w
-perhaps? The two writes seem to take only two values.
-
-****************************************************************************/
-/*!
- @todo - Framebuffer DMA requires palette switch to be selected dynamically, see at first stage Course Select in Top Landing.
- My gut feeling is that 3d poly fill operation actually copies to internal buffer then a DMA op actually do the buffer-to-screen copy, including gradiation ROZ too;
- - Air Inferno: missing landing monitor camera (blackened);
- - Air Inferno: missing 3d HUD graphics;
- - Air Inferno: Expert course has wrong 3d geometry;
- - Air Inferno: Almost surely crashing during replay has missing smoke effect, looks quite odd atm.
- - Top Landing: Night stages might have wrong priority for stars-above-sea;
- - Input limiters / analog thresholds for both games;
- */
-
-#include "emu.h"
-#include "includes/taitoair.h"
-#include "includes/taitoipt.h"
-#include "audio/taitosnd.h"
-
-#include "cpu/m68000/m68000.h"
-#include "cpu/z80/z80.h"
-#include "sound/2610intf.h"
-#include "speaker.h"
-
-
-/***********************************************************
- MEMORY handlers
-***********************************************************/
-
-void taitoair_state::system_control_w(offs_t offset, u16 data, u16 mem_mask)
-{
- if ((ACCESSING_BITS_0_7 == 0) && ACCESSING_BITS_8_15)
- data >>= 8;
-
- m_dsp_hold_signal = (data & 4) ? CLEAR_LINE : ASSERT_LINE;
-
- m_dsp->set_input_line(INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
-
- m_gradbank = (data & 0x40);
- logerror("68K:%06x writing %04x to TMS32025. %s HOLD , %s RESET\n", m_maincpu->pcbase(), data, ((data & 4) ? "Clear" : "Assert"), ((data & 1) ? "Clear" : "Assert"));
-}
-
-u16 taitoair_state::lineram_r(offs_t offset)
-{
- return m_line_ram[offset];
-}
-
-void taitoair_state::lineram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7)
- m_line_ram[offset] = data;
-
- //if (offset == 0x3fff)
- // printf("LineRAM go %d\n",(int)m_screen->frame_number());
-}
-
-u16 taitoair_state::dspram_r(offs_t offset)
-{
- return m_dsp_ram[offset];
-}
-
-void taitoair_state::dspram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7)
- m_dsp_ram[offset] = data;
-}
-
-u16 taitoair_state::dsp_HOLD_signal_r()
-{
- /* HOLD signal is active low */
- // logerror("TMS32025:%04x Reading %01x level from HOLD signal\n", m_dsp->pcbase(), m_dsp_hold_signal);
-
- return m_dsp_hold_signal;
-}
-
-void taitoair_state::dsp_HOLDA_signal_w(offs_t offset, u16 data)
-{
- if (offset)
- logerror("TMS32025:%04x Writing %01x level to HOLD-Acknowledge signal\n", m_dsp->pcbase(), data);
-}
-
-
-void taitoair_state::paletteram_w(offs_t offset, u16 data, u16 mem_mask)/* xxBBBBxRRRRxGGGG */
-{
- COMBINE_DATA(&m_paletteram[offset]);
-
- const u16 a = m_paletteram[offset];
- m_palette->set_pen_color(offset, pal4bit(a >> 0), pal4bit(a >> 5), pal4bit(a >> 10));
-}
-
-void taitoair_state::gradram_w(offs_t offset, u16 data, u16 mem_mask)
-{
- //int pal_r,pal_g,pal_b;
-
- COMBINE_DATA(&m_gradram[offset]);
- offset &= 0x1fff;
-
- const u32 pen = (m_gradram[offset]) | (m_gradram[(offset + 0x2000)] << 16);
- /* TODO: correct? */
- u8 r = (pen & 0x00007f) >> 0;
- u8 g = (pen & 0x007f00) >> (8);
- u8 b = (pen & 0x7f0000) >> (16);
-
- r = (r << 1) | (r & 1);
- g = (g << 1) | (g & 1);
- b = (b << 1) | (b & 1);
-
- m_palette->set_pen_color(offset + 0x2000, r, g, b);
-}
-
-
-/***********************************************************
- INPUTS
-***********************************************************/
-
-READ16_MEMBER(taitoair_state::stick_input_r)
-{
- switch (offset)
- {
- case 0x00: /* "counter 1" lo */
- return m_yoke->throttle_r() & 0xff;
-
- case 0x01: /* "counter 2" lo */
- return m_yoke->stickx_r() & 0xff;
-
- case 0x02: /* "counter 1" hi */
- return (m_yoke->throttle_r() & 0xff00) >> 8;
-
- case 0x03: /* "counter 2" hi */
- return (m_yoke->stickx_r() & 0xff00) >> 8;
- }
-
- return 0;
-}
-
-READ16_MEMBER(taitoair_state::stick2_input_r)
-{
- switch (offset)
- {
- case 0x00: /* "counter 3" lo */
- return m_yoke->sticky_r();
-
- case 0x02: /* "counter 3" hi */
- return (m_yoke->sticky_r() & 0xff00) >> 8;
- }
-
- return 0;
-}
-
-void taitoair_state::sound_bankswitch_w(u8 data)
-{
- m_z80bank->set_entry(data & 3);
-}
-
-/*!
- @brief Framebuffer DMA control
- @regs [0] x--- ---- ---- ---- copy framebuffer to the screen
- [0] --x- ---- ---- ---- unknown, used on POST test
- [0] 1001 1111 1111 1111 used by Air Inferno after erase op, erase -> copy?
- [0] 0001 1111 1111 1111 erase op?
- [1] xxxx xxxx xxxx xxxx fill value? 0xffff by Top Landing, 0x0000 Air Inferno
- [2] (unused)
- [3] both games uses 0xb7, most likely a register setting.
-*/
-void taitoair_state::dma_regs_w(offs_t offset, u16 data, u16 mem_mask)
-{
- printf("%08x %04x\n",offset,data);
-
- if (offset == 0 && ACCESSING_BITS_8_15)
- {
- if (data == 0x1fff)
- {
- fb_erase_op();
- }
- else if (data & 0x8000)
- {
- /*! @todo it also flushes current palette. */
- fb_copy_op();
- }
- }
-}
-
-void taitoair_state::coin_control_w(u8 data)
-{
- machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
- machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
- machine().bookkeeping().coin_counter_w(0, data & 0x04);
- machine().bookkeeping().coin_counter_w(1, data & 0x08);
-}
-
-/***********************************************************
- MEMORY STRUCTURES
-***********************************************************/
-
-void taitoair_state::airsys_map(address_map &map)
-{
- map(0x000000, 0x0bffff).rom();
- map(0x0c0000, 0x0cffff).ram().share("m68000_mainram");
- map(0x140000, 0x140001).w(FUNC(taitoair_state::system_control_w)); /* Pause the TMS32025 */
- map(0x180000, 0x187fff).ram().w(FUNC(taitoair_state::gradram_w)).share("gradram"); /* "gradiation ram (0/1)" */
- map(0x188000, 0x189fff).mirror(0x2000).ram().w(FUNC(taitoair_state::paletteram_w)).share("paletteram");
- map(0x800000, 0x820fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); /* tilemaps, sprites */
- map(0x906000, 0x906007).w(FUNC(taitoair_state::dma_regs_w)); // DMA?
- map(0x908000, 0x90ffff).ram().share("line_ram"); /* "line ram" */
- map(0x910000, 0x91ffff).ram().share("dsp_ram"); /* "dsp common ram" (TMS320C25) */
- map(0x980000, 0x98000f).ram().share("tc0430grw"); /* TC0430GRW roz transform coefficients */
- map(0xa00000, 0xa00007).r(FUNC(taitoair_state::stick_input_r));
- map(0xa00100, 0xa00107).r(FUNC(taitoair_state::stick2_input_r));
- map(0xa00200, 0xa0020f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff); /* other I/O */
- map(0xa80000, 0xa80001).nopr();
- map(0xa80001, 0xa80001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
- map(0xa80003, 0xa80003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
- map(0xb00000, 0xb007ff).ram(); /* "power common ram" (mecha drive) */
-}
-
-/************************** Z80 ****************************/
-
-void taitoair_state::sound_map(address_map &map)
-{
- map(0x0000, 0x3fff).rom();
- map(0x4000, 0x7fff).bankr("z80bank");
- map(0xc000, 0xdfff).ram();
- map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
- map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
- map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
- map(0xe400, 0xe403).nopw(); /* pan control */
- map(0xea00, 0xea00).nopr();
- map(0xee00, 0xee00).nopw(); /* ? */
- map(0xf000, 0xf000).nopw(); /* ? */
- map(0xf200, 0xf200).w(FUNC(taitoair_state::sound_bankswitch_w));
-}
-
-/********************************** TMS32025 ********************************/
-
-void taitoair_state::dsp_test_start_w(u16 data)
-{
- m_dsp_test_object_type = data;
- m_dsp_test_or_clip = 0;
- m_dsp_test_and_clip = 0xf;
-}
-
-void taitoair_state::dsp_test_x_w(u16 data)
-{
- m_dsp_test_x = data;
-}
-
-void taitoair_state::dsp_test_y_w(u16 data)
-{
- m_dsp_test_y = data;
-}
-
-void taitoair_state::dsp_test_z_w(u16 data)
-{
- m_dsp_test_z = data;
-}
-
-u16 taitoair_state::dsp_test_point_r()
-{
- u16 r = 0;
- if (m_dsp_test_x < -m_dsp_test_z)
- r |= 1;
- if (m_dsp_test_x > m_dsp_test_z)
- r |= 2;
- if (m_dsp_test_y < -m_dsp_test_z)
- r |= 4;
- if (m_dsp_test_y > m_dsp_test_z)
- r |= 8;
-
- m_dsp_test_or_clip |= r;
- m_dsp_test_and_clip &= r;
- return r;
-}
-
-u16 taitoair_state::dsp_test_or_clip_r()
-{
- return m_dsp_test_or_clip;
-}
-
-u16 taitoair_state::dsp_test_and_clip_r()
-{
- return m_dsp_test_and_clip;
-}
-
-void taitoair_state::dsp_muldiv_a_1_w(u16 data)
-{
- m_dsp_muldiv_a_1 = data;
-}
-
-void taitoair_state::dsp_muldiv_b_1_w(u16 data)
-{
- m_dsp_muldiv_b_1 = data;
-}
-
-void taitoair_state::dsp_muldiv_c_1_w(u16 data)
-{
- m_dsp_muldiv_c_1 = data;
-}
-
-u16 taitoair_state::dsp_muldiv_1_r()
-{
- if (m_dsp_muldiv_c_1 == 0)
- return 0xffff; /**< @todo true value? */
-
- return m_dsp_muldiv_a_1 * m_dsp_muldiv_b_1 / m_dsp_muldiv_c_1;
-}
-
-void taitoair_state::dsp_muldiv_a_2_w(u16 data)
-{
- m_dsp_muldiv_a_2 = data;
-}
-
-void taitoair_state::dsp_muldiv_b_2_w(u16 data)
-{
- m_dsp_muldiv_b_2 = data;
-}
-
-void taitoair_state::dsp_muldiv_c_2_w(u16 data)
-{
- m_dsp_muldiv_c_2 = data;
-}
-
-u16 taitoair_state::dsp_muldiv_2_r()
-{
- if (m_dsp_muldiv_c_2 == 0)
- return 0xffff; /**< @todo true value? */
-
- return m_dsp_muldiv_a_2 * m_dsp_muldiv_b_2 / m_dsp_muldiv_c_2;
-}
-
-
-void taitoair_state::DSP_map_program(address_map &map)
-{
- map(0x0000, 0x1fff).rom();
-}
-
-void taitoair_state::DSP_map_data(address_map &map)
-{
- map(0x2003, 0x2003).nopr(); //bit 0 DMA status flag or vblank
- map(0x3000, 0x3002).w(FUNC(taitoair_state::dsp_flags_w));
- map(0x3404, 0x3404).w(FUNC(taitoair_state::dsp_muldiv_a_1_w));
- map(0x3405, 0x3405).w(FUNC(taitoair_state::dsp_muldiv_b_1_w));
- map(0x3406, 0x3406).w(FUNC(taitoair_state::dsp_muldiv_c_1_w));
- map(0x3407, 0x3407).r(FUNC(taitoair_state::dsp_muldiv_1_r));
-
- map(0x3408, 0x3408).w(FUNC(taitoair_state::dsp_muldiv_a_2_w));
- map(0x3409, 0x3409).w(FUNC(taitoair_state::dsp_muldiv_b_2_w));
- map(0x340a, 0x340a).w(FUNC(taitoair_state::dsp_muldiv_c_2_w));
- map(0x340b, 0x340b).r(FUNC(taitoair_state::dsp_muldiv_2_r));
-
- map(0x3418, 0x3418).w(FUNC(taitoair_state::dsp_test_x_w));
- map(0x3419, 0x3419).w(FUNC(taitoair_state::dsp_test_y_w));
- map(0x341a, 0x341a).w(FUNC(taitoair_state::dsp_test_z_w));
- map(0x341b, 0x341b).rw(FUNC(taitoair_state::dsp_test_point_r), FUNC(taitoair_state::dsp_test_start_w));
- map(0x341c, 0x341c).r(FUNC(taitoair_state::dsp_test_and_clip_r));
- map(0x341d, 0x341d).r(FUNC(taitoair_state::dsp_test_or_clip_r));
-
- map(0x4000, 0x7fff).rw(FUNC(taitoair_state::lineram_r), FUNC(taitoair_state::lineram_w));
- map(0x8000, 0xffff).rw(FUNC(taitoair_state::dspram_r), FUNC(taitoair_state::dspram_w));
-}
-
-
-/************************************************************
- INPUT PORTS & DIPS
-************************************************************/
-
-static INPUT_PORTS_START( topland )
- /* 0xa00200 -> 0x0c0d7c (-$7285,A5) */
- PORT_START("DSWA")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SWA:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Standard ) )
- PORT_DIPSETTING( 0x00, "Deluxe" ) // with Mecha driver
- PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SWA:2" )
- TAITO_DSWA_BITS_2_TO_3_LOC(SWA)
- TAITO_COINAGE_WORLD_LOC(SWA)
-
- /* 0xa00202 -> 0x0c0d7e (-$7283,A5) */
- PORT_START("DSWB")
- TAITO_DIFFICULTY_LOC(SWB)
- PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_LOW, "SWB:3" )
- PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SWB:4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SWB:5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SWB:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SWB:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SWB:8" )
-
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Door Switch") /* "door" (!) */
-
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, slot_down_r )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, slot_up_r )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, handle_left_r )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, handle_right_r )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, handle_down_r )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, handle_up_r )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) // DMA status flag
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN2")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( ainferno )
- /* 0xa00200 -> 0x0c0003.b (-$7ffd,A5) */
- PORT_START("DSWA")
- PORT_DIPNAME( 0x01, 0x01, "Moving Control" ) PORT_DIPLOCATION("SWA:1")
- PORT_DIPSETTING( 0x01, "Upright/Cockpit" )
- PORT_DIPSETTING( 0x00, "DX Moving Only" )
- PORT_DIPNAME( 0x02, 0x02, "Motion Test Mode" ) PORT_DIPLOCATION("SWA:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- TAITO_DSWA_BITS_2_TO_3_LOC(SWA)
- TAITO_COINAGE_US_LOC(SWA)
-
- /* 0xa00202 -> 0x0c0004.b (-$7ffc,A5) */
- PORT_START("DSWB")
- TAITO_DIFFICULTY_LOC(SWB)
- PORT_DIPNAME( 0x0c, 0x0c, "Timer Length" ) PORT_DIPLOCATION("SWB:3,4")
- PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( Medium ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
- PORT_DIPNAME( 0x10, 0x10, "Rudder Pedal" ) PORT_DIPLOCATION("SWB:5")
- PORT_DIPSETTING( 0x10, "Without (Upright)" )
- PORT_DIPSETTING( 0x00, "With (Cockpit / DX)" )
- PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SWB:6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SWB:7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SWB:8" )
-
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
-
- PORT_START("IN1")
- // TODO: understand these
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* lever */
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) /* handle x */
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) /* handle y */
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) /* fire */
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) /* pedal r */
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) /* pedal l */
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) // DMA status flag
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN2")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-/************************************************************
- MACHINE DRIVERS
-************************************************************/
-
-void taitoair_state::machine_start()
-{
- m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000);
-
- save_item(NAME(m_q.header));
- save_item(NAME(m_q.pcount));
-
- for (int i = 0; i < TAITOAIR_POLY_MAX_PT; i++)
- {
- save_item(NAME(m_q.p[i].x), i);
- save_item(NAME(m_q.p[i].y), i);
- }
-}
-
-void taitoair_state::machine_reset()
-{
- m_dsp_hold_signal = ASSERT_LINE;
-
- for (int i = 0; i < TAITOAIR_POLY_MAX_PT; i++)
- {
- m_q.p[i].x = 0;
- m_q.p[i].y = 0;
- }
-}
-
-void taitoair_state::airsys(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(12'000'000)); // MC68000P12
- m_maincpu->set_addrmap(AS_PROGRAM, &taitoair_state::airsys_map);
- m_maincpu->set_vblank_int("screen", FUNC(taitoair_state::irq5_line_hold));
-
- Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // Z8400AB1
- m_audiocpu->set_addrmap(AS_PROGRAM, &taitoair_state::sound_map);
-
- TMS32025(config, m_dsp, XTAL(36'000'000)); // Unverified
- m_dsp->set_addrmap(AS_PROGRAM, &taitoair_state::DSP_map_program);
- m_dsp->set_addrmap(AS_DATA, &taitoair_state::DSP_map_data);
- m_dsp->hold_in_cb().set(FUNC(taitoair_state::dsp_HOLD_signal_r));
- m_dsp->hold_ack_out_cb().set(FUNC(taitoair_state::dsp_HOLDA_signal_w));
-
- config.set_perfect_quantum(m_maincpu);
-
- TC0220IOC(config, m_tc0220ioc, 0);
- m_tc0220ioc->read_0_callback().set_ioport("DSWA");
- m_tc0220ioc->read_1_callback().set_ioport("DSWB");
- m_tc0220ioc->read_2_callback().set_ioport("IN0");
- m_tc0220ioc->read_3_callback().set_ioport("IN1");
- m_tc0220ioc->write_4_callback().set(FUNC(taitoair_state::coin_control_w));
- m_tc0220ioc->read_7_callback().set_ioport("IN2");
-
- TAITOIO_YOKE(config, m_yoke, 0);
-
- /* video hardware */
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
-// m_screen->set_refresh_hz(60);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
-// m_screen->set_size(64*16, 32*16);
-// m_screen->set_visarea(0*16, 32*16-1, 3*16, 28*16-1);
- // Estimated, assume same as mlanding.cpp
- m_screen->set_raw(16000000, 640, 0, 512, 462, 3*16, 28*16);
- m_screen->set_screen_update(FUNC(taitoair_state::screen_update));
- m_screen->set_palette(m_palette);
-
- PALETTE(config, m_palette, palette_device::BLACK, 512*16+512*16);
-
- TC0080VCO(config, m_tc0080vco, 0);
- m_tc0080vco->set_offsets(1, 1);
- m_tc0080vco->set_bgflip_yoffs(-2);
- m_tc0080vco->set_palette(m_palette);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(16'000'000) / 2));
- ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
- ymsnd.add_route(0, "mono", 0.30);
- ymsnd.add_route(1, "mono", 0.60);
- ymsnd.add_route(2, "mono", 0.60);
-
- tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0));
- tc0140syt.set_master_tag(m_maincpu);
- tc0140syt.set_slave_tag(m_audiocpu);
-}
-
-
-/*************************************************************
- DRIVERS
-
-Both games use near-identical CPU boards but different video
-boards. Top Landing has a video board ROM (b62-28.22) which is
-not present on Air Inferno.
-
-Air Inferno video customs:
-
-TC0460LRN - 3D related?
-TC0440ENZ - 3D related?
-
-[Used also by F2/H/Z System games]
-TC0430GRW - Rotation/Zoom
-TC0300FLA
-TC0080VCO
-TC0130LNB
-TC0130LNB
-TC0160ROM
-TC0270MOD
-
-*************************************************************/
-
-ROM_START( topland )
- ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */
- ROM_LOAD16_BYTE( "b62_41.43", 0x00000, 0x20000, CRC(28264798) SHA1(72e4441ad468f37cff69c36699867119ad28274c) )
- ROM_LOAD16_BYTE( "b62_40.14", 0x00001, 0x20000, CRC(db872f7d) SHA1(6932c62d8051b1811c30139dbd0375115305c731) )
- ROM_LOAD16_BYTE( "b62_25.42", 0x40000, 0x20000, CRC(1bd53a72) SHA1(ada679198739cd6a419d3fa4311bb92dc385099c) )
- ROM_LOAD16_BYTE( "b62_24.13", 0x40001, 0x20000, CRC(845026c5) SHA1(ab8d8f5f6597bfcde4e9ccf9e0181b8b6e769ada) )
- ROM_LOAD16_BYTE( "b62_23.41", 0x80000, 0x20000, CRC(ef3a971c) SHA1(0840668dda48f4c9a85410361bfba3ae9580a71f) )
- ROM_LOAD16_BYTE( "b62_22.12", 0x80001, 0x20000, CRC(94279201) SHA1(8518d8e722d4f2516f75224d9a21ab20d8ee6c78) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 */
- ROM_LOAD( "b62-42.34", 0x00000, 0x10000, CRC(389230e0) SHA1(3a336987aad7bf4df658f924de4bbe6f0fff6d59) )
-
- ROM_REGION( 0x20000, "dsp", 0 ) /* TMS320C25 */
- ROM_LOAD16_BYTE( "b62-21.35", 0x00000, 0x02000, CRC(5f38460d) SHA1(0593718d15b30b10f7686959932e2c934de2a529) ) // cpu board
- ROM_LOAD16_BYTE( "b62-20.6", 0x00001, 0x02000, CRC(a4afe958) SHA1(7593a327f4ea0cc9e28fd3269278871f62fb0598) ) // cpu board
-
- ROM_REGION( 0x10000, "mechacpu", 0 )
- ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP )
-
- ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */
- ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) )
- ROM_LOAD64_BYTE( "b62-36.48", 0x000006, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) )
- ROM_LOAD64_BYTE( "b62-29.27", 0x000005, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) )
- ROM_LOAD64_BYTE( "b62-34.40", 0x000004, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) )
- ROM_LOAD64_BYTE( "b62-35.47", 0x000003, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) )
- ROM_LOAD64_BYTE( "b62-30.28", 0x000002, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) )
- ROM_LOAD64_BYTE( "b62-31.29", 0x000001, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) )
- ROM_LOAD64_BYTE( "b62-32.30", 0x000000, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) )
-
- ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) )
- ROM_LOAD( "b62-16.4", 0x20000, 0x20000, CRC(203a5c27) SHA1(f6fc9322dea8d82bfec3be3fdc8616dc6adf666e) )
- ROM_LOAD( "b62-15.3", 0x40000, 0x20000, CRC(e35ffe81) SHA1(f35afdd7cfd4c09907fb062beb5ae46c2286a381) )
- ROM_LOAD( "b62-14.2", 0x60000, 0x20000, CRC(617948a3) SHA1(4660570fa6263c28cfae7ccdf154763cc6144896) )
- ROM_LOAD( "b62-13.1", 0x80000, 0x20000, CRC(b37dc3ea) SHA1(198d4f828132316c624da998e49b1873b9886bf0) )
-
- ROM_REGION( 0x20000, "ymsnd.deltat", 0 ) /* Delta-T samples */
- ROM_LOAD( "b62-18.31", 0x00000, 0x20000, CRC(3a4e687a) SHA1(43f07fe19dec351e851defdf9c7810fb9df04736) )
-
- ROM_REGION( 0x02000, "user1", 0 ) /* unknown */
- ROM_LOAD( "b62-28.22", 0x00000, 0x02000, CRC(c4be68a6) SHA1(2c07a0e71d11bca67427331217c507d849500ec1) ) // video board
-
- ROM_REGION( 0x0800, "plds", 0 )
- ROM_LOAD( "pal20l8b-b62-02.bin", 0x0000, 0x0144, CRC(c43ab9d8) SHA1(38542b10e9206a25669534ee26a0472e5f2d6257) )
- ROM_LOAD( "pal20l8b-b62-03.bin", 0x0200, 0x0144, CRC(904753fa) SHA1(87f7414c3eab5740b188276b06c5b898ed07c1cd) )
- ROM_LOAD( "pal20l8b-b62-04.bin", 0x0400, 0x0144, CRC(80512abc) SHA1(0e87e59df3c4d3b4adba295dbd5a2c27b9d5fefd) )
- ROM_LOAD( "pal16l8a-b62-10.bin", 0x0600, 0x0104, CRC(6c1e3fc4) SHA1(8953d82ed94741fdfacb0465415915ca398678d4) )
-ROM_END
-
-ROM_START( toplandj )
- ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */
- ROM_LOAD16_BYTE( "b62_27.ic43", 0x00000, 0x20000, CRC(c717c3b7) SHA1(b5bee250dc4ba530b1d3a73926dc848a0f340a70) )
- ROM_LOAD16_BYTE( "b62_26.ic14", 0x00001, 0x20000, CRC(340bfa56) SHA1(b5df3dc43ed299a22213b517ac4a1c1d776bbdbf) )
- ROM_LOAD16_BYTE( "b62_25.42", 0x40000, 0x20000, CRC(1bd53a72) SHA1(ada679198739cd6a419d3fa4311bb92dc385099c) )
- ROM_LOAD16_BYTE( "b62_24.13", 0x40001, 0x20000, CRC(845026c5) SHA1(ab8d8f5f6597bfcde4e9ccf9e0181b8b6e769ada) )
- ROM_LOAD16_BYTE( "b62_23.41", 0x80000, 0x20000, CRC(ef3a971c) SHA1(0840668dda48f4c9a85410361bfba3ae9580a71f) )
- ROM_LOAD16_BYTE( "b62_22.12", 0x80001, 0x20000, CRC(94279201) SHA1(8518d8e722d4f2516f75224d9a21ab20d8ee6c78) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 */
- ROM_LOAD( "b62_19.ic34", 0x00000, 0x10000, CRC(2c0a3786) SHA1(58dc4a18d1d1b0d023721677a9c1b091a6304f4a) )
-
- ROM_REGION( 0x20000, "dsp", 0 ) /* TMS320C25 */
- ROM_LOAD16_BYTE( "b62-21.35", 0x00000, 0x02000, CRC(5f38460d) SHA1(0593718d15b30b10f7686959932e2c934de2a529) ) // cpu board
- ROM_LOAD16_BYTE( "b62-20.6", 0x00001, 0x02000, CRC(a4afe958) SHA1(7593a327f4ea0cc9e28fd3269278871f62fb0598) ) // cpu board
-
- ROM_REGION( 0x10000, "mechacpu", 0 )
- ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP )
-
- ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */
- ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) )
- ROM_LOAD64_BYTE( "b62-36.48", 0x000006, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) )
- ROM_LOAD64_BYTE( "b62-29.27", 0x000005, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) )
- ROM_LOAD64_BYTE( "b62-34.40", 0x000004, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) )
- ROM_LOAD64_BYTE( "b62-35.47", 0x000003, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) )
- ROM_LOAD64_BYTE( "b62-30.28", 0x000002, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) )
- ROM_LOAD64_BYTE( "b62-31.29", 0x000001, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) )
- ROM_LOAD64_BYTE( "b62-32.30", 0x000000, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) )
-
- ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) )
- ROM_LOAD( "b62-16.4", 0x20000, 0x20000, CRC(203a5c27) SHA1(f6fc9322dea8d82bfec3be3fdc8616dc6adf666e) )
- ROM_LOAD( "b62-15.3", 0x40000, 0x20000, CRC(e35ffe81) SHA1(f35afdd7cfd4c09907fb062beb5ae46c2286a381) )
- ROM_LOAD( "b62-14.2", 0x60000, 0x20000, CRC(617948a3) SHA1(4660570fa6263c28cfae7ccdf154763cc6144896) )
- ROM_LOAD( "b62-13.1", 0x80000, 0x20000, CRC(b37dc3ea) SHA1(198d4f828132316c624da998e49b1873b9886bf0) )
-
- ROM_REGION( 0x20000, "ymsnd.deltat", 0 ) /* Delta-T samples */
- ROM_LOAD( "b62-18.31", 0x00000, 0x20000, CRC(3a4e687a) SHA1(43f07fe19dec351e851defdf9c7810fb9df04736) )
-
- ROM_REGION( 0x02000, "user1", 0 ) /* unknown */
- ROM_LOAD( "b62-28.22", 0x00000, 0x02000, CRC(c4be68a6) SHA1(2c07a0e71d11bca67427331217c507d849500ec1) ) // video board
-
- ROM_REGION( 0x0800, "plds", 0 )
- ROM_LOAD( "pal20l8b-b62-02.bin", 0x0000, 0x0144, CRC(c43ab9d8) SHA1(38542b10e9206a25669534ee26a0472e5f2d6257) )
- ROM_LOAD( "pal20l8b-b62-03.bin", 0x0200, 0x0144, CRC(904753fa) SHA1(87f7414c3eab5740b188276b06c5b898ed07c1cd) )
- ROM_LOAD( "pal20l8b-b62-04.bin", 0x0400, 0x0144, CRC(80512abc) SHA1(0e87e59df3c4d3b4adba295dbd5a2c27b9d5fefd) )
- ROM_LOAD( "pal16l8a-b62-10.bin", 0x0600, 0x0104, CRC(6c1e3fc4) SHA1(8953d82ed94741fdfacb0465415915ca398678d4) )
-ROM_END
-
-
-ROM_START( ainferno )
- ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */
- ROM_LOAD16_BYTE( "c45_22.43", 0x00000, 0x20000, CRC(50300926) SHA1(9c2a60282d3f9f115b94cb5b6d64bbfc9d726d1d) )
- ROM_LOAD16_BYTE( "c45_20.14", 0x00001, 0x20000, CRC(39b189d9) SHA1(002013c02b546d3f5a9f3a3149971975a73cc8ce) )
- ROM_LOAD16_BYTE( "c45_21.42", 0x40000, 0x20000, CRC(1b687241) SHA1(309e42f79cbd48ceae58a15afb648aef838822f0) )
- ROM_LOAD16_BYTE( "c45_28.13", 0x40001, 0x20000, CRC(c7cd2567) SHA1(cf1f163ec252e9986132095f22bca8d061bfdf9a) )
-
- /* 0x80000 to 0xbffff is empty for this game */
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 */
- ROM_LOAD( "c45-23.34", 0x00000, 0x10000, CRC(d0750c78) SHA1(63232c2acef86e8c8ffaad36ab0b6c4cc1eb48f8) )
-
- ROM_REGION( 0x20000, "dsp", 0 ) /* TMS320C25 */
- ROM_LOAD16_BYTE( "c45-25.35", 0x00000, 0x02000, CRC(c0d39f95) SHA1(542aa6e2af510aea00db40bf803cb6653d4e7747) )
- ROM_LOAD16_BYTE( "c45-24.6", 0x00001, 0x02000, CRC(1013d937) SHA1(817769d21583f5281ba044ce8c134c9239d1e83e) )
-
- ROM_REGION( 0x10000, "mechacpu", 0 ) // on "Controller P.C.B."
- ROM_LOAD( "c45-30.9", 0x00000, 0x10000, CRC(fa2db40f) SHA1(91c34a53d2fec619f2536ca79fdc6a17fb0d21e4) ) // 27c512, 1111xxxxxxxxxxxx = 0xFF
-
- ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */
- ROM_LOAD64_BYTE( "c45-11.28", 0x000007, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) )
- ROM_LOAD64_BYTE( "c45-15.40", 0x000006, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) )
- ROM_LOAD64_BYTE( "c45-12.29", 0x000005, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) )
- ROM_LOAD64_BYTE( "c45-16.41", 0x000004, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) )
- ROM_LOAD64_BYTE( "c45-13.30", 0x000003, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) )
- ROM_LOAD64_BYTE( "c45-17.42", 0x000002, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) )
- ROM_LOAD64_BYTE( "c45-14.31", 0x000001, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) )
- ROM_LOAD64_BYTE( "c45-18.43", 0x000000, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) )
-
- ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "c45-01.5", 0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) )
- ROM_LOAD( "c45-02.4", 0x20000, 0x20000, CRC(2fc0a88e) SHA1(6a635671fa2518f74015429ce580d7b7f00299ad) )
- ROM_LOAD( "c45-03.3", 0x40000, 0x20000, CRC(0e1e5b5f) SHA1(a53d5ba01825f825e31a014cb4808f59ef86f0c9) )
- ROM_LOAD( "c45-04.2", 0x60000, 0x20000, CRC(6d081044) SHA1(2d98bde55621762509dfc645d9ca5e267b1757ae) )
- ROM_LOAD( "c45-05.1", 0x80000, 0x20000, CRC(6c59a808) SHA1(6264bbe4d7ad3070c6441859eb704a42910a82f0) )
-
- ROM_REGION( 0x20000, "ymsnd.deltat", 0 ) /* Delta-T samples */
- ROM_LOAD( "c45-06.31", 0x00000, 0x20000, CRC(6a7976d4) SHA1(a465f9bb874b1eff08742b33cc3c364703b281ca) )
-
- ROM_REGION( 0x1c00, "plds", 0 )
- ROM_LOAD( "pal16l8b-c45-07.ic6", 0x0000, 0x0104, CRC(a139114f) SHA1(d21f0c02c34a59b2cea925a9a417d5c2db27a30e) )
- ROM_LOAD( "pal16l8b-c45-08.ic62", 0x0200, 0x0104, CRC(6f8ec860) SHA1(25161f6e5a5a76c35e697312567abe995b08b945) )
- ROM_LOAD( "pal16l8b-c45-09.ic63", 0x0400, 0x0104, CRC(6703d122) SHA1(8636ee19cf850461e95318b2b82ace036d92225d) )
- ROM_LOAD( "pal20l8b-c45-10.ic2", 0x0600, 0x0144, CRC(c41c2a1b) SHA1(33ef3449bea145d6b6a5b7067587ea91795f8383) )
- ROM_LOAD( "pal16l8b-c45-26.ic76", 0x0800, 0x0104, CRC(23b59efc) SHA1(20965dcf73d4f98f38788b01891b64a756bd823c) )
- ROM_LOAD( "pal16l8b-c45-27.ic114", 0x0a00, 0x0104, CRC(2bdc4831) SHA1(dcf4845e7f793a4233af6131638267fea0d864b9) )
- ROM_LOAD( "pal20l8b-b62-02.ic60", 0x0c00, 0x0144, CRC(c43ab9d8) SHA1(38542b10e9206a25669534ee26a0472e5f2d6257) )
- ROM_LOAD( "pal20l8b-b62-03.ic62", 0x0e00, 0x0144, CRC(904753fa) SHA1(87f7414c3eab5740b188276b06c5b898ed07c1cd) )
- ROM_LOAD( "pal20l8b-b62-04.ic63", 0x1000, 0x0144, CRC(80512abc) SHA1(0e87e59df3c4d3b4adba295dbd5a2c27b9d5fefd) )
- ROM_LOAD( "pal16l8b-b62-07.ic82", 0x1200, 0x0104, CRC(dc524371) SHA1(d7529d812fc37043ad302380adc8bb6172fb837c) )
- ROM_LOAD( "pal16l8b-b62-08.ic23", 0x1400, 0x0104, CRC(b2d7ec83) SHA1(4e2e4af4b77ab1482520cc9644fec009beff014c) )
- ROM_LOAD( "pal16l8b-b62-11.ic26", 0x1600, 0x0104, CRC(44e9a034) SHA1(9d7e916baf797994469ddbcfe21fa0fff24b5acb) )
- ROM_LOAD( "pal16l8b-b62-12.ic27", 0x1800, 0x0104, CRC(f1182381) SHA1(3a76064f2bf322324575bbc111f93c9990da8ac1) )
-ROM_END
-
-ROM_START( ainfernoj )
- ROM_REGION( 0xc0000, "maincpu", 0 ) /* 68000 */
- ROM_LOAD16_BYTE( "c45_22.43", 0x00000, 0x20000, CRC(50300926) SHA1(9c2a60282d3f9f115b94cb5b6d64bbfc9d726d1d) )
- ROM_LOAD16_BYTE( "c45_20.14", 0x00001, 0x20000, CRC(39b189d9) SHA1(002013c02b546d3f5a9f3a3149971975a73cc8ce) )
- ROM_LOAD16_BYTE( "c45_21.42", 0x40000, 0x20000, CRC(1b687241) SHA1(309e42f79cbd48ceae58a15afb648aef838822f0) )
- ROM_LOAD16_BYTE( "c45_19.ic13",0x40001, 0x20000, CRC(5ec474dd) SHA1(7b436ba60628a410a5053095dafaee0bd7932daf) )
-
- /* 0x80000 to 0xbffff is empty for this game */
-
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 */
- ROM_LOAD( "c45-23.34", 0x00000, 0x10000, CRC(d0750c78) SHA1(63232c2acef86e8c8ffaad36ab0b6c4cc1eb48f8) )
-
- ROM_REGION( 0x20000, "dsp", 0 ) /* TMS320C25 */
- ROM_LOAD16_BYTE( "c45-25.35", 0x00000, 0x02000, CRC(c0d39f95) SHA1(542aa6e2af510aea00db40bf803cb6653d4e7747) )
- ROM_LOAD16_BYTE( "c45-24.6", 0x00001, 0x02000, CRC(1013d937) SHA1(817769d21583f5281ba044ce8c134c9239d1e83e) )
-
- ROM_REGION( 0x10000, "mechacpu", 0 ) // on "Controller P.C.B."
- ROM_LOAD( "c45-30.9", 0x00000, 0x10000, CRC(fa2db40f) SHA1(91c34a53d2fec619f2536ca79fdc6a17fb0d21e4) ) // 27c512, 1111xxxxxxxxxxxx = 0xFF
-
- ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */
- ROM_LOAD64_BYTE( "c45-11.28", 0x000007, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) )
- ROM_LOAD64_BYTE( "c45-15.40", 0x000006, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) )
- ROM_LOAD64_BYTE( "c45-12.29", 0x000005, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) )
- ROM_LOAD64_BYTE( "c45-16.41", 0x000004, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) )
- ROM_LOAD64_BYTE( "c45-13.30", 0x000003, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) )
- ROM_LOAD64_BYTE( "c45-17.42", 0x000002, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) )
- ROM_LOAD64_BYTE( "c45-14.31", 0x000001, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) )
- ROM_LOAD64_BYTE( "c45-18.43", 0x000000, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) )
-
- ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "c45-01.5", 0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) )
- ROM_LOAD( "c45-02.4", 0x20000, 0x20000, CRC(2fc0a88e) SHA1(6a635671fa2518f74015429ce580d7b7f00299ad) )
- ROM_LOAD( "c45-03.3", 0x40000, 0x20000, CRC(0e1e5b5f) SHA1(a53d5ba01825f825e31a014cb4808f59ef86f0c9) )
- ROM_LOAD( "c45-04.2", 0x60000, 0x20000, CRC(6d081044) SHA1(2d98bde55621762509dfc645d9ca5e267b1757ae) )
- ROM_LOAD( "c45-05.1", 0x80000, 0x20000, CRC(6c59a808) SHA1(6264bbe4d7ad3070c6441859eb704a42910a82f0) )
-
- ROM_REGION( 0x20000, "ymsnd.deltat", 0 ) /* Delta-T samples */
- ROM_LOAD( "c45-06.31", 0x00000, 0x20000, CRC(6a7976d4) SHA1(a465f9bb874b1eff08742b33cc3c364703b281ca) )
-
- ROM_REGION( 0x1c00, "plds", 0 )
- ROM_LOAD( "pal16l8b-c45-07.ic6", 0x0000, 0x0104, CRC(a139114f) SHA1(d21f0c02c34a59b2cea925a9a417d5c2db27a30e) )
- ROM_LOAD( "pal16l8b-c45-08.ic62", 0x0200, 0x0104, CRC(6f8ec860) SHA1(25161f6e5a5a76c35e697312567abe995b08b945) )
- ROM_LOAD( "pal16l8b-c45-09.ic63", 0x0400, 0x0104, CRC(6703d122) SHA1(8636ee19cf850461e95318b2b82ace036d92225d) )
- ROM_LOAD( "pal20l8b-c45-10.ic2", 0x0600, 0x0144, CRC(c41c2a1b) SHA1(33ef3449bea145d6b6a5b7067587ea91795f8383) )
- ROM_LOAD( "pal16l8b-c45-26.ic76", 0x0800, 0x0104, CRC(23b59efc) SHA1(20965dcf73d4f98f38788b01891b64a756bd823c) )
- ROM_LOAD( "pal16l8b-c45-27.ic114", 0x0a00, 0x0104, CRC(2bdc4831) SHA1(dcf4845e7f793a4233af6131638267fea0d864b9) )
- ROM_LOAD( "pal20l8b-b62-02.ic60", 0x0c00, 0x0144, CRC(c43ab9d8) SHA1(38542b10e9206a25669534ee26a0472e5f2d6257) )
- ROM_LOAD( "pal20l8b-b62-03.ic62", 0x0e00, 0x0144, CRC(904753fa) SHA1(87f7414c3eab5740b188276b06c5b898ed07c1cd) )
- ROM_LOAD( "pal20l8b-b62-04.ic63", 0x1000, 0x0144, CRC(80512abc) SHA1(0e87e59df3c4d3b4adba295dbd5a2c27b9d5fefd) )
- ROM_LOAD( "pal16l8b-b62-07.ic82", 0x1200, 0x0104, CRC(dc524371) SHA1(d7529d812fc37043ad302380adc8bb6172fb837c) )
- ROM_LOAD( "pal16l8b-b62-08.ic23", 0x1400, 0x0104, CRC(b2d7ec83) SHA1(4e2e4af4b77ab1482520cc9644fec009beff014c) )
- ROM_LOAD( "pal16l8b-b62-11.ic26", 0x1600, 0x0104, CRC(44e9a034) SHA1(9d7e916baf797994469ddbcfe21fa0fff24b5acb) )
- ROM_LOAD( "pal16l8b-b62-12.ic27", 0x1800, 0x0104, CRC(f1182381) SHA1(3a76064f2bf322324575bbc111f93c9990da8ac1) )
-ROM_END
-
-
-// YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS
-GAME( 1988, topland, 0, airsys, topland, taitoair_state, empty_init, ROT0, "Taito Corporation Japan", "Top Landing (World)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1988, toplandj, topland, airsys, topland, taitoair_state, empty_init, ROT0, "Taito Corporation", "Top Landing (Japan)", MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1990, ainferno, 0, airsys, ainferno, taitoair_state, empty_init, ROT0, "Taito America Corporation", "Air Inferno (US)", MACHINE_NOT_WORKING )
-GAME( 1990, ainfernoj, ainferno, airsys, ainferno, taitoair_state, empty_init, ROT0, "Taito Corporation Japan", "Air Inferno (Japan)", MACHINE_NOT_WORKING )