mirror of
				https://github.com/RaySollium99/picodrive.git
				synced 2025-10-31 15:08:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| // Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
 | |
| // to      00000000 rrr00000 ggg00000 bbb00000 ...
 | |
| 
 | |
| void vidConvCpyRGB32  (void *to, void *from, int pixels)
 | |
| {
 | |
| 	unsigned short *ps = from;
 | |
| 	unsigned int   *pd = to;
 | |
| 
 | |
| 	for (; pixels; pixels--, ps++, pd++)
 | |
| 	{
 | |
| 		*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
 | |
| 		*pd |= *pd >> 3;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void vidConvCpyRGB32sh(void *to, void *from, int pixels)
 | |
| {
 | |
| 	unsigned short *ps = from;
 | |
| 	unsigned int   *pd = to;
 | |
| 
 | |
| 	for (; pixels; pixels--, ps++, pd++)
 | |
| 	{
 | |
| 		*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
 | |
| 		*pd >>= 1;
 | |
| 		*pd |= *pd >> 3;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void vidConvCpyRGB32hi(void *to, void *from, int pixels)
 | |
| {
 | |
| 	unsigned short *ps = from;
 | |
| 	unsigned int   *pd = to;
 | |
| 
 | |
| 	for (; pixels; pixels--, ps++, pd++)
 | |
| 	{
 | |
| 		*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
 | |
| 		continue;
 | |
| 		*pd += 0x00404040;
 | |
| 		if (*pd & 0x01000000) *pd |= 0x00e00000;
 | |
| 		if (*pd & 0x00010000) *pd |= 0x0000e000;
 | |
| 		if (*pd & 0x00000100) *pd |= 0x000000e0;
 | |
| 		*pd &= 0x00e0e0e0;
 | |
| 		*pd |= *pd >> 3;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void vidCpyM2_40col(void *dest, void *src)
 | |
| {
 | |
| 	unsigned char *pd = dest, *ps = src;
 | |
| 	int i, u;
 | |
| 
 | |
| 	for (i = 0; i < 224; i++)
 | |
| 	{
 | |
| 		ps += 8;
 | |
| 		for (u = 0; u < 320; u++)
 | |
| 			*pd++ = *ps++;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void vidCpyM2_32col(void *dest, void *src)
 | |
| {
 | |
| 	unsigned char *pd = dest, *ps = src;
 | |
| 	int i, u;
 | |
| 
 | |
| 	for (i = 0; i < 224; i++)
 | |
| 	{
 | |
| 		ps += 8;
 | |
| 		pd += 32;
 | |
| 		for (u = 0; u < 256; u++)
 | |
| 			*pd++ = *ps++;
 | |
| 		ps += 64;
 | |
| 		pd += 32;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void vidCpyM2_32col_nobord(void *dest, void *src)
 | |
| {
 | |
| 	vidCpyM2_32col(dest, src);
 | |
| }
 | |
| 
 | 
