Previous 199869 Revisions Next

r17675 Thursday 6th September, 2012 at 13:27:34 UTC by Miodrag Milanović
TILE/TILEMAP modernization part 3 (no whatsnew)
[src/mame/drivers]namcoic.c powerbal.c
[src/mame/includes]galaga.h ladybug.h m10.h megadriv.h namcoic.h namcos2.h playmark.h
[src/mame/machine]decocass.h megacd.c
[src/mame/video]bosco.c decocass.c digdug.c m10.c namcofl.c namconb1.c namcos2.c redclash.c xevious.c
[src/mess/includes]apple1.h aquarius.h microtan.h x68k.h
[src/mess/video]apple1.c aquarius.c microtan.c x68k.c

trunk/src/mame/machine/megacd.c
r17674r17675
20112011
20122012
20132013
2014static TILE_GET_INFO( get_stampmap_16x16_1x1_tile_info )
2014TILE_GET_INFO_MEMBER( md_base_state::get_stampmap_16x16_1x1_tile_info )
20152015{
20162016   int tile_region, tileno;
20172017   SCD_GET_TILE_INFO_16x16_1x1(tile_region,tileno,(int)tile_index);
2018   SET_TILE_INFO(tile_region, tileno, 0, 0);
2018   SET_TILE_INFO_MEMBER(tile_region, tileno, 0, 0);
20192019}
20202020
2021static TILE_GET_INFO( get_stampmap_32x32_1x1_tile_info )
2021TILE_GET_INFO_MEMBER( md_base_state::get_stampmap_32x32_1x1_tile_info )
20222022{
20232023   int tile_region, tileno;
20242024   SCD_GET_TILE_INFO_32x32_1x1(tile_region,tileno,(int)tile_index);
2025   SET_TILE_INFO(tile_region, tileno, 0, 0);
2025   SET_TILE_INFO_MEMBER(tile_region, tileno, 0, 0);
20262026}
20272027
20282028
2029static TILE_GET_INFO( get_stampmap_16x16_16x16_tile_info )
2029TILE_GET_INFO_MEMBER( md_base_state::get_stampmap_16x16_16x16_tile_info )
20302030{
20312031   int tile_region, tileno;
20322032   SCD_GET_TILE_INFO_16x16_16x16(tile_region,tileno,(int)tile_index);
2033   SET_TILE_INFO(tile_region, tileno, 0, 0);
2033   SET_TILE_INFO_MEMBER(tile_region, tileno, 0, 0);
20342034}
20352035
2036static TILE_GET_INFO( get_stampmap_32x32_16x16_tile_info )
2036TILE_GET_INFO_MEMBER( md_base_state::get_stampmap_32x32_16x16_tile_info )
20372037{
20382038   int tile_region, tileno;
20392039   SCD_GET_TILE_INFO_32x32_16x16(tile_region,tileno,(int)tile_index);
2040   SET_TILE_INFO(tile_region, tileno, 0, 0);
2040   SET_TILE_INFO_MEMBER(tile_region, tileno, 0, 0);
20412041}
20422042
20432043// non-tilemap functions to get a pixel from a 'tilemap' based on the above, but looking up each pixel, as to avoid the heavy cache bitmap
r17674r17675
23042304   machine.gfx[14]= auto_alloc(machine, gfx_element(machine, sega_32x32_r10_f1_layout, (UINT8 *)segacd_dataram, 0, 0));
23052305   machine.gfx[15]= auto_alloc(machine, gfx_element(machine, sega_32x32_r01_f1_layout, (UINT8 *)segacd_dataram, 0, 0));
23062306
2307   segacd_stampmap[0] = tilemap_create(machine, get_stampmap_16x16_1x1_tile_info, TILEMAP_SCAN_ROWS, 16, 16, 16, 16);
2308   segacd_stampmap[1] = tilemap_create(machine, get_stampmap_32x32_1x1_tile_info, TILEMAP_SCAN_ROWS, 32, 32, 8, 8);
2309   segacd_stampmap[2] = tilemap_create(machine, get_stampmap_16x16_16x16_tile_info, TILEMAP_SCAN_ROWS, 16, 16, 256, 256); // 128kb!
2310   segacd_stampmap[3] = tilemap_create(machine, get_stampmap_32x32_16x16_tile_info, TILEMAP_SCAN_ROWS, 32, 32, 128, 128); // 32kb!
2307   md_base_state *state = machine.driver_data<md_base_state>();
2308   segacd_stampmap[0] = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(md_base_state::get_stampmap_16x16_1x1_tile_info),state), TILEMAP_SCAN_ROWS, 16, 16, 16, 16);
2309   segacd_stampmap[1] = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(md_base_state::get_stampmap_32x32_1x1_tile_info),state), TILEMAP_SCAN_ROWS, 32, 32, 8, 8);
2310   segacd_stampmap[2] = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(md_base_state::get_stampmap_16x16_16x16_tile_info),state), TILEMAP_SCAN_ROWS, 16, 16, 256, 256); // 128kb!
2311   segacd_stampmap[3] = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(md_base_state::get_stampmap_32x32_16x16_tile_info),state), TILEMAP_SCAN_ROWS, 32, 32, 128, 128); // 32kb!
23112312}
23122313
23132314
trunk/src/mame/machine/decocass.h
r17674r17675
138138   DECLARE_DRIVER_INIT(decocass);
139139   DECLARE_DRIVER_INIT(decocrom);
140140   DECLARE_DRIVER_INIT(cdsteljn);
141   TILEMAP_MAPPER_MEMBER(fgvideoram_scan_cols);
142   TILEMAP_MAPPER_MEMBER(bgvideoram_scan_cols);
143   TILE_GET_INFO_MEMBER(get_bg_l_tile_info);
144   TILE_GET_INFO_MEMBER(get_bg_r_tile_info);
145   TILE_GET_INFO_MEMBER(get_fg_tile_info);
141146};
142147
143148
trunk/src/mame/includes/m10.h
r17674r17675
7979   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
8080   DECLARE_DRIVER_INIT(andromed);
8181   DECLARE_DRIVER_INIT(ipminva1);
82   TILEMAP_MAPPER_MEMBER(tilemap_scan);
83   TILE_GET_INFO_MEMBER(get_tile_info);
8284};
8385
8486
trunk/src/mame/includes/megadriv.h
r17674r17675
107107   DECLARE_DRIVER_INIT(megadriv);
108108   DECLARE_DRIVER_INIT(megadrij);
109109   DECLARE_DRIVER_INIT(mpnew);
110   
111   TILE_GET_INFO_MEMBER( get_stampmap_16x16_1x1_tile_info );
112   TILE_GET_INFO_MEMBER( get_stampmap_32x32_1x1_tile_info );
113   TILE_GET_INFO_MEMBER( get_stampmap_16x16_16x16_tile_info );
114   TILE_GET_INFO_MEMBER( get_stampmap_32x32_16x16_tile_info );
110115};
111116
112117class md_boot_state : public md_base_state
trunk/src/mame/includes/playmark.h
r17674r17675
8787   TILE_GET_INFO_MEMBER(bigtwinb_get_tx_tile_info);
8888   TILE_GET_INFO_MEMBER(hrdtimes_get_fg_tile_info);
8989   TILE_GET_INFO_MEMBER(hrdtimes_get_bg_tile_info);
90   TILE_GET_INFO_MEMBER(powerbal_get_bg_tile_info);
9091};
9192
9293/*----------- defined in video/playmark.c -----------*/
trunk/src/mame/includes/galaga.h
r17674r17675
7979   DECLARE_DRIVER_INIT(xevious);
8080   DECLARE_DRIVER_INIT(xevios);
8181   DECLARE_DRIVER_INIT(battles);
82   TILE_GET_INFO_MEMBER(get_fg_tile_info);
83   TILE_GET_INFO_MEMBER(get_bg_tile_info);
8284};
8385
8486
r17674r17675
103105   UINT8 *m_spriteram2;
104106   UINT32 m_spriteram_size;
105107   DECLARE_WRITE8_MEMBER(bosco_flip_screen_w);
108   TILEMAP_MAPPER_MEMBER(fg_tilemap_scan);
109   TILE_GET_INFO_MEMBER(bg_get_tile_info);
110   TILE_GET_INFO_MEMBER(fg_get_tile_info);
106111};
107112
108113class digdug_state : public galaga_state
r17674r17675
123128   UINT8 m_bg_disable;
124129   UINT8 m_bg_color_bank;
125130   DECLARE_CUSTOM_INPUT_MEMBER(shifted_port_r);
131   TILEMAP_MAPPER_MEMBER(tilemap_scan);
132   TILE_GET_INFO_MEMBER(bg_get_tile_info);
133   TILE_GET_INFO_MEMBER(tx_get_tile_info);
126134};
127135
128136
trunk/src/mame/includes/namcos2.h
r17674r17675
117117   DECLARE_WRITE16_MEMBER( c169_roz_bank_w );
118118   DECLARE_READ16_MEMBER( c169_roz_videoram_r );
119119   DECLARE_WRITE16_MEMBER( c169_roz_videoram_w );
120
120   TILE_GET_INFO_MEMBER( get_tile_info0 );
121   TILE_GET_INFO_MEMBER( get_tile_info1 );
122   TILE_GET_INFO_MEMBER( get_tile_info2 );
123   TILE_GET_INFO_MEMBER( get_tile_info3 );
124   TILE_GET_INFO_MEMBER( get_tile_info4 );
125   TILE_GET_INFO_MEMBER( get_tile_info5 );
126   void namco_tilemap_init(int gfxbank, void *pMaskROM, void (*cb)( running_machine &machine, UINT16 code, int *gfx, int *mask) );
121127protected:
122128   struct roz_parameters
123129   {
trunk/src/mame/includes/namcoic.h
r17674r17675
158158
159159/*----------- defined in drivers/namcoic.c -----------*/
160160
161void namco_tilemap_init(
162      running_machine &machine, int gfxbank, void *pMaskROM,
163      void (*cb)( running_machine &machine, UINT16 code, int *gfx, int *mask) );
164161void namco_tilemap_draw( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
165162void namco_tilemap_invalidate( void );
166163WRITE16_HANDLER( namco_tilemapvideoram16_w );
trunk/src/mame/includes/ladybug.h
r17674r17675
6464   DECLARE_DRIVER_INIT(redclash);
6565   TILE_GET_INFO_MEMBER(get_bg_tile_info);
6666   TILE_GET_INFO_MEMBER(get_grid_tile_info);
67   TILE_GET_INFO_MEMBER(get_fg_tile_info);
6768};
6869
6970
trunk/src/mame/video/xevious.c
r17674r17675
176176
177177***************************************************************************/
178178
179static TILE_GET_INFO( get_fg_tile_info )
179TILE_GET_INFO_MEMBER(xevious_state::get_fg_tile_info)
180180{
181   xevious_state *state = machine.driver_data<xevious_state>();
181   UINT8 attr = m_xevious_fg_colorram[tile_index];
182182
183   UINT8 attr = state->m_xevious_fg_colorram[tile_index];
184
185183   /* the hardware has two character sets, one normal and one x-flipped. When
186184       screen is flipped, character y flip is done by the hardware inverting the
187185       timing signals, while x flip is done by selecting the 2nd character set.
188186       We reproduce this here, but since the tilemap system automatically flips
189187       characters when screen is flipped, we have to flip them back. */
190188   UINT8 color = ((attr & 0x03) << 4) | ((attr & 0x3c) >> 2);
191   SET_TILE_INFO(
189   SET_TILE_INFO_MEMBER(
192190         0,
193         state->m_xevious_fg_videoram[tile_index] | (state->flip_screen() ? 0x100 : 0),
191         m_xevious_fg_videoram[tile_index] | (flip_screen() ? 0x100 : 0),
194192         color,
195         TILE_FLIPYX((attr & 0xc0) >> 6) ^ (state->flip_screen() ? TILE_FLIPX : 0));
193         TILE_FLIPYX((attr & 0xc0) >> 6) ^ (flip_screen() ? TILE_FLIPX : 0));
196194}
197195
198static TILE_GET_INFO( get_bg_tile_info )
196TILE_GET_INFO_MEMBER(xevious_state::get_bg_tile_info)
199197{
200   xevious_state *state =  machine.driver_data<xevious_state>();
201
202   UINT8 code = state->m_xevious_bg_videoram[tile_index];
203   UINT8 attr = state->m_xevious_bg_colorram[tile_index];
198   UINT8 code = m_xevious_bg_videoram[tile_index];
199   UINT8 attr = m_xevious_bg_colorram[tile_index];
204200   UINT8 color = ((attr & 0x3c) >> 2) | ((code & 0x80) >> 3) | ((attr & 0x03) << 5);
205   SET_TILE_INFO(
201   SET_TILE_INFO_MEMBER(
206202         1,
207203         code + ((attr & 0x01) << 8),
208204         color,
r17674r17675
221217{
222218   xevious_state *state =  machine.driver_data<xevious_state>();
223219
224   state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info,TILEMAP_SCAN_ROWS,     8,8,64,32);
225   state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info,TILEMAP_SCAN_ROWS,8,8,64,32);
220   state->m_bg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(xevious_state::get_bg_tile_info),state),TILEMAP_SCAN_ROWS,8,8,64,32);
221   state->m_fg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(xevious_state::get_fg_tile_info),state),TILEMAP_SCAN_ROWS,8,8,64,32);
226222
227223   state->m_bg_tilemap->set_scrolldx(-20,288+27);
228224   state->m_bg_tilemap->set_scrolldy(-16,-16);
trunk/src/mame/video/namcofl.c
r17674r17675
120120VIDEO_START( namcofl )
121121{
122122   namcofl_state *state = machine.driver_data<namcofl_state>();
123   namco_tilemap_init( machine, NAMCOFL_TILEGFX, machine.root_device().memregion(NAMCOFL_TILEMASKREGION)->base(), TilemapCB );
123   state->namco_tilemap_init(NAMCOFL_TILEGFX, machine.root_device().memregion(NAMCOFL_TILEMASKREGION)->base(), TilemapCB );
124124   state->c355_obj_init(NAMCOFL_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(FUNC(FLobjcode2tile), &machine));
125125   state->c169_roz_init(NAMCOFL_ROTGFX,NAMCOFL_ROTMASKREGION);
126126}
trunk/src/mame/video/namconb1.c
r17674r17675
165165VIDEO_START( namconb1 )
166166{
167167   namconb1_state *state = machine.driver_data<namconb1_state>();
168   namco_tilemap_init( machine, NAMCONB1_TILEGFX, machine.root_device().memregion(NAMCONB1_TILEMASKREGION)->base(), NB1TilemapCB );
168   state->namco_tilemap_init(NAMCONB1_TILEGFX, machine.root_device().memregion(NAMCONB1_TILEMASKREGION)->base(), NB1TilemapCB );
169169   state->c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(FUNC(NB1objcode2tile), &machine));
170170} /* namconb1 */
171171
r17674r17675
227227VIDEO_START( namconb2 )
228228{
229229   namconb1_state *state = machine.driver_data<namconb1_state>();
230   namco_tilemap_init(machine, NAMCONB1_TILEGFX, machine.root_device().memregion(NAMCONB1_TILEMASKREGION)->base(), NB2TilemapCB );
230   state->namco_tilemap_init(NAMCONB1_TILEGFX, machine.root_device().memregion(NAMCONB1_TILEMASKREGION)->base(), NB2TilemapCB );
231231   state->c355_obj_init(NAMCONB1_SPRITEGFX,0x0,namcos2_shared_state::c355_obj_code2tile_delegate(FUNC(NB2objcode2tile), &machine));
232232   state->c169_roz_init(NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION);
233233} /* namconb2_vh_start */
trunk/src/mame/video/bosco.c
r17674r17675
8686***************************************************************************/
8787
8888/* the video RAM has space for 32x32 tiles and is only partially used for the radar */
89static TILEMAP_MAPPER( fg_tilemap_scan )
89TILEMAP_MAPPER_MEMBER(bosco_state::fg_tilemap_scan )
9090{
9191   return col + (row << 5);
9292}
9393
9494
95INLINE void get_tile_info(running_machine &machine,tile_data &tileinfo,int tile_index,int ram_offs)
95INLINE void get_tile_info_bosco(running_machine &machine,tile_data &tileinfo,int tile_index,int ram_offs)
9696{
9797   bosco_state *state =  machine.driver_data<bosco_state>();
9898
r17674r17675
106106         TILE_FLIPYX(attr >> 6) ^ TILE_FLIPX);
107107}
108108
109static TILE_GET_INFO( bg_get_tile_info )
109TILE_GET_INFO_MEMBER(bosco_state::bg_get_tile_info )
110110{
111   get_tile_info(machine,tileinfo,tile_index,0x400);
111   get_tile_info_bosco(machine(),tileinfo,tile_index,0x400);
112112}
113113
114static TILE_GET_INFO( fg_get_tile_info )
114TILE_GET_INFO_MEMBER(bosco_state::fg_get_tile_info )
115115{
116   get_tile_info(machine,tileinfo,tile_index,0x000);
116   get_tile_info_bosco(machine(),tileinfo,tile_index,0x000);
117117}
118118
119119
r17674r17675
128128{
129129   bosco_state *state =  machine.driver_data<bosco_state>();
130130
131   state->m_bg_tilemap = tilemap_create(machine, bg_get_tile_info,TILEMAP_SCAN_ROWS,8,8,32,32);
132   state->m_fg_tilemap = tilemap_create(machine, fg_get_tile_info,fg_tilemap_scan,  8,8, 8,32);
131   state->m_bg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(bosco_state::bg_get_tile_info),state),TILEMAP_SCAN_ROWS,8,8,32,32);
132   state->m_fg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(bosco_state::fg_get_tile_info),state),tilemap_mapper_delegate(FUNC(bosco_state::fg_tilemap_scan),state),  8,8, 8,32);
133133
134134   colortable_configure_tilemap_groups(machine.colortable, state->m_bg_tilemap, machine.gfx[0], 0x1f);
135135   colortable_configure_tilemap_groups(machine.colortable, state->m_fg_tilemap, machine.gfx[0], 0x1f);
trunk/src/mame/video/redclash.c
r17674r17675
168168   redclash_set_stars_enable(space->machine(), 1);
169169}
170170
171static TILE_GET_INFO( get_fg_tile_info )
171TILE_GET_INFO_MEMBER(ladybug_state::get_fg_tile_info)
172172{
173   ladybug_state *state = machine.driver_data<ladybug_state>();
174   int code = state->m_videoram[tile_index];
175   int color = (state->m_videoram[tile_index] & 0x70) >> 4; // ??
173   int code = m_videoram[tile_index];
174   int color = (m_videoram[tile_index] & 0x70) >> 4; // ??
176175
177   SET_TILE_INFO(0, code, color, 0);
176   SET_TILE_INFO_MEMBER(0, code, color, 0);
178177}
179178
180179VIDEO_START( redclash )
181180{
182181   ladybug_state *state = machine.driver_data<ladybug_state>();
183182
184   state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
183   state->m_fg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(ladybug_state::get_fg_tile_info),state), TILEMAP_SCAN_ROWS, 8, 8, 32, 32);
185184   state->m_fg_tilemap->set_transparent_pen(0);
186185}
187186
trunk/src/mame/video/namcos2.c
r17674r17675
398398
399399void namcos2_state::video_start()
400400{
401   namco_tilemap_init(machine(), 2, memregion("gfx4")->base(), TilemapCB);
401   namco_tilemap_init(2, memregion("gfx4")->base(), TilemapCB);
402402   m_tilemap_roz = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_state::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8,8,256,256);
403403   m_tilemap_roz->set_transparent_pen(0xff);
404404   draw_sprite_init();
r17674r17675
446446
447447void namcos2_state::video_start_finallap()
448448{
449   namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
449   namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB);
450450   draw_sprite_init();
451451}
452452
r17674r17675
475475
476476void namcos2_state::video_start_luckywld()
477477{
478   namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
478   namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB);
479479   c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() );
480480   if( m_gametype==NAMCOS2_LUCKY_AND_WILD )
481481   {
r17674r17675
512512
513513void namcos2_state::video_start_sgunner()
514514{
515   namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
515   namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB);
516516   c355_obj_init( 0, 0x0, namcos2_shared_state::c355_obj_code2tile_delegate() );
517517}
518518
r17674r17675
538538
539539void namcos2_state::video_start_metlhawk()
540540{
541   namco_tilemap_init(machine(),2,memregion("gfx4")->base(),TilemapCB);
541   namco_tilemap_init(2,memregion("gfx4")->base(),TilemapCB);
542542   c169_roz_init(1, "gfx5");
543543}
544544
trunk/src/mame/video/digdug.c
r17674r17675
7373***************************************************************************/
7474
7575/* convert from 32x32 to 36x28 */
76static TILEMAP_MAPPER( tilemap_scan )
76TILEMAP_MAPPER_MEMBER(digdug_state::tilemap_scan)
7777{
7878   int offs;
7979
r17674r17675
8888}
8989
9090
91static TILE_GET_INFO( bg_get_tile_info )
91TILE_GET_INFO_MEMBER(digdug_state::bg_get_tile_info)
9292{
93   UINT8 *rom = machine.root_device().memregion("gfx4")->base();
94   digdug_state *state =  machine.driver_data<digdug_state>();
93   UINT8 *rom = machine().root_device().memregion("gfx4")->base();
9594
96   int code = rom[tile_index | (state->m_bg_select << 10)];
95   int code = rom[tile_index | (m_bg_select << 10)];
9796   /* when the background is "disabled", it is actually still drawn, but using
9897       a color code that makes all pixels black. There are pullups setting the
9998       code to 0xf, but also solder pads that optionally connect the lines with
10099       tilemap RAM, therefore allowing to pick some bits of the color code from
101100       the top 4 bits of alpha code. This feature is not used by Dig Dug. */
102   int color = state->m_bg_disable ? 0xf : (code >> 4);
103   SET_TILE_INFO(
101   int color = m_bg_disable ? 0xf : (code >> 4);
102   SET_TILE_INFO_MEMBER(
104103         2,
105104         code,
106         color | state->m_bg_color_bank,
105         color | m_bg_color_bank,
107106         0);
108107}
109108
110static TILE_GET_INFO( tx_get_tile_info )
109TILE_GET_INFO_MEMBER(digdug_state::tx_get_tile_info)
111110{
112   digdug_state *state =  machine.driver_data<digdug_state>();
113   UINT8 code = state->m_videoram[tile_index];
111   UINT8 code = m_videoram[tile_index];
114112   int color;
115113
116114   /* the hardware has two ways to pick the color, either straight from the
r17674r17675
118116       formula. The former method isnot used by Dig Dug and seems kind of
119117       useless (I don't know what use they were thinking of when they added
120118       it), anyway here it is reproduced faithfully. */
121   if (state->m_tx_color_mode)
119   if (m_tx_color_mode)
122120      color = code & 0x0f;
123121   else
124122      color = ((code >> 4) & 0x0e) | ((code >> 3) & 2);
r17674r17675
128126       timing signals, while x flip is done by selecting the 2nd character set.
129127       We reproduce this here, but since the tilemap system automatically flips
130128       characters when screen is flipped, we have to flip them back. */
131   SET_TILE_INFO(
129   SET_TILE_INFO_MEMBER(
132130         0,
133         (code & 0x7f) | (state->flip_screen() ? 0x80 : 0),
131         (code & 0x7f) | (flip_screen() ? 0x80 : 0),
134132         color,
135         state->flip_screen() ? TILE_FLIPX : 0);
133         flip_screen() ? TILE_FLIPX : 0);
136134}
137135
138136
r17674r17675
147145{
148146   digdug_state *state =  machine.driver_data<digdug_state>();
149147
150   state->m_bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan,     8,8,36,28);
151   state->m_fg_tilemap = tilemap_create(machine, tx_get_tile_info,tilemap_scan,8,8,36,28);
148   state->m_bg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(digdug_state::bg_get_tile_info),state),tilemap_mapper_delegate(FUNC(digdug_state::tilemap_scan),state),8,8,36,28);
149   state->m_fg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(digdug_state::tx_get_tile_info),state),tilemap_mapper_delegate(FUNC(digdug_state::tilemap_scan),state),8,8,36,28);
152150
153151   state->m_fg_tilemap->set_transparent_pen(0);
154152
trunk/src/mame/video/decocass.c
r17674r17675
6868    tilemap callbacks
6969 ********************************************/
7070
71static TILEMAP_MAPPER( fgvideoram_scan_cols )
71TILEMAP_MAPPER_MEMBER(decocass_state::fgvideoram_scan_cols )
7272{
7373   /* logical (col,row) -> memory offset */
7474   return (num_cols - 1 - col) * num_rows + row;
7575}
7676
77static TILEMAP_MAPPER( bgvideoram_scan_cols )
77TILEMAP_MAPPER_MEMBER(decocass_state::bgvideoram_scan_cols )
7878{
7979   /* logical (col,row) -> memory offset */
8080   return tile_offset[col * num_rows + row];
8181}
8282
83static TILE_GET_INFO( get_bg_l_tile_info )
83TILE_GET_INFO_MEMBER(decocass_state::get_bg_l_tile_info)
8484{
85   decocass_state *state = machine.driver_data<decocass_state>();
86   int color = (state->m_color_center_bot >> 7) & 1;
87   SET_TILE_INFO(
85   int color = (m_color_center_bot >> 7) & 1;
86   SET_TILE_INFO_MEMBER(
8887         2,
89         (0x80 == (tile_index & 0x80)) ? 16 : state->m_bgvideoram[tile_index] >> 4,
88         (0x80 == (tile_index & 0x80)) ? 16 : m_bgvideoram[tile_index] >> 4,
9089         color,
9190         0);
9291}
9392
94static TILE_GET_INFO( get_bg_r_tile_info )
93TILE_GET_INFO_MEMBER(decocass_state::get_bg_r_tile_info )
9594{
96   decocass_state *state = machine.driver_data<decocass_state>();
97   int color = (state->m_color_center_bot >> 7) & 1;
98   SET_TILE_INFO(
95   int color = (m_color_center_bot >> 7) & 1;
96   SET_TILE_INFO_MEMBER(
9997         2,
100         (0x00 == (tile_index & 0x80)) ? 16 : state->m_bgvideoram[tile_index] >> 4,
98         (0x00 == (tile_index & 0x80)) ? 16 : m_bgvideoram[tile_index] >> 4,
10199         color,
102100         TILE_FLIPY);
103101}
104102
105static TILE_GET_INFO( get_fg_tile_info )
103TILE_GET_INFO_MEMBER(decocass_state::get_fg_tile_info )
106104{
107   decocass_state *state = machine.driver_data<decocass_state>();
108   UINT8 code = state->m_fgvideoram[tile_index];
109   UINT8 attr = state->m_colorram[tile_index];
110   SET_TILE_INFO(
105   UINT8 code = m_fgvideoram[tile_index];
106   UINT8 attr = m_colorram[tile_index];
107   SET_TILE_INFO_MEMBER(
111108         0,
112109         256 * (attr & 3) + code,
113         state->m_color_center_bot & 1,
110         m_color_center_bot & 1,
114111         0);
115112}
116113
r17674r17675
492489VIDEO_START( decocass )
493490{
494491   decocass_state *state = machine.driver_data<decocass_state>();
495   state->m_bg_tilemap_l = tilemap_create(machine, get_bg_l_tile_info, bgvideoram_scan_cols, 16, 16, 32, 32);
496   state->m_bg_tilemap_r = tilemap_create(machine, get_bg_r_tile_info, bgvideoram_scan_cols, 16, 16, 32, 32);
497   state->m_fg_tilemap = tilemap_create(machine, get_fg_tile_info, fgvideoram_scan_cols, 8, 8, 32, 32);
492   state->m_bg_tilemap_l = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(decocass_state::get_bg_l_tile_info),state), tilemap_mapper_delegate(FUNC(decocass_state::bgvideoram_scan_cols),state), 16, 16, 32, 32);
493   state->m_bg_tilemap_r = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(decocass_state::get_bg_r_tile_info),state), tilemap_mapper_delegate(FUNC(decocass_state::bgvideoram_scan_cols),state), 16, 16, 32, 32);
494   state->m_fg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(decocass_state::get_fg_tile_info),state), tilemap_mapper_delegate(FUNC(decocass_state::fgvideoram_scan_cols),state), 8, 8, 32, 32);
498495
499496   state->m_bg_tilemap_l->set_transparent_pen(0);
500497   state->m_bg_tilemap_r->set_transparent_pen(0);
trunk/src/mame/video/m10.c
r17674r17675
4242   8*8   /* every char takes 8 consecutive bytes */
4343};
4444
45static TILEMAP_MAPPER( tilemap_scan )
45TILEMAP_MAPPER_MEMBER(m10_state::tilemap_scan)
4646{
4747   return (31 - col) * 32 + row;
4848}
4949
5050
51static void get_tile_info( running_machine &machine, tile_data &tileinfo, tilemap_memory_index tile_index, void *param )
51TILE_GET_INFO_MEMBER(m10_state::get_tile_info)
5252{
53   m10_state *state = machine.driver_data<m10_state>();
54
55   SET_TILE_INFO(0, state->m_videoram[tile_index], state->m_colorram[tile_index] & 0x07, 0);
53   SET_TILE_INFO_MEMBER(0, m_videoram[tile_index], m_colorram[tile_index] & 0x07, 0);
5654}
5755
5856
r17674r17675
104102{
105103   m10_state *state = machine.driver_data<m10_state>();
106104
107   state->m_tx_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan, 8, 8, 32, 32);
105   state->m_tx_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),state), tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),state), 8, 8, 32, 32);
108106   state->m_tx_tilemap->set_transparent_pen(0);
109107   state->m_tx_tilemap->set_scrolldx(0, 62);
110108   state->m_tx_tilemap->set_scrolldy(0, 0);
r17674r17675
121119
122120   machine.gfx[0] = auto_alloc(machine, gfx_element(machine, charlayout, state->m_chargen, 8, 0));
123121
124   state->m_tx_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan, 8, 8, 32, 32);
122   state->m_tx_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),state),tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),state), 8, 8, 32, 32);
125123   state->m_tx_tilemap->set_scrolldx(0, 116);
126124   state->m_tx_tilemap->set_scrolldy(0, 0);
127125
trunk/src/mame/drivers/namcoic.c
r17674r17675
5151   SET_TILE_INFO(mTilemapInfo.gfxbank,tile,0,0);
5252} /* get_tile_info */
5353
54static TILE_GET_INFO( get_tile_info0 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x0000]); }
55static TILE_GET_INFO( get_tile_info1 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x1000]); }
56static TILE_GET_INFO( get_tile_info2 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x2000]); }
57static TILE_GET_INFO( get_tile_info3 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x3000]); }
58static TILE_GET_INFO( get_tile_info4 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x4008]); }
59static TILE_GET_INFO( get_tile_info5 ) { get_tile_info(machine,tileinfo,tile_index,&mTilemapInfo.videoram[0x4408]); }
54TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info0 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x0000]); }
55TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info1 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x1000]); }
56TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info2 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x2000]); }
57TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info3 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x3000]); }
58TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info4 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x4008]); }
59TILE_GET_INFO_MEMBER( namcos2_shared_state::get_tile_info5 ) { get_tile_info(machine(),tileinfo,tile_index,&mTilemapInfo.videoram[0x4408]); }
6060
61void
62namco_tilemap_init( running_machine &machine, int gfxbank, void *maskBaseAddr,
61void namcos2_shared_state::namco_tilemap_init( int gfxbank, void *maskBaseAddr,
6362   void (*cb)( running_machine &machine, UINT16 code, int *gfx, int *mask) )
6463{
6564   int i;
6665   mTilemapInfo.gfxbank = gfxbank;
6766   mTilemapInfo.maskBaseAddr = (UINT8 *)maskBaseAddr;
6867   mTilemapInfo.cb = cb;
69   mTilemapInfo.videoram = auto_alloc_array(machine, UINT16,  0x10000 );
68   mTilemapInfo.videoram = auto_alloc_array(machine(), UINT16,  0x10000 );
7069
7170      /* four scrolling tilemaps */
72      mTilemapInfo.tmap[0] = tilemap_create(machine, get_tile_info0,TILEMAP_SCAN_ROWS,8,8,64,64);
73      mTilemapInfo.tmap[1] = tilemap_create(machine, get_tile_info1,TILEMAP_SCAN_ROWS,8,8,64,64);
74      mTilemapInfo.tmap[2] = tilemap_create(machine, get_tile_info2,TILEMAP_SCAN_ROWS,8,8,64,64);
75      mTilemapInfo.tmap[3] = tilemap_create(machine, get_tile_info3,TILEMAP_SCAN_ROWS,8,8,64,64);
71      mTilemapInfo.tmap[0] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,64);
72      mTilemapInfo.tmap[1] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,64);
73      mTilemapInfo.tmap[2] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,64);
74      mTilemapInfo.tmap[3] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,64);
7675
7776      /* two non-scrolling tilemaps */
78      mTilemapInfo.tmap[4] = tilemap_create(machine, get_tile_info4,TILEMAP_SCAN_ROWS,8,8,36,28);
79      mTilemapInfo.tmap[5] = tilemap_create(machine, get_tile_info5,TILEMAP_SCAN_ROWS,8,8,36,28);
77      mTilemapInfo.tmap[4] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info4),this),TILEMAP_SCAN_ROWS,8,8,36,28);
78      mTilemapInfo.tmap[5] = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos2_shared_state::get_tile_info5),this),TILEMAP_SCAN_ROWS,8,8,36,28);
8079
8180      /* define offsets for scrolling */
8281      for( i=0; i<4; i++ )
trunk/src/mame/drivers/powerbal.c
r17674r17675
376376   PORT_DIPSETTING(    0xe0, "Easy 9" )
377377INPUT_PORTS_END
378378
379static TILE_GET_INFO( powerbal_get_bg_tile_info )
379TILE_GET_INFO_MEMBER(playmark_state::powerbal_get_bg_tile_info)
380380{
381   playmark_state *state = machine.driver_data<playmark_state>();
382   int code = (state->m_videoram1[tile_index] & 0x07ff) + state->m_tilebank * 0x800;
383   int colr = state->m_videoram1[tile_index] & 0xf000;
381   int code = (m_videoram1[tile_index] & 0x07ff) + m_tilebank * 0x800;
382   int colr = m_videoram1[tile_index] & 0xf000;
384383
385   if (state->m_videoram1[tile_index] & 0x800)
384   if (m_videoram1[tile_index] & 0x800)
386385      code |= 0x8000;
387386
388   SET_TILE_INFO(1, code, colr >> 12, 0);
387   SET_TILE_INFO_MEMBER(1, code, colr >> 12, 0);
389388}
390389
391390static void draw_sprites( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect )
r17674r17675
421420{
422421   playmark_state *state = machine.driver_data<playmark_state>();
423422
424   state->m_bg_tilemap = tilemap_create(machine, powerbal_get_bg_tile_info, TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
423   state->m_bg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(playmark_state::powerbal_get_bg_tile_info),state), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
425424
426425   state->m_xoffset = -20;
427426
trunk/src/mess/includes/aquarius.h
r17674r17675
3333   DECLARE_READ8_MEMBER(floppy_r);
3434   DECLARE_WRITE8_MEMBER(floppy_w);
3535   DECLARE_DRIVER_INIT(aquarius);
36   TILE_GET_INFO_MEMBER(aquarius_gettileinfo);
3637};
3738
3839
trunk/src/mess/includes/x68k.h
r17674r17675
257257   DECLARE_DRIVER_INIT(x68kxvi);
258258   DECLARE_DRIVER_INIT(x68030);
259259   DECLARE_DRIVER_INIT(x68000);
260   TILE_GET_INFO_MEMBER(x68k_get_bg0_tile);
261   TILE_GET_INFO_MEMBER(x68k_get_bg1_tile);
262   TILE_GET_INFO_MEMBER(x68k_get_bg0_tile_16);
263   TILE_GET_INFO_MEMBER(x68k_get_bg1_tile_16);
260264};
261265
262266
trunk/src/mess/includes/apple1.h
r17674r17675
4444   DECLARE_READ8_MEMBER(apple1_cassette_r);
4545   DECLARE_WRITE8_MEMBER(apple1_cassette_w);
4646   DECLARE_DRIVER_INIT(apple1);
47   TILE_GET_INFO_MEMBER(terminal_gettileinfo);
4748};
4849
4950
trunk/src/mess/includes/microtan.h
r17674r17675
4848   DECLARE_WRITE8_MEMBER(microtan_bffx_w);
4949   DECLARE_WRITE8_MEMBER(microtan_videoram_w);
5050   DECLARE_DRIVER_INIT(microtan);
51   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5152};
5253
5354
trunk/src/mess/video/aquarius.c
r17674r17675
7777   m_tilemap->mark_tile_dirty(offset);
7878}
7979
80static TILE_GET_INFO(aquarius_gettileinfo)
80TILE_GET_INFO_MEMBER(aquarius_state::aquarius_gettileinfo)
8181{
82   aquarius_state *state = machine.driver_data<aquarius_state>();
83   UINT8 *videoram = state->m_videoram;
82   UINT8 *videoram = m_videoram;
8483   int bank = 0;
8584   int code = videoram[tile_index];
86   int color = state->m_colorram[tile_index];
85   int color = m_colorram[tile_index];
8786   int flags = 0;
8887
89   SET_TILE_INFO(bank, code, color, flags);
88   SET_TILE_INFO_MEMBER(bank, code, color, flags);
9089}
9190
9291VIDEO_START( aquarius )
9392{
9493   aquarius_state *state = machine.driver_data<aquarius_state>();
95   state->m_tilemap = tilemap_create(machine, aquarius_gettileinfo, TILEMAP_SCAN_ROWS, 8, 8, 40, 25);
94   state->m_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(aquarius_state::aquarius_gettileinfo),state), TILEMAP_SCAN_ROWS, 8, 8, 40, 25);
9695}
9796
9897SCREEN_UPDATE_IND16( aquarius )
trunk/src/mess/video/x68k.c
r17674r17675
10981098GFXDECODEINFO_END
10991099#endif
11001100
1101static TILE_GET_INFO(x68k_get_bg0_tile)
1101TILE_GET_INFO_MEMBER(x68k_state::x68k_get_bg0_tile)
11021102{
1103   x68k_state *state = machine.driver_data<x68k_state>();
1104   int code = state->m_spriteram[0x3000+tile_index] & 0x00ff;
1105   int colour = (state->m_spriteram[0x3000+tile_index] & 0x0f00) >> 8;
1106   int flags = (state->m_spriteram[0x3000+tile_index] & 0xc000) >> 14;
1107   SET_TILE_INFO(0,code,colour+16,flags);
1103   int code = m_spriteram[0x3000+tile_index] & 0x00ff;
1104   int colour = (m_spriteram[0x3000+tile_index] & 0x0f00) >> 8;
1105   int flags = (m_spriteram[0x3000+tile_index] & 0xc000) >> 14;
1106   SET_TILE_INFO_MEMBER(0,code,colour+16,flags);
11081107}
11091108
1110static TILE_GET_INFO(x68k_get_bg1_tile)
1109TILE_GET_INFO_MEMBER(x68k_state::x68k_get_bg1_tile)
11111110{
1112   x68k_state *state = machine.driver_data<x68k_state>();
1113   int code = state->m_spriteram[0x2000+tile_index] & 0x00ff;
1114   int colour = (state->m_spriteram[0x2000+tile_index] & 0x0f00) >> 8;
1115   int flags = (state->m_spriteram[0x2000+tile_index] & 0xc000) >> 14;
1116   SET_TILE_INFO(0,code,colour+16,flags);
1111   int code = m_spriteram[0x2000+tile_index] & 0x00ff;
1112   int colour = (m_spriteram[0x2000+tile_index] & 0x0f00) >> 8;
1113   int flags = (m_spriteram[0x2000+tile_index] & 0xc000) >> 14;
1114   SET_TILE_INFO_MEMBER(0,code,colour+16,flags);
11171115}
11181116
1119static TILE_GET_INFO(x68k_get_bg0_tile_16)
1117TILE_GET_INFO_MEMBER(x68k_state::x68k_get_bg0_tile_16)
11201118{
1121   x68k_state *state = machine.driver_data<x68k_state>();
1122   int code = state->m_spriteram[0x3000+tile_index] & 0x00ff;
1123   int colour = (state->m_spriteram[0x3000+tile_index] & 0x0f00) >> 8;
1124   int flags = (state->m_spriteram[0x3000+tile_index] & 0xc000) >> 14;
1125   SET_TILE_INFO(1,code,colour+16,flags);
1119   int code = m_spriteram[0x3000+tile_index] & 0x00ff;
1120   int colour = (m_spriteram[0x3000+tile_index] & 0x0f00) >> 8;
1121   int flags = (m_spriteram[0x3000+tile_index] & 0xc000) >> 14;
1122   SET_TILE_INFO_MEMBER(1,code,colour+16,flags);
11261123}
11271124
1128static TILE_GET_INFO(x68k_get_bg1_tile_16)
1125TILE_GET_INFO_MEMBER(x68k_state::x68k_get_bg1_tile_16)
11291126{
1130   x68k_state *state = machine.driver_data<x68k_state>();
1131   int code = state->m_spriteram[0x2000+tile_index] & 0x00ff;
1132   int colour = (state->m_spriteram[0x2000+tile_index] & 0x0f00) >> 8;
1133   int flags = (state->m_spriteram[0x2000+tile_index] & 0xc000) >> 14;
1134   SET_TILE_INFO(1,code,colour+16,flags);
1127   int code = m_spriteram[0x2000+tile_index] & 0x00ff;
1128   int colour = (m_spriteram[0x2000+tile_index] & 0x0f00) >> 8;
1129   int flags = (m_spriteram[0x2000+tile_index] & 0xc000) >> 14;
1130   SET_TILE_INFO_MEMBER(1,code,colour+16,flags);
11351131}
11361132
11371133VIDEO_START( x68000 )
r17674r17675
11521148   machine.gfx[gfx_index]->set_colors(32);
11531149
11541150   /* Tilemaps */
1155   state->m_bg0_8 = tilemap_create(machine, x68k_get_bg0_tile,TILEMAP_SCAN_ROWS,8,8,64,64);
1156   state->m_bg1_8 = tilemap_create(machine, x68k_get_bg1_tile,TILEMAP_SCAN_ROWS,8,8,64,64);
1157   state->m_bg0_16 = tilemap_create(machine, x68k_get_bg0_tile_16,TILEMAP_SCAN_ROWS,16,16,64,64);
1158   state->m_bg1_16 = tilemap_create(machine, x68k_get_bg1_tile_16,TILEMAP_SCAN_ROWS,16,16,64,64);
1151   state->m_bg0_8 = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(x68k_state::x68k_get_bg0_tile),state),TILEMAP_SCAN_ROWS,8,8,64,64);
1152   state->m_bg1_8 = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(x68k_state::x68k_get_bg1_tile),state),TILEMAP_SCAN_ROWS,8,8,64,64);
1153   state->m_bg0_16 = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(x68k_state::x68k_get_bg0_tile_16),state),TILEMAP_SCAN_ROWS,16,16,64,64);
1154   state->m_bg1_16 = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(x68k_state::x68k_get_bg1_tile_16),state),TILEMAP_SCAN_ROWS,16,16,64,64);
11591155
11601156   state->m_bg0_8->set_transparent_pen(0);
11611157   state->m_bg1_8->set_transparent_pen(0);
trunk/src/mess/video/apple1.c
r17674r17675
7070
7171***************************************************************************/
7272
73static TILE_GET_INFO(terminal_gettileinfo)
73TILE_GET_INFO_MEMBER(apple1_state::terminal_gettileinfo)
7474{
75   apple1_state *state = machine.driver_data<apple1_state>();
7675   int ch, gfxfont, code, color;
7776
78   ch = state->m_current_terminal->mem[tile_index];
79   code = ch & ((1 << state->m_current_terminal->char_bits) - 1);
80   color = ch >> state->m_current_terminal->char_bits;
81   gfxfont = state->m_current_terminal->gfx;
77   ch = m_current_terminal->mem[tile_index];
78   code = ch & ((1 << m_current_terminal->char_bits) - 1);
79   color = ch >> m_current_terminal->char_bits;
80   gfxfont = m_current_terminal->gfx;
8281
83   if ((tile_index == state->m_current_terminal->cur_offset) && !state->m_current_terminal->cur_hidden && state->m_current_terminal->getcursorcode)
84      code = state->m_current_terminal->getcursorcode(code);
82   if ((tile_index == m_current_terminal->cur_offset) && !m_current_terminal->cur_hidden && m_current_terminal->getcursorcode)
83      code = m_current_terminal->getcursorcode(code);
8584
86   SET_TILE_INFO(
85   SET_TILE_INFO_MEMBER(
8786      gfxfont,   /* gfx */
8887      code,      /* character */
8988      color,      /* color */
r17674r17675
186185{
187186   terminal_t *term;
188187   int char_width, char_height;
189
188   apple1_state *state = machine.driver_data<apple1_state>();
189   
190190   char_width = machine.gfx[gfx]->width();
191191   char_height = machine.gfx[gfx]->height();
192192
193193   term = (terminal_t *) auto_alloc_array(machine, char, sizeof(terminal_t) - sizeof(term->mem)
194194      + (num_cols * num_rows * sizeof(termchar_t)));
195195
196   term->tm = tilemap_create(machine, terminal_gettileinfo, TILEMAP_SCAN_ROWS,
196   term->tm = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(apple1_state::terminal_gettileinfo),state), TILEMAP_SCAN_ROWS,
197197      char_width, char_height, num_cols, num_rows);
198198
199199   term->gfx = gfx;
trunk/src/mess/video/microtan.c
r17674r17675
2929   }
3030}
3131
32static TILE_GET_INFO(get_bg_tile_info)
32TILE_GET_INFO_MEMBER(microtan_state::get_bg_tile_info)
3333{
34   microtan_state *state = machine.driver_data<microtan_state>();
35   UINT8 *videoram = state->m_videoram;
36   int gfxn = state->m_chunky_buffer[tile_index];
34   UINT8 *videoram = m_videoram;
35   int gfxn = m_chunky_buffer[tile_index];
3736   int code = videoram[tile_index];
3837
39   SET_TILE_INFO(gfxn, code, 0, 0);
38   SET_TILE_INFO_MEMBER(gfxn, code, 0, 0);
4039}
4140
4241VIDEO_START( microtan )
4342{
4443   microtan_state *state = machine.driver_data<microtan_state>();
45   state->m_bg_tilemap = tilemap_create(machine, get_bg_tile_info, TILEMAP_SCAN_ROWS,
44   state->m_bg_tilemap = &machine.tilemap().create(tilemap_get_info_delegate(FUNC(microtan_state::get_bg_tile_info),state), TILEMAP_SCAN_ROWS,
4645      8, 16, 32, 16);
4746
4847   state->m_chunky_buffer = auto_alloc_array(machine, UINT8, 0x200);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team