Previous 199869 Revisions Next

r34990 Thursday 12th February, 2015 at 18:37:10 UTC by Osso
chaknpop.c: enabled save state support, removed unneeded prefixes (nw)
[src/mame/drivers]chaknpop.c
[src/mame/includes]chaknpop.h
[src/mame/machine]chaknpop.c
[src/mame/video]chaknpop.c

trunk/src/mame/drivers/chaknpop.c
r243501r243502
143143static ADDRESS_MAP_START( chaknpop_map, AS_PROGRAM, 8, chaknpop_state )
144144   AM_RANGE(0x0000, 0x7fff) AM_ROM
145145   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("mcu_ram")
146   AM_RANGE(0x8800, 0x8800) AM_READWRITE(chaknpop_mcu_port_a_r, chaknpop_mcu_port_a_w)
147   AM_RANGE(0x8801, 0x8801) AM_READWRITE(chaknpop_mcu_port_b_r, chaknpop_mcu_port_b_w)
148   AM_RANGE(0x8802, 0x8802) AM_READWRITE(chaknpop_mcu_port_c_r, chaknpop_mcu_port_c_w)
146   AM_RANGE(0x8800, 0x8800) AM_READWRITE(mcu_port_a_r, mcu_port_a_w)
147   AM_RANGE(0x8801, 0x8801) AM_READWRITE(mcu_port_b_r, mcu_port_b_w)
148   AM_RANGE(0x8802, 0x8802) AM_READWRITE(mcu_port_c_r, mcu_port_c_w)
149149   AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
150150   AM_RANGE(0x8806, 0x8807) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
151151   AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSWC")
152152   AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1")
153153   AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM")
154154   AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2")
155   AM_RANGE(0x880c, 0x880c) AM_READWRITE(chaknpop_gfxmode_r, chaknpop_gfxmode_w)
155   AM_RANGE(0x880c, 0x880c) AM_READWRITE(gfxmode_r, gfxmode_w)
156156   AM_RANGE(0x880d, 0x880d) AM_WRITE(coinlock_w)                                               // coin lock out
157   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(chaknpop_txram_w) AM_SHARE("tx_ram")          // TX tilemap
158   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(chaknpop_attrram_w) AM_SHARE("attr_ram")      // Color attribute
157   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(txram_w) AM_SHARE("tx_ram")          // TX tilemap
158   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(attrram_w) AM_SHARE("attr_ram")      // Color attribute
159159   AM_RANGE(0x9840, 0x98ff) AM_RAM AM_SHARE("spr_ram") // sprite
160160   AM_RANGE(0xa000, 0xbfff) AM_ROM
161161   AM_RANGE(0xc000, 0xffff) AM_RAMBANK("bank1")                                                        // bitmap plane 1-4
r243501r243502
362362   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
363363   MCFG_SCREEN_SIZE(32*8, 32*8)
364364   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
365   MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update_chaknpop)
365   MCFG_SCREEN_UPDATE_DRIVER(chaknpop_state, screen_update)
366366   MCFG_SCREEN_PALETTE("palette")
367367
368368   MCFG_GFXDECODE_ADD("gfxdecode", "palette", chaknpop)
r243501r243502
416416
417417
418418/*  ( YEAR  NAME      PARENT    MACHINE   INPUT     INIT      MONITOR  COMPANY              FULLNAME ) */
419GAME( 1983, chaknpop, 0,        chaknpop, chaknpop, driver_device, 0,        ROT0,    "Taito Corporation", "Chack'n Pop", 0 )
419GAME( 1983, chaknpop, 0,        chaknpop, chaknpop, driver_device, 0,        ROT0,    "Taito Corporation", "Chack'n Pop", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/chaknpop.h
r243501r243502
88public:
99   chaknpop_state(const machine_config &mconfig, device_type type, const char *tag)
1010      : driver_device(mconfig, type, tag),
11      m_maincpu(*this, "maincpu"),
12      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette"),
1114      m_mcu_ram(*this, "mcu_ram"),
1215      m_tx_ram(*this, "tx_ram"),
1316      m_attr_ram(*this, "attr_ram"),
14      m_spr_ram(*this, "spr_ram"),
15      m_maincpu(*this, "maincpu"),
16      m_gfxdecode(*this, "gfxdecode"),
17      m_palette(*this, "palette") { }
17      m_spr_ram(*this, "spr_ram") { }
1818
19   /* devices */
20   required_device<cpu_device> m_maincpu;
21   required_device<gfxdecode_device> m_gfxdecode;
22   required_device<palette_device> m_palette;
23
1924   /* memory pointers */
2025   required_shared_ptr<UINT8> m_mcu_ram;
2126   required_shared_ptr<UINT8> m_tx_ram;
r243501r243502
3742   UINT8    m_gfxmode;
3843   UINT8    m_flip_x;
3944   UINT8    m_flip_y;
45   
4046   DECLARE_WRITE8_MEMBER(coinlock_w);
41   DECLARE_READ8_MEMBER(chaknpop_mcu_port_a_r);
42   DECLARE_READ8_MEMBER(chaknpop_mcu_port_b_r);
43   DECLARE_READ8_MEMBER(chaknpop_mcu_port_c_r);
44   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_a_w);
45   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_b_w);
46   DECLARE_WRITE8_MEMBER(chaknpop_mcu_port_c_w);
47   DECLARE_READ8_MEMBER(chaknpop_gfxmode_r);
48   DECLARE_WRITE8_MEMBER(chaknpop_gfxmode_w);
49   DECLARE_WRITE8_MEMBER(chaknpop_txram_w);
50   DECLARE_WRITE8_MEMBER(chaknpop_attrram_w);
47   DECLARE_READ8_MEMBER(mcu_port_a_r);
48   DECLARE_READ8_MEMBER(mcu_port_b_r);
49   DECLARE_READ8_MEMBER(mcu_port_c_r);
50   DECLARE_WRITE8_MEMBER(mcu_port_a_w);
51   DECLARE_WRITE8_MEMBER(mcu_port_b_w);
52   DECLARE_WRITE8_MEMBER(mcu_port_c_w);
53   DECLARE_READ8_MEMBER(gfxmode_r);
54   DECLARE_WRITE8_MEMBER(gfxmode_w);
55   DECLARE_WRITE8_MEMBER(txram_w);
56   DECLARE_WRITE8_MEMBER(attrram_w);
5157   DECLARE_WRITE8_MEMBER(unknown_port_1_w);
5258   DECLARE_WRITE8_MEMBER(unknown_port_2_w);
53   TILE_GET_INFO_MEMBER(chaknpop_get_tx_tile_info);
59   TILE_GET_INFO_MEMBER(get_tx_tile_info);
60   
5461   virtual void machine_start();
5562   virtual void machine_reset();
5663   virtual void video_start();
5764   DECLARE_PALETTE_INIT(chaknpop);
58   UINT32 screen_update_chaknpop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
65   
66   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5967   void tx_tilemap_mark_all_dirty();
60   void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
61   void draw_bitmap( bitmap_ind16 &bitmap, const rectangle &cliprect );
62   void mcu_update_seed( UINT8 data );
63   required_device<cpu_device> m_maincpu;
64   required_device<gfxdecode_device> m_gfxdecode;
65   required_device<palette_device> m_palette;
68   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
69   void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   void mcu_update_seed(UINT8 data);
6672};
trunk/src/mame/machine/chaknpop.c
r243501r243502
6363  Memory handlers
6464***************************************************************************/
6565
66READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_a_r)
66READ8_MEMBER(chaknpop_state::mcu_port_a_r)
6767{
6868   //logerror("%04x: MCU port_a read\n", space.device().safe_pc());
6969   return m_mcu_result;
7070}
7171
7272
73READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_b_r)
73READ8_MEMBER(chaknpop_state::mcu_port_b_r)
7474{
7575   //logerror("%04x: MCU port_b read\n", space.device().safe_pc());
7676
7777   return 0xff;
7878}
7979
80READ8_MEMBER(chaknpop_state::chaknpop_mcu_port_c_r)
80READ8_MEMBER(chaknpop_state::mcu_port_c_r)
8181{
8282   //logerror("%04x: MCU port_c read\n", space.device().safe_pc());
8383   return 0x00;
8484}
8585
86WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_a_w)
86WRITE8_MEMBER(chaknpop_state::mcu_port_a_w)
8787{
8888   UINT8 mcu_command;
8989
r243501r243502
131131   }
132132}
133133
134WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_b_w)
134WRITE8_MEMBER(chaknpop_state::mcu_port_b_w)
135135{
136136   //logerror("%04x: MCU port_b write 0x%02x\n", space.device().safe_pc(), data);
137137}
138138
139WRITE8_MEMBER(chaknpop_state::chaknpop_mcu_port_c_w)
139WRITE8_MEMBER(chaknpop_state::mcu_port_c_w)
140140{
141141   //logerror("%04x: MCU port_c write 0x%02x\n", space.device().safe_pc(), data);
142142}
trunk/src/mame/video/chaknpop.c
r243501r243502
2525PALETTE_INIT_MEMBER(chaknpop_state, chaknpop)
2626{
2727   const UINT8 *color_prom = memregion("proms")->base();
28   int i;
29
30   for (i = 0; i < 1024; i++)
28   
29   for (int i = 0; i < 1024; i++)
3130   {
3231      int col, r, g, b;
3332      int bit0, bit1, bit2;
r243501r243502
6665   m_tx_tilemap->set_flip(m_flip_x | m_flip_y);
6766}
6867
69READ8_MEMBER(chaknpop_state::chaknpop_gfxmode_r)
68READ8_MEMBER(chaknpop_state::gfxmode_r)
7069{
7170   return m_gfxmode;
7271}
7372
74WRITE8_MEMBER(chaknpop_state::chaknpop_gfxmode_w)
73WRITE8_MEMBER(chaknpop_state::gfxmode_w)
7574{
7675   if (m_gfxmode != data)
7776   {
r243501r243502
9796   }
9897}
9998
100WRITE8_MEMBER(chaknpop_state::chaknpop_txram_w)
99WRITE8_MEMBER(chaknpop_state::txram_w)
101100{
102101   m_tx_ram[offset] = data;
103102   m_tx_tilemap->mark_tile_dirty(offset);
104103}
105104
106WRITE8_MEMBER(chaknpop_state::chaknpop_attrram_w)
105WRITE8_MEMBER(chaknpop_state::attrram_w)
107106{
108107   if (m_attr_ram[offset] != data)
109108   {
r243501r243502
123122 *  I'm not sure how to handle attributes about color
124123 */
125124
126TILE_GET_INFO_MEMBER(chaknpop_state::chaknpop_get_tx_tile_info)
125TILE_GET_INFO_MEMBER(chaknpop_state::get_tx_tile_info)
127126{
128127   int tile = m_tx_ram[tile_index];
129128   int tile_h_bank = (m_gfxmode & GFX_TX_BANK2) << 2;  /* 0x00-0xff -> 0x200-0x2ff */
r243501r243502
150149   UINT8 *RAM = memregion("maincpu")->base();
151150
152151   /*                          info                       offset             type             w   h  col row */
153   m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(chaknpop_state::chaknpop_get_tx_tile_info),this), TILEMAP_SCAN_ROWS,   8,  8, 32, 32);
152   m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(chaknpop_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS,   8,  8, 32, 32);
154153
155154   m_vram1 = &RAM[0x10000];
156155   m_vram2 = &RAM[0x12000];
r243501r243502
175174
176175void chaknpop_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )
177176{
178   int offs;
179
180177   /* Draw the sprites */
181   for (offs = 0; offs < m_spr_ram.bytes(); offs += 4)
178   for (int offs = 0; offs < m_spr_ram.bytes(); offs += 4)
182179   {
183180      int sx = m_spr_ram[offs + 3];
184181      int sy = 256 - 15 - m_spr_ram[offs];
r243501r243502
246243   }
247244}
248245
249UINT32 chaknpop_state::screen_update_chaknpop(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
246UINT32 chaknpop_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
250247{
251248   m_tx_tilemap->draw(screen, bitmap, cliprect, 0, 0);
252249   draw_sprites(bitmap, cliprect);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team