Previous 15994 Revisions Next

r5366 Thursday 6th August, 2009 at 23:28:49 UTC by Angelo Salese
SNES: Improved mode 5/6 gfxs when tile size = 16x16.
[src/mame/video]snes.c

src/mame/video/snes.c
r5365r5366
461461   UINT16 vscroll, hscroll, vtilescroll;
462462   UINT8 vshift, hshift, tile_size;
463463   /* variables depending on color_depth */
464   UINT8 color_shift = 0;
465   UINT8 color_planes = 2;
464   UINT8 color_shift = 0;
465   UINT8 color_planes = 2;
466466   UINT8 tile_divider = 1;
467467
468468#ifdef MAME_DEBUG
r5365r5366
585585      /* below, only color_planes depends on color_depth */
586586      if (tile_size)
587587      {
588         #if 0
589         /* Bishoujo Janshi SuchiiPai and Desert Fighter sets this in hires, no noticeable difference apart that x must be doubled somehow... */
588590         if (hires)   /* Hi-Res: 2bpp & 4bpp */
589591         {
590592            if (hflip)
r5365r5366
599601            }
600602         }
601603         else   /* No Hi-Res: 2bpp, 4bpp & 8bpp */
604         #endif
602605         {
603606            snes_draw_tile_x2(screen, color_planes, layer, snes_ppu.layer[layer].data + (tile  * 8 * color_planes) + tile_line, ((ii >> 1) * (8 << tile_size)) - hshift, priority, hflip, pal);
604607         }
r5365r5366
619622 *
620623 * Update an entire line of mode7 tiles.
621624 *
622 * 2009-08: Missing MOSAIC in Mode 7
625 * 2009-08: Missing MOSAIC in Mode 7
623626 *  (different behaviors in BG1 & BG2)
624627 *********************************************/
625628static void snes_update_line_mode7(UINT8 screen, UINT8 priority_a, UINT8 priority_b, UINT8 layer, UINT16 curline )
r5365r5366
758761   INT16 i, x, y;
759762   UINT8 *oamram = (UINT8 *)snes_oam;
760763   UINT32 name_sel = 0;
761   static const UINT8 table_obj_priority[10][4] = {
764   static const UINT8 table_obj_priority[10][4] = {
762765                  {2, 5, 8, 11},   // mode 0
763766                  {1, 3, 6, 9},   // mode 1
764767                  {1, 3, 5, 7},   // mode 2
r5365r5366
766769                  {1, 3, 5, 7},   // mode 4
767770                  {1, 3, 5, 7},   // mode 5
768771                  {0, 2, 3, 5},   // mode 6
769                  {0, 2, 3, 4},   // mode 7
772                  {0, 2, 3, 4},   // mode 7
770773                  {1, 3, 5, 6},   // mode 7 EXTBG
771774                  {1, 2, 5, 8}   // mode 1 + BG3 priority bit
772775               };
r5365r5366
967970      if (snes_ram[bg_enable_reg] & 0x10) snes_update_objects(screen, 8, curline);
968971      if (snes_ram[bg_enable_reg] & 0x01) snes_update_line_mode7(screen, 2, 2, 0, curline);
969972      if (snes_ram[bg_enable_reg] & 0x02) snes_update_line_mode7(screen, 0, 4, 1, curline);
970   }   
973   }
971974}
972975
973976/*********************************************
r5365r5366
979982{
980983   switch (snes_ppu.mode)
981984   {
982   case 0: snes_update_mode_0(screen, curline); break;      /* Mode 0 */
983   case 1: snes_update_mode_1(screen, curline); break;      /* Mode 1 */
984   case 2: snes_update_mode_2(screen, curline); break;      /* Mode 2 - Supports offset per tile */
985   case 3: snes_update_mode_3(screen, curline); break;      /* Mode 3 - Supports direct colour */
986   case 4: snes_update_mode_4(screen, curline); break;      /* Mode 4 - Supports offset per tile and direct colour */
987   case 5: snes_update_mode_5(screen, curline); break;      /* Mode 5 - Supports hires */
988   case 6: snes_update_mode_6(screen, curline); break;      /* Mode 6 - Supports offset per tile and hires */
989   case 7: snes_update_mode_7(screen, curline); break;      /* Mode 7 - Supports direct colour */
985      case 0: snes_update_mode_0(screen, curline); break;      /* Mode 0 */
986      case 1: snes_update_mode_1(screen, curline); break;      /* Mode 1 */
987      case 2: snes_update_mode_2(screen, curline); break;      /* Mode 2 - Supports offset per tile */
988      case 3: snes_update_mode_3(screen, curline); break;      /* Mode 3 - Supports direct colour */
989      case 4: snes_update_mode_4(screen, curline); break;      /* Mode 4 - Supports offset per tile and direct colour */
990      case 5: snes_update_mode_5(screen, curline); break;      /* Mode 5 - Supports hires */
991      case 6: snes_update_mode_6(screen, curline); break;      /* Mode 6 - Supports offset per tile and hires */
992      case 7: snes_update_mode_7(screen, curline); break;      /* Mode 7 - Supports direct colour */
990993   }
991994}
992995

Previous 15994 Revisions Next


© 1998-2018 The MESS Team