mirror of
https://github.com/holub/mame
synced 2025-06-18 18:28:57 +03:00
irem/m119.cpp: fix CPU endianness, add initial observations
This commit is contained in:
parent
9e58372c7d
commit
2e341912d5
@ -42,6 +42,7 @@ class m119_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
m119_state(const machine_config &mconfig, device_type type, const char *tag)
|
m119_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
|
, m_maincpu(*this, "maincpu")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +51,9 @@ public:
|
|||||||
private:
|
private:
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
void prg_map(address_map &map);
|
void program_map(address_map &map);
|
||||||
|
|
||||||
|
required_device<sh3_device> m_maincpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t m119_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
uint32_t m119_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
@ -58,9 +61,20 @@ uint32_t m119_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void m119_state::prg_map(address_map &map)
|
void m119_state::program_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x00000000, 0x0007ffff).rom().region("maincpu", 0);
|
map(0x00000000, 0x0007ffff).rom().region("maincpu", 0);
|
||||||
|
map(0x00400000, 0x0040ffff).ram(); // stack
|
||||||
|
|
||||||
|
// map(0x04000080, 0x04000083) address/data pairs, likely YMZ
|
||||||
|
// map(0x1000be01, 0x1000c1ff) filled as byte area
|
||||||
|
// map(0x1000c000, 0x1000ffff) ^
|
||||||
|
// 0x18000096-0x18000097 writes before accessing byte area, banked view?
|
||||||
|
// 0x180000b5 always 0xaa, paired with WTCSR $5a
|
||||||
|
// 0x180000b4 r/w at PC=0x12b2 onward,
|
||||||
|
// then loops expecting an external event filling work RAM buffer $401110 PC=12e6,
|
||||||
|
// presumably for a thread dispatcher (observe R11 afterwards)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static INPUT_PORTS_START( m119 )
|
static INPUT_PORTS_START( m119 )
|
||||||
@ -85,13 +99,14 @@ INPUT_PORTS_END
|
|||||||
void m119_state::m119(machine_config &config)
|
void m119_state::m119(machine_config &config)
|
||||||
{
|
{
|
||||||
// basic machine hardware
|
// basic machine hardware
|
||||||
sh3be_device &maincpu(SH3BE(config, "maincpu", 60'000'000)); // HD6417708S, according to the datasheet operation frequency is 60 MHz. TODO: verify endianness
|
SH3LE(config, m_maincpu, 60'000'000); // HD6417708S, according to the datasheet operation frequency is 60 MHz.
|
||||||
maincpu.set_addrmap(AS_PROGRAM, &m119_state::prg_map);
|
m_maincpu->set_addrmap(AS_PROGRAM, &m119_state::program_map);
|
||||||
|
// m_maincpu->set_vblank_int("screen", FUNC(m119_state::irq2_line_hold));
|
||||||
|
|
||||||
// all wrong
|
// all wrong
|
||||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||||
screen.set_refresh_hz(60);
|
screen.set_refresh_hz(60);
|
||||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500));
|
||||||
screen.set_size(64*8, 32*8);
|
screen.set_size(64*8, 32*8);
|
||||||
screen.set_visarea_full();
|
screen.set_visarea_full();
|
||||||
screen.set_screen_update(FUNC(m119_state::screen_update));
|
screen.set_screen_update(FUNC(m119_state::screen_update));
|
||||||
|
Loading…
Reference in New Issue
Block a user