40love: use mb14241 device (nw)

This commit is contained in:
hap 2020-06-10 13:02:30 +02:00
parent 22b5b57f86
commit d361cd89d1
2 changed files with 8 additions and 58 deletions

View File

@ -227,6 +227,7 @@ Notes - Has jumper setting for 122HZ or 61HZ)
#include "cpu/m6805/m6805.h"
#include "cpu/z80/z80.h"
#include "machine/input_merger.h"
#include "machine/mb14241.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
#include "screen.h"
@ -252,14 +253,6 @@ void fortyl_state::bank_select_w(uint8_t data)
membank("bank1")->set_entry(data & 1);
}
void fortyl_state::pix1_w(uint8_t data)
{
// if (data > 7)
// logerror("pix1 = %2x\n", data);
m_pix1 = data;
}
uint8_t fortyl_state::fortyl_mcu_status_r()
{
// bit 0 = when 1, MCU is ready to receive data from main CPU
@ -269,40 +262,6 @@ uint8_t fortyl_state::fortyl_mcu_status_r()
((CLEAR_LINE != m_bmcu->mcu_semaphore_r()) ? 0x02 : 0x00);
}
void fortyl_state::pix1_mcu_w(uint8_t data)
{
// if (data > 7)
// logerror("pix1 = %2x\n", data);
m_pix1 = data;
}
void fortyl_state::pix2_w(uint8_t data)
{
// if ((data!=0x00) && (data != 0xff))
// logerror("pix2 = %2x\n", data);
m_pix2[0] = m_pix2[1];
m_pix2[1] = data;
}
#if 0
uint8_t fortyl_state::pix1_r()
{
return m_pix1;
}
#endif
uint8_t fortyl_state::pix2_r()
{
int res;
int d1 = m_pix1 & 7;
res = (((m_pix2[1] << (d1 + 8)) | (m_pix2[0] << d1)) & 0xff00) >> 8;
return res;
}
/***************************************************************************/
@ -331,9 +290,9 @@ void fortyl_state::_40love_map(address_map &map)
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram(); /* M5517P on main board */
map(0x8800, 0x8800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
map(0x8801, 0x8801).rw(FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_mcu_w)); //pixel layer related
map(0x8801, 0x8801).r(FUNC(fortyl_state::fortyl_mcu_status_r)).w("mb14241", FUNC(mb14241_device::shift_count_w)); //pixel layer related
map(0x8802, 0x8802).w(FUNC(fortyl_state::bank_select_w));
map(0x8803, 0x8803).rw(FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related
map(0x8803, 0x8803).r("mb14241", FUNC(mb14241_device::shift_result_r)).w("mb14241", FUNC(mb14241_device::shift_data_w)); //pixel layer related
map(0x8804, 0x8804).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
map(0x8804, 0x8804).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0x8805, 0x8805).r(FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //????
@ -360,9 +319,9 @@ void fortyl_state::undoukai_map(address_map &map)
map(0x8000, 0x9fff).bankr("bank1");
map(0xa000, 0xa7ff).ram().share("mcu_ram"); /* M5517P on main board */
map(0xa800, 0xa800).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
map(0xa801, 0xa801).rw(FUNC(fortyl_state::fortyl_mcu_status_r), FUNC(fortyl_state::pix1_w)); //pixel layer related
map(0xa801, 0xa801).r(FUNC(fortyl_state::fortyl_mcu_status_r)).w("mb14241", FUNC(mb14241_device::shift_count_w)); //pixel layer related
map(0xa802, 0xa802).w(FUNC(fortyl_state::bank_select_w));
map(0xa803, 0xa803).rw(FUNC(fortyl_state::pix2_r), FUNC(fortyl_state::pix2_w)); //pixel layer related
map(0xa803, 0xa803).r("mb14241", FUNC(mb14241_device::shift_result_r)).w("mb14241", FUNC(mb14241_device::shift_data_w)); //pixel layer related
map(0xa804, 0xa804).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
map(0xa804, 0xa804).w("soundlatch", FUNC(generic_latch_8_device::write));
map(0xa805, 0xa805).r(FUNC(fortyl_state::snd_flag_r)).nopw(); /*sound_reset*/ //????
@ -644,10 +603,9 @@ GFXDECODE_END
void fortyl_state::machine_start()
{
/* video */
save_item(NAME(m_pix1));
save_item(NAME(m_pix2));
save_item(NAME(m_color_bank));
save_item(NAME(m_screen_disable));
/* sound */
save_item(NAME(m_vol_ctrl));
save_item(NAME(m_snd_ctrl0));
@ -660,9 +618,6 @@ void fortyl_state::machine_start()
void fortyl_state::machine_reset()
{
/* video */
m_pix1 = 0;
m_pix2[0] = 0;
m_pix2[1] = 0;
m_color_bank = false;
/* sound */
@ -683,7 +638,6 @@ void fortyl_state::common(machine_config &config)
m_audiocpu->set_periodic_int(FUNC(fortyl_state::irq0_line_hold), attotime::from_hz(2*60)); /* source/number of IRQs is unknown */
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
GENERIC_LATCH_8(config, m_soundlatch2);
INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
@ -692,6 +646,8 @@ void fortyl_state::common(machine_config &config)
config.set_maximum_quantum(attotime::from_hz(6000)); /* high interleave to ensure proper synchronization of CPUs */
MB14241(config, "mb14241");
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);

View File

@ -58,9 +58,6 @@ private:
virtual void video_start() override;
void bank_select_w(uint8_t data);
void pix1_w(uint8_t data);
void pix2_w(uint8_t data);
uint8_t pix2_r();
uint8_t snd_flag_r();
uint8_t fortyl_mcu_status_r();
void fortyl_pixram_sel_w(uint8_t data);
@ -70,7 +67,6 @@ private:
uint8_t fortyl_bg_videoram_r(offs_t offset);
void fortyl_bg_colorram_w(offs_t offset, uint8_t data);
uint8_t fortyl_bg_colorram_r(offs_t offset);
void pix1_mcu_w(uint8_t data);
void sound_control_0_w(uint8_t data);
void sound_control_1_w(uint8_t data);
void sound_control_2_w(uint8_t data);
@ -113,8 +109,6 @@ private:
/* misc */
int m_pix_color[4];
uint8_t m_pix1;
uint8_t m_pix2[2];
int m_vol_ctrl[16];
uint8_t m_snd_ctrl0;
uint8_t m_snd_ctrl1;