cclimber, kyugo: simplified handlers (nw)

This commit is contained in:
Ivan Vangelista 2020-03-17 18:11:57 +01:00
parent d4b1f475ca
commit c3d6be7a60
9 changed files with 547 additions and 521 deletions

View File

@ -6,18 +6,15 @@
#include "sound/ay8910.h"
/* macro to convert 4-bit unsigned samples to 16-bit signed samples */
// macro to convert 4-bit unsigned samples to 16-bit signed samples
#define SAMPLE_CONV4(a) (0x1111*((a&0x0f))-0x8000)
#define SND_CLOCK 3072000 /* 3.072 MHz */
SAMPLES_START_CB_MEMBER( cclimber_audio_device::sh_start )
{
if (m_samples_region)
{
m_sample_buf = std::make_unique<int16_t[]>(2 * m_samples_region.bytes());
save_pointer(NAME(m_sample_buf), 2 * m_samples_region.bytes());
}
}
//**************************************************************************
@ -38,7 +35,7 @@ cclimber_audio_device::cclimber_audio_device(const machine_config &mconfig, cons
m_sample_freq(0),
m_sample_volume(0),
m_samples(*this, "samples"),
m_samples_region(*this, "^samples")
m_samples_region(*this, "samples")
{
}
@ -70,31 +67,31 @@ void cclimber_audio_device::device_add_mconfig(machine_config &config)
}
WRITE8_MEMBER(cclimber_audio_device::sample_select_w)
void cclimber_audio_device::sample_select_w(uint8_t data)
{
m_sample_num = data;
}
WRITE8_MEMBER(cclimber_audio_device::sample_rate_w)
void cclimber_audio_device::sample_rate_w(uint8_t data)
{
/* calculate the sampling frequency */
// calculate the sampling frequency
m_sample_freq = SND_CLOCK / 4 / (256 - data);
}
WRITE8_MEMBER(cclimber_audio_device::sample_volume_w)
void cclimber_audio_device::sample_volume_w(uint8_t data)
{
m_sample_volume = data & 0x1f; /* range 0-31 */
m_sample_volume = data & 0x1f; // range 0-31
}
WRITE_LINE_MEMBER(cclimber_audio_device::sample_trigger)
void cclimber_audio_device::sample_trigger(int state)
{
if (state == 0)
return;
play_sample(32 * m_sample_num,m_sample_freq,m_sample_volume);
play_sample(32 * m_sample_num, m_sample_freq, m_sample_volume);
}
WRITE8_MEMBER(cclimber_audio_device::sample_trigger_w)
void cclimber_audio_device::sample_trigger_w(uint8_t data)
{
sample_trigger(data != 0);
}
@ -102,16 +99,10 @@ WRITE8_MEMBER(cclimber_audio_device::sample_trigger_w)
void cclimber_audio_device::play_sample(int start,int freq,int volume)
{
int len;
int romlen = m_samples_region.bytes();
if (m_samples_region == nullptr)
{
return;
}
/* decode the rom samples */
len = 0;
// decode the ROM samples
int len = 0;
while (start + len < romlen && m_samples_region[start+len] != 0x70)
{
int sample;
@ -125,5 +116,5 @@ void cclimber_audio_device::play_sample(int start,int freq,int volume)
len++;
}
m_samples->start_raw(0,m_sample_buf.get(),2 * len,freq);
m_samples->start_raw(0, m_sample_buf.get(), 2 * len, freq);
}

View File

@ -24,27 +24,27 @@ public:
// construction/destruction
cclimber_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER(sample_trigger);
DECLARE_WRITE8_MEMBER(sample_trigger_w);
DECLARE_WRITE8_MEMBER(sample_rate_w);
DECLARE_WRITE8_MEMBER(sample_volume_w);
void sample_trigger(int state);
void sample_trigger_w(uint8_t data);
void sample_rate_w(uint8_t data);
void sample_volume_w(uint8_t data);
protected:
// device level overrides
virtual void device_start() override;
virtual void device_add_mconfig(machine_config &config) override;
void play_sample(int start,int freq,int volume);
void play_sample(int start, int freq, int volume);
private:
std::unique_ptr<int16_t[]> m_sample_buf; /* buffer to decode samples at run time */
int m_sample_num;
int m_sample_freq;
int m_sample_volume;
optional_device<samples_device> m_samples;
optional_region_ptr<uint8_t> m_samples_region;
std::unique_ptr<int16_t[]> m_sample_buf; // buffer to decode samples at run time
uint8_t m_sample_num;
uint32_t m_sample_freq;
uint8_t m_sample_volume;
required_device<samples_device> m_samples;
required_region_ptr<uint8_t> m_samples_region;
DECLARE_WRITE8_MEMBER( sample_select_w );
void sample_select_w(uint8_t data);
SAMPLES_START_CB_MEMBER( sh_start );
};

View File

@ -253,35 +253,35 @@ void cclimber_state::machine_start()
save_item(NAME(m_nmi_mask));
}
WRITE8_MEMBER(cclimber_state::swimmer_sh_soundlatch_w)
void cclimber_state::swimmer_sh_soundlatch_w(uint8_t data)
{
m_soundlatch->write(data);
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80
}
WRITE8_MEMBER(cclimber_state::yamato_p0_w)
void cclimber_state::yamato_p0_w(uint8_t data)
{
m_yamato_p0 = data;
}
WRITE8_MEMBER(cclimber_state::yamato_p1_w)
void cclimber_state::yamato_p1_w(uint8_t data)
{
m_yamato_p1 = data;
}
READ8_MEMBER(cclimber_state::yamato_p0_r)
uint8_t cclimber_state::yamato_p0_r()
{
return m_yamato_p0;
}
READ8_MEMBER(cclimber_state::yamato_p1_r)
uint8_t cclimber_state::yamato_p1_r()
{
return m_yamato_p1;
}
WRITE_LINE_MEMBER(cclimber_state::toprollr_rombank_w)
void cclimber_state::toprollr_rombank_w(int state)
{
m_toprollr_rombank = m_mainlatch->q5_r() | (m_mainlatch->q6_r() << 1);
@ -301,13 +301,13 @@ MACHINE_RESET_MEMBER(cclimber_state,cclimber)
}
#endif
WRITE_LINE_MEMBER(cclimber_state::nmi_mask_w)
void cclimber_state::nmi_mask_w(int state)
{
m_nmi_mask = state;
}
READ8_MEMBER(cclimber_state::bagmanf_a000_r)
uint8_t cclimber_state::bagmanf_a000_r()
{
// Should this actually use the same PAL16R6 as the parent set?
return 0x3f;
@ -317,7 +317,7 @@ READ8_MEMBER(cclimber_state::bagmanf_a000_r)
/* Note that River Patrol reads/writes to a000-a4f0. This is a bug in the code.
The instruction at 0x0593 should say LD DE,$8000 */
void cclimber_state::cclimber_map(address_map &map)
void cclimber_state::rpatrol_map(address_map &map)
{
map(0x0000, 0x5fff).rom();
map(0x6000, 0x6bff).ram(); /* Crazy Kong only */
@ -336,9 +336,17 @@ void cclimber_state::cclimber_map(address_map &map)
map(0x9c00, 0x9fff).ram().w(FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
map(0xa000, 0xa000).portr("P1");
map(0xa800, 0xa800).portr("P2");
map(0xb000, 0xb000).portr("DSW");
map(0xb800, 0xb800).portr("SYSTEM");
}
void cclimber_state::cclimber_map(address_map &map)
{
rpatrol_map(map);
map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
map(0xb800, 0xb800).portr("SYSTEM");
}
void cclimber_state::decrypted_opcodes_map(address_map &map)
@ -481,6 +489,13 @@ void cclimber_state::cclimber_portmap(address_map &map)
map(0x0c, 0x0c).r("cclimber_audio:aysnd", FUNC(ay8910_device::data_r));
}
void cclimber_state::rpatrol_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x08, 0x09).w("aysnd", FUNC(ay8910_device::address_data_w));
map(0x0c, 0x0c).r("aysnd", FUNC(ay8910_device::data_r));
}
void cclimber_state::yamato_portmap(address_map &map)
{
map.global_mask(0xff);
@ -1110,13 +1125,13 @@ static GFXDECODE_START( gfx_toprollr )
GFXDECODE_ENTRY( "gfx3", 0x0000, cclimber_charlayout, 24*4, 16 )
GFXDECODE_END
WRITE_LINE_MEMBER(cclimber_state::vblank_irq)
void cclimber_state::vblank_irq(int state)
{
if (state && m_nmi_mask)
m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
}
WRITE_LINE_MEMBER(cclimber_state::bagmanf_vblank_irq)
void cclimber_state::bagmanf_vblank_irq(int state)
{
if (state && m_nmi_mask)
m_maincpu->set_input_line(0, HOLD_LINE);
@ -1164,6 +1179,19 @@ void cclimber_state::cclimber(machine_config &config)
CCLIMBER_AUDIO(config, "cclimber_audio", 0);
}
void cclimber_state::rpatrol(machine_config &config)
{
root(config);
m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::rpatrol_map);
m_maincpu->set_addrmap(AS_IO, &cclimber_state::rpatrol_portmap);
// sound hardware
SPEAKER(config, "speaker").front_center();
AY8910(config, "aysnd", XTAL(18'432'000)/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5);
}
void cclimber_state::cclimberx(machine_config &config)
{
cclimber(config);
@ -1343,7 +1371,7 @@ ROM_START( cclimber )
ROM_LOAD( "cclimber.pr2", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13", 0x0000, 0x1000, CRC(e0042f75) SHA1(86cb31b110742a0f7ae33052c88f42d00deb5468) )
ROM_LOAD( "cc12", 0x1000, 0x1000, CRC(5da13aaa) SHA1(b2d41e69435d09c456648a10e33f5e1fbb0bc64c) )
ROM_END
@ -1375,7 +1403,7 @@ ROM_START( cclimbera )
ROM_LOAD( "cclimber.pr2", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13", 0x0000, 0x1000, CRC(e0042f75) SHA1(86cb31b110742a0f7ae33052c88f42d00deb5468) )
ROM_LOAD( "cc12", 0x1000, 0x1000, CRC(5da13aaa) SHA1(b2d41e69435d09c456648a10e33f5e1fbb0bc64c) )
ROM_END
@ -1407,7 +1435,7 @@ ROM_START( cclimberj )
ROM_LOAD( "cclimber.pr2", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc12j.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1440,7 +1468,7 @@ ROM_START( ccboot )
ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
ROM_LOAD( "ccboot.prm", 0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) /* decryption table (not used) */
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc12j.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1473,7 +1501,7 @@ ROM_START( ccboot2 )
ROM_LOAD( "cclimber.pr3", 0x0040, 0x0020, CRC(71317756) SHA1(1195f0a037e379cc1a3c0314cb746f5cd2bffe50) )
ROM_LOAD( "ccboot.prm", 0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) /* decryption table (not used) */
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc12j.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1506,7 +1534,7 @@ ROM_START( ccbootmr ) /* Model Racing bootleg */
ROM_LOAD( "198-74288.c9", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
ROM_LOAD( "214-74187.cpu",0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) /* decryption table (not used) */
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "213.r4", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "212.n4", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1534,7 +1562,7 @@ ROM_START( cclimbroper )
ROM_LOAD( "cc9-2716.cpu", 0x0000, 0x0800, CRC(a546a18f) SHA1(302ba08cef61b1badc361666fd559713037a2e43) )
ROM_LOAD( "cc8-2716.cpu", 0x0800, 0x0800, CRC(0224e507) SHA1(c9b534246b6bb743294581a5e74608a295cf0734) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc7-2532.cpu", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc6-2532.cpu", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
@ -1567,7 +1595,7 @@ ROM_START( cclimbrrod )
ROM_LOAD( "cc9.bin", 0x0000, 0x0800, CRC(6fb2afaf) SHA1(d2fe31d00af10e6bcabef51885ce52fb17d1bfbc) )
ROM_LOAD( "cc8.bin", 0x0800, 0x0800, CRC(227ee804) SHA1(0cda61a0ceeab299e7d40d33bf6dad3490928323) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc7.cpu", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc6.cpu", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
@ -1604,7 +1632,7 @@ ROM_START( ckongpt2 )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "14.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "13.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1633,7 +1661,7 @@ ROM_START( ckongpt2a )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "14.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "13.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1662,7 +1690,7 @@ ROM_START( ckongpt2j )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "14.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "13.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1691,7 +1719,7 @@ ROM_START( ckongpt2jeu )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "14.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "13.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1721,7 +1749,7 @@ ROM_START( ckongpt2b )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "14.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "13.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1750,7 +1778,7 @@ ROM_START( ckongpt2b2 )
ROM_LOAD( "prom.t6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.u6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "7.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "6.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1781,7 +1809,7 @@ ROM_START( ckong )
ROM_LOAD( "ck6u.bin", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "falcon12", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) ) // differs from ckongalc
ROM_END
@ -1816,7 +1844,7 @@ ROM_START( ckongo )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc12j.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1845,7 +1873,7 @@ ROM_START( ckongalc )
ROM_LOAD( "ck6u.bin", 0x0020, 0x0020, CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "ck12.bin", 0x1000, 0x1000, CRC(2eb23b60) SHA1(c9e7dc584562aceb374193655fbacb7df6c9c731) ) // sldh w/ckongdks
ROM_END
@ -1874,7 +1902,7 @@ ROM_START( bigkong )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cc12j.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -1903,7 +1931,7 @@ ROM_START( monkeyd )
ROM_LOAD( "ck6u.bin", 0x0020, 0x0020, BAD_DUMP CRC(ab1940fa) SHA1(8d98e05cbaa6f55770c12e0a9a8ed9c73cc54423) )
ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, BAD_DUMP CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cc13j.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "ck12.bin", 0x1000, 0x1000, CRC(2eb23b60) SHA1(c9e7dc584562aceb374193655fbacb7df6c9c731) )
ROM_END
@ -2076,7 +2104,7 @@ ROM_START( dking )
ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) ) // 82s123.1t
ROM_LOAD( "82s129.5g", 0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) // Decryption Table?
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "falcon13", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) ) // d6.1m
ROM_LOAD( "falcon12", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) ) // d5.1k
ROM_END
@ -2108,7 +2136,7 @@ ROM_START( ckongdks )
ROM_LOAD( "ck6t.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) ) // 82s123.1t
ROM_LOAD( "82s129.5g", 0x0060, 0x0100, CRC(9e11550d) SHA1(b8cba8e16e10e23fba1f11551102ab77b680bdf0) ) // Decryption Table?
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "ck08.bin", 0x0000, 0x1000, CRC(31c0a7de) SHA1(ace23fde4cb3c336b8377c1a1e940607d545e8c3) ) // 97.241211%
ROM_LOAD( "ck07.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -2253,7 +2281,7 @@ ROM_START( cannonb )
ROM_LOAD( "prom.u6", 0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
ROM_LOAD( "prom.t6", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "canballs.5s", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "canballs.5p", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
@ -2292,7 +2320,7 @@ ROM_START( cannonb2 )
ROM_LOAD( "u6.bin", 0x0020, 0x0020, CRC(c0539747) SHA1(1bc70057b59b8cb11299fb6b0d84a46da6c0a025) )
ROM_LOAD( "t6.bin", 0x0040, 0x0020, CRC(b4e827a5) SHA1(31a5a5ad54417a474d22bb16c473415d99a2b6f1) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "cb6.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "cb5.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -2323,7 +2351,7 @@ ROM_START( cannonb3 )
ROM_LOAD( "b pos u6 n82s123n.bin", 0x0020, 0x0020, CRC(a758b567) SHA1(d188c90dba10fe3abaae92488786b555b35218c5) )
ROM_LOAD( "a pos t6 n82s123n.bin", 0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "ck14 pos s5 2532.bin", 0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
ROM_LOAD( "ck13 pos r5 2532.bin", 0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
ROM_END
@ -2371,7 +2399,7 @@ ROM_START( bagmanf )
ROM_LOAD( "2732 07 pos dboard.bin", 0x0000, 0x1000, CRC(2e0057ff) SHA1(33e3ffa6418f86864eb81e5e9bda4bf540c143a6) )
ROM_LOAD( "2732 08 pos dboard.bin", 0x1000, 0x1000, CRC(b2120edd) SHA1(52b89dbcc749b084331fa82b13d0876e911fce52) )
ROM_REGION( 0x2000, "samples", ROMREGION_ERASE00 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", ROMREGION_ERASE00 )
/* unpopulated */
ROM_END
@ -2641,7 +2669,7 @@ ROM_START( toprollr )
ROM_LOAD( "1.d5", 0x0c000, 0x02000, CRC(9894374d) SHA1(173de4abbc3fb5d522aa6d6d5caf8e4d54f2a598) )
ROM_LOAD( "7.d3", 0x0e000, 0x02000, CRC(904fffb6) SHA1(5528bc2a4d2fe8672428fd4725644265f0d57ded) )
ROM_REGION( 0x2000, "samples", 0 )
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "12.p3", 0x0000, 0x2000, CRC(7f989dc9) SHA1(3b4d18cbb992872b3cf8f5eaf5381ed3a9468cc1) )
ROM_REGION( 0x01a0, "proms", 0 )
@ -2740,10 +2768,10 @@ GAME( 1981, ckongpt2b2, ckongpt2, cclimber, ckongb2, cclimber_state, empty_i
// see bagman.cpp for parent
GAME( 1982, bagmanf, bagman, bagmanf, bagmanf, cclimber_state, empty_init, ROT270, "bootleg", "Le Bagnard (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
GAME( 1981, rpatrol, 0, cclimber, rpatrol, cclimber_state, init_rpatrol, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE)
GAME( 1981, rpatroln, rpatrol, cclimber, rpatrol, cclimber_state, empty_init, ROT0, "Orca", "River Patrol (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, cclimber_state, empty_init, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, silvland, rpatrol, cclimber, rpatrol, cclimber_state, empty_init, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE )
GAME( 1981, rpatrol, 0, rpatrol, rpatrol, cclimber_state, init_rpatrol, ROT0, "Orca", "River Patrol (Japan)", MACHINE_SUPPORTS_SAVE)
GAME( 1981, rpatroln, rpatrol, rpatrol, rpatrol, cclimber_state, empty_init, ROT0, "Orca", "River Patrol (Japan, unprotected)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, rpatrolb, rpatrol, rpatrol, rpatrol, cclimber_state, empty_init, ROT0, "bootleg", "River Patrol (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1981, silvland, rpatrol, rpatrol, rpatrol, cclimber_state, empty_init, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE )
// see pacman.cpp for parent
GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, init_cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game

View File

@ -10770,7 +10770,7 @@ ROM_START( mshuttle )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "mscprom1.bin", 0x0000, 0x0020, CRC(ea0d1af0) SHA1(cb59e04c02307dfe847e3170cf0a7f62829b6094) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "my07", 0x0000, 0x1000, CRC(522a2920) SHA1(a64d821a8ff6bd6e2b0bdb1e632181e65a97363b) )
ROM_LOAD( "my06", 0x1000, 0x1000, CRC(466415f2) SHA1(a05f8238cdcebe926a564ef6268b3cd677987fa2) ) // sldh
ROM_END
@ -10792,7 +10792,7 @@ ROM_START( mshuttle2 )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "mscprom1.bin", 0x0000, 0x0020, CRC(ea0d1af0) SHA1(cb59e04c02307dfe847e3170cf0a7f62829b6094) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "my07", 0x0000, 0x1000, CRC(522a2920) SHA1(a64d821a8ff6bd6e2b0bdb1e632181e65a97363b) )
ROM_LOAD( "my06", 0x1000, 0x1000, CRC(6d2dd711) SHA1(82e7c7b10258f651943173c968c7fa2bdf937ca9) )
ROM_END
@ -10814,7 +10814,7 @@ ROM_START( mshuttlea ) // PCB MY-01 + MY-02
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "mscprom1.bin", 0x0000, 0x0020, CRC(ea0d1af0) SHA1(cb59e04c02307dfe847e3170cf0a7f62829b6094) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "my07.4p", 0x0000, 0x1000, CRC(522a2920) SHA1(a64d821a8ff6bd6e2b0bdb1e632181e65a97363b) )
ROM_LOAD( "my06.4s", 0x1000, 0x1000, CRC(466415f2) SHA1(a05f8238cdcebe926a564ef6268b3cd677987fa2) ) // sldh
ROM_END
@ -10837,7 +10837,7 @@ ROM_START( mshuttlej )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "mscprom1.bin", 0x0000, 0x0020, CRC(ea0d1af0) SHA1(cb59e04c02307dfe847e3170cf0a7f62829b6094) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "my07", 0x0000, 0x1000, CRC(522a2920) SHA1(a64d821a8ff6bd6e2b0bdb1e632181e65a97363b) )
ROM_LOAD( "my06", 0x1000, 0x1000, CRC(6d2dd711) SHA1(82e7c7b10258f651943173c968c7fa2bdf937ca9) )
ROM_END
@ -10860,7 +10860,7 @@ ROM_START( mshuttlej2 )
ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "mscprom1.bin", 0x0000, 0x0020, CRC(ea0d1af0) SHA1(cb59e04c02307dfe847e3170cf0a7f62829b6094) )
ROM_REGION( 0x2000, "samples", 0 ) /* samples */
ROM_REGION( 0x2000, "cclimber_audio:samples", 0 )
ROM_LOAD( "my07", 0x0000, 0x1000, CRC(522a2920) SHA1(a64d821a8ff6bd6e2b0bdb1e632181e65a97363b) )
ROM_LOAD( "my06.4r", 0x1000, 0x1000, CRC(4162be4d) SHA1(84fa8651796e498a37893ea90ef51b274c70e568) )
ROM_END

File diff suppressed because it is too large Load Diff

View File

@ -34,6 +34,32 @@ public:
m_decrypted_opcodes(*this, "decrypted_opcodes")
{ }
void init_cannonb();
void init_cannonb2();
void init_cclimber();
void init_cclimberj();
void init_ckongb();
void init_dking();
void init_rpatrol();
void init_toprollr();
void init_yamato();
void root(machine_config &config);
void bagmanf(machine_config &config);
void cannonb(machine_config &config);
void cclimber(machine_config &config);
void cclimberx(machine_config &config);
void ckongb(machine_config &config);
void guzzler(machine_config &config);
void rpatrol(machine_config &config);
void swimmer(machine_config &config);
void toprollr(machine_config &config);
void yamato(machine_config &config);
protected:
virtual void machine_start() override;
private:
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
@ -66,30 +92,22 @@ public:
tilemap_t *m_toproller_bg_tilemap;
std::unique_ptr<uint8_t[]> m_opcodes;
DECLARE_WRITE8_MEMBER(swimmer_sh_soundlatch_w);
DECLARE_WRITE8_MEMBER(yamato_p0_w);
DECLARE_WRITE8_MEMBER(yamato_p1_w);
DECLARE_READ8_MEMBER(yamato_p0_r);
DECLARE_READ8_MEMBER(yamato_p1_r);
DECLARE_WRITE_LINE_MEMBER(toprollr_rombank_w);
DECLARE_WRITE_LINE_MEMBER(nmi_mask_w);
DECLARE_READ8_MEMBER(bagmanf_a000_r);
DECLARE_WRITE8_MEMBER(cclimber_colorram_w);
DECLARE_WRITE_LINE_MEMBER(flip_screen_x_w);
DECLARE_WRITE_LINE_MEMBER(flip_screen_y_w);
DECLARE_WRITE_LINE_MEMBER(sidebg_enable_w);
DECLARE_WRITE_LINE_MEMBER(palette_bank_w);
void swimmer_sh_soundlatch_w(uint8_t data);
void yamato_p0_w(uint8_t data);
void yamato_p1_w(uint8_t data);
uint8_t yamato_p0_r();
uint8_t yamato_p1_r();
void toprollr_rombank_w(int state);
void nmi_mask_w(int state);
uint8_t bagmanf_a000_r();
void cclimber_colorram_w(offs_t offset, uint8_t data);
void flip_screen_x_w(int state);
void flip_screen_y_w(int state);
void sidebg_enable_w(int state);
void palette_bank_w(int state);
void vblank_irq(int state);
void bagmanf_vblank_irq(int state);
virtual void machine_start() override;
void init_cclimber();
void init_yamato();
void init_ckongb();
void init_toprollr();
void init_cclimberj();
void init_cannonb2();
void init_cannonb();
void init_dking();
void init_rpatrol();
DECLARE_VIDEO_START(cclimber);
void cclimber_palette(palette_device &palette) const;
DECLARE_VIDEO_START(swimmer);
@ -118,24 +136,14 @@ public:
void swimmer_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx);
void cclimber_decode(const uint8_t convtable[8][16]);
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
DECLARE_WRITE_LINE_MEMBER(bagmanf_vblank_irq);
void root(machine_config &config);
void swimmer(machine_config &config);
void guzzler(machine_config &config);
void toprollr(machine_config &config);
void cannonb(machine_config &config);
void yamato(machine_config &config);
void bagmanf(machine_config &config);
void cclimber(machine_config &config);
void cclimberx(machine_config &config);
void ckongb(machine_config &config);
void bagmanf_map(address_map &map);
void cannonb_map(address_map &map);
void cclimber_map(address_map &map);
void cclimber_portmap(address_map &map);
void decrypted_opcodes_map(address_map &map);
void guzzler_map(address_map &map);
void rpatrol_map(address_map &map);
void rpatrol_portmap(address_map &map);
void swimmer_audio_map(address_map &map);
void swimmer_audio_portmap(address_map &map);
void swimmer_map(address_map &map);

View File

@ -21,8 +21,7 @@ public:
m_fgvideoram(*this, "fgvideoram"),
m_bgvideoram(*this, "bgvideoram"),
m_bgattribram(*this, "bgattribram"),
m_spriteram_1(*this, "spriteram_1"),
m_spriteram_2(*this, "spriteram_2"),
m_spriteram(*this, "spriteram_%u", 1U),
m_shared_ram(*this, "shared_ram"),
m_maincpu(*this, "maincpu"),
m_subcpu(*this, "sub"),
@ -39,17 +38,22 @@ public:
void init_srdmissn();
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
private:
DECLARE_WRITE_LINE_MEMBER(nmi_mask_w);
DECLARE_WRITE8_MEMBER(coin_counter_w);
DECLARE_WRITE8_MEMBER(fgvideoram_w);
DECLARE_WRITE8_MEMBER(bgvideoram_w);
DECLARE_WRITE8_MEMBER(bgattribram_w);
DECLARE_READ8_MEMBER(spriteram_2_r);
DECLARE_WRITE8_MEMBER(scroll_x_lo_w);
DECLARE_WRITE8_MEMBER(gfxctrl_w);
DECLARE_WRITE8_MEMBER(scroll_y_w);
DECLARE_WRITE_LINE_MEMBER(flipscreen_w);
void nmi_mask_w(int state);
void coin_counter_w(offs_t offset, uint8_t data);
void fgvideoram_w(offs_t offset, uint8_t data);
void bgvideoram_w(offs_t offset, uint8_t data);
void bgattribram_w(offs_t offset, uint8_t data);
uint8_t spriteram_2_r(offs_t offset);
void scroll_x_lo_w(uint8_t data);
void gfxctrl_w(uint8_t data);
void scroll_y_w(uint8_t data);
void flipscreen_w(int state);
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vblank_irq);
@ -67,31 +71,26 @@ private:
void srdmissn_sub_map(address_map &map);
void srdmissn_sub_portmap(address_map &map);
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void video_start() override;
/* memory pointers */
// memory pointers
required_shared_ptr<uint8_t> m_fgvideoram;
required_shared_ptr<uint8_t> m_bgvideoram;
required_shared_ptr<uint8_t> m_bgattribram;
required_shared_ptr<uint8_t> m_spriteram_1;
required_shared_ptr<uint8_t> m_spriteram_2;
required_shared_ptr_array<uint8_t, 2> m_spriteram;
required_shared_ptr<uint8_t> m_shared_ram;
uint8_t m_nmi_mask;
/* video-related */
// video-related
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
uint8_t m_scroll_x_lo;
uint8_t m_scroll_x_hi;
uint8_t m_scroll_y;
int m_bgpalbank;
int m_fgcolor;
uint8_t m_bgpalbank;
uint8_t m_fgcolor;
const uint8_t *m_color_codes;
/* devices */
// devices
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_subcpu;
required_device<gfxdecode_device> m_gfxdecode;

View File

@ -318,7 +318,7 @@ void cclimber_state::swimmer_set_background_pen()
WRITE8_MEMBER(cclimber_state::cclimber_colorram_w)
void cclimber_state::cclimber_colorram_w(offs_t offset, uint8_t data)
{
/* A5 is not connected, there is only 0x200 bytes of RAM */
m_colorram[offset & ~0x20] = data;
@ -326,25 +326,25 @@ WRITE8_MEMBER(cclimber_state::cclimber_colorram_w)
}
WRITE_LINE_MEMBER(cclimber_state::flip_screen_x_w)
void cclimber_state::flip_screen_x_w(int state)
{
m_flip_x = state;
}
WRITE_LINE_MEMBER(cclimber_state::flip_screen_y_w)
void cclimber_state::flip_screen_y_w(int state)
{
m_flip_y = state;
}
WRITE_LINE_MEMBER(cclimber_state::sidebg_enable_w)
void cclimber_state::sidebg_enable_w(int state)
{
m_swimmer_side_background_enabled = state;
}
WRITE_LINE_MEMBER(cclimber_state::palette_bank_w)
void cclimber_state::palette_bank_w(int state)
{
m_swimmer_palettebank = state;
}

View File

@ -62,46 +62,46 @@ void kyugo_state::video_start()
*
*************************************/
WRITE8_MEMBER(kyugo_state::fgvideoram_w)
void kyugo_state::fgvideoram_w(offs_t offset, uint8_t data)
{
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(kyugo_state::bgvideoram_w)
void kyugo_state::bgvideoram_w(offs_t offset, uint8_t data)
{
m_bgvideoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
WRITE8_MEMBER(kyugo_state::bgattribram_w)
void kyugo_state::bgattribram_w(offs_t offset, uint8_t data)
{
m_bgattribram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset);
}
READ8_MEMBER(kyugo_state::spriteram_2_r)
uint8_t kyugo_state::spriteram_2_r(offs_t offset)
{
// only the lower nibble is connected
return m_spriteram_2[offset] | 0xf0;
return m_spriteram[1][offset] | 0xf0;
}
WRITE8_MEMBER(kyugo_state::scroll_x_lo_w)
void kyugo_state::scroll_x_lo_w(uint8_t data)
{
m_scroll_x_lo = data;
}
WRITE8_MEMBER(kyugo_state::gfxctrl_w)
void kyugo_state::gfxctrl_w(uint8_t data)
{
/* bit 0 is scroll MSB */
// bit 0 is scroll MSB
m_scroll_x_hi = data & 0x01;
/* bit 5 is front layer color (Son of Phoenix only) */
// bit 5 is front layer color (Son of Phoenix only)
if (m_fgcolor != ((data & 0x20) >> 5))
{
m_fgcolor = (data & 0x20) >> 5;
@ -109,7 +109,7 @@ WRITE8_MEMBER(kyugo_state::gfxctrl_w)
m_fg_tilemap->mark_all_dirty();
}
/* bit 6 is background palette bank */
// bit 6 is background palette bank
if (m_bgpalbank != ((data & 0x40) >> 6))
{
m_bgpalbank = (data & 0x40) >> 6;
@ -121,13 +121,13 @@ WRITE8_MEMBER(kyugo_state::gfxctrl_w)
}
WRITE8_MEMBER(kyugo_state::scroll_y_w)
void kyugo_state::scroll_y_w(uint8_t data)
{
m_scroll_y = data;
}
WRITE_LINE_MEMBER(kyugo_state::flipscreen_w)
void kyugo_state::flipscreen_w(int state)
{
flip_screen_set(state);
}
@ -141,10 +141,10 @@ WRITE_LINE_MEMBER(kyugo_state::flipscreen_w)
void kyugo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{
/* sprite information is scattered through memory */
/* and uses a portion of the text layer memory (outside the visible area) */
uint8_t *spriteram_area1 = &m_spriteram_1[0x28];
uint8_t *spriteram_area2 = &m_spriteram_2[0x28];
// sprite information is scattered through memory
// and uses a portion of the text layer memory (outside the visible area)
uint8_t *spriteram_area1 = &m_spriteram[0][0x28];
uint8_t *spriteram_area2 = &m_spriteram[1][0x28];
uint8_t *spriteram_area3 = &m_fgvideoram[0x28];
int flip = flip_screen();