inline static unsigned int CalcCol(int offs) { // xBBBBBGGGGGRRRRR int nColour = RamPal[offs + 0] | (RamPal[offs + 1] << 8); int r, g, b; r = (nColour & 0x001F) << 3; // Red r |= r >> 5; g = (nColour & 0x03E0) >> 2; // Green g |= g >> 5; b = (nColour & 0x7C00) >> 7; // Blue b |= b >> 5; return BurnHighCol(r, g, b, 0); }
static void DrvCalcPalette() { UINT32 *PaletteRam = (UINT32*)DrvPaletteRam; for (int Offset = 0; Offset <= 32768; Offset++) { int r = (PaletteRam[Offset] >> 0) & 0x1f; int g = (PaletteRam[Offset] >> 5) & 0x1f; int b = (PaletteRam[Offset] >> 10) & 0x1f; r <<= 3; g <<= 3; b <<= 3; DrvPalette[Offset] = BurnHighCol(r, g, b, 0); } }
static void DrvPaletteUpdate() { UINT32 p[0x101]; p[0x100] = 0; for (INT32 i = 0; i < 0x100; i++) { INT32 r = DrvPalRAM[i+0x200] & 0x0f; INT32 g = DrvPalRAM[i+0x000] >> 4; INT32 b = DrvPalRAM[i+0x000] & 0x0f; p[i] = BurnHighCol(r+(r*16), g+(g*16), b+(b*16), 0); } for (INT32 i = 0; i < 0x400; i++) { DrvPalette[i] = p[DrvColTable[i]]; } }
inline static unsigned int CalcColCPS2(unsigned short a) { int r, g, b, f; const int F_OFFSET = 0x0F; // Format is FFFF RRRR GGGG BBBB f = (a & 0xF000) >> 12; r = (a & 0x0F00) >> 4; // Red r |= r >> 4; g = (a & 0x00F0); // Green g |= g >> 4; b = (a & 0x000F); // Blue b |= b << 4; f += F_OFFSET; r *= f; r /= F_OFFSET + 0x0F; g *= f; g /= F_OFFSET + 0x0F; b *= f; b /= F_OFFSET + 0x0F; return BurnHighCol(r, g, b, 0); }
m6295bank = data & 3; memcpy (Snd + 0x20000, Snd + 0x40000 + m6295bank * 0x20000, 0x20000); } static inline void set_palette(UINT16 pal, INT32 offset) { INT32 r = (pal >> 10) & 0x1f; INT32 g = (pal >> 5) & 0x1f; INT32 b = (pal >> 0) & 0x1f; r = (r << 3) | (r >> 2); g = (g << 3) | (g >> 2); b = (b << 3) | (b >> 2); Palette[offset] = (r << 16) | (g << 8) | b; DrvPalette[offset] = BurnHighCol(r, g, b, 0); } UINT8 __fastcall drtomy_read_byte(UINT32 address) { switch (address) { case 0x700001: return DrvDips[0]; case 0x700003: return DrvDips[1]; case 0x700005: return DrvInputs[0];