Previous 15994 Revisions Next

r6548 Sunday 6th December, 2009 at 00:18:10 UTC by Tim Schuerewegen
[GP32] Fixed colors in 8-bit palette mode and added support for 16-bit direct mode.
[src/mess/drivers]gp32.c

src/mess/drivers/gp32.c
r6547r6548
3131#define BPPMODE_TFT_08   0x0B
3232#define BPPMODE_TFT_16   0x0C
3333
34//             76543210 76543210 76543210 76543210
35// 5551 16-bit 00000000 00000000 RRRRRGGG GGBBBBB0
36// 5551 32-bit 00000000 RRRRRI00 GGGGGI00 BBBBBI00
37// 565  16-bit 00000000 00000000 RRRRRGGG GGBBBBB0
38// 565  32-bit 00000000 RRRRR000 GGGGG000 BBBBB000
39
3440static VIDEO_UPDATE( gp32 )
3541{
3642   if (s3c240x_vidregs[0] & 1)   // display enabled?
3743   {
3844      int x, y, bppmode;
3945//      int hwswp, tpal, offsize;
40      UINT8 *vram;
4146      UINT32 vramaddr;
4247
4348//      logerror("vramaddr 1 = %08X\n", s3c240x_vidregs[5] << 1);
4449//      logerror("vramaddr 2 = %08X\n", ((s3c240x_vidregs[5] & 0xFFE00000) | s3c240x_vidregs[6]) << 1);
4550      vramaddr = s3c240x_vidregs[5] << 1;
4651
47      vram = (UINT8 *)&s3c240x_ram[(vramaddr-0x0c000000)/4];
48
4952      bppmode = (s3c240x_vidregs[0] >> 1) & 0xF;
5053
5154//      hwswp = (s3c240x_vidregs[4] >> 0) & 0x1;
r6547r6548
5760      {
5861         case BPPMODE_TFT_08 :
5962         {
63            UINT8 *vram;
64            vram = (UINT8 *)&s3c240x_ram[(vramaddr-0x0c000000)/4];
6065            for (y = 0; y < 320; y++)
6166            {
62               UINT16 *scanline = BITMAP_ADDR16( bitmap, y, 0);
67               UINT32 *scanline = BITMAP_ADDR32( bitmap, y, 0);
6368               for (x = 0; x < 240; x++)
6469               {
65                  *scanline++ = vram[(240*y)+x];
70                  *scanline++ = palette_get_color( screen->machine, *vram++);
6671               }
6772            }
6873         }
6974         break;
75         case BPPMODE_TFT_16 :
76         {
77            UINT16 *vram;
78            vram = (UINT16 *)&s3c240x_ram[(vramaddr-0x0c000000)/4];
79            for (y = 0; y < 320; y++)
80            {
81               UINT32 *scanline = BITMAP_ADDR32( bitmap, y, 0);
82               for (x = 0; x < 240; x++)
83               {
84                  UINT16 data;
85                  UINT8 r, g, b;
86                  data = *vram++;
87                  r = ((data >> 11) & 0x1F) << 3;
88                  g = ((data >>  6) & 0x1F) << 3;
89                  b = ((data >>  1) & 0x1F) << 3;
90                  *scanline++ = MAKE_RGB( r, g, b);
91               }
92            }
93         }
94         break;
95         default :
96         {
97            printf( "bppmode %d not supported\n", bppmode);
98         }
99         break;
70100      }
71101   }
72102   return 0;
r6547r6548
96126
97127static WRITE32_HANDLER( s3c240x_palette_w )
98128{
129   UINT8 r, g, b;
99130   if (mem_mask != 0xffffffff)
100131   {
101132      logerror("s3c240x_palette_w: unknown mask %08x\n", mem_mask);
102133   }
103   palette_set_color_rgb(space->machine, offset, ((data>>11)&0x1f)<<3, ((data>>5)&0x3f)<<2, (data&0x1f)<<3);
134   r = ((data >> 11) & 0x1F) << 3;
135   g = ((data >>  6) & 0x1F) << 3;
136   b = ((data >>  1) & 0x1F) << 3;
137   palette_set_color_rgb(space->machine, offset, r, g, b);
104138}
105139
106140// CLOCK & POWER MANAGEMENT
r6547r6548
815849   MDRV_PALETTE_LENGTH(32768)
816850
817851   MDRV_SCREEN_ADD("screen", LCD)
818   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
852   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
819853   MDRV_SCREEN_REFRESH_RATE(60)
820854   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
821855   MDRV_SCREEN_SIZE(240, 320)
r6547r6548
835869
836870ROM_START( gp32 )
837871   ROM_REGION( 0x80000, "maincpu", 0 )
838   ROM_SYSTEM_BIOS( 0, "157e", "GP32 Firmware 1.57 (English)" )
872   ROM_SYSTEM_BIOS( 0, "157e", "GP32 Firmware 1.5.7 (English)" )
839873   ROMX_LOAD( "gp32157e.bin", 0x000000, 0x080000, CRC(b1e35643) SHA1(1566bc2a27980602e9eb501cf8b2d62939bfd1e5), ROM_BIOS(1) )
840   ROM_SYSTEM_BIOS( 1, "100k", "GP32 Firmware 1.00 (Korean)" )
874   ROM_SYSTEM_BIOS( 1, "100k", "GP32 Firmware 1.0.0 (Korean)" )
841875   ROMX_LOAD( "gp32100k.bin", 0x000000, 0x080000, CRC(d9925ac9) SHA1(3604d0d7210ed72eddd3e3e0c108f1102508423c), ROM_BIOS(2) )
842   ROM_SYSTEM_BIOS( 2, "156k", "GP32 Firmware 1.56 (Korean)" )
876   ROM_SYSTEM_BIOS( 2, "156k", "GP32 Firmware 1.5.6 (Korean)" )
843877   ROMX_LOAD( "gp32156k.bin", 0x000000, 0x080000, CRC(667fb1c8) SHA1(d179ab8e96411272b6a1d683e59da752067f9da8), ROM_BIOS(3) )
878   ROM_SYSTEM_BIOS( 3, "166m", "GP32 Firmware 1.6.6 (European)" )
879   ROMX_LOAD( "gp32166m.bin", 0x000000, 0x080000, CRC(4548a840) SHA1(1ad0cab0af28fb45c182e5e8c87ead2aaa4fffe1), ROM_BIOS(4) )
880//   ROM_SYSTEM_BIOS( 4, "test", "test" )
881//   ROMX_LOAD( "test.bin", 0x000000, 0x080000, CRC(00000000) SHA1(0000000000000000000000000000000000000000), ROM_BIOS(5) )
844882ROM_END
845883
846884CONS(2001, gp32, 0, 0, gp32, gp32, 0, 0, "Game Park", "GP32", ROT270|GAME_NOT_WORKING|GAME_NO_SOUND)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team