Previous 199869 Revisions Next

r31932 Friday 5th September, 2014 at 20:49:07 UTC by O. Galibert
make sprite layer order per-game (nw)
[src/mame/drivers]raiden2.c
[src/mame/includes]raiden2.h

trunk/src/mame/includes/raiden2.h
r31931r31932
157157
158158   UINT32 cop_sort_ram_addr, cop_sort_lookup;
159159   UINT16 cop_sort_param;
160   const int *cur_spri;
160161
161162   DECLARE_DRIVER_INIT(raidendx);
162163   DECLARE_DRIVER_INIT(xsedae);
r31931r31932
179180   void combine32(UINT32 *val, int offset, UINT16 data, UINT16 mem_mask);
180181   void sprcpt_init(void);
181182
182   void blend_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind16 &source, UINT16 layer);
183   void blend_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind16 &source, int layer);
183184   void tilemap_draw_and_blend(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, tilemap_t *tilemap);
184185
185186};
trunk/src/mame/drivers/raiden2.c
r31931r31932
815815     06 yyyy yyyy yyyy yyyy   y = ypos
816816    */
817817
818   while( source > sprites ){
818   while( source >= sprites ){
819819      int tile_number = source[1];
820820      int sx = source[2];
821821      int sy = source[3];
r31931r31932
10691069
10701070/* screen_update_raiden2 (move to video file) */
10711071
1072void raiden2_state::blend_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind16 &source, UINT16 layer)
1072void raiden2_state::blend_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind16 &source, int layer)
10731073{
1074   if(layer == -1)
1075      return;
1076
10741077   const UINT8 alpha_active[0x10] = { // MSB first
10751078      //00    08    10    18    20    28    30    38    40    48    50    58    60    68    70    78
1076      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x00
1079      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x00
10771080   };
10781081
10791082   const pen_t *pens = &m_palette->pen(0);
r31931r31932
10851088         UINT16 val = *src++;
10861089         if((val & 0xc000) == layer && (val & 0x000f) != 0x000f) {
10871090            val &= 0x07ff;
1088            // - 04 40 38 50 25 6b
1089            // + 3f 5c 68 6f
10901091            int page = val >> 4;
10911092            if(((alpha_active[page >> 3] & (0x80 >> (page & 7))) || page == ccol) && (val & 0xf) == 0xe)
10921093               *dst = alpha_blend_r32(*dst, pens[val], 0x7f);
r31931r31932
11221123   bitmap.fill(m_palette->black_pen(), cliprect);
11231124   draw_sprites(cliprect);
11241125
1125   blend_layer(bitmap, cliprect, sprite_buffer, 0);
1126   blend_layer(bitmap, cliprect, sprite_buffer, cur_spri[0]);
11261127
11271128   if (!(raiden2_tilemap_enable & 1))
11281129      tilemap_draw_and_blend(screen, bitmap, cliprect, background_layer);
11291130
1130   blend_layer(bitmap, cliprect, sprite_buffer, 1);
1131   blend_layer(bitmap, cliprect, sprite_buffer, cur_spri[1]);
11311132
11321133   if (!(raiden2_tilemap_enable & 2))
11331134      tilemap_draw_and_blend(screen, bitmap, cliprect, midground_layer);
11341135
1135   blend_layer(bitmap, cliprect, sprite_buffer, 2);
1136   blend_layer(bitmap, cliprect, sprite_buffer, cur_spri[2]);
11361137
11371138   if (!(raiden2_tilemap_enable & 4))
11381139      tilemap_draw_and_blend(screen, bitmap, cliprect, foreground_layer);
11391140
1140   blend_layer(bitmap, cliprect, sprite_buffer, 3);
1141   blend_layer(bitmap, cliprect, sprite_buffer, cur_spri[3]);
11411142
11421143   if (!(raiden2_tilemap_enable & 8))
11431144      tilemap_draw_and_blend(screen, bitmap, cliprect, text_layer);
11441145
1146   blend_layer(bitmap, cliprect, sprite_buffer, cur_spri[4]);
1147
1148
11451149   return 0;
11461150}
11471151
r31931r31932
33273331
33283332DRIVER_INIT_MEMBER(raiden2_state,raiden2)
33293333{
3334   static const int spri[5] = { 0, 1, 2, 3, -1 };
3335   cur_spri = spri;
33303336   membank("mainbank1")->configure_entries(0, 4, memregion("mainprg")->base(), 0x10000);
33313337   membank("mainbank2")->configure_entries(0, 4, memregion("mainprg")->base(), 0x10000);
33323338   raiden2_decrypt_sprites(machine());
r31931r31932
33343340
33353341DRIVER_INIT_MEMBER(raiden2_state,raidendx)
33363342{
3343   static const int spri[5] = { 0, 1, 2, 3, -1 };
3344   cur_spri = spri;
33373345   membank("mainbank1")->configure_entries(0, 0x20, memregion("mainprg")->base(), 0x10000);
33383346   membank("mainbank2")->configure_entries(0, 0x20, memregion("mainprg")->base(), 0x10000);
33393347   raiden2_decrypt_sprites(machine());
r31931r31932
33413349
33423350DRIVER_INIT_MEMBER(raiden2_state,xsedae)
33433351{
3352   static const int spri[5] = { 0, 1, 2, 3, -1 };
3353   cur_spri = spri;
33443354   /* doesn't have banking */
33453355}
33463356
33473357DRIVER_INIT_MEMBER(raiden2_state,zeroteam)
33483358{
3359   static const int spri[5] = { -1, 0, 1, 2, 3 };
3360   cur_spri = spri;
33493361   membank("mainbank1")->configure_entries(0, 4, memregion("mainprg")->base(), 0x10000);
33503362   membank("mainbank2")->configure_entries(0, 4, memregion("mainprg")->base(), 0x10000);
33513363   zeroteam_decrypt_sprites(machine());

Previous 199869 Revisions Next


© 1997-2024 The MAME Team