mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
segas24.cpp: Eliminate machine().device (nw)
This commit is contained in:
parent
c50981a046
commit
cb1e35223f
@ -686,13 +686,13 @@ READ8_MEMBER( segas24_state::frc_mode_r )
|
||||
WRITE8_MEMBER( segas24_state::frc_mode_w )
|
||||
{
|
||||
/* reset frc if a write happens here */
|
||||
frc_cnt_timer->reset();
|
||||
m_frc_cnt_timer->reset();
|
||||
frc_mode = data & 1;
|
||||
}
|
||||
|
||||
READ8_MEMBER( segas24_state::frc_r )
|
||||
{
|
||||
int32_t result = (frc_cnt_timer->time_elapsed() * (frc_mode ? FRC_CLOCK_MODE1 : FRC_CLOCK_MODE0).dvalue()).as_double();
|
||||
int32_t result = (m_frc_cnt_timer->time_elapsed() * (frc_mode ? FRC_CLOCK_MODE1 : FRC_CLOCK_MODE0).dvalue()).as_double();
|
||||
|
||||
result %= ((frc_mode) ? 0x67 : 0x100);
|
||||
|
||||
@ -786,21 +786,21 @@ void segas24_state::irq_timer_start(int old_tmode)
|
||||
if(old_tmode) {
|
||||
irq_tval++;
|
||||
if(irq_tval == 0x1000)
|
||||
irq_timer->adjust(attotime::zero);
|
||||
m_irq_timer->adjust(attotime::zero);
|
||||
else
|
||||
irq_timer->enable(false);
|
||||
m_irq_timer->enable(false);
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
int count = 0x1000 - irq_tval;
|
||||
irq_timer->adjust(attotime::from_hz(HSYNC_CLOCK)*count);
|
||||
m_irq_timer->adjust(attotime::from_hz(HSYNC_CLOCK)*count);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
fatalerror("segas24_state::irq_timer_start - case 2\n");
|
||||
case 3: {
|
||||
int count = 0x1000 - irq_tval;
|
||||
irq_timer->adjust(attotime::from_hz(TIMER_CLOCK)*count);
|
||||
m_irq_timer->adjust(attotime::from_hz(TIMER_CLOCK)*count);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -857,8 +857,6 @@ void segas24_state::irq_init()
|
||||
irq_timer_pend1 = 0;
|
||||
irq_vblank = 0;
|
||||
irq_sprite = 0;
|
||||
irq_timer = machine().device<timer_device>("irq_timer");
|
||||
irq_timer_clear = machine().device<timer_device>("irq_timer_clear");
|
||||
irq_tval = 0;
|
||||
irq_synctime = attotime::zero;
|
||||
irq_vsynctime = attotime::zero;
|
||||
@ -940,7 +938,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_vbl)
|
||||
else
|
||||
return;
|
||||
|
||||
irq_timer_clear->adjust(attotime::from_hz(HSYNC_CLOCK));
|
||||
m_irq_timer_clear->adjust(attotime::from_hz(HSYNC_CLOCK));
|
||||
|
||||
mask = 1 << irq;
|
||||
|
||||
@ -1192,10 +1190,6 @@ void segas24_state::machine_start()
|
||||
membank("bank1")->configure_entries(0, 16, usr1, 0x40000);
|
||||
membank("bank2")->configure_entries(0, 16, usr1, 0x40000);
|
||||
}
|
||||
|
||||
vtile = machine().device<segas24_tile_device>("tile");
|
||||
vsprite = machine().device<segas24_sprite_device>("sprite");
|
||||
vmixer = machine().device<segas24_mixer_device>("mixer");
|
||||
}
|
||||
|
||||
void segas24_state::machine_reset()
|
||||
@ -1208,8 +1202,7 @@ void segas24_state::machine_reset()
|
||||
irq_init();
|
||||
mlatch = 0x00;
|
||||
frc_mode = 0;
|
||||
frc_cnt_timer = machine().device<timer_device>("frc_timer");
|
||||
frc_cnt_timer->reset();
|
||||
m_frc_cnt_timer->reset();
|
||||
}
|
||||
|
||||
/*************************************
|
||||
|
@ -22,6 +22,12 @@ public:
|
||||
, m_palette(*this, "palette")
|
||||
, m_generic_paletteram_16(*this, "paletteram")
|
||||
, m_romboard(*this, "romboard")
|
||||
, m_irq_timer(*this, "irq_timer")
|
||||
, m_irq_timer_clear(*this, "irq_timer_clear")
|
||||
, m_frc_cnt_timer(*this, "frc_timer")
|
||||
, m_vtile(*this, "tile")
|
||||
, m_vsprite(*this, "sprite")
|
||||
, m_vmixer(*this, "mixer")
|
||||
, m_gground_hack_timer(nullptr)
|
||||
, m_p1(*this, "P1")
|
||||
, m_p2(*this, "P2")
|
||||
@ -72,19 +78,19 @@ public:
|
||||
int irq_vblank;
|
||||
int irq_sprite;
|
||||
attotime irq_synctime, irq_vsynctime;
|
||||
timer_device *irq_timer;
|
||||
timer_device *irq_timer_clear;
|
||||
required_device<timer_device> m_irq_timer;
|
||||
required_device<timer_device> m_irq_timer_clear;
|
||||
//timer_device *irq_frc;
|
||||
timer_device *frc_cnt_timer;
|
||||
required_device<timer_device> m_frc_cnt_timer;
|
||||
uint8_t frc_mode;
|
||||
|
||||
bool m_cnt1;
|
||||
|
||||
uint16_t *shared_ram;
|
||||
|
||||
segas24_tile_device *vtile;
|
||||
segas24_sprite_device *vsprite;
|
||||
segas24_mixer_device *vmixer;
|
||||
required_device<segas24_tile_device> m_vtile;
|
||||
required_device<segas24_sprite_device> m_vsprite;
|
||||
required_device<segas24_mixer_device> m_vmixer;
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(irq_ym);
|
||||
DECLARE_READ16_MEMBER( sys16_paletteram_r );
|
||||
|
@ -15,24 +15,24 @@
|
||||
|
||||
namespace {
|
||||
struct layer_sort {
|
||||
layer_sort(segas24_mixer_device *_mixer) { mixer = _mixer; }
|
||||
layer_sort(segas24_mixer_device &_mixer) : mixer(_mixer) { }
|
||||
|
||||
bool operator()(int l1, int l2) {
|
||||
static const int default_pri[12] = { 0, 1, 2, 3, 4, 5, 6, 7, -4, -3, -2, -1 };
|
||||
int p1 = mixer->get_reg(l1) & 7;
|
||||
int p2 = mixer->get_reg(l2) & 7;
|
||||
int p1 = mixer.get_reg(l1) & 7;
|
||||
int p2 = mixer.get_reg(l2) & 7;
|
||||
if(p1 != p2)
|
||||
return p1 - p2 < 0;
|
||||
return default_pri[l2] - default_pri[l1] < 0;
|
||||
}
|
||||
|
||||
segas24_mixer_device *mixer;
|
||||
segas24_mixer_device &mixer;
|
||||
};
|
||||
}
|
||||
|
||||
uint32_t segas24_state::screen_update_system24(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
if(vmixer->get_reg(13) & 1) {
|
||||
if(m_vmixer->get_reg(13) & 1) {
|
||||
bitmap.fill(m_palette->black_pen());
|
||||
return 0;
|
||||
}
|
||||
@ -45,18 +45,18 @@ uint32_t segas24_state::screen_update_system24(screen_device &screen, bitmap_ind
|
||||
for(int i=0; i<12; i++)
|
||||
order[i] = i;
|
||||
|
||||
std::sort(order.begin(), order.end(), layer_sort(vmixer));
|
||||
std::sort(order.begin(), order.end(), layer_sort(*m_vmixer));
|
||||
|
||||
int spri[4];
|
||||
int level = 0;
|
||||
for(int i=0; i<12; i++)
|
||||
if(order[i] < 8)
|
||||
vtile->draw(screen, bitmap, cliprect, order[i], level, 0);
|
||||
m_vtile->draw(screen, bitmap, cliprect, order[i], level, 0);
|
||||
else {
|
||||
spri[order[i]-8] = level;
|
||||
level++;
|
||||
}
|
||||
|
||||
vsprite->draw(bitmap, cliprect, screen.priority(), spri);
|
||||
m_vsprite->draw(bitmap, cliprect, screen.priority(), spri);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user