mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +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:
|
||||
m119_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
{
|
||||
}
|
||||
|
||||
@ -50,7 +51,9 @@ public:
|
||||
private:
|
||||
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)
|
||||
@ -58,9 +61,20 @@ uint32_t m119_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
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(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 )
|
||||
@ -85,13 +99,14 @@ INPUT_PORTS_END
|
||||
void m119_state::m119(machine_config &config)
|
||||
{
|
||||
// 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
|
||||
maincpu.set_addrmap(AS_PROGRAM, &m119_state::prg_map);
|
||||
SH3LE(config, m_maincpu, 60'000'000); // HD6417708S, according to the datasheet operation frequency is 60 MHz.
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &m119_state::program_map);
|
||||
// m_maincpu->set_vblank_int("screen", FUNC(m119_state::irq2_line_hold));
|
||||
|
||||
// all wrong
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
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_visarea_full();
|
||||
screen.set_screen_update(FUNC(m119_state::screen_update));
|
||||
|
Loading…
Reference in New Issue
Block a user