diff options
Diffstat (limited to 'src/emu/video/voodoo.c')
-rw-r--r-- | src/emu/video/voodoo.c | 548 |
1 files changed, 274 insertions, 274 deletions
diff --git a/src/emu/video/voodoo.c b/src/emu/video/voodoo.c index c84da37985b..78807915ce2 100644 --- a/src/emu/video/voodoo.c +++ b/src/emu/video/voodoo.c @@ -186,20 +186,20 @@ bits(7:4) and bit(24)), X, and Y: * *************************************/ -#define DEBUG_DEPTH (0) -#define DEBUG_LOD (0) - -#define LOG_VBLANK_SWAP (0) -#define LOG_FIFO (0) -#define LOG_FIFO_VERBOSE (0) -#define LOG_REGISTERS (0) -#define LOG_WAITS (0) -#define LOG_LFB (0) -#define LOG_TEXTURE_RAM (0) -#define LOG_RASTERIZERS (0) -#define LOG_CMDFIFO (0) -#define LOG_CMDFIFO_VERBOSE (0) -#define LOG_BANSHEE_2D (0) +#define DEBUG_DEPTH (0) +#define DEBUG_LOD (0) + +#define LOG_VBLANK_SWAP (0) +#define LOG_FIFO (0) +#define LOG_FIFO_VERBOSE (0) +#define LOG_REGISTERS (0) +#define LOG_WAITS (0) +#define LOG_LFB (0) +#define LOG_TEXTURE_RAM (0) +#define LOG_RASTERIZERS (0) +#define LOG_CMDFIFO (0) +#define LOG_CMDFIFO_VERBOSE (0) +#define LOG_BANSHEE_2D (0) #define MODIFY_PIXEL(VV) @@ -1002,9 +1002,9 @@ static TIMER_CALLBACK( vblank_off_callback ) // TODO: Vblank IRQ enable is VOODOO3 only? if (v->type >= TYPE_VOODOO_3) { - if (v->reg[intrCtrl].u & 0x8) // call IRQ handler if VSYNC interrupt (falling) is enabled + if (v->reg[intrCtrl].u & 0x8) // call IRQ handler if VSYNC interrupt (falling) is enabled { - v->reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active + v->reg[intrCtrl].u |= 0x200; // VSYNC int (falling) active if (v->fbi.vblank_client != NULL) (*v->fbi.vblank_client)(v->device, FALSE); @@ -1058,9 +1058,9 @@ static TIMER_CALLBACK( vblank_callback ) // TODO: Vblank IRQ enable is VOODOO3 only? if (v->type >= TYPE_VOODOO_3) { - if (v->reg[intrCtrl].u & 0x4) // call IRQ handler if VSYNC interrupt (rising) is enabled + if (v->reg[intrCtrl].u & 0x4) // call IRQ handler if VSYNC interrupt (rising) is enabled { - v->reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active + v->reg[intrCtrl].u |= 0x100; // VSYNC int (rising) active if (v->fbi.vblank_client != NULL) (*v->fbi.vblank_client)(v->device, TRUE); @@ -1144,20 +1144,20 @@ static void recompute_video_memory(voodoo_state *v) /* remaining buffers are based on the config */ switch (memory_config) { - case 3: /* reserved */ + case 3: /* reserved */ logerror("VOODOO.%d.ERROR:Unexpected memory configuration in recompute_video_memory!\n", v->index); - case 0: /* 2 color buffers, 1 aux buffer */ + case 0: /* 2 color buffers, 1 aux buffer */ v->fbi.rgboffs[2] = ~0; v->fbi.auxoffs = 2 * buffer_pages * 0x1000; break; - case 1: /* 3 color buffers, 0 aux buffers */ + case 1: /* 3 color buffers, 0 aux buffers */ v->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000; v->fbi.auxoffs = ~0; break; - case 2: /* 3 color buffers, 1 aux buffers */ + case 2: /* 3 color buffers, 1 aux buffers */ v->fbi.rgboffs[2] = 2 * buffer_pages * 0x1000; v->fbi.auxoffs = 3 * buffer_pages * 0x1000; break; @@ -1334,9 +1334,9 @@ static void dacdata_r(dac_state *d, UINT8 regnum) /* this is just to make startup happy */ switch (d->reg[7]) { - case 0x01: result = 0x55; break; - case 0x07: result = 0x71; break; - case 0x0b: result = 0x79; break; + case 0x01: result = 0x55; break; + case 0x07: result = 0x71; break; + case 0x0b: result = 0x79; break; } break; @@ -1509,118 +1509,118 @@ static int cmdfifo_compute_expected_depth(voodoo_state *v, cmdfifo_info *f) switch (command & 7) { /* - Packet type 0: 1 or 2 words - - Word Bits - 0 31:29 = reserved - 0 28:6 = Address [24:2] - 0 5:3 = Function (0 = NOP, 1 = JSR, 2 = RET, 3 = JMP LOCAL, 4 = JMP AGP) - 0 2:0 = Packet type (0) - 1 31:11 = reserved (JMP AGP only) - 1 10:0 = Address [35:25] - */ + Packet type 0: 1 or 2 words + + Word Bits + 0 31:29 = reserved + 0 28:6 = Address [24:2] + 0 5:3 = Function (0 = NOP, 1 = JSR, 2 = RET, 3 = JMP LOCAL, 4 = JMP AGP) + 0 2:0 = Packet type (0) + 1 31:11 = reserved (JMP AGP only) + 1 10:0 = Address [35:25] + */ case 0: if (((command >> 3) & 7) == 4) return 2; return 1; /* - Packet type 1: 1 + N words - - Word Bits - 0 31:16 = Number of words - 0 15 = Increment? - 0 14:3 = Register base - 0 2:0 = Packet type (1) - 1 31:0 = Data word - */ + Packet type 1: 1 + N words + + Word Bits + 0 31:16 = Number of words + 0 15 = Increment? + 0 14:3 = Register base + 0 2:0 = Packet type (1) + 1 31:0 = Data word + */ case 1: return 1 + (command >> 16); /* - Packet type 2: 1 + N words + Packet type 2: 1 + N words - Word Bits - 0 31:3 = 2D Register mask - 0 2:0 = Packet type (2) - 1 31:0 = Data word - */ + Word Bits + 0 31:3 = 2D Register mask + 0 2:0 = Packet type (2) + 1 31:0 = Data word + */ case 2: for (i = 3; i <= 31; i++) if (command & (1 << i)) count++; return 1 + count; /* - Packet type 3: 1 + N words - - Word Bits - 0 31:29 = Number of dummy entries following the data - 0 28 = Packed color data? - 0 25 = Disable ping pong sign correction (0=normal, 1=disable) - 0 24 = Culling sign (0=positive, 1=negative) - 0 23 = Enable culling (0=disable, 1=enable) - 0 22 = Strip mode (0=strip, 1=fan) - 0 17 = Setup S1 and T1 - 0 16 = Setup W1 - 0 15 = Setup S0 and T0 - 0 14 = Setup W0 - 0 13 = Setup Wb - 0 12 = Setup Z - 0 11 = Setup Alpha - 0 10 = Setup RGB - 0 9:6 = Number of vertices - 0 5:3 = Command (0=Independent tris, 1=Start new strip, 2=Continue strip) - 0 2:0 = Packet type (3) - 1 31:0 = Data word - */ + Packet type 3: 1 + N words + + Word Bits + 0 31:29 = Number of dummy entries following the data + 0 28 = Packed color data? + 0 25 = Disable ping pong sign correction (0=normal, 1=disable) + 0 24 = Culling sign (0=positive, 1=negative) + 0 23 = Enable culling (0=disable, 1=enable) + 0 22 = Strip mode (0=strip, 1=fan) + 0 17 = Setup S1 and T1 + 0 16 = Setup W1 + 0 15 = Setup S0 and T0 + 0 14 = Setup W0 + 0 13 = Setup Wb + 0 12 = Setup Z + 0 11 = Setup Alpha + 0 10 = Setup RGB + 0 9:6 = Number of vertices + 0 5:3 = Command (0=Independent tris, 1=Start new strip, 2=Continue strip) + 0 2:0 = Packet type (3) + 1 31:0 = Data word + */ case 3: - count = 2; /* X/Y */ + count = 2; /* X/Y */ if (command & (1 << 28)) { - if (command & (3 << 10)) count++; /* ARGB */ + if (command & (3 << 10)) count++; /* ARGB */ } else { - if (command & (1 << 10)) count += 3; /* RGB */ - if (command & (1 << 11)) count++; /* A */ + if (command & (1 << 10)) count += 3; /* RGB */ + if (command & (1 << 11)) count++; /* A */ } - if (command & (1 << 12)) count++; /* Z */ - if (command & (1 << 13)) count++; /* Wb */ - if (command & (1 << 14)) count++; /* W0 */ - if (command & (1 << 15)) count += 2; /* S0/T0 */ - if (command & (1 << 16)) count++; /* W1 */ - if (command & (1 << 17)) count += 2; /* S1/T1 */ - count *= (command >> 6) & 15; /* numverts */ + if (command & (1 << 12)) count++; /* Z */ + if (command & (1 << 13)) count++; /* Wb */ + if (command & (1 << 14)) count++; /* W0 */ + if (command & (1 << 15)) count += 2; /* S0/T0 */ + if (command & (1 << 16)) count++; /* W1 */ + if (command & (1 << 17)) count += 2; /* S1/T1 */ + count *= (command >> 6) & 15; /* numverts */ return 1 + count + (command >> 29); /* - Packet type 4: 1 + N words - - Word Bits - 0 31:29 = Number of dummy entries following the data - 0 28:15 = General register mask - 0 14:3 = Register base - 0 2:0 = Packet type (4) - 1 31:0 = Data word - */ + Packet type 4: 1 + N words + + Word Bits + 0 31:29 = Number of dummy entries following the data + 0 28:15 = General register mask + 0 14:3 = Register base + 0 2:0 = Packet type (4) + 1 31:0 = Data word + */ case 4: for (i = 15; i <= 28; i++) if (command & (1 << i)) count++; return 1 + count + (command >> 29); /* - Packet type 5: 2 + N words - - Word Bits - 0 31:30 = Space (0,1=reserved, 2=LFB, 3=texture) - 0 29:26 = Byte disable W2 - 0 25:22 = Byte disable WN - 0 21:3 = Num words - 0 2:0 = Packet type (5) - 1 31:30 = Reserved - 1 29:0 = Base address [24:0] - 2 31:0 = Data word - */ + Packet type 5: 2 + N words + + Word Bits + 0 31:30 = Space (0,1=reserved, 2=LFB, 3=texture) + 0 29:26 = Byte disable W2 + 0 25:22 = Byte disable WN + 0 21:3 = Num words + 0 2:0 = Packet type (5) + 1 31:30 = Reserved + 1 29:0 = Base address [24:0] + 2 31:0 = Data word + */ case 5: return 2 + ((command >> 3) & 0x7ffff); @@ -1652,16 +1652,16 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) switch (command & 7) { /* - Packet type 0: 1 or 2 words - - Word Bits - 0 31:29 = reserved - 0 28:6 = Address [24:2] - 0 5:3 = Function (0 = NOP, 1 = JSR, 2 = RET, 3 = JMP LOCAL, 4 = JMP AGP) - 0 2:0 = Packet type (0) - 1 31:11 = reserved (JMP AGP only) - 1 10:0 = Address [35:25] - */ + Packet type 0: 1 or 2 words + + Word Bits + 0 31:29 = reserved + 0 28:6 = Address [24:2] + 0 5:3 = Function (0 = NOP, 1 = JSR, 2 = RET, 3 = JMP LOCAL, 4 = JMP AGP) + 0 2:0 = Packet type (0) + 1 31:11 = reserved (JMP AGP only) + 1 10:0 = Address [35:25] + */ case 0: /* extract parameters */ @@ -1670,27 +1670,27 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) /* switch off of the specific command */ switch ((command >> 3) & 7) { - case 0: /* NOP */ + case 0: /* NOP */ if (LOG_CMDFIFO) logerror(" NOP\n"); break; - case 1: /* JSR */ + case 1: /* JSR */ if (LOG_CMDFIFO) logerror(" JSR $%06X\n", target); mame_printf_debug("JSR in CMDFIFO!\n"); src = &fifobase[target / 4]; break; - case 2: /* RET */ + case 2: /* RET */ if (LOG_CMDFIFO) logerror(" RET $%06X\n", target); fatalerror("RET in CMDFIFO!\n"); break; - case 3: /* JMP LOCAL FRAME BUFFER */ + case 3: /* JMP LOCAL FRAME BUFFER */ if (LOG_CMDFIFO) logerror(" JMP LOCAL FRAMEBUF $%06X\n", target); src = &fifobase[target / 4]; break; - case 4: /* JMP AGP */ + case 4: /* JMP AGP */ if (LOG_CMDFIFO) logerror(" JMP AGP $%06X\n", target); fatalerror("JMP AGP in CMDFIFO!\n"); src = &fifobase[target / 4]; @@ -1704,15 +1704,15 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; /* - Packet type 1: 1 + N words - - Word Bits - 0 31:16 = Number of words - 0 15 = Increment? - 0 14:3 = Register base - 0 2:0 = Packet type (1) - 1 31:0 = Data word - */ + Packet type 1: 1 + N words + + Word Bits + 0 31:16 = Number of words + 0 15 = Increment? + 0 14:3 = Register base + 0 2:0 = Packet type (1) + 1 31:0 = Data word + */ case 1: /* extract parameters */ @@ -1743,13 +1743,13 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; /* - Packet type 2: 1 + N words + Packet type 2: 1 + N words - Word Bits - 0 31:3 = 2D Register mask - 0 2:0 = Packet type (2) - 1 31:0 = Data word - */ + Word Bits + 0 31:3 = 2D Register mask + 0 2:0 = Packet type (2) + 1 31:0 = Data word + */ case 2: if (LOG_CMDFIFO) logerror(" PACKET TYPE 2: mask=%X\n", (command >> 3) & 0x1ffffff); @@ -1760,28 +1760,28 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; /* - Packet type 3: 1 + N words - - Word Bits - 0 31:29 = Number of dummy entries following the data - 0 28 = Packed color data? - 0 25 = Disable ping pong sign correction (0=normal, 1=disable) - 0 24 = Culling sign (0=positive, 1=negative) - 0 23 = Enable culling (0=disable, 1=enable) - 0 22 = Strip mode (0=strip, 1=fan) - 0 17 = Setup S1 and T1 - 0 16 = Setup W1 - 0 15 = Setup S0 and T0 - 0 14 = Setup W0 - 0 13 = Setup Wb - 0 12 = Setup Z - 0 11 = Setup Alpha - 0 10 = Setup RGB - 0 9:6 = Number of vertices - 0 5:3 = Command (0=Independent tris, 1=Start new strip, 2=Continue strip) - 0 2:0 = Packet type (3) - 1 31:0 = Data word - */ + Packet type 3: 1 + N words + + Word Bits + 0 31:29 = Number of dummy entries following the data + 0 28 = Packed color data? + 0 25 = Disable ping pong sign correction (0=normal, 1=disable) + 0 24 = Culling sign (0=positive, 1=negative) + 0 23 = Enable culling (0=disable, 1=enable) + 0 22 = Strip mode (0=strip, 1=fan) + 0 17 = Setup S1 and T1 + 0 16 = Setup W1 + 0 15 = Setup S0 and T0 + 0 14 = Setup W0 + 0 13 = Setup Wb + 0 12 = Setup Z + 0 11 = Setup Alpha + 0 10 = Setup RGB + 0 9:6 = Number of vertices + 0 5:3 = Command (0=Independent tris, 1=Start new strip, 2=Continue strip) + 0 2:0 = Packet type (3) + 1 31:0 = Data word + */ case 3: /* extract parameters */ @@ -1884,15 +1884,15 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; /* - Packet type 4: 1 + N words - - Word Bits - 0 31:29 = Number of dummy entries following the data - 0 28:15 = General register mask - 0 14:3 = Register base - 0 2:0 = Packet type (4) - 1 31:0 = Data word - */ + Packet type 4: 1 + N words + + Word Bits + 0 31:29 = Number of dummy entries following the data + 0 28:15 = General register mask + 0 14:3 = Register base + 0 2:0 = Packet type (4) + 1 31:0 = Data word + */ case 4: /* extract parameters */ @@ -1928,18 +1928,18 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; /* - Packet type 5: 2 + N words - - Word Bits - 0 31:30 = Space (0,1=reserved, 2=LFB, 3=texture) - 0 29:26 = Byte disable W2 - 0 25:22 = Byte disable WN - 0 21:3 = Num words - 0 2:0 = Packet type (5) - 1 31:30 = Reserved - 1 29:0 = Base address [24:0] - 2 31:0 = Data word - */ + Packet type 5: 2 + N words + + Word Bits + 0 31:30 = Space (0,1=reserved, 2=LFB, 3=texture) + 0 29:26 = Byte disable W2 + 0 25:22 = Byte disable WN + 0 21:3 = Num words + 0 2:0 = Packet type (5) + 1 31:30 = Reserved + 1 29:0 = Base address [24:0] + 2 31:0 = Data word + */ case 5: /* extract parameters */ @@ -1949,7 +1949,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) /* handle LFB writes */ switch (command >> 30) { - case 0: // Linear FB + case 0: // Linear FB { if (LOG_CMDFIFO) logerror(" PACKET TYPE 5: FB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); @@ -1967,7 +1967,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) } break; } - case 2: // 3D LFB + case 2: // 3D LFB { if (LOG_CMDFIFO) logerror(" PACKET TYPE 5: 3D LFB count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); @@ -1978,7 +1978,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; } - case 1: // Planar YUV + case 1: // Planar YUV { // TODO @@ -1992,7 +1992,7 @@ static UINT32 cmdfifo_execute(voodoo_state *v, cmdfifo_info *f) break; } - case 3: // Texture Port + case 3: // Texture Port { if (LOG_CMDFIFO) logerror(" PACKET TYPE 5: textureRAM count=%d dest=%08X bd2=%X bdN=%X\n", count, target, (command >> 26) & 15, (command >> 22) & 15); @@ -2983,171 +2983,171 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask, /* first extract A,R,G,B from the data */ switch (LFBMODE_WRITE_FORMAT(v->reg[lfbMode].u) + 16 * LFBMODE_RGBA_LANES(v->reg[lfbMode].u)) { - case 16*0 + 0: /* ARGB, 16-bit RGB 5-6-5 */ - case 16*2 + 0: /* RGBA, 16-bit RGB 5-6-5 */ + case 16*0 + 0: /* ARGB, 16-bit RGB 5-6-5 */ + case 16*2 + 0: /* RGBA, 16-bit RGB 5-6-5 */ EXTRACT_565_TO_888(data, sr[0], sg[0], sb[0]); EXTRACT_565_TO_888(data >> 16, sr[1], sg[1], sb[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*1 + 0: /* ABGR, 16-bit RGB 5-6-5 */ - case 16*3 + 0: /* BGRA, 16-bit RGB 5-6-5 */ + case 16*1 + 0: /* ABGR, 16-bit RGB 5-6-5 */ + case 16*3 + 0: /* BGRA, 16-bit RGB 5-6-5 */ EXTRACT_565_TO_888(data, sb[0], sg[0], sr[0]); EXTRACT_565_TO_888(data >> 16, sb[1], sg[1], sr[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*0 + 1: /* ARGB, 16-bit RGB x-5-5-5 */ + case 16*0 + 1: /* ARGB, 16-bit RGB x-5-5-5 */ EXTRACT_x555_TO_888(data, sr[0], sg[0], sb[0]); EXTRACT_x555_TO_888(data >> 16, sr[1], sg[1], sb[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*1 + 1: /* ABGR, 16-bit RGB x-5-5-5 */ + case 16*1 + 1: /* ABGR, 16-bit RGB x-5-5-5 */ EXTRACT_x555_TO_888(data, sb[0], sg[0], sr[0]); EXTRACT_x555_TO_888(data >> 16, sb[1], sg[1], sr[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*2 + 1: /* RGBA, 16-bit RGB x-5-5-5 */ + case 16*2 + 1: /* RGBA, 16-bit RGB x-5-5-5 */ EXTRACT_555x_TO_888(data, sr[0], sg[0], sb[0]); EXTRACT_555x_TO_888(data >> 16, sr[1], sg[1], sb[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*3 + 1: /* BGRA, 16-bit RGB x-5-5-5 */ + case 16*3 + 1: /* BGRA, 16-bit RGB x-5-5-5 */ EXTRACT_555x_TO_888(data, sb[0], sg[0], sr[0]); EXTRACT_555x_TO_888(data >> 16, sb[1], sg[1], sr[1]); mask = LFB_RGB_PRESENT | (LFB_RGB_PRESENT << 4); offset <<= 1; break; - case 16*0 + 2: /* ARGB, 16-bit ARGB 1-5-5-5 */ + case 16*0 + 2: /* ARGB, 16-bit ARGB 1-5-5-5 */ EXTRACT_1555_TO_8888(data, sa[0], sr[0], sg[0], sb[0]); EXTRACT_1555_TO_8888(data >> 16, sa[1], sr[1], sg[1], sb[1]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | ((LFB_RGB_PRESENT | LFB_ALPHA_PRESENT) << 4); offset <<= 1; break; - case 16*1 + 2: /* ABGR, 16-bit ARGB 1-5-5-5 */ + case 16*1 + 2: /* ABGR, 16-bit ARGB 1-5-5-5 */ EXTRACT_1555_TO_8888(data, sa[0], sb[0], sg[0], sr[0]); EXTRACT_1555_TO_8888(data >> 16, sa[1], sb[1], sg[1], sr[1]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | ((LFB_RGB_PRESENT | LFB_ALPHA_PRESENT) << 4); offset <<= 1; break; - case 16*2 + 2: /* RGBA, 16-bit ARGB 1-5-5-5 */ + case 16*2 + 2: /* RGBA, 16-bit ARGB 1-5-5-5 */ EXTRACT_5551_TO_8888(data, sr[0], sg[0], sb[0], sa[0]); EXTRACT_5551_TO_8888(data >> 16, sr[1], sg[1], sb[1], sa[1]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | ((LFB_RGB_PRESENT | LFB_ALPHA_PRESENT) << 4); offset <<= 1; break; - case 16*3 + 2: /* BGRA, 16-bit ARGB 1-5-5-5 */ + case 16*3 + 2: /* BGRA, 16-bit ARGB 1-5-5-5 */ EXTRACT_5551_TO_8888(data, sb[0], sg[0], sr[0], sa[0]); EXTRACT_5551_TO_8888(data >> 16, sb[1], sg[1], sr[1], sa[1]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | ((LFB_RGB_PRESENT | LFB_ALPHA_PRESENT) << 4); offset <<= 1; break; - case 16*0 + 4: /* ARGB, 32-bit RGB x-8-8-8 */ + case 16*0 + 4: /* ARGB, 32-bit RGB x-8-8-8 */ EXTRACT_x888_TO_888(data, sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT; break; - case 16*1 + 4: /* ABGR, 32-bit RGB x-8-8-8 */ + case 16*1 + 4: /* ABGR, 32-bit RGB x-8-8-8 */ EXTRACT_x888_TO_888(data, sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT; break; - case 16*2 + 4: /* RGBA, 32-bit RGB x-8-8-8 */ + case 16*2 + 4: /* RGBA, 32-bit RGB x-8-8-8 */ EXTRACT_888x_TO_888(data, sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT; break; - case 16*3 + 4: /* BGRA, 32-bit RGB x-8-8-8 */ + case 16*3 + 4: /* BGRA, 32-bit RGB x-8-8-8 */ EXTRACT_888x_TO_888(data, sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT; break; - case 16*0 + 5: /* ARGB, 32-bit ARGB 8-8-8-8 */ + case 16*0 + 5: /* ARGB, 32-bit ARGB 8-8-8-8 */ EXTRACT_8888_TO_8888(data, sa[0], sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT; break; - case 16*1 + 5: /* ABGR, 32-bit ARGB 8-8-8-8 */ + case 16*1 + 5: /* ABGR, 32-bit ARGB 8-8-8-8 */ EXTRACT_8888_TO_8888(data, sa[0], sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT; break; - case 16*2 + 5: /* RGBA, 32-bit ARGB 8-8-8-8 */ + case 16*2 + 5: /* RGBA, 32-bit ARGB 8-8-8-8 */ EXTRACT_8888_TO_8888(data, sr[0], sg[0], sb[0], sa[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT; break; - case 16*3 + 5: /* BGRA, 32-bit ARGB 8-8-8-8 */ + case 16*3 + 5: /* BGRA, 32-bit ARGB 8-8-8-8 */ EXTRACT_8888_TO_8888(data, sb[0], sg[0], sr[0], sa[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT; break; - case 16*0 + 12: /* ARGB, 32-bit depth+RGB 5-6-5 */ - case 16*2 + 12: /* RGBA, 32-bit depth+RGB 5-6-5 */ + case 16*0 + 12: /* ARGB, 32-bit depth+RGB 5-6-5 */ + case 16*2 + 12: /* RGBA, 32-bit depth+RGB 5-6-5 */ sw[0] = data >> 16; EXTRACT_565_TO_888(data, sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*1 + 12: /* ABGR, 32-bit depth+RGB 5-6-5 */ - case 16*3 + 12: /* BGRA, 32-bit depth+RGB 5-6-5 */ + case 16*1 + 12: /* ABGR, 32-bit depth+RGB 5-6-5 */ + case 16*3 + 12: /* BGRA, 32-bit depth+RGB 5-6-5 */ sw[0] = data >> 16; EXTRACT_565_TO_888(data, sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*0 + 13: /* ARGB, 32-bit depth+RGB x-5-5-5 */ + case 16*0 + 13: /* ARGB, 32-bit depth+RGB x-5-5-5 */ sw[0] = data >> 16; EXTRACT_x555_TO_888(data, sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*1 + 13: /* ABGR, 32-bit depth+RGB x-5-5-5 */ + case 16*1 + 13: /* ABGR, 32-bit depth+RGB x-5-5-5 */ sw[0] = data >> 16; EXTRACT_x555_TO_888(data, sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*2 + 13: /* RGBA, 32-bit depth+RGB x-5-5-5 */ + case 16*2 + 13: /* RGBA, 32-bit depth+RGB x-5-5-5 */ sw[0] = data >> 16; EXTRACT_555x_TO_888(data, sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*3 + 13: /* BGRA, 32-bit depth+RGB x-5-5-5 */ + case 16*3 + 13: /* BGRA, 32-bit depth+RGB x-5-5-5 */ sw[0] = data >> 16; EXTRACT_555x_TO_888(data, sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*0 + 14: /* ARGB, 32-bit depth+ARGB 1-5-5-5 */ + case 16*0 + 14: /* ARGB, 32-bit depth+ARGB 1-5-5-5 */ sw[0] = data >> 16; EXTRACT_1555_TO_8888(data, sa[0], sr[0], sg[0], sb[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*1 + 14: /* ABGR, 32-bit depth+ARGB 1-5-5-5 */ + case 16*1 + 14: /* ABGR, 32-bit depth+ARGB 1-5-5-5 */ sw[0] = data >> 16; EXTRACT_1555_TO_8888(data, sa[0], sb[0], sg[0], sr[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*2 + 14: /* RGBA, 32-bit depth+ARGB 1-5-5-5 */ + case 16*2 + 14: /* RGBA, 32-bit depth+ARGB 1-5-5-5 */ sw[0] = data >> 16; EXTRACT_5551_TO_8888(data, sr[0], sg[0], sb[0], sa[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*3 + 14: /* BGRA, 32-bit depth+ARGB 1-5-5-5 */ + case 16*3 + 14: /* BGRA, 32-bit depth+ARGB 1-5-5-5 */ sw[0] = data >> 16; EXTRACT_5551_TO_8888(data, sb[0], sg[0], sr[0], sa[0]); mask = LFB_RGB_PRESENT | LFB_ALPHA_PRESENT | LFB_DEPTH_PRESENT_MSW; break; - case 16*0 + 15: /* ARGB, 16-bit depth */ - case 16*1 + 15: /* ARGB, 16-bit depth */ - case 16*2 + 15: /* ARGB, 16-bit depth */ - case 16*3 + 15: /* ARGB, 16-bit depth */ + case 16*0 + 15: /* ARGB, 16-bit depth */ + case 16*1 + 15: /* ARGB, 16-bit depth */ + case 16*2 + 15: /* ARGB, 16-bit depth */ + case 16*3 + 15: /* ARGB, 16-bit depth */ sw[0] = data & 0xffff; sw[1] = data >> 16; mask = LFB_DEPTH_PRESENT | (LFB_DEPTH_PRESENT << 4); offset <<= 1; break; - default: /* reserved */ + default: /* reserved */ return 0; } @@ -3165,18 +3165,18 @@ static INT32 lfb_w(voodoo_state *v, offs_t offset, UINT32 data, UINT32 mem_mask, destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? (!forcefront) : LFBMODE_WRITE_BUFFER_SELECT(v->reg[lfbMode].u); switch (destbuf) { - case 0: /* front buffer */ + case 0: /* front buffer */ dest = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]); destmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.frontbuf]) / 2; v->fbi.video_changed = TRUE; break; - case 1: /* back buffer */ + case 1: /* back buffer */ dest = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]); destmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.backbuf]) / 2; break; - default: /* reserved */ + default: /* reserved */ return 0; } depth = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs); @@ -3860,8 +3860,8 @@ static UINT32 register_r(voodoo_state *v, offs_t offset) /* reserved area in the TMU read by the Vegas startup sequence */ case hvRetrace: - result = 0x200 << 16; /* should be between 0x7b and 0x267 */ - result |= 0x80; /* should be between 0x17 and 0x103 */ + result = 0x200 << 16; /* should be between 0x7b and 0x267 */ + result |= 0x80; /* should be between 0x17 and 0x103 */ break; /* cmdFifo -- Voodoo2 only */ @@ -3950,24 +3950,24 @@ static UINT32 lfb_r(voodoo_state *v, offs_t offset, int forcefront) destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? (!forcefront) : LFBMODE_READ_BUFFER_SELECT(v->reg[lfbMode].u); switch (destbuf) { - case 0: /* front buffer */ + case 0: /* front buffer */ buffer = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]); bufmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.frontbuf]) / 2; break; - case 1: /* back buffer */ + case 1: /* back buffer */ buffer = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]); bufmax = (v->fbi.mask + 1 - v->fbi.rgboffs[v->fbi.backbuf]) / 2; break; - case 2: /* aux buffer */ + case 2: /* aux buffer */ if (v->fbi.auxoffs == ~0) return 0xffffffff; buffer = (UINT16 *)(v->fbi.ram + v->fbi.auxoffs); bufmax = (v->fbi.mask + 1 - v->fbi.auxoffs) / 2; break; - default: /* reserved */ + default: /* reserved */ return 0xffffffff; } @@ -4173,11 +4173,11 @@ static READ8_DEVICE_HANDLER( banshee_vga_r ) /* Input status 0 */ case 0x3c2: /* - bit 7 = Interrupt Status. When its value is ?1?, denotes that an interrupt is pending. - bit 6:5 = Feature Connector. These 2 bits are readable bits from the feature connector. - bit 4 = Sense. This bit reflects the state of the DAC monitor sense logic. - bit 3:0 = Reserved. Read back as 0. - */ + bit 7 = Interrupt Status. When its value is ?1?, denotes that an interrupt is pending. + bit 6:5 = Feature Connector. These 2 bits are readable bits from the feature connector. + bit 4 = Sense. This bit reflects the state of the DAC monitor sense logic. + bit 3:0 = Reserved. Read back as 0. + */ result = 0x00; if (LOG_REGISTERS) logerror("%s:banshee_vga_r(%X)\n", device->machine().describe_context(), 0x300+offset); @@ -4225,14 +4225,14 @@ static READ8_DEVICE_HANDLER( banshee_vga_r ) /* Input status 1 */ case 0x3da: /* - bit 7:6 = Reserved. These bits read back 0. - bit 5:4 = Display Status. These 2 bits reflect 2 of the 8 pixel data outputs from the Attribute - controller, as determined by the Attribute controller index 0x12 bits 4 and 5. - bit 3 = Vertical sync Status. A ?1? indicates vertical retrace is in progress. - bit 2:1 = Reserved. These bits read back 0x2. - bit 0 = Display Disable. When this bit is 1, either horizontal or vertical display end has occurred, - otherwise video data is being displayed. - */ + bit 7:6 = Reserved. These bits read back 0. + bit 5:4 = Display Status. These 2 bits reflect 2 of the 8 pixel data outputs from the Attribute + controller, as determined by the Attribute controller index 0x12 bits 4 and 5. + bit 3 = Vertical sync Status. A ?1? indicates vertical retrace is in progress. + bit 2:1 = Reserved. These bits read back 0x2. + bit 0 = Display Disable. When this bit is 1, either horizontal or vertical display end has occurred, + otherwise video data is being displayed. + */ result = 0x04; if (LOG_REGISTERS) logerror("%s:banshee_vga_r(%X)\n", device->machine().describe_context(), 0x300+offset); @@ -4268,9 +4268,9 @@ READ32_DEVICE_HANDLER( banshee_io_r ) logerror("%s:banshee_dac_r(%X)\n", device->machine().describe_context(), v->banshee.io[io_dacAddr] & 0x1ff); break; - case io_vgab0: case io_vgab4: case io_vgab8: case io_vgabc: - case io_vgac0: case io_vgac4: case io_vgac8: case io_vgacc: - case io_vgad0: case io_vgad4: case io_vgad8: case io_vgadc: + case io_vgab0: case io_vgab4: case io_vgab8: case io_vgabc: + case io_vgac0: case io_vgac4: case io_vgac8: case io_vgacc: + case io_vgad0: case io_vgad4: case io_vgad8: case io_vgadc: result = 0; if (ACCESSING_BITS_0_7) result |= banshee_vga_r(device, space, offset*4+0, mem_mask >> 0) << 0; @@ -4303,12 +4303,12 @@ static void blit_2d(voodoo_state *v, UINT32 data) { switch (v->banshee.blt_cmd) { - case 0: // NOP - wait for idle + case 0: // NOP - wait for idle { break; } - case 1: // Screen-to-screen blit + case 1: // Screen-to-screen blit { // TODO #if LOG_BANSHEE_2D @@ -4317,12 +4317,12 @@ static void blit_2d(voodoo_state *v, UINT32 data) break; } - case 2: // Screen-to-screen stretch blit + case 2: // Screen-to-screen stretch blit { fatalerror(" blit_2d:screen_to_screen_stretch: src X %d, src Y %d\n", data & 0xfff, (data >> 16) & 0xfff); } - case 3: // Host-to-screen blit + case 3: // Host-to-screen blit { UINT32 addr = v->banshee.blt_dst_base; @@ -4368,22 +4368,22 @@ static void blit_2d(voodoo_state *v, UINT32 data) break; } - case 5: // Rectangle fill + case 5: // Rectangle fill { fatalerror("blit_2d:rectangle_fill: src X %d, src Y %d\n", data & 0xfff, (data >> 16) & 0xfff); } - case 6: // Line + case 6: // Line { fatalerror("blit_2d:line: end X %d, end Y %d\n", data & 0xfff, (data >> 16) & 0xfff); } - case 7: // Polyline + case 7: // Polyline { fatalerror("blit_2d:polyline: end X %d, end Y %d\n", data & 0xfff, (data >> 16) & 0xfff); } - case 8: // Polygon fill + case 8: // Polygon fill { fatalerror("blit_2d:polygon_fill\n"); } @@ -4404,12 +4404,12 @@ static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data) logerror(" 2D:command: cmd %d, ROP0 %02X\n", data & 0xf, data >> 24); #endif - v->banshee.blt_src_x = v->banshee.blt_regs[banshee2D_srcXY] & 0xfff; - v->banshee.blt_src_y = (v->banshee.blt_regs[banshee2D_srcXY] >> 16) & 0xfff; - v->banshee.blt_src_base = v->banshee.blt_regs[banshee2D_srcBaseAddr] & 0xffffff; - v->banshee.blt_src_stride = v->banshee.blt_regs[banshee2D_srcFormat] & 0x3fff; - v->banshee.blt_src_width = v->banshee.blt_regs[banshee2D_srcSize] & 0xfff; - v->banshee.blt_src_height = (v->banshee.blt_regs[banshee2D_srcSize] >> 16) & 0xfff; + v->banshee.blt_src_x = v->banshee.blt_regs[banshee2D_srcXY] & 0xfff; + v->banshee.blt_src_y = (v->banshee.blt_regs[banshee2D_srcXY] >> 16) & 0xfff; + v->banshee.blt_src_base = v->banshee.blt_regs[banshee2D_srcBaseAddr] & 0xffffff; + v->banshee.blt_src_stride = v->banshee.blt_regs[banshee2D_srcFormat] & 0x3fff; + v->banshee.blt_src_width = v->banshee.blt_regs[banshee2D_srcSize] & 0xfff; + v->banshee.blt_src_height = (v->banshee.blt_regs[banshee2D_srcSize] >> 16) & 0xfff; switch ((v->banshee.blt_regs[banshee2D_srcFormat] >> 16) & 0xf) { @@ -4422,12 +4422,12 @@ static INT32 banshee_2d_w(voodoo_state *v, offs_t offset, UINT32 data) default: v->banshee.blt_src_bpp = 1; break; } - v->banshee.blt_dst_x = v->banshee.blt_regs[banshee2D_dstXY] & 0xfff; - v->banshee.blt_dst_y = (v->banshee.blt_regs[banshee2D_dstXY] >> 16) & 0xfff; - v->banshee.blt_dst_base = v->banshee.blt_regs[banshee2D_dstBaseAddr] & 0xffffff; - v->banshee.blt_dst_stride = v->banshee.blt_regs[banshee2D_dstFormat] & 0x3fff; - v->banshee.blt_dst_width = v->banshee.blt_regs[banshee2D_dstSize] & 0xfff; - v->banshee.blt_dst_height = (v->banshee.blt_regs[banshee2D_dstSize] >> 16) & 0xfff; + v->banshee.blt_dst_x = v->banshee.blt_regs[banshee2D_dstXY] & 0xfff; + v->banshee.blt_dst_y = (v->banshee.blt_regs[banshee2D_dstXY] >> 16) & 0xfff; + v->banshee.blt_dst_base = v->banshee.blt_regs[banshee2D_dstBaseAddr] & 0xffffff; + v->banshee.blt_dst_stride = v->banshee.blt_regs[banshee2D_dstFormat] & 0x3fff; + v->banshee.blt_dst_width = v->banshee.blt_regs[banshee2D_dstSize] & 0xfff; + v->banshee.blt_dst_height = (v->banshee.blt_regs[banshee2D_dstSize] >> 16) & 0xfff; switch ((v->banshee.blt_regs[banshee2D_dstFormat] >> 16) & 0x7) { @@ -4851,9 +4851,9 @@ WRITE32_DEVICE_HANDLER( banshee_io_w ) logerror("%s:banshee_io_w(%s) = %08X & %08X\n", device->machine().describe_context(), banshee_io_reg_name[offset], data, mem_mask); break; - case io_vgab0: case io_vgab4: case io_vgab8: case io_vgabc: - case io_vgac0: case io_vgac4: case io_vgac8: case io_vgacc: - case io_vgad0: case io_vgad4: case io_vgad8: case io_vgadc: + case io_vgab0: case io_vgab4: case io_vgab8: case io_vgabc: + case io_vgac0: case io_vgac4: case io_vgac8: case io_vgacc: + case io_vgad0: case io_vgad4: case io_vgad8: case io_vgadc: if (ACCESSING_BITS_0_7) banshee_vga_w(device, space, offset*4+0, data >> 0, mem_mask >> 0); if (ACCESSING_BITS_8_15) @@ -5049,7 +5049,7 @@ static void common_start_voodoo(device_t *device, UINT8 type) v->banshee.io[io_sipMonitor] = 0x40000000; v->banshee.io[io_lfbMemoryConfig] = 0x000a2200; v->banshee.io[io_dramInit0] = 0x00579d29; - v->banshee.io[io_dramInit0] |= 0x08000000; // Konami Viper expects 16MBit SGRAMs + v->banshee.io[io_dramInit0] |= 0x08000000; // Konami Viper expects 16MBit SGRAMs v->banshee.io[io_dramInit1] = 0x00f02200; v->banshee.io[io_tmuGbeInit] = 0x00000bfb; @@ -5135,15 +5135,15 @@ static INT32 fastfill(voodoo_state *v) int destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(v->reg[fbzMode].u); switch (destbuf) { - case 0: /* front buffer */ + case 0: /* front buffer */ drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]); break; - case 1: /* back buffer */ + case 1: /* back buffer */ drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]); break; - default: /* reserved */ + default: /* reserved */ break; } @@ -5273,16 +5273,16 @@ static INT32 triangle(voodoo_state *v) destbuf = (v->type >= TYPE_VOODOO_BANSHEE) ? 1 : FBZMODE_DRAW_BUFFER(v->reg[fbzMode].u); switch (destbuf) { - case 0: /* front buffer */ + case 0: /* front buffer */ drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.frontbuf]); v->fbi.video_changed = TRUE; break; - case 1: /* back buffer */ + case 1: /* back buffer */ drawbuf = (UINT16 *)(v->fbi.ram + v->fbi.rgboffs[v->fbi.backbuf]); break; - default: /* reserved */ + default: /* reserved */ return TRIANGLE_SETUP_CLOCKS; } @@ -5400,7 +5400,7 @@ static INT32 setup_and_draw_triangle(voodoo_state *v) /* compute the divisor */ divisor = 1.0f / ((v->fbi.svert[0].x - v->fbi.svert[1].x) * (v->fbi.svert[0].y - v->fbi.svert[2].y) - - (v->fbi.svert[0].x - v->fbi.svert[2].x) * (v->fbi.svert[0].y - v->fbi.svert[1].y)); + (v->fbi.svert[0].x - v->fbi.svert[2].x) * (v->fbi.svert[0].y - v->fbi.svert[1].y)); /* backface culling */ if (v->reg[sSetupMode].u & 0x20000) |