Previous 199869 Revisions Next

r33538 Tuesday 25th November, 2014 at 22:54:04 UTC by David Haywood
checkpoint (nw)
[src/mame/drivers]supduck.c

trunk/src/mame/drivers/supduck.c
r242049r242050
5252   DECLARE_WRITE16_MEMBER(tx_videoram_w);
5353   DECLARE_WRITE16_MEMBER(bg_videoram_w);
5454   DECLARE_WRITE16_MEMBER(fg_videoram_w);
55   DECLARE_WRITE16_MEMBER(supduck_scroll_w);
5556
57   DECLARE_WRITE16_MEMBER(supduck_4000_w);
58   DECLARE_WRITE16_MEMBER(supduck_4002_w);
59
60   TILEMAP_MAPPER_MEMBER(tigeroad_tilemap_scan);
61
62
5663protected:
5764
5865   // driver_device overrides
r242049r242050
6875
6976};
7077
78TILEMAP_MAPPER_MEMBER(supduck_state::tigeroad_tilemap_scan)
79{
80   /* logical (col,row) -> memory offset */
81   return (num_rows - 1 - row) * num_cols + col;
82}
83
7184void supduck_state::video_start()
7285{
7386   m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
7487
75   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 8, 256);
76   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 8, 256);
88   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(supduck_state::tigeroad_tilemap_scan),this), 32, 32, 8, 256);
89   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(supduck_state::tigeroad_tilemap_scan),this), 32, 32, 8, 256);
7790
7891   m_tx_tilemap->set_transparent_pen(3);
7992
r242049r242050
124137
125138TILE_GET_INFO_MEMBER(supduck_state::get_bg_tile_info)
126139{
127   int m_bgcharbank = 0;
140   UINT16 *videoram = m_bg_videoram;
141   int data = videoram[tile_index];
142   int code = data & 0xff;
143   if (data & 0x4000) code |= 0x100;
144   if (data & 0x8000) code |= 0x200;
128145
129   UINT16 *tilerom = m_bg_videoram;
130   int data = tilerom[tile_index];
131   int attr = tilerom[tile_index + 1];
132   int code = data + ((attr & 0xc0) << 2) + (m_bgcharbank << 10);
133   int color = attr & 0x0f;
134   int flags = (attr & 0x20) ? TILE_FLIPX : 0;
146   int color = 0;
147   int flags = 0;
135148
136149   SET_TILE_INFO_MEMBER(1, code, color, flags);
137   tileinfo.group = (attr & 0x10) ? 1 : 0;
138150}
139151
140152TILE_GET_INFO_MEMBER(supduck_state::get_fg_tile_info)
r242049r242050
143155   UINT16 *videoram = m_fg_videoram;
144156   int data = videoram[tile_index];
145157
146   int code = data;
158   int code = data & 0xff;
159   if (data & 0x4000) code |= 0x100;
160   if (data & 0x8000) code |= 0x200;
161
147162   int color = 0;
148163   int flags = 0;
149164
r242049r242050
192207   }
193208}
194209
210WRITE16_MEMBER(supduck_state::supduck_4000_w)
211{
195212
213}
196214
215WRITE16_MEMBER(supduck_state::supduck_4002_w)
216{
217   data &= mem_mask;
218   // soundlatch
219//   printf("supduck_4002_w %04x\n", data);
220}
221
222WRITE16_MEMBER(supduck_state::supduck_scroll_w)
223{
224   data &= mem_mask;
225
226   switch (offset)
227   {
228   case 0:
229      m_bg_tilemap->set_scrollx(0, data);
230      printf("bg x scroll %04x\n", data);
231
232      break;
233   case 1:
234      m_bg_tilemap->set_scrolly(0, -data - 32 * 8);
235      printf("bg y scroll %04x\n", data);
236
237      break;
238   case 2:
239      m_fg_tilemap->set_scrollx(0, data);
240      break;
241   case 3:
242      m_fg_tilemap->set_scrolly(0, -data - 32 * 8);
243      break;
244   }
245}
246
247
248
197249static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, supduck_state )
198   AM_RANGE(0x000000, 0x03ffff) AM_ROM
250   AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_WRITENOP
199251   AM_RANGE(0xfe0000, 0xfe1fff) AM_RAM AM_SHARE("spriteram")
200252//   AM_RANGE(0xfe0000, 0xfe07ff) AM_RAM /* RAM? */
201253//   AM_RANGE(0xfe0800, 0xfe0cff) AM_RAM AM_SHARE("spriteram")
r242049r242050
203255//   AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(bionicc_gfxctrl_w)    /* + coin counters */
204256//   AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("SYSTEM")
205257//   AM_RANGE(0xfe4002, 0xfe4003) AM_READ(supduck_random_r)
206   AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2")
207   AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM")
258   AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE( supduck_4000_w )
259   AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE( supduck_4002_w )
208260   AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW")
261
262   AM_RANGE(0xfe8000, 0xfe8007) AM_WRITE(supduck_scroll_w)
263   AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP // watchdog or irqack
264
265   
209266//   AM_RANGE(0xfe8010, 0xfe8017) AM_WRITE(bionicc_scroll_w)
210267//   AM_RANGE(0xfe801a, 0xfe801b) AM_WRITE(bionicc_mpu_trigger_w)    /* ??? not sure, but looks like it */
211268   AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("txvideoram")


Previous 199869 Revisions Next


© 1997-2024 The MAME Team