Previous 199869 Revisions Next

r18557 Tuesday 16th October, 2012 at 19:05:36 UTC by Angelo Salese
set_irq_line gives an assert, fun
[src/mame/drivers]dblcrown.c

trunk/src/mame/drivers/dblcrown.c
r18556r18557
4444   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4545
4646   UINT8 m_bank;
47   UINT8 m_irq_src;
4748
4849   DECLARE_READ8_MEMBER(bank_r);
4950   DECLARE_WRITE8_MEMBER(bank_w);
51   DECLARE_READ8_MEMBER(irq_source_r);
52   DECLARE_WRITE8_MEMBER(irq_source_w);
5053
54   TIMER_DEVICE_CALLBACK_MEMBER(dblcrown_irq_scanline);
55
5156protected:
5257   // driver_device overrides
5358   virtual void machine_start();
r18556r18557
7883   membank("rom_bank")->set_entry(m_bank & 0x1f);
7984}
8085
86READ8_MEMBER( dblcrown_state::irq_source_r)
87{
88   return m_irq_src;
89}
8190
91WRITE8_MEMBER( dblcrown_state::irq_source_w)
92{
93   m_irq_src = data; // this effectively acks the irq, by writing 0
94}
95
96
8297static ADDRESS_MAP_START( dblcrown_map, AS_PROGRAM, 8, dblcrown_state )
8398   AM_RANGE(0x0000, 0x7fff) AM_ROM
8499   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("rom_bank")
r18556r18557
89104   AM_RANGE(0xc800, 0xcfff) AM_RAM
90105   AM_RANGE(0xd000, 0xdfff) AM_RAM // vram
91106   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_byte_le_w) AM_SHARE("paletteram") // TODO: correct bit order
92   AM_RANGE(0xfe00, 0xfeff) AM_RAM // ??? - both of these seems TC0091LVC-ish ...
93   AM_RANGE(0xff00, 0xffff) AM_RAM // ??? /
107   AM_RANGE(0xfe00, 0xfeff) AM_RAM // ???
108   // 0xff00 - 0xff01 RAM banks for 0xd000
109   AM_RANGE(0xff04, 0xff04) AM_READWRITE(irq_source_r,irq_source_w)
110
111   AM_RANGE(0xff00, 0xffff) AM_RAM // ???, intentional fall-through
94112ADDRESS_MAP_END
95113
96114static ADDRESS_MAP_START( dblcrown_io, AS_IO, 8, dblcrown_state )
r18556r18557
188206{
189207}
190208
209TIMER_DEVICE_CALLBACK_MEMBER(dblcrown_state::dblcrown_irq_scanline)
210{
211   int scanline = param;
212
213   if (scanline == 240)
214   {
215      m_maincpu->set_input_line(0, HOLD_LINE);
216      m_irq_src = 2;
217   }
218
219   /* TODO: unknown source */
220   if (scanline == 0)
221   {
222      m_maincpu->set_input_line(0, HOLD_LINE);
223      m_irq_src = 4;
224   }
225}
226
227
191228static MACHINE_CONFIG_START( dblcrown, dblcrown_state )
192229
193230   /* basic machine hardware */
194231   MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK/6)
195232   MCFG_CPU_PROGRAM_MAP(dblcrown_map)
196233   MCFG_CPU_IO_MAP(dblcrown_io)
197   MCFG_CPU_VBLANK_INT("screen",irq0_line_hold)
234   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dblcrown_state, dblcrown_irq_scanline, "screen", 0, 1)
198235
199236   /* video hardware */
200237   MCFG_SCREEN_ADD("screen", RASTER)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team