Previous 199869 Revisions Next

r35112 Wednesday 18th February, 2015 at 17:26:00 UTC by Osso
iqblock.c: added save state support (nw)
[src/mame/drivers]iqblock.c
[src/mame/includes]iqblock.h
[src/mame/video]iqblock.c

trunk/src/mame/drivers/iqblock.c
r243623r243624
2525Stephh's notes :
2626
2727  - Coin 2 as well as buttons 2 to 4 for each player are only read in "test mode".
28    Same issue for Dip Siwtches 0-7 and 1-2 to 1-6.
28    Same issue for Dip Switches 0-7 and 1-2 to 1-6.
2929    Some other games on the same hardware might use them.
3030  - Dip Switch 0 is stored at 0xf0ac and Dip Switch 1 is stored at 0xf0ad.
3131    However they are both read back at the same time with "ld   hl,($F0AC)" instructions.
r243623r243624
7373}
7474
7575
76TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::iqblock_irq)
76TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::irq)
7777{
7878   int scanline = param;
7979
r243623r243624
8787}
8888
8989
90WRITE8_MEMBER(iqblock_state::iqblock_irqack_w)
90WRITE8_MEMBER(iqblock_state::irqack_w)
9191{
9292   m_maincpu->set_input_line(0, CLEAR_LINE);
9393}
r243623r243624
119119   AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0")
120120   AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1")
121121   AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) // UM3567_data_port_0_w
122   AM_RANGE(0x50c0, 0x50c0) AM_WRITE(iqblock_irqack_w)
123   AM_RANGE(0x6000, 0x603f) AM_WRITE(iqblock_fgscroll_w)
124   AM_RANGE(0x6800, 0x69ff) AM_WRITE(iqblock_fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */
125   AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(iqblock_bgvideoram_w) AM_SHARE("bgvideoram")
122   AM_RANGE(0x50c0, 0x50c0) AM_WRITE(irqack_w)
123   AM_RANGE(0x6000, 0x603f) AM_WRITE(fgscroll_w)
124   AM_RANGE(0x6800, 0x69ff) AM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */
125   AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
126126   AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0)
127127ADDRESS_MAP_END
128128
r243623r243624
340340   MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */
341341   MCFG_CPU_PROGRAM_MAP(main_map)
342342   MCFG_CPU_IO_MAP(main_portmap)
343   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, iqblock_irq, "screen", 0, 1)
343   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, irq, "screen", 0, 1)
344344
345345   MCFG_DEVICE_ADD("ppi8255", I8255A, 0)
346346   MCFG_I8255_IN_PORTA_CB(IOPORT("P1"))
r243623r243624
354354   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
355355   MCFG_SCREEN_SIZE(64*8, 32*8)
356356   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
357   MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update_iqblock)
357   MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update)
358358   MCFG_SCREEN_PALETTE("palette")
359359
360360   MCFG_GFXDECODE_ADD("gfxdecode", "palette", iqblock)
r243623r243624
531531
532532
533533
534GAME( 1993, iqblock,  0, iqblock,  iqblock, iqblock_state, iqblock,  ROT0, "IGS", "IQ-Block", 0 )
535GAME( 1993, grndtour, 0, iqblock,  grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", 0 )
534GAME( 1993, iqblock,  0, iqblock,  iqblock, iqblock_state, iqblock,  ROT0, "IGS", "IQ-Block", GAME_SUPPORTS_SAVE )
535GAME( 1993, grndtour, 0, iqblock,  grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/iqblock.h
r243623r243624
1111
1212   required_device<cpu_device> m_maincpu;
1313   required_device<gfxdecode_device> m_gfxdecode;
14
1415   required_shared_ptr<UINT8> m_rambase;
1516   required_shared_ptr<UINT8> m_bgvideoram;
1617   required_shared_ptr<UINT8> m_fgvideoram;
r243623r243624
2223
2324   DECLARE_WRITE8_MEMBER(iqblock_prot_w);
2425   DECLARE_WRITE8_MEMBER(grndtour_prot_w);
25   DECLARE_WRITE8_MEMBER(iqblock_irqack_w);
26   DECLARE_WRITE8_MEMBER(iqblock_fgvideoram_w);
27   DECLARE_WRITE8_MEMBER(iqblock_bgvideoram_w);
28   DECLARE_WRITE8_MEMBER(iqblock_fgscroll_w);
26   DECLARE_WRITE8_MEMBER(irqack_w);
27   DECLARE_WRITE8_MEMBER(fgvideoram_w);
28   DECLARE_WRITE8_MEMBER(bgvideoram_w);
29   DECLARE_WRITE8_MEMBER(fgscroll_w);
2930   DECLARE_WRITE8_MEMBER(port_C_w);
31
32   TIMER_DEVICE_CALLBACK_MEMBER(irq);
33
3034   DECLARE_DRIVER_INIT(grndtour);
3135   DECLARE_DRIVER_INIT(iqblock);
36   virtual void video_start();
37
3238   TILE_GET_INFO_MEMBER(get_bg_tile_info);
3339   TILE_GET_INFO_MEMBER(get_fg_tile_info);
34   virtual void video_start();
35   UINT32 screen_update_iqblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
36   TIMER_DEVICE_CALLBACK_MEMBER(iqblock_irq);
40   
41   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3742};
trunk/src/mame/video/iqblock.c
r243623r243624
4141
4242   m_bg_tilemap->set_transparent_pen(0);
4343   m_fg_tilemap->set_scroll_cols(64);
44   
45   save_item(NAME(m_videoenable));
4446}
4547
4648
r243623r243624
5153
5254***************************************************************************/
5355
54WRITE8_MEMBER(iqblock_state::iqblock_fgvideoram_w)
56WRITE8_MEMBER(iqblock_state::fgvideoram_w)
5557{
5658   m_fgvideoram[offset] = data;
5759   m_fg_tilemap->mark_tile_dirty(offset);
5860}
5961
60WRITE8_MEMBER(iqblock_state::iqblock_bgvideoram_w)
62WRITE8_MEMBER(iqblock_state::bgvideoram_w)
6163{
6264   m_bgvideoram[offset] = data;
6365   m_bg_tilemap->mark_tile_dirty(offset & 0x7ff);
6466}
6567
66WRITE8_MEMBER(iqblock_state::iqblock_fgscroll_w)
68WRITE8_MEMBER(iqblock_state::fgscroll_w)
6769{
6870   m_fg_tilemap->set_scrolly(offset,data);
6971}
r243623r243624
7678
7779***************************************************************************/
7880
79UINT32 iqblock_state::screen_update_iqblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
81UINT32 iqblock_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8082{
8183   if (!m_videoenable) return 0;
8284   m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team