namco/namcos22.cpp: Move C71 internal ROM and device defines into namco_dsp.cpp, Cleanups: (#12924)

- Make some variables constant
- Fix typename value for some bools
- use BIT helper for bitfields
- Reduce literal tag usages
- Suppress side effects for debugger reads
- Simplify gfx decode layouts
- Fix some notes
This commit is contained in:
cam900 2024-11-02 22:43:20 +09:00 committed by GitHub
parent 885ea5367a
commit d5d2481478
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 296 additions and 536 deletions

View File

@ -2,18 +2,22 @@
// copyright-holders:David Haywood
/******************************************************************************
This is simply a TMS320C25 with internal ROM and Namco code '67'
This is simply a TMS320C25 with internal ROM and Namco code '67', '71'
used by Namco System 21 for both the master and slave DSPs (configuration
is decided based on a port read)
C67 was used by Namco System 21 for both the master and slave DSPs
(configuration is decided based on a port read)
C71 was used by Namco System (Super) 22 for both master and slave DSPs
******************************************************************************/
#include "emu.h"
#include "namco_c67.h"
#include "namco_dsp.h"
DEFINE_DEVICE_TYPE(NAMCO_C67, namco_c67_device, "namcoc67", "Namco C67 (TMS320C25)")
DEFINE_DEVICE_TYPE(NAMCO_C71, namco_c71_device, "namcoc71", "Namco C71 (TMS320C25)")
namco_c67_device::namco_c67_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
tms32025_device(mconfig, NAMCO_C67, tag, owner, clock)
@ -21,12 +25,28 @@ namco_c67_device::namco_c67_device(const machine_config &mconfig, const char *ta
set_mp_mc(false);
}
namco_c71_device::namco_c71_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
tms32025_device(mconfig, NAMCO_C71, tag, owner, clock)
{
set_mp_mc(false);
}
ROM_START( c67 )
ROM_REGION16_BE( 0x2000, "internal", 0 )
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
ROM_END
ROM_START( c71 )
ROM_REGION16_BE( 0x2000, "internal", 0 )
ROM_LOAD( "c71.bin", 0,0x2000, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_END
const tiny_rom_entry *namco_c67_device::device_rom_region() const
{
return ROM_NAME(c67);
}
const tiny_rom_entry *namco_c71_device::device_rom_region() const
{
return ROM_NAME(c71);
}

View File

@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
#ifndef MAME_NAMCO_NAMCO_C67_H
#define MAME_NAMCO_NAMCO_C67_H
#ifndef MAME_NAMCO_NAMCO_DSP_H
#define MAME_NAMCO_NAMCO_DSP_H
#pragma once
@ -18,8 +18,19 @@ protected:
};
class namco_c71_device : public tms32025_device
{
public:
namco_c71_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual const tiny_rom_entry *device_rom_region() const override ATTR_COLD;
};
DECLARE_DEVICE_TYPE(NAMCO_C67, namco_c67_device)
DECLARE_DEVICE_TYPE(NAMCO_C71, namco_c71_device)
#endif // MAME_NAMCO_NAMCO_C67_H
#endif // MAME_NAMCO_NAMCO_DSP_H

View File

@ -263,7 +263,7 @@ Namco System 21 Video Hardware
#include "namco_c139.h"
#include "namco_c148.h"
#include "namco68.h"
#include "namco_c67.h"
#include "namco_dsp.h"
#include "namcos21_dsp_c67.h"
#include "namco_c355spr.h"
#include "namcos21_3d.h"

View File

@ -5,7 +5,7 @@
#pragma once
#include "namco_c67.h"
#include "namco_dsp.h"
#include "namcos21_3d.h"
#include <algorithm>

View File

@ -1091,6 +1091,8 @@ Notes:
#include "emu.h"
#include "namcos22.h"
#include "namco_dsp.h"
#include "cpu/m68000/m68020.h"
#include "cpu/tms32025/tms32025.h"
#include "speaker.h"
@ -1166,15 +1168,15 @@ void namcos22_state::namcos22_sci_w(offs_t offset, u16 data)
void namcos22_state::syscon_irqlevel(offs_t offset, u8 data)
{
int line = 1 << offset;
int oldlevel = m_syscontrol[offset] & 7;
int newlevel = data & 7;
const int line = 1 << offset;
const int oldlevel = m_syscontrol[offset] & 7;
const int newlevel = data & 7;
m_irq_enabled &= ~line;
if (m_is_ss22)
m_irq_enabled |= (newlevel != 0) ? line : 0;
else
m_irq_enabled |= (data & 0x10) ? line : 0; // always sets 0x30 to enable
m_irq_enabled |= (BIT(data, 4)) ? line : 0; // always sets 0x30 to enable
// change active state
if (m_irq_state & line)
@ -1193,8 +1195,8 @@ void namcos22_state::syscon_irqlevel(offs_t offset, u8 data)
void namcos22_state::syscon_irqack(offs_t offset, u8 data)
{
int line = 1 << offset;
int level = m_syscontrol[offset] & 7;
const int line = 1 << offset;
const int level = m_syscontrol[offset] & 7;
m_irq_state &= ~line;
m_maincpu->set_input_line(level, CLEAR_LINE);
@ -1335,7 +1337,7 @@ void namcos22_state::ss22_syscon_w(offs_t offset, u8 data)
INTERRUPT_GEN_MEMBER(namcos22s_state::namcos22s_interrupt)
{
// vblank irq
int line = 1 << 0;
const int line = 1 << 0;
if (m_irq_enabled & line)
{
m_irq_state |= line;
@ -1490,7 +1492,7 @@ INTERRUPT_GEN_MEMBER(namcos22_state::namcos22_interrupt)
}
// vblank irq
int line = 1 << 4;
const int line = 1 << 4;
if (m_irq_enabled & line)
{
m_irq_state |= line;
@ -1587,7 +1589,7 @@ u16 namcos22_state::namcos22_keycus_r(offs_t offset)
return 0;
// pick a random number, but don't pick the same twice in a row
u16 old_rng = m_keycus_rng;
const u16 old_rng = m_keycus_rng;
do
{
m_keycus_rng = machine().rand() & 0xffff;
@ -1610,7 +1612,7 @@ void namcos22_state::namcos22_keycus_w(offs_t offset, u16 data, u16 mem_mask)
*/
u16 namcos22_state::namcos22_portbit_r(offs_t offset)
{
u16 ret = m_portbits[offset] & 1;
const u16 ret = m_portbits[offset] & 1;
if (!machine().side_effects_disabled())
m_portbits[offset] = m_portbits[offset] >> 1 | 0x8000;
@ -1801,7 +1803,7 @@ void namcos22_state::namcos22_am(address_map &map)
* Known chip type: TC55328P-25, N341256P-15
* Notes: connected bits = 0x00ffffff (24bit)
*/
map(0x70000000, 0x7001ffff).rw(FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram");
map(0x70000000, 0x7001ffff).rw(FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share(m_polygonram);
/**
* LED on PCB(?)
@ -1813,20 +1815,20 @@ void namcos22_state::namcos22_am(address_map &map)
* Mounted position: VIDEO 8P
* Known chip type: TC55328P-25
*/
map(0x90010000, 0x90017fff).ram().share("czram");
map(0x90010000, 0x90017fff).ram().share(m_czram);
/**
* C305 (Display Controller)
* Mounted position: VIDEO 7D (C305)
* Notes: Boot time check: 0x90020100 - 0x9002027f
*/
map(0x90020000, 0x90027fff).ram().share("video_mixer");
map(0x90020000, 0x90027fff).ram().share(m_mixer);
/**
* Mounted position: VIDEO 6B, 7B, 8B (near C305)
* Note: 0xff00-0xffff are for Tilemap (16 x 16)
*/
map(0x90028000, 0x9003ffff).ram().w(FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram");
map(0x90028000, 0x9003ffff).ram().w(FUNC(namcos22_state::namcos22_paletteram_w)).share(m_paletteram);
/**
* unknown (option)
@ -1837,7 +1839,7 @@ void namcos22_state::namcos22_am(address_map &map)
/**
* Tilemap PCG Memory
*/
map(0x90080000, 0x9009ffff).ram().w(FUNC(namcos22_state::namcos22_cgram_w)).share("cgram");
map(0x90080000, 0x9009ffff).ram().w(FUNC(namcos22_state::namcos22_cgram_w)).share(m_cgram);
/**
* Tilemap Memory (64 x 64)
@ -1845,7 +1847,7 @@ void namcos22_state::namcos22_am(address_map &map)
* Known chip type: HM511664 (64k x 16bit SRAM)
* Note: Self test: 90084000 - 9009ffff
*/
map(0x9009e000, 0x9009ffff).ram().w(FUNC(namcos22_state::namcos22_textram_w)).share("textram");
map(0x9009e000, 0x9009ffff).ram().w(FUNC(namcos22_state::namcos22_textram_w)).share(m_textram);
/**
* Tilemap Register
@ -1872,17 +1874,17 @@ void namcos22s_state::namcos22s_am(address_map &map)
map(0x810000, 0x81000f).rw(FUNC(namcos22s_state::namcos22s_czattr_r), FUNC(namcos22s_state::namcos22s_czattr_w));
map(0x810200, 0x8103ff).rw(FUNC(namcos22s_state::namcos22s_czram_r), FUNC(namcos22s_state::namcos22s_czram_w));
map(0x820000, 0x8202ff).nopw(); // leftover of old (non-super) video mixer device
map(0x824000, 0x8243ff).ram().share("video_mixer");
map(0x828000, 0x83ffff).ram().w(FUNC(namcos22s_state::namcos22_paletteram_w)).share("paletteram");
map(0x824000, 0x8243ff).ram().share(m_mixer);
map(0x828000, 0x83ffff).ram().w(FUNC(namcos22s_state::namcos22_paletteram_w)).share(m_paletteram);
map(0x860000, 0x860007).rw(FUNC(namcos22s_state::spotram_r), FUNC(namcos22s_state::spotram_w));
map(0x880000, 0x89ffff).ram().w(FUNC(namcos22s_state::namcos22_cgram_w)).share("cgram");
map(0x89e000, 0x89ffff).ram().w(FUNC(namcos22s_state::namcos22_textram_w)).share("textram");
map(0x880000, 0x89ffff).ram().w(FUNC(namcos22s_state::namcos22_cgram_w)).share(m_cgram);
map(0x89e000, 0x89ffff).ram().w(FUNC(namcos22s_state::namcos22_textram_w)).share(m_textram);
map(0x8a0000, 0x8a000f).rw(FUNC(namcos22s_state::namcos22_tilemapattr_r), FUNC(namcos22s_state::namcos22_tilemapattr_w));
map(0x900000, 0x90ffff).ram().share("vics_data");
map(0x940000, 0x94007f).rw(FUNC(namcos22s_state::namcos22s_vics_control_r), FUNC(namcos22s_state::namcos22s_vics_control_w)).share("vics_control");
map(0x980000, 0x9affff).ram().share("spriteram"); // C374
map(0x900000, 0x90ffff).ram().share(m_vics_data);
map(0x940000, 0x94007f).rw(FUNC(namcos22s_state::namcos22s_vics_control_r), FUNC(namcos22s_state::namcos22s_vics_control_w)).share(m_vics_control);
map(0x980000, 0x9affff).ram().share(m_spriteram); // C374
map(0xa04000, 0xa0bfff).rw(FUNC(namcos22s_state::namcos22_shared_r), FUNC(namcos22s_state::namcos22_shared_w)); // COM RAM
map(0xc00000, 0xc1ffff).rw(FUNC(namcos22s_state::namcos22_dspram_r), FUNC(namcos22s_state::namcos22_dspram_w)).share("polygonram");
map(0xc00000, 0xc1ffff).rw(FUNC(namcos22s_state::namcos22_dspram_r), FUNC(namcos22s_state::namcos22_dspram_w)).share(m_polygonram);
map(0xe00000, 0xe3ffff).ram(); // workram
}
@ -1935,7 +1937,7 @@ void alpines_state::rombank_w(u32 data)
void alpines_state::alpines_am(address_map &map)
{
namcos22s_am(map);
map(0x200000, 0x3fffff).bankr("rombank");
map(0x200000, 0x3fffff).bankr(m_rombank);
map(0x300000, 0x300003).w(FUNC(alpines_state::rombank_w));
}
@ -1987,7 +1989,7 @@ u16 namcos22_state::namcos22_dspram16_r(offs_t offset)
void namcos22_state::namcos22_dspram16_w(offs_t offset, u16 data, u16 mem_mask)
{
u32 value = m_polygonram[offset];
const u32 value = m_polygonram[offset];
u16 lo = value & 0xffff;
u16 hi = value >> 16;
@ -2078,7 +2080,11 @@ u16 namcos22_state::point_loword_r()
u16 namcos22_state::point_hiword_ir()
{
// high bit is unknown busy signal (ridgerac, ridgera2, raverace, cybrcomm)
return 0x8000 | (point_read(m_point_address++) >> 16 & 0x00ff);
const u16 ret = 0x8000 | ((point_read(m_point_address) >> 16) & 0x00ff);
if (!machine().side_effects_disabled())
m_point_address++;
return ret;
}
@ -2117,8 +2123,8 @@ void namcos22_state::pdp_handle_commands(u16 offs)
for (;;)
{
offs &= 0x7fff;
u16 start = offs;
u16 cmd = pdp_polygonram_read(offs++);
const u16 start = offs;
const u16 cmd = pdp_polygonram_read(offs++);
u32 srcAddr;
u32 dstAddr;
u16 numWords;
@ -2438,14 +2444,13 @@ void namcos22_state::master_render_device_w(u16 data)
void namcos22_state::master_dsp_program(address_map &map)
{
map(0x0000, 0x0fff).rom(); /* internal ROM (4k words) */
map(0x4000, 0x7fff).ram().share("masterextram").nopw();
map(0x4000, 0x7fff).ram().share(m_master_extram).nopw();
}
void namcos22_state::master_dsp_data(address_map &map)
{
map(0x1000, 0x3fff).ram();
map(0x4000, 0x7fff).ram().share("masterextram");
map(0x4000, 0x7fff).ram().share(m_master_extram);
map(0x8000, 0xffff).rw(FUNC(namcos22_state::namcos22_dspram16_r), FUNC(namcos22_state::namcos22_dspram16_w));
}
@ -2527,13 +2532,12 @@ void namcos22_state::dsp_slave_portb_w(u16 data)
void namcos22_state::slave_dsp_program(address_map &map)
{
map(0x0000, 0x0fff).rom(); /* internal ROM */
map(0x8000, 0x9fff).ram().share("slaveextram").nopw();
map(0x8000, 0x9fff).ram().share(m_slave_extram).nopw();
}
void namcos22_state::slave_dsp_data(address_map &map)
{
map(0x8000, 0x9fff).ram().share("slaveextram");
map(0x8000, 0x9fff).ram().share(m_slave_extram);
}
void namcos22_state::slave_dsp_io(address_map &map)
@ -2599,7 +2603,7 @@ u8 namcos22_state::iomcu_port4_s22_r()
void namcos22_state::mcu_s22_program(address_map &map)
{
map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
map(0x004000, 0x00bfff).ram().share("shareram");
map(0x004000, 0x00bfff).ram().share(m_shareram);
map(0x200000, 0x27ffff).rom().region("mcu", 0);
}
@ -2613,7 +2617,7 @@ void namcos22_state::iomcu_s22_program(address_map &map)
TIMER_DEVICE_CALLBACK_MEMBER(namcos22s_state::mcu_irq)
{
int scanline = param;
const int scanline = param;
/* TODO: real sources of these */
if (scanline == 480)
@ -2696,7 +2700,7 @@ void namcos22s_state::mcu_port4_w(u8 data)
for (int i = 0; i < 8; i++)
m_mcu_out[i] = BIT(m_mcu_outdata, i);
machine().bookkeeping().coin_counter_w(0, m_mcu_outdata & 1);
machine().bookkeeping().coin_counter_w(0, BIT(m_mcu_outdata, 0));
}
if (~m_mcu_iocontrol & data & 0x40)
{
@ -2720,7 +2724,7 @@ void namcos22s_state::mcu_port5_w(u8 data)
u8 namcos22s_state::mcu_port5_r()
{
u16 inputs = m_inputs->read();
return (m_mcu_iocontrol & 8) ? inputs & 0xff : inputs >> 8;
return BIT(m_mcu_iocontrol, 3) ? (inputs & 0xff) : (inputs >> 8);
}
void namcos22s_state::mcu_port6_w(u8 data)
@ -2743,12 +2747,12 @@ u16 namcos22s_state::mcu_adc_r()
void namcos22s_state::mcu_program(address_map &map)
{
map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write));
map(0x004000, 0x00bfff).ram().share("shareram");
map(0x004000, 0x00bfff).ram().share(m_shareram);
map(0x00c000, 0x00ffff).rom().region("mcu", 0xc000);
map(0x200000, 0x27ffff).rom().region("mcu", 0);
map(0x300000, 0x300001).nopr(); // ? (cybrcycc, alpines - writes data to RAM, but then never reads from there)
map(0x301000, 0x301001).nopw(); // watchdog? LEDs?
map(0x308000, 0x308003).w("mb87078", FUNC(mb87078_device::data_w)).umask16(0x00ff);
map(0x308000, 0x308003).w(m_mb87078, FUNC(mb87078_device::data_w)).umask16(0x00ff);
}
@ -2759,12 +2763,12 @@ void namcos22s_state::mcu_program(address_map &map)
/* TODO: REMOVE (THIS IS HANDLED BY "IOMCU") */
void namcos22_state::handle_coinage(u16 flags)
{
int coin_state = (flags & 0x1000) >> 12 | (flags & 0x0200) >> 8;
const int coin_state = (flags & 0x1000) >> 12 | (flags & 0x0200) >> 8;
if (!(coin_state & 1) && (m_old_coin_state & 1))
if (BIT(~coin_state, 0) && BIT(m_old_coin_state, 0))
m_credits1++;
if (!(coin_state & 2) && (m_old_coin_state & 2))
if (BIT(~coin_state, 1) && BIT(m_old_coin_state, 1))
m_credits2++;
m_old_coin_state = coin_state;
@ -2776,7 +2780,7 @@ void namcos22_state::handle_driving_io()
{
if (m_syscontrol[0x18] != 0)
{
u16 flags = m_inputs->read();
const u16 flags = m_inputs->read();
u16 steer = m_adc_ports[0]->read();
u16 gas = m_adc_ports[1]->read();
u16 brake = m_adc_ports[2]->read();
@ -2820,7 +2824,7 @@ void namcos22_state::handle_cybrcomm_io()
{
if (m_syscontrol[0x18] != 0)
{
u16 flags = m_inputs->read();
const u16 flags = m_inputs->read();
m_shareram[0x030/2] = flags;
m_shareram[0x032/2] = m_adc_ports[0]->read() * 0x10;
m_shareram[0x034/2] = m_adc_ports[1]->read() * 0x10;
@ -2852,7 +2856,7 @@ void alpine_state::alpine_mcu_port4_w(u8 data)
m_motor_timer->adjust(attotime::from_msec(500), 1);
}
}
else if (m_mcu_outdata & 4)
else if (BIT(m_mcu_outdata, 2))
{
if (m_motor_status == 1)
{
@ -2878,7 +2882,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(propcycl_state::pedal_interrupt)
TIMER_DEVICE_CALLBACK_MEMBER(propcycl_state::pedal_update)
{
// arbitrary timer for reading optical pedal
int pedal = m_opt[0]->read() - 0x80;
const int pedal = m_opt[0]->read() - 0x80;
if (pedal != 0)
{
@ -3575,44 +3579,9 @@ INPUT_PORTS_END
* Sprites are rendered as part of the polygon draw list, based on a per-sprite Z attribute.
* Each sprite has explicit placement/color/zoom controls.
*/
static const gfx_layout sprite_layout =
{
32,32,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{
0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8,
8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8,
16*8,17*8,18*8,19*8,20*8,21*8,22*8,23*8,
24*8,25*8,26*8,27*8,28*8,29*8,30*8,31*8
},
{
0*32*8,1*32*8,2*32*8,3*32*8,4*32*8,5*32*8,6*32*8,7*32*8,
8*32*8,9*32*8,10*32*8,11*32*8,12*32*8,13*32*8,14*32*8,15*32*8,
16*32*8,17*32*8,18*32*8,19*32*8,20*32*8,21*32*8,22*32*8,23*32*8,
24*32*8,25*32*8,26*32*8,27*32*8,28*32*8,29*32*8,30*32*8,31*32*8
},
32*32*8
};
static GFXLAYOUT_RAW(sprite_layout, 32, 32, 32*8, 32*32*8)
static const gfx_layout texture_tile_layout =
{
16,16,
RGN_FRAC(1,1),
8,
{ 0,1,2,3,4,5,6,7 },
{
0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8
},
{
0*16*8,1*16*8,2*16*8,3*16*8,4*16*8,5*16*8,6*16*8,7*16*8,
8*16*8,9*16*8,10*16*8,11*16*8,12*16*8,13*16*8,14*16*8,15*16*8
},
16*16*8
};
/* text layer uses a set of 16x16x8bpp tiles defined in RAM */
/* text layer uses a set of 16x16x4bpp tiles defined in RAM */
#define XOR(a) WORD2_XOR_BE(a)
static const gfx_layout namcos22_cg_layout =
{
@ -3629,14 +3598,14 @@ static const gfx_layout namcos22_cg_layout =
#undef XOR
static GFXDECODE_START( gfx_namcos22 )
GFXDECODE_ENTRY( nullptr, 0, namcos22_cg_layout, 0, 0x800 )
GFXDECODE_ENTRY( "textile", 0, texture_tile_layout, 0, 0x80 )
GFXDECODE_ENTRY( nullptr, 0, namcos22_cg_layout, 0, 0x800 )
GFXDECODE_ENTRY( "textile", 0, gfx_16x16x8_raw, 0, 0x80 )
GFXDECODE_END
static GFXDECODE_START( gfx_super )
GFXDECODE_ENTRY( nullptr, 0, namcos22_cg_layout, 0, 0x800 )
GFXDECODE_ENTRY( "textile", 0, texture_tile_layout, 0, 0x80 )
GFXDECODE_ENTRY( "sprite", 0, sprite_layout, 0, 0x80 )
GFXDECODE_ENTRY( nullptr, 0, namcos22_cg_layout, 0, 0x800 )
GFXDECODE_ENTRY( "textile", 0, gfx_16x16x8_raw, 0, 0x80 )
GFXDECODE_ENTRY( "sprite", 0, sprite_layout, 0, 0x80 )
GFXDECODE_END
@ -3780,7 +3749,7 @@ void namcos22_state::namcos22(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &namcos22_state::namcos22_am);
m_maincpu->set_vblank_int("screen", FUNC(namcos22_state::namcos22_interrupt));
tms32025_device& master(TMS32025(config, m_master, 40_MHz_XTAL));
namco_c71_device& master(NAMCO_C71(config, m_master, 40_MHz_XTAL));
master.set_addrmap(AS_PROGRAM, &namcos22_state::master_dsp_program);
master.set_addrmap(AS_DATA, &namcos22_state::master_dsp_data);
master.set_addrmap(AS_IO, &namcos22_state::master_dsp_io);
@ -3792,7 +3761,7 @@ void namcos22_state::namcos22(machine_config &config)
master.set_vblank_int("screen", FUNC(namcos22_state::dsp_vblank_irq));
TIMER(config, "dsp_serial").configure_periodic(FUNC(namcos22_state::dsp_serial_pulse), attotime::from_hz(SERIAL_IO_PERIOD));
tms32025_device& slave(TMS32025(config, m_slave, 40_MHz_XTAL));
namco_c71_device& slave(NAMCO_C71(config, m_slave, 40_MHz_XTAL));
slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program);
slave.set_addrmap(AS_DATA, &namcos22_state::slave_dsp_data);
slave.set_addrmap(AS_IO, &namcos22_state::slave_dsp_io);
@ -3964,12 +3933,6 @@ ROM_START( ridgerac )
ROM_LOAD32_BYTE( "rr2_prgumb.8d", 0x00001, 0x80000, CRC(64c3aff1) SHA1(46b30ee0601a0a7887d29bc94d595f50a5a812d6) )
ROM_LOAD32_BYTE( "rr2_prguub.6d", 0x00000, 0x80000, CRC(e6ff0b8d) SHA1(a02ffd2d3dc0a2c4a5665303c8021fd99a50eb8e) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rr1data.6r", 0, 0x080000, CRC(18f5f748) SHA1(e0d149a66de36156edd9b55f604c9a9801aaefa8) )
@ -4010,12 +3973,6 @@ ROM_START( ridgeraca )
ROM_LOAD32_BYTE( "rr2_prgum.8d", 0x00001, 0x80000, CRC(705ef78a) SHA1(881903413e66d6fd83d46eb18c4e1230531832ae) )
ROM_LOAD32_BYTE( "rr2_prguu.6d", 0x00000, 0x80000, CRC(a79e456f) SHA1(049c596e01e53e3a401c5c4260517f170688d387) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rr1data.6r", 0, 0x080000, CRC(18f5f748) SHA1(e0d149a66de36156edd9b55f604c9a9801aaefa8) )
@ -4056,12 +4013,6 @@ ROM_START( ridgeracb )
ROM_LOAD32_BYTE( "rr3_prgumb.8d", 0x00001, 0x80000, CRC(e160f63f) SHA1(9b4b7a13eb4bc19fcb53daedb87e4945c20a1b8e) )
ROM_LOAD32_BYTE( "rr3_prguub.6d", 0x00000, 0x80000, CRC(f07c78c0) SHA1(dbed76d868b761711faf5b6e11f2c9affb91db5d) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rr1data.6r", 0, 0x080000, CRC(18f5f748) SHA1(e0d149a66de36156edd9b55f604c9a9801aaefa8) )
@ -4109,12 +4060,6 @@ ROM_START( ridgeracc )
ROM_LOAD32_BYTE( "rr3_prgum-3s.8d", 0x000001, 0x080000, CRC(8fda06ac) SHA1(7e9adba198eb0941100cda64ecedac504f6ac696) )
ROM_LOAD32_BYTE( "rr3_prguu-3s.6d", 0x000000, 0x080000, CRC(868398df) SHA1(422e0f9884904b0df93fcacd1468b8da0458eb8e) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rr1data.6r", 0, 0x080000, CRC(18f5f748) SHA1(e0d149a66de36156edd9b55f604c9a9801aaefa8) )
@ -4155,12 +4100,6 @@ ROM_START( ridgeracj )
ROM_LOAD32_BYTE( "rr1_prgum.8d", 0x00001, 0x80000, CRC(705ef78a) SHA1(881903413e66d6fd83d46eb18c4e1230531832ae) )
ROM_LOAD32_BYTE( "rr1_prguu.6d", 0x00000, 0x80000, CRC(c1371f96) SHA1(a78e0bf6c147c034487a85efa0a8470f4e8f4bf0) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rr1data.6r", 0, 0x080000, CRC(18f5f748) SHA1(e0d149a66de36156edd9b55f604c9a9801aaefa8) )
@ -4201,12 +4140,6 @@ ROM_START( ridgeracf )
ROM_LOAD32_BYTE( "rrf2_prgum.8d", 0x00001, 0x80000, CRC(d7e0aa16) SHA1(cab4578cdd3af84b865114be4105cfdc2e7abf36) )
ROM_LOAD32_BYTE( "rrf2_prguu.6d", 0x00000, 0x80000, CRC(12c808bb) SHA1(64e84686d4ceb8145b9a59b75d0dced830884c9d) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rrf1data.6r", 0, 0x080000, CRC(ce3c6ed6) SHA1(23e033364bc967c10c49fd1d5413dda837670633) )
@ -4249,12 +4182,6 @@ ROM_START( ridgera2 )
ROM_LOAD32_BYTE( "rrs2_prgum.8d", 0x00001, 0x80000, CRC(78c360b6) SHA1(8ee502291359cbc8aef39145c8fe7538311cc58f) ) // The "World" set's ROMs are NOT marked as Rev.B even though
ROM_LOAD32_BYTE( "rrs2_prguu.6d", 0x00000, 0x80000, CRC(60d6d4a4) SHA1(759762a9b7d7aee7ee1b44b1721e5356898aa7ea) ) // they are clearly based off of the Japanese Rev.B ROM set.
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rrs1data.6r", 0, 0x080000, CRC(b7063aa8) SHA1(08ff689e8dd529b91eee423c93f084945c6de417) )
@ -4295,12 +4222,6 @@ ROM_START( ridgera2j )
ROM_LOAD32_BYTE( "rrs1_prgumb.8d", 0x00001, 0x80000, CRC(78c360b6) SHA1(8ee502291359cbc8aef39145c8fe7538311cc58f) )
ROM_LOAD32_BYTE( "rrs1_prguub.6d", 0x00000, 0x80000, CRC(60d6d4a4) SHA1(759762a9b7d7aee7ee1b44b1721e5356898aa7ea) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rrs1data.6r", 0, 0x080000, CRC(b7063aa8) SHA1(08ff689e8dd529b91eee423c93f084945c6de417) )
@ -4341,12 +4262,6 @@ ROM_START( ridgera2ja )
ROM_LOAD32_BYTE( "rrs1_prgum.8d", 0x00001, 0x80000, CRC(93259fb0) SHA1(c29787e873797a003db27adbd20d7b852e26d8c6) )
ROM_LOAD32_BYTE( "rrs1_prguu.6d", 0x00000, 0x80000, CRC(31cdefe8) SHA1(ae836d389bed43dd156eb4cf3e97b6f1ad68181e) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rrs1data.6r", 0, 0x080000, CRC(b7063aa8) SHA1(08ff689e8dd529b91eee423c93f084945c6de417) )
@ -4387,12 +4302,6 @@ ROM_START( ridgera28 )
ROM_LOAD32_BYTE( "rrs_8_prgum.8d", 0x00001, 0x80000, CRC(720c854d) SHA1(9c8e2868dd7ef425fdc6f701968b9713bb12b56c) ) // Has extra PCG TEST in service menu
ROM_LOAD32_BYTE( "rrs_8_prguu.6d", 0x00000, 0x80000, CRC(fb4b7e8f) SHA1(1919803dbe35a88bbb6b608d0c3ab8daea31f580) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rrs_8_data.6r", 0, 0x080000, CRC(8bf75a96) SHA1(987d24f2195eb5a84c10c68584404556ef1dfe88) ) // this DATA rom unique to this set
@ -4434,12 +4343,6 @@ ROM_START( raverace )
ROM_LOAD32_BYTE( "rv2_prgumb.8d", 0x00001, 0x80000, CRC(6414a800) SHA1(c278ff644909d12a43ba6fc2bf8d2092e469c3e6) )
ROM_LOAD32_BYTE( "rv2_prguub.6d", 0x00000, 0x80000, CRC(a9f18714) SHA1(8e7b17749d151f92020f68d1ac06003cf1f5c573) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rv1data.6r", 0, 0x080000, CRC(d358ec20) SHA1(140c513349240417bb546dd2d151f3666b818e91) )
@ -4493,12 +4396,6 @@ ROM_START( raveracej )
ROM_LOAD32_BYTE( "rv1_prgumb.8d", 0x00001, 0x80000, CRC(375fabcf) SHA1(448e3db3e3fab8c7c27e214ab5a5fa84e5f84366) )
ROM_LOAD32_BYTE( "rv1_prguub.6d", 0x00000, 0x80000, CRC(92f834d6) SHA1(028368790f0293fcfea5c7b12f7f315e27a62f77) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rv1data.6r", 0, 0x080000, CRC(d358ec20) SHA1(140c513349240417bb546dd2d151f3666b818e91) )
@ -4552,12 +4449,6 @@ ROM_START( raveraceja )
ROM_LOAD32_BYTE( "rv1_prgum.8d", 0x00001, 0x80000, CRC(28e503e3) SHA1(a3071461f840f28c65c660de215c73f812f356b3) )
ROM_LOAD32_BYTE( "rv1_prguu.6d", 0x00000, 0x80000, CRC(c47d9ff4) SHA1(4d7c4ac4151a3b306e7277937add8eee26e561a6) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "rv1data.6r", 0, 0x080000, CRC(d358ec20) SHA1(140c513349240417bb546dd2d151f3666b818e91) )
@ -4612,12 +4503,6 @@ ROM_START( cybrcomm )
ROM_LOAD32_BYTE( "cy1prgum.8d", 0x00001, 0x80000, CRC(c9c4a921) SHA1(76a52461165a8bd8d984a34063fbeb4cb73624af) )
ROM_LOAD32_BYTE( "cy1prguu.6d", 0x00000, 0x80000, CRC(5f22975b) SHA1(a1a5cb66358d64a3c564b912f2eeafa182786b1e) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "cy1data.6r", 0x00000, 0x20000, CRC(10d0005b) SHA1(10508eeaf74d24a611b44cd3bb12417ceb78904f) )
ROM_RELOAD( 0x20000, 0x20000)
@ -4670,12 +4555,6 @@ ROM_START( acedrive )
ROM_LOAD32_BYTE( "ad2_prgum.8d", 0x00001, 0x80000, CRC(d5042d6e) SHA1(9ae93e7ea7126302831a879ba0aadcb6e5b842f5) )
ROM_LOAD32_BYTE( "ad2_prguu.6d", 0x00000, 0x80000, CRC(86d4661d) SHA1(2a1529a51ca5466994a2d0d84c7aab13cef95a11) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "ad1data.6r", 0, 0x080000, CRC(82024f74) SHA1(711ab0c4f027716aeab18e3a5d3d06fa82af8007) )
@ -4717,12 +4596,6 @@ ROM_START( victlap )
ROM_LOAD32_BYTE( "adv2_prgumb.8d", 0x00001, 0x80000, CRC(ccad3e90) SHA1(16ccddf5114f1847808b0c5655aadd8ac040ff4e) )
ROM_LOAD32_BYTE( "adv2_prguub.6d", 0x00000, 0x80000, CRC(f3fffc41) SHA1(277cc5b24a094e4adff41d6d35ffc111bc8fef27) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "adv1data.6r", 0, 0x080000, CRC(10eecdb4) SHA1(aaedeed166614e6670e765e0d7e4e9eb5f38ad10) )
@ -4770,12 +4643,6 @@ ROM_START( victlapa )
ROM_LOAD32_BYTE( "adv2_prgum.8d", 0x00001, 0x80000, CRC(af67f2fb) SHA1(f391843ee0d053e33660c60e3718871142d932f2) )
ROM_LOAD32_BYTE( "adv2_prguu.6d", 0x00000, 0x80000, CRC(b60e5d2b) SHA1(f5740615c2864c5c6433275cf4388bda5122b7a7) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "adv1data.6r", 0, 0x080000, CRC(10eecdb4) SHA1(aaedeed166614e6670e765e0d7e4e9eb5f38ad10) )
@ -4823,12 +4690,6 @@ ROM_START( victlapj )
ROM_LOAD32_BYTE( "adv1_prgumc.8d", 0x00001, 0x80000, CRC(464388d9) SHA1(afad780532aff175b0a547392e80c9f01efbf9d9) )
ROM_LOAD32_BYTE( "adv1_prguuc.6d", 0x00000, 0x80000, CRC(ad3cb5f9) SHA1(9a62043f60de4d4c82c5bec169ec975add271367) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x80000, "mcu", 0 ) /* sound data */
ROM_LOAD( "adv1data.6r", 0, 0x080000, CRC(10eecdb4) SHA1(aaedeed166614e6670e765e0d7e4e9eb5f38ad10) )
@ -4877,12 +4738,6 @@ ROM_START( propcycl )
ROM_LOAD32_BYTE( "pr2ver-a.3", 0x00001, 0x100000, CRC(74bf4b74) SHA1(02713aa07238cc9e30163ae24d12c034aa972ff3) )
ROM_LOAD32_BYTE( "pr2ver-a.4", 0x00000, 0x100000, CRC(cf4d5638) SHA1(2ddd00d6ec3b85c234820507650d201e176c94a2) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* SS22-BIOS ver1.41 */
ROM_LOAD( "pr1data.8k", 0, 0x080000, CRC(2e5767a4) SHA1(390bf05c90044d841fe2dd4a427177fa1570b9a6) )
@ -4938,12 +4793,6 @@ ROM_START( propcyclj )
ROM_LOAD32_BYTE( "pr1ver-a.3", 0x00001, 0x100000, CRC(77f957d2) SHA1(c8a62464f427cc858d9ea33446a8648e9171ead9) ) /* Fujitsu MBM29F080 flash ROMs at ROM3 & ROM4 on the upperside */
ROM_LOAD32_BYTE( "pr1ver-a.4", 0x00000, 0x100000, CRC(7b6844e4) SHA1(1b1c03d258c4a6d95ae227de7741f29b7d9e28d8) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* SS22-BIOS ver1.41 */
ROM_LOAD( "pr1data.8k", 0, 0x080000, CRC(2e5767a4) SHA1(390bf05c90044d841fe2dd4a427177fa1570b9a6) )
@ -4989,12 +4838,6 @@ ROM_START( airco22b )
ROM_LOAD32_BYTE( "acs1verb.3", 0x00001, 0x100000, CRC(71738e67) SHA1(eb8c66dedbeff911b6166ebbda466fb9656ef0fb) )
ROM_LOAD32_BYTE( "acs1verb.4", 0x00000, 0x100000, CRC(3b193add) SHA1(5e3bca13905bfa3a2947f4f16ca01878b0a14a3a) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.20 */
ROM_LOAD( "acs1data.8k", 0, 0x080000, CRC(33824bc9) SHA1(80ec63883770e5eec1f5f1ddc16a85ef8f22a48b) )
@ -5043,12 +4886,6 @@ ROM_START( cybrcycc )
ROM_LOAD32_BYTE( "cb2ver-c.3", 0x00001, 0x100000, CRC(47e6306c) SHA1(39d6fc2c3cb9b4c9d3569cedb79b916a90537115) )
ROM_LOAD32_BYTE( "cb2ver-c.4", 0x00000, 0x100000, CRC(398426e4) SHA1(f20cd4892420e7b978baa51c9129b362422a3895) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "cb1datab.8k", 0, 0x080000, CRC(e2404221) SHA1(b88810dd45aee8a5475c30806cdfded25fa14e0e) )
@ -5097,12 +4934,6 @@ ROM_START( cybrcyccj )
ROM_LOAD32_BYTE( "cb1ver-c.3", 0x00001, 0x100000, CRC(97fa2f39) SHA1(865e016553f733430aac70809b21a3b2914bb638) )
ROM_LOAD32_BYTE( "cb1ver-c.4", 0x00000, 0x100000, CRC(529bd227) SHA1(6d7979643d015ae388a4a93b9dccc7f43f93baff) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "cb1datab.8k", 0, 0x080000, CRC(e2404221) SHA1(b88810dd45aee8a5475c30806cdfded25fa14e0e) )
@ -5152,12 +4983,6 @@ ROM_START( alpinerd )
ROM_LOAD32_BYTE( "ar2ver-d.3", 0x00001, 0x100000, CRC(9beffe6a) SHA1(d8efd1e3829d32bb06537d7cecb59f8df9b6d663) )
ROM_LOAD32_BYTE( "ar2ver-d.4", 0x00000, 0x100000, CRC(1f3f1134) SHA1(0afa78444d1463d214f1afd7ec500af76d567489) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ar1datab.8k", 0, 0x080000, CRC(c26306f8) SHA1(6d8d993c076d5ced523143a86bd0938b3794478d) )
@ -5207,12 +5032,6 @@ ROM_START( alpinerc )
ROM_LOAD32_BYTE( "ar2ver-c.3", 0x00001, 0x100000, CRC(acb3003b) SHA1(ea0cbf3a1607b06b108df051f38fec1f214f42d2) )
ROM_LOAD32_BYTE( "ar2ver-c.4", 0x00000, 0x100000, CRC(800acc21) SHA1(41d26766da2db46954a2351bbc50aea94bc1d564) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ar1datab.8k", 0, 0x080000, CRC(c26306f8) SHA1(6d8d993c076d5ced523143a86bd0938b3794478d) )
@ -5260,12 +5079,6 @@ ROM_START( alpinerjc )
ROM_LOAD32_WORD_SWAP( "ar1ver-c.1", 0x00002, 0x200000, CRC(8a87dc27) SHA1(ea3675667dce4c184da61dbb204e39da7ae93e82) ) /* SYSTEM SUPER22 MPM(F16) PCB stickered AR1 VER.C */
ROM_LOAD32_WORD_SWAP( "ar1ver-c.2", 0x00000, 0x200000, CRC(5f4f5615) SHA1(ff8f818a4017ee8546037a10522f2cf1de6dc7cd) ) /* intel E28F016SA flash ROMs at ROM1 & ROM2 */
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ar1datab.8k", 0, 0x080000, CRC(c26306f8) SHA1(6d8d993c076d5ced523143a86bd0938b3794478d) )
@ -5316,12 +5129,6 @@ ROM_START( alpinr2b )
ROM_LOAD32_BYTE( "ars2ver-b.4", 0x000002, 0x200000, CRC(610e49c2) SHA1(433c6d2216551bac31584306f748af1c912c3b07) ) // "
ROM_LOAD32_BYTE( "ars2ver-b.5", 0x000000, 0x200000, CRC(7f3517b0) SHA1(3e6ba1a51bf235f40f933aae1f00638b88bba522) ) // "
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ars2data.8k", 0x000000, 0x080000, CRC(29b36dcb) SHA1(70fde130c11789c822829493a70ecefb077c0c15) )
@ -5369,12 +5176,6 @@ ROM_START( alpinr2a )
ROM_LOAD32_BYTE( "ars2ver-a.4", 0x000001, 0x200000, CRC(9e9d771d) SHA1(6fb983e3f4f8233544667b1bbf87864e4fb8698c) ) // "
ROM_LOAD32_BYTE( "ars2ver-a.5", 0x000000, 0x200000, CRC(e93c7771) SHA1(305f35488a55be1b845702df972bba8334c0726c) ) // "
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ars2data.8k", 0x000000, 0x080000, CRC(29b36dcb) SHA1(70fde130c11789c822829493a70ecefb077c0c15) )
@ -5423,12 +5224,6 @@ ROM_START( alpines )
ROM_LOAD32_BYTE( "af2ver-a_um.ic4", 0x000001, 0x200000, CRC(c9095af3) SHA1(4981c8c84057373ef678e51fe72ebac40d1a0cf4) )
ROM_LOAD32_BYTE( "af2ver-a_uu.ic5", 0x000000, 0x200000, CRC(54ee33a1) SHA1(0eaa8707ab13a0a66551f61a08986c98f5c9e446) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "af1data.8k", 0x000000, 0x080000, CRC(ef13ebe8) SHA1(5d3f697994d4b5b19ee7fea1e2aef8e39449b68e) )
@ -5465,12 +5260,6 @@ ROM_START( alpinesa ) // only 4 different DWORDs at 0x700, it's either a serial
ROM_LOAD32_BYTE( "af2ver-a_um.ic4", 0x000001, 0x200000, CRC(e7e057e3) SHA1(436e4645ba0e8734c0e25c7c22489bf97066944d) )
ROM_LOAD32_BYTE( "af2ver-a_uu.ic5", 0x000000, 0x200000, CRC(3eee10a2) SHA1(6e52c5132581e7fe69a257195af5bc9f3a3efe25) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "af1data.8k", 0x000000, 0x080000, CRC(ef13ebe8) SHA1(5d3f697994d4b5b19ee7fea1e2aef8e39449b68e) )
@ -5508,12 +5297,6 @@ ROM_START( timecris )
ROM_LOAD32_BYTE( "ts2ver-b.3", 0x00001, 0x100000, CRC(9f4ced33) SHA1(32768b5ff263a9e3d11b7b36f6b2d7e951e07419) )
ROM_LOAD32_BYTE( "ts2ver-b.4", 0x00000, 0x100000, CRC(3e0cfb38) SHA1(3c56342bd73b1617ea579a0d53e19d59bb04fd99) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ts1data.8k", 0, 0x080000, CRC(e68aa973) SHA1(663e80d249be5d5841139d98a9d72e2396851272) )
@ -5559,12 +5342,6 @@ ROM_START( timecrisa )
ROM_LOAD32_WORD_SWAP( "ts2ver-a.1", 0x00002, 0x200000, CRC(d57eb74b) SHA1(536dd9305d0ac44110c575776333310cc57b5242) )
ROM_LOAD32_WORD_SWAP( "ts2ver-a.2", 0x00000, 0x200000, CRC(671588af) SHA1(63f992c6795521fd263a0ebf230f8dc88cbfc443) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.30 */
ROM_LOAD( "ts1data.8k", 0, 0x080000, CRC(e68aa973) SHA1(663e80d249be5d5841139d98a9d72e2396851272) )
@ -5613,12 +5390,6 @@ ROM_START( tokyowar )
ROM_LOAD32_BYTE( "tw2ver-a.3", 0x000001, 0x100000, CRC(7d42c516) SHA1(28c1596dd55c15207bbb41a8b9a5abc97abc2bc8) )
ROM_LOAD32_BYTE( "tw2ver-a.4", 0x000000, 0x100000, CRC(b904ed16) SHA1(773e11536e1b3fe4971608a63a8e6eca702f8667) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "tw1data.8k", 0x000000, 0x080000, CRC(bd046e4b) SHA1(162bc4ab69959ccab49fd69de291d34d472fb1c8) )
@ -5670,12 +5441,6 @@ ROM_START( tokyowarj )
ROM_LOAD32_BYTE( "tw1ver-a.3", 0x000001, 0x100000, CRC(17146e7f) SHA1(0fd270152eef1966e0960531554cbe115668205f) )
ROM_LOAD32_BYTE( "tw1ver-a.4", 0x000000, 0x100000, CRC(12698e2a) SHA1(51761ea96cb458f56d832cd233afbc374ded7f20) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "tw1data.8k", 0x000000, 0x080000, CRC(bd046e4b) SHA1(162bc4ab69959ccab49fd69de291d34d472fb1c8) )
@ -5728,12 +5493,6 @@ ROM_START( dirtdash )
ROM_LOAD32_BYTE( "dt2verb.rom3", 0x000001, 0x100000, NO_DUMP ) // has failed internally, reads always 0x00 filled
ROM_LOAD32_BYTE( "dt2verb.rom4", 0x000000, 0x100000, CRC(9a80fc82) SHA1(81a14749a39d213db58527f7a98d48dbfca1c153) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "dt1dataa.8k", 0x000000, 0x080000, CRC(9bcdea21) SHA1(26ae025cf746d3a703a82495eb2bb515b828a650) )
@ -5776,12 +5535,6 @@ ROM_START( dirtdasha )
ROM_LOAD32_WORD_SWAP( "dt2vera.1", 0x000002, 0x200000, CRC(402a3d73) SHA1(009b57ed0ea228ccedb139d945b9eaf2a36e2502) )
ROM_LOAD32_WORD_SWAP( "dt2vera.2", 0x000000, 0x200000, CRC(66ed140d) SHA1(a472fdc7b6aaeb4b3643ecdafd32fa665e7c7aa2) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "dt1dataa.8k", 0x000000, 0x080000, CRC(9bcdea21) SHA1(26ae025cf746d3a703a82495eb2bb515b828a650) )
@ -5824,12 +5577,6 @@ ROM_START( dirtdashj )
ROM_LOAD32_WORD_SWAP( "dt1vera.1", 0x000002, 0x200000, CRC(057b280b) SHA1(e7f038c1b3c7520d32c9962cc00104bcf65d60f6) )
ROM_LOAD32_WORD_SWAP( "dt1vera.2", 0x000000, 0x200000, CRC(82f822d2) SHA1(170cf326903fe7b4e203b181124de609826b8e1f) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "dt1dataa.8k", 0x000000, 0x080000, CRC(9bcdea21) SHA1(26ae025cf746d3a703a82495eb2bb515b828a650) )
@ -5875,12 +5622,6 @@ ROM_START( aquajet )
ROM_LOAD32_BYTE( "aj2ver-b.3", 0x000001, 0x100000, CRC(ef6ebcf7) SHA1(358973b678b9a3065e945fb589af16e8102d437b) )
ROM_LOAD32_BYTE( "aj2ver-b.4", 0x000000, 0x100000, CRC(7799b909) SHA1(e40005f96f51742b2778605926b8184c9b2c1ad2) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "aj1data.8k", 0x000000, 0x080000, CRC(52bcc6d5) SHA1(25319ea6db35cc9bdcb39cc83d597a2a9f1690f3) )
@ -5933,12 +5674,6 @@ ROM_START( adillor )
ROM_LOAD32_BYTE( "am2vera.rom3", 0x000001, 0x100000, CRC(80e9435a) SHA1(d92f6ec607e628270ceb3e09c1980d6e13bd88a7) )
ROM_LOAD32_BYTE( "am2vera.rom4", 0x000000, 0x100000, CRC(1e3a6032) SHA1(f4c6539a78f94ae2c240aeb8f85712a612933e8c) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "am1data.8k", 0x000000, 0x080000, CRC(3c176589) SHA1(fabf8debfa118893449f6086986fd1aa012daf27) )
@ -5998,12 +5733,6 @@ ROM_START( adillorj )
ROM_LOAD32_BYTE( "am1vera.rom3", 0x000001, 0x100000, CRC(af0983bc) SHA1(136d2e14485864e20d7a6947d640577b8a85243c) )
ROM_LOAD32_BYTE( "am1vera.rom4", 0x000000, 0x100000, CRC(4424047f) SHA1(d0ca736c085db58d33b603813b7a54c8ce995bac) )
ROM_REGION( 0x10000*2, "master", 0 ) /* Master DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION( 0x10000*2, "slave", 0 ) /* Slave DSP */
ROM_LOAD16_WORD( "c71.bin", 0,0x1000*2, CRC(47c623ab) SHA1(e363ac50f5556f83308d4cc191b455e9b62bcfc8) )
ROM_REGION16_LE( 0x080000, "mcu", 0 ) /* S22-BIOS ver1.41 */
ROM_LOAD( "am1data.8k", 0x000000, 0x080000, CRC(3c176589) SHA1(fabf8debfa118893449f6086986fd1aa012daf27) )

View File

@ -90,7 +90,7 @@ struct namcos22_scenenode
int cz_type;
int cz_adjust;
int objectflags;
int direct;
bool direct;
namcos22_polyvertex v[4];
} quad;
@ -389,7 +389,7 @@ protected:
void draw_direct_poly(const u16 *src);
void draw_polygons();
void draw_sprites();
void draw_sprite_group(const u32 *src, const u32 *attr, int num_sprites, int deltax, int deltay, int y_lowres);
void draw_sprite_group(const u32 *src, const u32 *attr, int num_sprites, int deltax, int deltay, bool y_lowres);
void namcos22_mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void install_c74_speedup();
@ -483,7 +483,7 @@ protected:
std::unique_ptr<u8[]> m_dirtypal;
std::unique_ptr<bitmap_ind16> m_mix_bitmap;
tilemap_t *m_bgtilemap;
tilemap_t *m_text_tilemap;
u16 m_tilemapattr[8] = { };
u16 m_rowscroll[480] = { };
u16 m_lastrow = 0;

View File

@ -42,13 +42,13 @@ void namcos22_renderer::renderscanline_poly(int32_t scanline, const extent_t &ex
float du = extent.param[1].dpdx;
float dv = extent.param[2].dpdx;
float di = extent.param[3].dpdx;
int bn = extra.bn * 0x1000;
const int bn = extra.bn * 0x1000;
const pen_t *pens = extra.pens;
int fogfactor = 0xff - extra.fogfactor;
bool shade_enabled = extra.shade_enabled;
bool texture_enabled = extra.texture_enabled;
const int fogfactor = 0xff - extra.fogfactor;
const bool shade_enabled = extra.shade_enabled;
const bool texture_enabled = extra.texture_enabled;
rgbaint_t fogcolor = extra.fogcolor;
int prioverchar = extra.prioverchar;
const int prioverchar = extra.prioverchar;
int penmask = 0xff;
int penshift = 0;
int pen = 0;
@ -76,16 +76,16 @@ void namcos22_renderer::renderscanline_poly(int32_t scanline, const extent_t &ex
for (int x = extent.startx; x < extent.stopx; x++)
{
float ooz = 1.0f / z;
const float ooz = 1.0f / z;
// texture mapping
if (texture_enabled)
{
int tx = int(u * ooz) & 0xfff;
int ty = (int(v * ooz) & 0xfff) | bn;
int to = (ty << 4 & 0xfff00) | (tx >> 4);
pen = ttdata[(ttmap[to] << 8) | tt_ayx_to_pixel[ttattr[to] << 8 | (ty << 4 & 0xf0) | (tx & 0xf)]];
rgb.set(pens[pen >> penshift & penmask]);
const int tx = int(u * ooz) & 0xfff;
const int ty = (int(v * ooz) & 0xfff) | bn;
const int to = ((ty << 4) & 0xfff00) | (tx >> 4);
pen = ttdata[(ttmap[to] << 8) | tt_ayx_to_pixel[(ttattr[to] << 8) | ((ty << 4) & 0xf0) | (tx & 0xf)]];
rgb.set(pens[(pen >> penshift) & penmask]);
}
else
rgb.set(0, 0xff, 0xff, 0xff);
@ -99,7 +99,7 @@ void namcos22_renderer::renderscanline_poly(int32_t scanline, const extent_t &ex
// shading after fog
if (shade_enabled)
{
int shade = i * ooz;
const int shade = i * ooz;
rgb.scale_imm_and_clamp(shade << 2);
}
@ -124,26 +124,26 @@ void namcos22_renderer::renderscanline_poly_ss22(int32_t scanline, const extent_
float du = extent.param[1].dpdx;
float dv = extent.param[2].dpdx;
float di = extent.param[3].dpdx;
int bn = extra.bn * 0x1000;
const int bn = extra.bn * 0x1000;
const pen_t *pens = extra.pens;
int fogfactor = 0xff - extra.fogfactor;
bool shade_enabled = extra.shade_enabled;
bool texture_enabled = extra.texture_enabled;
const bool shade_enabled = extra.shade_enabled;
const bool texture_enabled = extra.texture_enabled;
rgbaint_t fogcolor = extra.fogcolor;
int prioverchar = extra.prioverchar;
const int prioverchar = extra.prioverchar;
int penmask = 0xff;
int penshift = 0;
int pen = 0;
rgbaint_t rgb;
const u8 *czram = extra.czram;
int cz_sdelta = extra.cz_sdelta;
bool zfog_enabled = extra.zfog_enabled;
int fadefactor = 0xff - extra.fadefactor;
int alphafactor = 0xff - extra.alpha;
bool alpha_enabled = extra.alpha_enabled;
u8 alpha_pen = m_state.m_poly_alpha_pen;
bool polyfade_enabled = extra.pfade_enabled;
const int cz_sdelta = extra.cz_sdelta;
const bool zfog_enabled = extra.zfog_enabled;
const int fadefactor = 0xff - extra.fadefactor;
const int alphafactor = 0xff - extra.alpha;
const bool alpha_enabled = extra.alpha_enabled;
const u8 alpha_pen = m_state.m_poly_alpha_pen;
const bool polyfade_enabled = extra.pfade_enabled;
rgbaint_t fadecolor = extra.fadecolor;
rgbaint_t polycolor = extra.polycolor;
@ -169,16 +169,16 @@ void namcos22_renderer::renderscanline_poly_ss22(int32_t scanline, const extent_
for (int x = extent.startx; x < extent.stopx; x++)
{
float ooz = 1.0f / z;
const float ooz = 1.0f / z;
// texture mapping
if (texture_enabled)
{
int tx = int(u * ooz) & 0xfff;
int ty = (int(v * ooz) & 0xfff) | bn;
int to = (ty << 4 & 0xfff00) | (tx >> 4);
pen = ttdata[(ttmap[to] << 8) | tt_ayx_to_pixel[ttattr[to] << 8 | (ty << 4 & 0xf0) | (tx & 0xf)]];
rgb.set(pens[pen >> penshift & penmask]);
const int tx = int(u * ooz) & 0xfff;
const int ty = (int(v * ooz) & 0xfff) | bn;
const int to = ((ty << 4) & 0xfff00) | (tx >> 4);
pen = ttdata[(ttmap[to] << 8) | tt_ayx_to_pixel[(ttattr[to] << 8) | ((ty << 4) & 0xf0) | (tx & 0xf)]];
rgb.set(pens[(pen >> penshift) & penmask]);
}
else
rgb.set(0, 0xff, 0xff, 0xff);
@ -186,7 +186,7 @@ void namcos22_renderer::renderscanline_poly_ss22(int32_t scanline, const extent_
// shading before fog
if (shade_enabled)
{
int shade = i * ooz;
const int shade = i * ooz;
rgb.scale_imm_and_clamp(shade << 2);
}
@ -237,16 +237,16 @@ void namcos22_renderer::renderscanline_poly_ss22(int32_t scanline, const extent_
void namcos22_renderer::renderscanline_sprite(int32_t scanline, const extent_t &extent, const namcos22_object_data &extra, int threadid)
{
int y_index = extent.param[1].start - extra.flipy;
const int y_index = extent.param[1].start - extra.flipy;
float x_index = extent.param[0].start - extra.flipx;
float dx = extent.param[0].dpdx;
const float dx = extent.param[0].dpdx;
const pen_t *pal = extra.pens;
int prioverchar = extra.prioverchar;
int alphafactor = extra.alpha;
bool alpha_enabled = extra.alpha_enabled;
u8 alpha_pen = m_state.m_poly_alpha_pen;
int fogfactor = 0xff - extra.fogfactor;
int fadefactor = 0xff - extra.fadefactor;
const int prioverchar = extra.prioverchar;
const int alphafactor = extra.alpha;
const bool alpha_enabled = extra.alpha_enabled;
const u8 alpha_pen = m_state.m_poly_alpha_pen;
const int fogfactor = 0xff - extra.fogfactor;
const int fadefactor = 0xff - extra.fadefactor;
rgbaint_t fogcolor(extra.fogcolor);
rgbaint_t fadecolor(extra.fadecolor);
u8 *const source = (u8 *)extra.source + y_index * extra.line_modulo;
@ -292,11 +292,11 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
vertex_t clipv[6];
int clipverts;
int vertnum;
int direct = node->data.quad.direct;
const bool direct = node->data.quad.direct;
// scene clip
int cx = 320 + node->data.quad.vx;
int cy = 240 + node->data.quad.vy;
const int cx = 320 + node->data.quad.vx;
const int cy = 240 + node->data.quad.vy;
m_cliprect.set(cx + node->data.quad.vl, cx - node->data.quad.vr - 1, cy + node->data.quad.vu, cy - node->data.quad.vd - 1);
m_cliprect &= screen.visible_area();
@ -320,7 +320,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
for (vertnum = 0; vertnum < clipverts; vertnum++)
{
poly3d_t ooz = 1.0 / clipv[vertnum].p[0];
const poly3d_t ooz = 1.0 / clipv[vertnum].p[0];
clipv[vertnum].x = cx + clipv[vertnum].x * ooz;
clipv[vertnum].y = cy - clipv[vertnum].y * ooz;
clipv[vertnum].p[0] = ooz;
@ -336,7 +336,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
clipverts = 4;
for (vertnum = 0; vertnum < 4; vertnum++)
{
poly3d_t ooz = node->data.quad.v[vertnum].z;
const poly3d_t ooz = node->data.quad.v[vertnum].z;
clipv[vertnum].x = cx + node->data.quad.v[vertnum].x;
clipv[vertnum].y = cy - node->data.quad.v[vertnum].y;
clipv[vertnum].p[0] = ooz;
@ -346,11 +346,11 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
}
}
int color = node->data.quad.color;
int cz_value = node->data.quad.cz_value;
int cz_type = node->data.quad.cz_type;
int cz_adjust = node->data.quad.cz_adjust;
int objectflags = node->data.quad.objectflags;
const int color = node->data.quad.color;
const int cz_value = node->data.quad.cz_value;
const int cz_type = node->data.quad.cz_type;
const int cz_adjust = node->data.quad.cz_adjust;
const int objectflags = node->data.quad.objectflags;
namcos22_object_data &extra = object_data().next();
@ -373,7 +373,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
if (m_state.m_is_ss22)
{
// global fade
if (m_state.m_mixer_flags & 1)
if (BIT(m_state.m_mixer_flags, 0))
{
extra.fadefactor = m_state.m_screen_fade_factor;
extra.fadecolor.set(0, m_state.m_screen_fade_r, m_state.m_screen_fade_g, m_state.m_screen_fade_b);
@ -388,10 +388,10 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
extra.alpha_enabled = (color & 0x7f) != m_state.m_poly_alpha_color;
// poly fog
if (~color & 0x80)
if (BIT(~color, 7))
{
int bank = m_state.m_czattr[6] >> (cz_type * 2) & 3;
int bank_enabled = m_state.m_czattr[4] >> (bank * 4) & 4;
const int bank = m_state.m_czattr[6] >> (cz_type * 2) & 3;
const bool bank_enabled = m_state.m_czattr[4] >> (bank * 4) & 4;
if (bank_enabled)
{
@ -405,7 +405,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
if (direct)
{
int fogfactor = m_state.m_recalc_czram[bank][cz_value] + delta;
const int fogfactor = m_state.m_recalc_czram[bank][cz_value] + delta;
extra.fogfactor = std::clamp(fogfactor, 0, 0xff);
}
else
@ -420,9 +420,9 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
else
{
// poly fog
if (~color & 0x80)
if (BIT(~color, 7))
{
int cz_color = cz_type & nthbyte(&m_state.m_fog_colormask, cz_type);
const int cz_color = cz_type & nthbyte(&m_state.m_fog_colormask, cz_type);
extra.fogcolor.set(0, m_state.m_fog_r_per_cztype[cz_color], m_state.m_fog_g_per_cztype[cz_color], m_state.m_fog_b_per_cztype[cz_color]);
extra.fogfactor = nthbyte(m_state.m_czram, cz_type << 13 | cz_value);
}
@ -435,7 +435,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
extra.texture_enabled = false;
}
if (objectflags & 0x200000)
if (BIT(objectflags, 21))
{
// disable textures?
if ((cz_adjust & 0x7f0000) == 0x3a0000)
@ -443,7 +443,7 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit
}
// disable poly fog
if (cz_adjust & 0x800000)
if (BIT(cz_adjust, 23))
{
extra.zfog_enabled = false;
extra.fogfactor = 0;
@ -471,16 +471,16 @@ void namcos22_renderer::poly3d_drawsprite(
)
{
gfx_element *gfx = m_state.m_gfxdecode->gfx(2);
int sprite_screen_height = (scaley * gfx->height() + 0x8000) >> 16;
int sprite_screen_width = (scalex * gfx->width() + 0x8000) >> 16;
const int sprite_screen_height = (scaley * gfx->height() + 0x8000) >> 16;
const int sprite_screen_width = (scalex * gfx->width() + 0x8000) >> 16;
if (sprite_screen_width && sprite_screen_height)
{
poly3d_t fsx = sx;
poly3d_t fsy = sy;
poly3d_t fwidth = gfx->width();
poly3d_t fheight = gfx->height();
poly3d_t fsw = sprite_screen_width;
poly3d_t fsh = sprite_screen_height;
const poly3d_t fsx = sx;
const poly3d_t fsy = sy;
const poly3d_t fwidth = gfx->width();
const poly3d_t fheight = gfx->height();
const poly3d_t fsw = sprite_screen_width;
const poly3d_t fsh = sprite_screen_height;
namcos22_object_data &extra = object_data().next();
vertex_t vert[4];
@ -514,14 +514,14 @@ void namcos22_renderer::poly3d_drawsprite(
vert[3].p[1] = fheight;
// global fade
if (m_state.m_mixer_flags & 2 || fade_enabled)
if (BIT(m_state.m_mixer_flags, 1) || fade_enabled)
{
extra.fadefactor = m_state.m_screen_fade_factor;
extra.fadecolor.set(0, m_state.m_screen_fade_r, m_state.m_screen_fade_g, m_state.m_screen_fade_b);
}
// sprite fog
if (~color & 0x80 && cz_factor > 0)
if (BIT(~color, 7) && cz_factor > 0)
{
extra.fogfactor = cz_factor;
extra.fogcolor.set(0, m_state.m_fog_r, m_state.m_fog_g, m_state.m_fog_b);
@ -695,7 +695,7 @@ void namcos22_renderer::render_scene(screen_device &screen, bitmap_rgb32 &bitmap
float namcos22_state::dspfloat_to_nativefloat(u32 val)
{
s16 mantissa = (s16)val;
const s16 mantissa = (s16)val;
float result = (float)mantissa;
int exponent = (val >> 16) & 0x3f;
while (exponent < 0x2e)
@ -746,9 +746,9 @@ void namcos22_state::matrix3d_apply_reflection(float m[4][4])
float r[4][4];
matrix3d_identity(r);
if (m_reflection & 0x10)
if (BIT(m_reflection, 4))
r[0][0] = -1.0f;
if (m_reflection & 0x20)
if (BIT(m_reflection, 5))
r[1][1] = -1.0f;
matrix3d_multiply(m, r);
@ -823,7 +823,7 @@ void namcos22_state::draw_direct_poly(const u16 *src)
if (machine().video().skip_this_frame())
return;
int polys_enabled = m_is_ss22 ? nthbyte(m_mixer, 0x1f) & 1 : 1;
const bool polys_enabled = m_is_ss22 ? BIT(nthbyte(m_mixer, 0x1f), 0) : true;
if (!polys_enabled) return;
/**
* word#0:
@ -850,7 +850,7 @@ void namcos22_state::draw_direct_poly(const u16 *src)
* xx-- ---- // BRI
* --xx xxxx // zpos
*/
u32 zsort = ((src[1] & 0xfff) << 12) | (src[0] & 0xfff);
const u32 zsort = ((src[1] & 0xfff) << 12) | (src[0] & 0xfff);
struct namcos22_scenenode *node = m_poly->new_scenenode(machine(), zsort, NAMCOS22_SCENENODE_QUAD);
if (m_is_ss22)
@ -864,7 +864,7 @@ void namcos22_state::draw_direct_poly(const u16 *src)
node->data.quad.texturebank = (src[1 + 4] & 0xf000) >> 12;
}
node->data.quad.color = (src[2] & 0xff00) >> 8;
node->data.quad.cz_value = src[3] >> 2 & 0x1fff;
node->data.quad.cz_value = (src[3] >> 2) & 0x1fff;
node->data.quad.cz_type = src[3] & 3;
node->data.quad.cz_adjust = 0;
node->data.quad.objectflags = 0;
@ -884,7 +884,7 @@ void namcos22_state::draw_direct_poly(const u16 *src)
p->v = src[1] & 0x0fff;
}
int mantissa = src[5];
const int mantissa = src[5];
int exponent = src[4] & 0x3f;
if (mantissa)
@ -905,7 +905,7 @@ void namcos22_state::draw_direct_poly(const u16 *src)
src += 6;
}
node->data.quad.direct = 1;
node->data.quad.direct = true;
node->data.quad.vx = 0;
node->data.quad.vy = 0;
node->data.quad.vu = -240;
@ -983,7 +983,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po
return;
// backface cull one-sided polygons
if (flags & 0x0020)
if (BIT(flags, 5))
{
float c1 =
(v[2].x*((v[0].z*v[1].y)-(v[0].y*v[1].z)))+
@ -1073,7 +1073,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po
else
{
// flat shading
bri = color >> 16 & 0xff;
bri = (color >> 16) & 0xff;
}
v[i].bri = bri;
@ -1085,7 +1085,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po
node->data.quad.texturebank = (v[0].v >> 12) & 0xf;
node->data.quad.color = (color >> 8) & 0xff;
node->data.quad.cz_value = cz_value >> 8;
node->data.quad.cz_type = flags >> 10 & 3;
node->data.quad.cz_type = (flags >> 10) & 3;
node->data.quad.cz_adjust = m_cz_adjust;
node->data.quad.objectflags = m_objectflags;
@ -1100,7 +1100,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po
p->bri = v[i].bri;
}
node->data.quad.direct = 0;
node->data.quad.direct = false;
node->data.quad.vx = m_camera_vx;
node->data.quad.vy = m_camera_vy;
node->data.quad.vu = m_camera_vu;
@ -1112,12 +1112,12 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po
void namcos22_state::blit_quads(int addr, int len, float m[4][4])
{
int finish = addr + len;
const int finish = addr + len;
while (addr < finish)
{
int packetlength = point_read(addr++);
int packetformat = point_read(addr + 0);
const int packetlength = point_read(addr++);
const int packetformat = point_read(addr + 0);
int flags, color, bias;
/**
@ -1217,7 +1217,7 @@ void namcos22_state::blit_polyobject(int code, float m[4][4])
{
// list start address, code 5 is special case for pointram
int list_addr;
bool pointram = (code == 0x5);
const bool pointram = (code == 0x5);
if (pointram)
list_addr = (m_is_ss22) ? 0xf80000 : 0xf00000;
else
@ -1245,7 +1245,7 @@ void namcos22_state::blit_polyobject(int code, float m[4][4])
object_addr &= 0x00ffffff;
}
u32 chunklength = point_read(object_addr++);
const u32 chunklength = point_read(object_addr++);
if (chunklength > 0x100)
{
logerror("blit_polyobject bad chunk length: addr=0x%06x len=0x%x\n", object_addr-1, chunklength);
@ -1282,14 +1282,14 @@ void namcos22_state::slavesim_handle_bb0003(const s32 *src)
0000 7ffe 0000
0000 0000 7ffe
*/
m_camera_ambient = src[0x1] >> 16 & 0xffff;
m_camera_ambient = (src[0x1] >> 16) & 0xffff;
m_camera_power = src[0x1] & 0xffff;
m_camera_lx = dspfixed_to_nativefloat(src[0x2]);
m_camera_ly = dspfixed_to_nativefloat(src[0x3]);
m_camera_lz = dspfixed_to_nativefloat(src[0x4]);
m_absolute_priority = src[0x3] >> 16 & 0xffff;
m_absolute_priority = (src[0x3] >> 16) & 0xffff;
m_camera_vx = signed12(src[0x5] >> 16);
m_camera_vy = signed12(src[0x5] & 0xffff);
m_camera_zoom = dspfloat_to_nativefloat(src[0x6]);
@ -1298,18 +1298,18 @@ void namcos22_state::slavesim_handle_bb0003(const s32 *src)
m_camera_vu = dspfloat_to_nativefloat(src[0x9]) * m_camera_zoom - 0.5f;
m_camera_vd = dspfloat_to_nativefloat(src[0xa]) * m_camera_zoom - 0.5f;
m_reflection = src[0x2] >> 16 & 0x30; // z too?
m_reflection = (src[0x2] >> 16) & 0x30; // z too?
m_cullflip = (m_reflection == 0x10 || m_reflection == 0x20);
if (m_reflection & 0x10)
if (BIT(m_reflection, 4))
{
int vl = m_camera_vl;
const int vl = m_camera_vl;
m_camera_vl = m_camera_vr;
m_camera_vr = vl;
}
if (m_reflection & 0x20)
if (BIT(m_reflection, 5))
{
int vu = m_camera_vu;
const int vu = m_camera_vu;
m_camera_vu = m_camera_vd;
m_camera_vd = vu;
}
@ -1451,9 +1451,9 @@ void namcos22_state::simulate_slavedsp()
for (;;)
{
// hackery! commands should be streamed, not parsed here
u16 code = *src++;
u16 len = *src++;
s32 index = src - (s32 *)m_polygonram.target();
const u16 code = *src++;
const u16 len = *src++;
const s32 index = src - (s32 *)m_polygonram.target();
// alpinr2b titlescreen includes commands to modify pointram on the fly
if (m_gametype == NAMCOS22_ALPINE_RACER_2 && code == 0xfff8)
@ -1505,7 +1505,7 @@ void namcos22_state::simulate_slavedsp()
src += len;
src++; // should be 0xffff (GOTO command)
u16 next = *src++ & 0x7fff; // link to next command
const u16 next = *src++ & 0x7fff; // link to next command
if (next != (index + len + 1 + 1))
{
// end of list, normally with a "goto self"
@ -1562,7 +1562,7 @@ void namcos22_state::screen_vblank(int state)
/*********************************************************************************************/
void namcos22_state::draw_sprite_group(const u32 *src, const u32 *attr, int num_sprites, int deltax, int deltay, int y_lowres)
void namcos22_state::draw_sprite_group(const u32 *src, const u32 *attr, int num_sprites, int deltax, int deltay, bool y_lowres)
{
for (int i = 0; i < num_sprites; i++)
{
@ -1607,42 +1607,42 @@ void namcos22_state::draw_sprite_group(const u32 *src, const u32 *attr, int num_
int ypos = (src[0] & 0xffff) - deltay;
int sizex = src[1] >> 16;
int sizey = src[1] & 0xffff;
int flipy = src[2] >> 3 & 0x1;
const int flipy = (src[2] >> 3) & 0x1;
int rows = src[2] & 0x7;
int linktype = (src[2] & 0x00ff0000) >> 16;
int flipx = (src[2] >> 7) & 0x1;
const int linktype = (src[2] & 0x00ff0000) >> 16;
const int flipx = (src[2] >> 7) & 0x1;
int cols = (src[2] >> 4) & 0x7;
u32 code = src[3];
int tile = code >> 16;
int alpha = (code & 0xff00) >> 8;
const u32 code = src[3];
const int tile = code >> 16;
const int alpha = (code & 0xff00) >> 8;
u32 zcoord = attr[0] & 0x00ffffff;
int color = attr[1] >> 16 & 0xff;
int cz = attr[1] & 0xff;
const u32 zcoord = attr[0] & 0x00ffffff;
const int color = (attr[1] >> 16) & 0xff;
const int cz = attr[1] & 0xff;
// one of these is to override global fade setting?
// eg. propcycl time over, where global fade affects score hinge, but not "TIME UP"
bool fade_enabled = bool(attr[1] & 0x8000);
const bool fade_enabled = BIT(attr[1], 15);
// priority over textlayer, trusted by testmode and timecris
int prioverchar = (cz == 0xfe) ? 1 : 0;
const int prioverchar = (cz == 0xfe) ? 1 : 0;
// set window clipping
int clip = src[2] >> 23 & 0xe;
int cx_min = -deltax + (s16)(m_spriteram[0x80|clip] >> 16);
int cx_max = -deltax + (s16)(m_spriteram[0x80|clip] & 0xffff);
int cy_min = -deltay + (s16)(m_spriteram[0x81|clip] >> 16);
int cy_max = -deltay + (s16)(m_spriteram[0x81|clip] & 0xffff);
const int clip = (src[2] >> 23) & 0xe;
const int cx_min = -deltax + (s16)(m_spriteram[0x80|clip] >> 16);
const int cx_max = -deltax + (s16)(m_spriteram[0x80|clip] & 0xffff);
const int cy_min = -deltay + (s16)(m_spriteram[0x81|clip] >> 16);
const int cy_max = -deltay + (s16)(m_spriteram[0x81|clip] & 0xffff);
if (rows == 0) rows = 8;
if (cols == 0) cols = 8;
// right justify
if (src[2] & 0x0200)
if (BIT(src[2], 9))
xpos -= sizex * cols - 1;
// bottom justify
if (src[2] & 0x0100)
if (BIT(src[2], 8))
ypos -= sizey * rows - 1;
if (flipy)
@ -1747,13 +1747,13 @@ void namcos22_state::draw_sprites()
bit 1: ??? (always set, except in alpinr2b. it's not x-resolution)
bit 2: y-resolution? (always set, except in cybrcycc)
*/
int sprites_on = (m_spriteram[0] >> 16 & 1) ? 0 : 1;
int y_lowres = (m_spriteram[0] >> 16 & 4) ? 0 : 1;
bool sprites_on = BIT(~m_spriteram[0], 16);
bool y_lowres = BIT(~m_spriteram[0], 18);
int deltax = (m_spriteram[1] & 0xffff) + (m_spriteram[2] & 0xffff) + 0x2d;
int deltay = (m_spriteram[3] >> 16) + (0x2a >> y_lowres);
const int deltax = (m_spriteram[1] & 0xffff) + (m_spriteram[2] & 0xffff) + 0x2d;
const int deltay = (m_spriteram[3] >> 16) + (0x2a >> y_lowres);
int base = m_spriteram[0] & 0xffff; // alpines/alpinr2b
const int base = m_spriteram[0] & 0xffff; // alpines/alpinr2b
int num_sprites = ((m_spriteram[1] >> 16) - base) + 1;
// airco22b doesn't use spriteset #1
@ -1783,12 +1783,12 @@ void namcos22_state::draw_sprites()
0x940060..0x94007c set#2
*/
sprites_on = (m_vics_control[0x30/4] >> 24 & 1) ? 0 : 1;
y_lowres = (m_vics_control[0x30/4] >> 24 & 4) ? 0 : 1;
sprites_on = BIT(~m_vics_control[0x30/4], 24);
y_lowres = BIT(~m_vics_control[0x30/4], 26);
// where do the games store the number of sprites to be processed by vics???
// the current default implementation (using spritelist size) is clearly wrong and causes problems in dirtdash and airco22b
num_sprites = m_vics_control[0x40/4] >> 4 & 0x1ff; // no +1
num_sprites = (m_vics_control[0x40/4] >> 4) & 0x1ff; // no +1
// dirtdash sprite list starts at xxx4, number of sprites is stored in xxx0, it doesn't use set#2
if (m_gametype == NAMCOS22_DIRT_DASH)
@ -1801,12 +1801,12 @@ void namcos22_state::draw_sprites()
draw_sprite_group(src, attr, num_sprites, deltax, deltay, y_lowres);
}
num_sprites = m_vics_control[0x60/4] >> 4 & 0x1ff; // no +1
num_sprites = (m_vics_control[0x60/4] >> 4) & 0x1ff; // no +1
// airco22b number of sprites for set#2 is stored in set#1 - it does not use set 1, or main set for sprites
if (m_gametype == NAMCOS22_AIR_COMBAT22)
{
sprites_on = (m_vics_data[(m_vics_control[0x48/4] & 0xffff)/4] >> 16 & 1) ? 0 : 1;
sprites_on = BIT(~m_vics_data[(m_vics_control[0x48/4] & 0xffff)/4], 16);
num_sprites = (m_vics_data[(m_vics_control[0x48/4] & 0xffff)/4+1] >> 16) + 1;
}
@ -1853,7 +1853,7 @@ void namcos22s_state::namcos22s_vics_control_w(offs_t offset, u32 data, u32 mem_
TILE_GET_INFO_MEMBER(namcos22_state::get_text_tile_info)
{
u16 data = nthword(m_textram, tile_index);
const u16 data = nthword(m_textram, tile_index);
/**
* xxxx.----.----.---- palette select
* ----.xx--.----.---- flip
@ -1864,19 +1864,19 @@ TILE_GET_INFO_MEMBER(namcos22_state::get_text_tile_info)
void namcos22_state::namcos22_textram_w(offs_t offset, u32 data, u32 mem_mask)
{
u32 prev = m_textram[offset];
const u32 prev = m_textram[offset];
COMBINE_DATA(&m_textram[offset]);
if (prev != m_textram[offset])
{
m_bgtilemap->mark_tile_dirty(offset * 2);
m_bgtilemap->mark_tile_dirty(offset * 2 + 1);
m_text_tilemap->mark_tile_dirty(offset * 2);
m_text_tilemap->mark_tile_dirty(offset * 2 + 1);
}
namcos22_cgram_w(offset + 0x1e000/4, data, mem_mask);
}
void namcos22_state::namcos22_cgram_w(offs_t offset, u32 data, u32 mem_mask)
{
u32 prev = m_cgram[offset];
const u32 prev = m_cgram[offset];
COMBINE_DATA(&m_cgram[offset]);
if (prev != m_cgram[offset])
m_gfxdecode->gfx(0)->mark_dirty(offset/32);
@ -1899,9 +1899,9 @@ void namcos22_state::posirq_update()
TIMER_CALLBACK_MEMBER(namcos22_state::posirq_callback)
{
// hblank irq line differs between s22/ss22 (see syscon)
int line = (m_is_ss22) ? 1 : 0;
const int line = (m_is_ss22) ? 1 : 0;
if (m_irq_enabled & (1 << line))
if (BIT(m_irq_enabled, line))
{
m_irq_state |= (1 << line);
m_maincpu->set_input_line(m_syscontrol[line] & 7, ASSERT_LINE);
@ -1987,7 +1987,7 @@ u16 namcos22s_state::spotram_r(offs_t offset)
if (offset == 2)
{
// read
u16 ret = m_spotram[m_spotram_address >> 1 & 0x7ff];
const u16 ret = m_spotram[(m_spotram_address >> 1) & 0x7ff];
if (!machine().side_effects_disabled())
m_spotram_address += 2;
@ -2009,7 +2009,7 @@ void namcos22s_state::spotram_w(offs_t offset, u16 data, u16 mem_mask)
case 1:
// write
COMBINE_DATA(&m_spotram[m_spotram_address >> 1 & 0x7ff]);
COMBINE_DATA(&m_spotram[(m_spotram_address >> 1) & 0x7ff]);
m_spotram_address += 2;
break;
@ -2031,19 +2031,19 @@ void namcos22s_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb
rgbaint_t rgb;
// prepare alpha
u8 alpha_check12 = nthbyte(m_mixer, 0x12);
u8 alpha_check13 = nthbyte(m_mixer, 0x13);
u8 alpha_mask = nthbyte(m_mixer, 0x14) & 0xf;
u8 alpha_factor = nthbyte(m_mixer, 0x15);
const u8 alpha_check12 = nthbyte(m_mixer, 0x12);
const u8 alpha_check13 = nthbyte(m_mixer, 0x13);
const u8 alpha_mask = nthbyte(m_mixer, 0x14) & 0xf;
const u8 alpha_factor = nthbyte(m_mixer, 0x15);
// prepare spot
bool spot_enabled = (m_spotram_enable & 1) && (m_chipselect & 0xc000);
int spot_factor = (m_spot_factor < 0x100) ? 0 : m_spot_factor & 0xff;
int spot_palbase = m_text_palbase >> 8 & 3; // src[x] >> 8 & 3
const bool spot_enabled = BIT(m_spotram_enable, 0) && (m_chipselect & 0xc000);
const int spot_factor = (m_spot_factor < 0x100) ? 0 : m_spot_factor & 0xff;
const int spot_palbase = (m_text_palbase >> 8) & 3; // (src[x] >> 8) & 3
// prepare fader
bool fade_enabled = (m_mixer_flags & 2) && m_screen_fade_factor;
int fade_factor = 0xff - m_screen_fade_factor;
const bool fade_enabled = BIT(m_mixer_flags, 1) && m_screen_fade_factor;
const int fade_factor = 0xff - m_screen_fade_factor;
rgbaint_t fade_color(0, m_screen_fade_r, m_screen_fade_g, m_screen_fade_b);
// mix textlayer with poly/sprites
@ -2104,13 +2104,13 @@ void namcos22_state::namcos22_mix_text_layer(screen_device &screen, bitmap_rgb32
const u8 *blut = &m_gamma_proms[0x200];
// prepare fader and shadow factor
bool fade_enabled = (m_screen_fade_r != 0x100 || m_screen_fade_g != 0x100 || m_screen_fade_b != 0x100);
u32 fade_r_add = (m_screen_fade_r > 0x100) ? (1 << 16) : 0;
u32 fade_g_add = (m_screen_fade_g > 0x100) ? (1 << 8) : 0;
u32 fade_b_add = (m_screen_fade_b > 0x100) ? 1 : 0;
bool fade_white = fade_r_add || fade_g_add || fade_b_add;
const bool fade_enabled = (m_screen_fade_r != 0x100 || m_screen_fade_g != 0x100 || m_screen_fade_b != 0x100);
const u32 fade_r_add = (m_screen_fade_r > 0x100) ? (1 << 16) : 0;
const u32 fade_g_add = (m_screen_fade_g > 0x100) ? (1 << 8) : 0;
const u32 fade_b_add = (m_screen_fade_b > 0x100) ? 1 : 0;
const bool fade_white = fade_r_add || fade_g_add || fade_b_add;
bool shadow_enabled = (m_mixer_flags & 0x100) != 0; // ? (ridgerac is the only game not using shadow)
const bool shadow_enabled = BIT(m_mixer_flags, 8); // ? (ridgerac is the only game not using shadow)
rgbaint_t fade_color(0, m_screen_fade_r, m_screen_fade_g, m_screen_fade_b);
rgbaint_t rgb_mix[3] = {
@ -2167,15 +2167,15 @@ void namcos22_state::namcos22_mix_text_layer(screen_device &screen, bitmap_rgb32
void namcos22_state::update_text_rowscroll()
{
u64 frame = m_screen->frame_number();
const u64 frame = m_screen->frame_number();
if (frame != m_rs_frame)
{
m_rs_frame = frame;
m_lastrow = 0;
}
int scroll_x = (m_tilemapattr[0] - 0x35c) & 0x3ff;
int y = std::min(m_screen->vpos(), 480);
const int scroll_x = (m_tilemapattr[0] - 0x35c) & 0x3ff;
const int y = std::min(m_screen->vpos(), 480);
// save x scroll value until current scanline
for (int i = m_lastrow; i < y; i++)
@ -2186,32 +2186,32 @@ void namcos22_state::update_text_rowscroll()
void namcos22_state::apply_text_scroll()
{
update_text_rowscroll();
int scroll_y = m_tilemapattr[1] & 0x3ff;
const int scroll_y = m_tilemapattr[1] & 0x3ff;
m_bgtilemap->set_scrolly(0, scroll_y);
m_text_tilemap->set_scrolly(0, scroll_y);
for (int i = 0; i < 0x400; i++)
m_bgtilemap->set_scrollx(i, m_rowscroll[0]);
m_text_tilemap->set_scrollx(i, m_rowscroll[0]);
// apply current frame x scroll updates to tilemap
for (int i = 0; i < 480; i++)
m_bgtilemap->set_scrollx((i + scroll_y + 4) & 0x3ff, m_rowscroll[i]);
m_text_tilemap->set_scrollx((i + scroll_y + 4) & 0x3ff, m_rowscroll[i]);
}
void namcos22_state::draw_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
apply_text_scroll();
m_bgtilemap->set_palette_offset(m_text_palbase);
m_text_tilemap->set_palette_offset(m_text_palbase);
m_bgtilemap->draw(screen, *m_mix_bitmap, cliprect, 0, 2, 3);
m_text_tilemap->draw(screen, *m_mix_bitmap, cliprect, 0, 2, 3);
namcos22_mix_text_layer(screen, bitmap, cliprect);
}
void namcos22s_state::draw_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
apply_text_scroll();
m_bgtilemap->set_palette_offset(m_text_palbase);
m_text_tilemap->set_palette_offset(m_text_palbase);
m_bgtilemap->draw(screen, *m_mix_bitmap, cliprect, 0, 4, 4);
m_text_tilemap->draw(screen, *m_mix_bitmap, cliprect, 0, 4, 4);
namcos22s_mix_text_layer(screen, bitmap, cliprect, 4);
}
@ -2221,7 +2221,7 @@ void namcos22s_state::draw_text_layer(screen_device &screen, bitmap_rgb32 &bitma
void namcos22_state::namcos22_paletteram_w(offs_t offset, u32 data, u32 mem_mask)
{
u32 prev = m_paletteram[offset];
const u32 prev = m_paletteram[offset];
COMBINE_DATA(&m_paletteram[offset]);
if (prev != m_paletteram[offset])
m_dirtypal[offset & (0x7fff/4)] = 1;
@ -2235,10 +2235,10 @@ void namcos22_state::update_palette()
{
for (int j = 0; j < 4; j++)
{
int which = i * 4 + j;
int r = nthbyte(m_paletteram, which + 0x00000);
int g = nthbyte(m_paletteram, which + 0x08000);
int b = nthbyte(m_paletteram, which + 0x10000);
const int which = i * 4 + j;
const int r = nthbyte(m_paletteram, which + 0x00000);
const int g = nthbyte(m_paletteram, which + 0x08000);
const int b = nthbyte(m_paletteram, which + 0x10000);
m_palette->set_pen_color(which, rgb_t(r, g, b));
}
m_dirtypal[i] = 0;
@ -2264,13 +2264,13 @@ void namcos22s_state::namcos22s_czattr_w(offs_t offset, u16 data, u16 mem_mask)
00a4 00a4 00a4 00a4 4444 0000 0000 0000 // propcycl in pool
ff80 ff80 ff80 ff80 4444 0000 0000 0000 // propcycl ending
*/
u16 prev = m_czattr[offset];
const u16 prev = m_czattr[offset];
COMBINE_DATA(&m_czattr[offset]);
if (offset == 4)
{
// invalidate if compare function changed
u16 changed = prev ^ m_czattr[offset];
const u16 changed = prev ^ m_czattr[offset];
for (int bank = 0; bank < 4; bank++)
m_cz_was_written[bank] |= changed >> (bank * 4) & 2;
}
@ -2298,7 +2298,7 @@ void namcos22s_state::namcos22s_czram_w(offs_t offset, u32 data, u32 mem_mask)
// write enable bit
if (~m_czattr[4] >> (bank * 4) & 1)
{
u32 prev = (m_banked_czram[bank][offset * 2] << 16) | m_banked_czram[bank][offset * 2 + 1];
const u32 prev = (m_banked_czram[bank][offset * 2] << 16) | m_banked_czram[bank][offset * 2 + 1];
u32 temp = prev;
COMBINE_DATA(&temp);
m_banked_czram[bank][offset * 2] = temp >> 16;
@ -2310,7 +2310,7 @@ void namcos22s_state::namcos22s_czram_w(offs_t offset, u32 data, u32 mem_mask)
u32 namcos22s_state::namcos22s_czram_r(offs_t offset)
{
int bank = m_czattr[5] & 3;
const int bank = m_czattr[5] & 3;
return (m_banked_czram[bank][offset * 2] << 16) | m_banked_czram[bank][offset * 2 + 1];
}
@ -2322,7 +2322,7 @@ void namcos22s_state::recalc_czram()
// this is very slow when emulating, so let's recalculate it to a simpler lookup table
if (m_cz_was_written[bank])
{
int reverse = (m_czattr[4] >> (bank * 4) & 2) ? 0xff : 0;
const int reverse = (m_czattr[4] >> (bank * 4) & 2) ? 0xff : 0;
int small_val = 0x2000;
int small_offset = reverse;
int large_val = 0;
@ -2331,10 +2331,10 @@ void namcos22s_state::recalc_czram()
for (int i = 0; i < 0x100; i++)
{
int factor = i ^ reverse;
int val = std::min<u16>(m_banked_czram[bank][factor], 0x2000);
int start = prev;
int end = val;
const int factor = i ^ reverse;
const int val = std::min<u16>(m_banked_czram[bank][factor], 0x2000);
const int start = prev;
const int end = val;
if (i > 0)
{
@ -2515,7 +2515,7 @@ u32 namcos22s_state::screen_update_namcos22s(screen_device &screen, bitmap_rgb32
// background color
rgbaint_t bg_color(0, nthbyte(m_mixer, 0x08), nthbyte(m_mixer, 0x09), nthbyte(m_mixer, 0x0a));
if (m_mixer_flags & 1 && m_screen_fade_factor)
if (BIT(m_mixer_flags, 0) && m_screen_fade_factor)
{
rgbaint_t fade_color(0, m_screen_fade_r, m_screen_fade_g, m_screen_fade_b);
bg_color.blend(fade_color, 0xff - m_screen_fade_factor);
@ -2523,12 +2523,12 @@ u32 namcos22s_state::screen_update_namcos22s(screen_device &screen, bitmap_rgb32
bitmap.fill(bg_color.to_rgba(), cliprect);
// layers
u8 layer = nthbyte(m_mixer, 0x1f);
if (layer & 4) draw_text_layer(screen, bitmap, cliprect);
if (layer & 2) draw_sprites();
if (layer & 1) draw_polygons();
const u8 layer = nthbyte(m_mixer, 0x1f);
if (BIT(layer, 2)) draw_text_layer(screen, bitmap, cliprect);
if (BIT(layer, 1)) draw_sprites();
if (BIT(layer, 0)) draw_polygons();
m_poly->render_scene(screen, bitmap);
if (layer & 4) namcos22s_mix_text_layer(screen, bitmap, cliprect, 6);
if (BIT(layer, 2)) namcos22s_mix_text_layer(screen, bitmap, cliprect, 6);
// apply gamma
const u8 *rlut = (const u8 *)&m_mixer[0x100/4];
@ -2539,10 +2539,10 @@ u32 namcos22s_state::screen_update_namcos22s(screen_device &screen, bitmap_rgb32
u32 *const dest = &bitmap.pix(y);
for (int x = cliprect.left(); x <= cliprect.right(); x++)
{
int rgb = dest[x];
int r = rlut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ ((rgb >> 16) & 0xff)];
int g = glut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ ((rgb >> 8) & 0xff)];
int b = blut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ (rgb & 0xff)];
const u32 rgb = dest[x];
const u8 r = rlut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ ((rgb >> 16) & 0xff)];
const u8 g = glut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ ((rgb >> 8) & 0xff)];
const u8 b = blut[NATIVE_ENDIAN_VALUE_LE_BE(3, 0) ^ (rgb & 0xff)];
dest[x] = (r << 16) | (g << 8) | b;
}
}
@ -2558,7 +2558,7 @@ u32 namcos22_state::screen_update_namcos22(screen_device &screen, bitmap_rgb32 &
screen.priority().fill(0, cliprect);
// background color
int bg_color = m_bg_palbase | 0xff;
const int bg_color = m_bg_palbase | 0xff;
bitmap.fill(m_palette->pen(bg_color), cliprect);
// layers
@ -2632,13 +2632,13 @@ void namcos22_state::init_tables()
{
int ix = x, iy = y;
if (attr & 4)
if (BIT(attr, 2))
ix = 15 - ix;
if (attr & 2)
if (BIT(attr, 1))
iy = 15 - iy;
if (attr & 8)
if (BIT(attr, 3))
{
int temp = ix;
ix = iy;
@ -2661,8 +2661,8 @@ void namcos22_state::init_tables()
for (int i = 0; i < 0x100000; i++)
{
int tile = m_texture_tilemap[i];
int attr = m_texture_tileattr[i];
if ((attr & 0x1) == 0)
const int attr = m_texture_tileattr[i];
if (BIT(~attr, 0))
{
tile = (tile & 0x3fff) | 0x8000;
m_texture_tilemap[i] = tile;
@ -2707,9 +2707,9 @@ void namcos22_state::video_start()
m_posirq_timer = timer_alloc(FUNC(namcos22_state::posirq_callback), this);
m_mix_bitmap = std::make_unique<bitmap_ind16>(640, 480);
m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos22_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
m_bgtilemap->set_scroll_rows(64 * 16); // fake
m_bgtilemap->set_transparent_pen(0xf);
m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos22_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
m_text_tilemap->set_scroll_rows(64 * 16); // fake
m_text_tilemap->set_transparent_pen(0xf);
m_gfxdecode->gfx(0)->set_source((u8 *)m_cgram.target());