Previous 15994 Revisions Next

r976 Sunday 16th September, 2007 at 09:29:00 UTC by Wilbert Pol
[GAMEBOY] Removed remapped_colortable usage from the supergb driver.
[src/mess/includes]gb.h
[src/mess/machine]gb.c
[src/mess/video]gb.c

src/mess/includes/gb.h
r975r976
8888
8989EXTERN UINT16 sgb_pal_data[4096];   /* 512 palettes of 4 colours         */
9090EXTERN UINT8 sgb_pal_map[20][18];   /* Palette tile map                  */
91extern UINT16 sgb_pal[128];         /* SGB palette remapping            */
9192extern UINT8 *sgb_tile_data;      /* 256 tiles of 32 bytes each         */
9293EXTERN UINT8 sgb_tile_map[2048];   /* 32x32 tile map data (0-tile,1-attribute)   */
9394EXTERN UINT8 sgb_window_mask;      /* Current GB screen mask            */
src/mess/video/gb.c
r975r976
4343
4444static UINT8 bg_zbuf[160];
4545UINT8 gb_vid_regs[_NR_GB_VID_REGS];
46UINT16 cgb_bpal[32];   /* CGB current background palette table */
47UINT16 cgb_spal[32];   /* CGB current background palette table */
48UINT8 gb_bpal[4];   /* Background palette      */
49UINT8 gb_spal0[4];   /* Sprite 0 palette      */
50UINT8 gb_spal1[4];   /* Sprite 1 palette      */
46static UINT16 cgb_bpal[32];   /* CGB current background palette table */
47static UINT16 cgb_spal[32];   /* CGB current background palette table */
48UINT16 sgb_pal[128];   /* SGB palette remapping */
49static UINT8 gb_bpal[4];   /* Background palette      */
50static UINT8 gb_spal0[4];   /* Sprite 0 palette      */
51static UINT8 gb_spal1[4];   /* Sprite 1 palette      */
5152UINT8 *gb_oam = NULL;
5253UINT8 *gb_vram = NULL;
5354int gbc_hdma_enabled;
r975r976
147148   }
148149
149150   /* Some default colours for non-SGB games */
150   colortable[0] = 32767;
151   colortable[1] = 21140;
152   colortable[2] = 10570;
153   colortable[3] = 0;
151   sgb_pal[0] = 32767;
152   sgb_pal[1] = 21140;
153   sgb_pal[2] = 10570;
154   sgb_pal[3] = 0;
154155   /* The rest of the colortable can be black */
155156   for( ii = 4; ii < 8*16; ii++ )
156      colortable[ii] = 0;
157      sgb_pal[ii] = 0;
157158}
158159
159160PALETTE_INIT( gbc ) {
r975r976
495496            {
496497               register int colour = ((data & 0x0100) ? 2 : 0) | ((data & 0x0001) ? 1 : 0);
497498               if ((xindex >= SGB_XOFFSET && xindex <= SGB_XOFFSET + 160) && colour && !bg_zbuf[xindex - SGB_XOFFSET])
498                  gb_plot_pixel(bitmap, xindex, yindex, Machine->remapped_colortable[pal + spal[colour]]);
499                  gb_plot_pixel(bitmap, xindex, yindex, sgb_pal[pal + spal[colour]]);
499500               data >>= 1;
500501            }
501502            break;
r975r976
504505            {
505506               register int colour = ((data & 0x0100) ? 2 : 0) | ((data & 0x0001) ? 1 : 0);
506507               if ((xindex >= SGB_XOFFSET && xindex <= SGB_XOFFSET + 160) && colour)
507                  gb_plot_pixel(bitmap, xindex, yindex, Machine->remapped_colortable[pal + spal[colour]]);
508                  gb_plot_pixel(bitmap, xindex, yindex, sgb_pal[pal + spal[colour]]);
508509               data >>= 1;
509510            }
510511            break;
r975r976
513514            {
514515               register int colour = ((data & 0x8000) ? 2 : 0) | ((data & 0x0080) ? 1 : 0);
515516               if ((xindex >= SGB_XOFFSET && xindex <= SGB_XOFFSET + 160) && colour && !bg_zbuf[xindex - SGB_XOFFSET])
516                  gb_plot_pixel(bitmap, xindex, yindex, Machine->remapped_colortable[pal + spal[colour]]);
517                  gb_plot_pixel(bitmap, xindex, yindex, sgb_pal[pal + spal[colour]]);
517518               data <<= 1;
518519            }
519520            break;
r975r976
522523            {
523524               register int colour = ((data & 0x8000) ? 2 : 0) | ((data & 0x0080) ? 1 : 0);
524525               if ((xindex >= SGB_XOFFSET && xindex <= SGB_XOFFSET + 160) && colour)
525                  gb_plot_pixel(bitmap, xindex, yindex, Machine->remapped_colortable[pal + spal[colour]]);
526                  gb_plot_pixel(bitmap, xindex, yindex, sgb_pal[pal + spal[colour]]);
526527               data <<= 1;
527528            }
528529            break;
r975r976
586587             */
587588            if( !((yidx >= SGB_YOFFSET && yidx < SGB_YOFFSET + 144) &&
588589               (xindex >= SGB_XOFFSET && xindex < SGB_XOFFSET + 160)) ) {
589               gb_plot_pixel(bitmap, xindex, yidx, Machine->remapped_colortable[pal + colour]);
590               gb_plot_pixel(bitmap, xindex, yidx, sgb_pal[pal + colour]);
590591            }
591592            xindex++;
592593         }
r975r976
690691            fillbitmap( bitmap, Machine->pens[0], &r );
691692         }
692693         while( l < 2 ) {
693            UINT8   xindex, sgb_pal, *map, *tiles;
694            UINT8   xindex, sgb_palette, *map, *tiles;
694695            UINT16   data;
695696            int   i, tile_index;
696697
r975r976
713714            data <<= gb_lcd.layer[l].xshift;
714715
715716            /* Figure out which palette we're using */
716            sgb_pal = sgb_pal_map[ ( gb_lcd.end_x - i ) >> 3 ][ gb_lcd.current_line >> 3 ] << 2;
717            sgb_palette = sgb_pal_map[ ( gb_lcd.end_x - i ) >> 3 ][ gb_lcd.current_line >> 3 ] << 2;
717718
718719            while( i > 0 ) {
719720               while( ( gb_lcd.layer[l].xshift < 8 ) && i ) {
720721                  register int colour = ( ( data & 0x8000 ) ? 2 : 0 ) | ( ( data & 0x0080 ) ? 1 : 0 );
721                  gb_plot_pixel( bitmap, xindex + SGB_XOFFSET, gb_lcd.current_line + SGB_YOFFSET, Machine->remapped_colortable[ sgb_pal + gb_bpal[colour]] );
722                  gb_plot_pixel( bitmap, xindex + SGB_XOFFSET, gb_lcd.current_line + SGB_YOFFSET, sgb_pal[ sgb_palette + gb_bpal[colour]] );
722723                  bg_zbuf[xindex] = colour;
723724                  xindex++;
724725                  data <<= 1;
r975r976
730731                  gb_lcd.layer[l].xshift = 0;
731732                  tile_index = ( map[ gb_lcd.layer[l].xindex ] ^ gb_tile_no_mod ) * 16;
732733                  data = tiles[ tile_index ] | ( tiles[ tile_index + 1 ] << 8 );
733                  sgb_pal = sgb_pal_map[ ( gb_lcd.end_x - i ) >> 3 ][ gb_lcd.current_line >> 3 ] << 2;
734                  sgb_palette = sgb_pal_map[ ( gb_lcd.end_x - i ) >> 3 ][ gb_lcd.current_line >> 3 ] << 2;
734735               }
735736            }
736737            l++;
src/mess/machine/gb.c
r975r976
796796               }
797797               if (sgb_bytecount == (sgb_packets << 4) )
798798               {
799                  /* 7-Sep-2007 - After 0.118u5, you cannot change remapped_colortable */
800799                  switch( sgb_data[0] >> 3 )
801800                  {
802801                     case 0x00:   /* PAL01 */
803                        /*
804                        Machine->remapped_colortable[0*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
805                        Machine->remapped_colortable[0*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
806                        Machine->remapped_colortable[0*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
807                        Machine->remapped_colortable[0*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
808                        Machine->remapped_colortable[1*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
809                        Machine->remapped_colortable[1*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
810                        Machine->remapped_colortable[1*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
811                        Machine->remapped_colortable[1*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
812                        */
802                        sgb_pal[0*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
803                        sgb_pal[0*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
804                        sgb_pal[0*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
805                        sgb_pal[0*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
806                        sgb_pal[1*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
807                        sgb_pal[1*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
808                        sgb_pal[1*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
809                        sgb_pal[1*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
813810                        break;
814811                     case 0x01:   /* PAL23 */
815                        /*
816                        Machine->remapped_colortable[2*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
817                        Machine->remapped_colortable[2*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
818                        Machine->remapped_colortable[2*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
819                        Machine->remapped_colortable[2*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
820                        Machine->remapped_colortable[3*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
821                        Machine->remapped_colortable[3*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
822                        Machine->remapped_colortable[3*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
823                        Machine->remapped_colortable[3*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
824                        */
812                        sgb_pal[2*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
813                        sgb_pal[2*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
814                        sgb_pal[2*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
815                        sgb_pal[2*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
816                        sgb_pal[3*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
817                        sgb_pal[3*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
818                        sgb_pal[3*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
819                        sgb_pal[3*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
825820                        break;
826821                     case 0x02:   /* PAL03 */
827                        /*
828                        Machine->remapped_colortable[0*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
829                        Machine->remapped_colortable[0*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
830                        Machine->remapped_colortable[0*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
831                        Machine->remapped_colortable[0*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
832                        Machine->remapped_colortable[3*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
833                        Machine->remapped_colortable[3*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
834                        Machine->remapped_colortable[3*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
835                        Machine->remapped_colortable[3*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
836                        */
822                        sgb_pal[0*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
823                        sgb_pal[0*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
824                        sgb_pal[0*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
825                        sgb_pal[0*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
826                        sgb_pal[3*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
827                        sgb_pal[3*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
828                        sgb_pal[3*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
829                        sgb_pal[3*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
837830                        break;
838831                     case 0x03:   /* PAL12 */
839                        /*
840                        Machine->remapped_colortable[1*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
841                        Machine->remapped_colortable[1*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
842                        Machine->remapped_colortable[1*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
843                        Machine->remapped_colortable[1*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
844                        Machine->remapped_colortable[2*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
845                        Machine->remapped_colortable[2*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
846                        Machine->remapped_colortable[2*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
847                        Machine->remapped_colortable[2*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
848                        */
832                        sgb_pal[1*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
833                        sgb_pal[1*4 + 1] = sgb_data[3] | (sgb_data[4] << 8);
834                        sgb_pal[1*4 + 2] = sgb_data[5] | (sgb_data[6] << 8);
835                        sgb_pal[1*4 + 3] = sgb_data[7] | (sgb_data[8] << 8);
836                        sgb_pal[2*4 + 0] = sgb_data[1] | (sgb_data[2] << 8);
837                        sgb_pal[2*4 + 1] = sgb_data[9] | (sgb_data[10] << 8);
838                        sgb_pal[2*4 + 2] = sgb_data[11] | (sgb_data[12] << 8);
839                        sgb_pal[2*4 + 3] = sgb_data[13] | (sgb_data[14] << 8);
849840                        break;
850841                     case 0x04:   /* ATTR_BLK */
851842                        {
r975r976
10441035                     case 0x0A:   /* PAL_SET */
10451036                        {
10461037                           UINT16 index_, J, I;
1047                           /* 7-Sep-2007 - After 0.118u5, you cannot change remapped_colortable */
10481038
10491039                           /* Palette 0 */
10501040                           index_ = (UINT16)(sgb_data[1] | (sgb_data[2] << 8)) * 4;
1051                           /*
1052                              Machine->remapped_colortable[0] = sgb_pal_data[index_];
1053                              Machine->remapped_colortable[1] = sgb_pal_data[index_ + 1];
1054                              Machine->remapped_colortable[2] = sgb_pal_data[index_ + 2];
1055                              Machine->remapped_colortable[3] = sgb_pal_data[index_ + 3];
1056                           */
1041                           sgb_pal[0] = sgb_pal_data[index_];
1042                           sgb_pal[1] = sgb_pal_data[index_ + 1];
1043                           sgb_pal[2] = sgb_pal_data[index_ + 2];
1044                           sgb_pal[3] = sgb_pal_data[index_ + 3];
10571045                           /* Palette 1 */
10581046                           index_ = (UINT16)(sgb_data[3] | (sgb_data[4] << 8)) * 4;
1059                           /*
1060                              Machine->remapped_colortable[4] = sgb_pal_data[index_];
1061                              Machine->remapped_colortable[5] = sgb_pal_data[index_ + 1];
1062                              Machine->remapped_colortable[6] = sgb_pal_data[index_ + 2];
1063                              Machine->remapped_colortable[7] = sgb_pal_data[index_ + 3];
1064                           */
1047                           sgb_pal[4] = sgb_pal_data[index_];
1048                           sgb_pal[5] = sgb_pal_data[index_ + 1];
1049                           sgb_pal[6] = sgb_pal_data[index_ + 2];
1050                           sgb_pal[7] = sgb_pal_data[index_ + 3];
10651051                           /* Palette 2 */
10661052                           index_ = (UINT16)(sgb_data[5] | (sgb_data[6] << 8)) * 4;
1067                           /*
1068                              Machine->remapped_colortable[8] = sgb_pal_data[index_];
1069                              Machine->remapped_colortable[9] = sgb_pal_data[index_ + 1];
1070                              Machine->remapped_colortable[10] = sgb_pal_data[index_ + 2];
1071                              Machine->remapped_colortable[11] = sgb_pal_data[index_ + 3];
1072                           */
1053                           sgb_pal[8] = sgb_pal_data[index_];
1054                           sgb_pal[9] = sgb_pal_data[index_ + 1];
1055                           sgb_pal[10] = sgb_pal_data[index_ + 2];
1056                           sgb_pal[11] = sgb_pal_data[index_ + 3];
10731057                           /* Palette 3 */
10741058                           index_ = (UINT16)(sgb_data[7] | (sgb_data[8] << 8)) * 4;
1075                           /*
1076                              Machine->remapped_colortable[12] = sgb_pal_data[index_];
1077                              Machine->remapped_colortable[13] = sgb_pal_data[index_ + 1];
1078                              Machine->remapped_colortable[14] = sgb_pal_data[index_ + 2];
1079                              Machine->remapped_colortable[15] = sgb_pal_data[index_ + 3];
1080                           */
1059                           sgb_pal[12] = sgb_pal_data[index_];
1060                           sgb_pal[13] = sgb_pal_data[index_ + 1];
1061                           sgb_pal[14] = sgb_pal_data[index_ + 2];
1062                           sgb_pal[15] = sgb_pal_data[index_ + 3];
10811063                           /* Attribute File */
10821064                           if( sgb_data[9] & 0x40 )
10831065                              sgb_window_mask = 0;
r975r976
11501132                              {
11511133                                 col = program_read_byte_8 (0x8800 + (I*2));
11521134                                 col |= (UINT16)(program_read_byte_8 (0x8800 + (I*2) + 1)) << 8;
1153                                 /* 7-Sep-2007 - After 0.118u5, you cannot change remapped_colortable */
1154                                 /* Machine->remapped_colortable[SGB_BORDER_PAL_OFFSET + I] = col; */
1135                                 sgb_pal[SGB_BORDER_PAL_OFFSET + I] = col;
11551136                              }
11561137                           }
11571138                           else /* Do things normally */
r975r976
11611142                              {
11621143                                 col = program_read_byte_8 (0x9000 + (I*2));
11631144                                 col |= (UINT16)(program_read_byte_8 (0x9000 + (I*2) + 1)) << 8;
1164                                 /* 7-Sep-2007 - After 0.118u5, you cannot change remapped_colortable */
1165                                 /* Machine->remapped_colortable[SGB_BORDER_PAL_OFFSET + I] = col; */
1145                                 sgb_pal[SGB_BORDER_PAL_OFFSET + I] = col;
11661146                              }
11671147                           }
11681148                        }

Previous 15994 Revisions Next


© 1998-2018 The MESS Team