summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/3dom2_te.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/3dom2_te.cpp')
-rw-r--r--src/mame/machine/3dom2_te.cpp810
1 files changed, 405 insertions, 405 deletions
diff --git a/src/mame/machine/3dom2_te.cpp b/src/mame/machine/3dom2_te.cpp
index 55e430b877e..9757e966da4 100644
--- a/src/mame/machine/3dom2_te.cpp
+++ b/src/mame/machine/3dom2_te.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Philip Bennett
/***************************************************************************
- 3DO M2 BDA Triangle Engine
+ 3DO M2 BDA Triangle Engine
***************************************************************************/
@@ -10,19 +10,19 @@
#include "3dom2.h"
/*
- TODO:
+ TODO:
- VTX_FLAGS do not get passed to the TMAPPER: Should use master control
- bits to disable shading and texturing.
+ VTX_FLAGS do not get passed to the TMAPPER: Should use master control
+ bits to disable shading and texturing.
- - Evil Night attract mode sky is missing. Why?
- - What is 1/w when 0?
- - What do we do about RL flat-topped triangles?
- - Heat of 11 color check has dodgy pixels <- HAS IT?
+ - Evil Night attract mode sky is missing. Why?
+ - What is 1/w when 0?
+ - What do we do about RL flat-topped triangles?
+ - Heat of 11 color check has dodgy pixels <- HAS IT?
- Polystar blending is incorrect (intro)
*/
-#define TEST_TIMING 1
+#define TEST_TIMING 1
#if TEST_TIMING
enum
@@ -51,20 +51,20 @@ DEFINE_DEVICE_TYPE(M2_TE, m2_te_device, "m2te", "BDA Triangle Engine")
-//static const uint32_t fixed_bits = 23;
+//static const uint32_t fixed_bits = 23;
-static const uint32_t xy_bits = 11;
-static const uint32_t color_bits = 8;
-static const uint32_t text_bits[] = { 10, 7, 4, 1 };
-static const int32_t depth_bits[] = { 0, -3, -6, -9 };
+static const uint32_t xy_bits = 11;
+static const uint32_t color_bits = 8;
+static const uint32_t text_bits[] = { 10, 7, 4, 1 };
+static const int32_t depth_bits[] = { 0, -3, -6, -9 };
// For right-aligning
-static const uint32_t xy_rshift = 12;
-static const uint32_t color_rshift = 4;
+static const uint32_t xy_rshift = 12;
+static const uint32_t color_rshift = 4;
// 11.0 format
-static const uint32_t xy_one = 1;
+static const uint32_t xy_one = 1;
/***************************************************************************
@@ -79,40 +79,40 @@ static const uint32_t xy_one = 1;
//-------------------------------------------------
// Triangle Engine Master Mode
-#define TEMASTER_MODE_RESET 0x00000001
-#define TEMASTER_MODE_DTEXT 0x00000002
-#define TEMASTER_MODE_DSHADE 0x00000004
-#define TEMASTER_MODE_DBLEND 0x00000008
-#define TEMASTER_MODE_DZBUF 0x00000010
-#define TEMASTER_MODE_DDITH 0x00000020
+#define TEMASTER_MODE_RESET 0x00000001
+#define TEMASTER_MODE_DTEXT 0x00000002
+#define TEMASTER_MODE_DSHADE 0x00000004
+#define TEMASTER_MODE_DBLEND 0x00000008
+#define TEMASTER_MODE_DZBUF 0x00000010
+#define TEMASTER_MODE_DDITH 0x00000020
// Triangle Engine Immediate Control
-#define TEICNTL_INT 0x00000001
-#define TEICNTL_STEP 0x00000002
-#define TEICNTL_STPL 0x00000004
-#define TEICNTL_STPI 0x00000008
-#define TEICNTL_RSTRT 0x00000010
-#define TEICNTL_STRT 0x00000020
-
-#define TEDCNTL_TLD 0x00000001
-#define TEDCNTL_JA 0x00000002
-#define TEDCNTL_JR 0x00000004
-#define TEDCNTL_INT 0x00000008
-#define TEDCNTL_PSE 0x00000010
-#define TEDCNTL_SYNC 0x00000020
-
-#define INTSTAT_DEFERRED_INSTR 0x00000100
-#define INTSTAT_IMMEDIATE_INSTR 0x00000200
-#define INTSTAT_LIST_END 0x00000400
-#define INTSTAT_WINDOW_CLIP 0x00000800
-#define INTSTAT_SPECIAL_INSTR 0x00001000
-#define INTSTAT_UNIMPLEMENTED_INSTR 0x00002000
-#define INTSTAT_SUPERVISOR 0x00004000
-#define INTSTAT_ANY_RENDER 0x00008000
-#define INTSTAT_Z_FUNC 0x00010000
-#define INTSTAT_ALU_STATUS 0x00020000
-#define INTSTAT_FB_CLIP 0x00040000
-#define INTSTAT_IMMEDIATE 0x00080000
+#define TEICNTL_INT 0x00000001
+#define TEICNTL_STEP 0x00000002
+#define TEICNTL_STPL 0x00000004
+#define TEICNTL_STPI 0x00000008
+#define TEICNTL_RSTRT 0x00000010
+#define TEICNTL_STRT 0x00000020
+
+#define TEDCNTL_TLD 0x00000001
+#define TEDCNTL_JA 0x00000002
+#define TEDCNTL_JR 0x00000004
+#define TEDCNTL_INT 0x00000008
+#define TEDCNTL_PSE 0x00000010
+#define TEDCNTL_SYNC 0x00000020
+
+#define INTSTAT_DEFERRED_INSTR 0x00000100
+#define INTSTAT_IMMEDIATE_INSTR 0x00000200
+#define INTSTAT_LIST_END 0x00000400
+#define INTSTAT_WINDOW_CLIP 0x00000800
+#define INTSTAT_SPECIAL_INSTR 0x00001000
+#define INTSTAT_UNIMPLEMENTED_INSTR 0x00002000
+#define INTSTAT_SUPERVISOR 0x00004000
+#define INTSTAT_ANY_RENDER 0x00008000
+#define INTSTAT_Z_FUNC 0x00010000
+#define INTSTAT_ALU_STATUS 0x00020000
+#define INTSTAT_FB_CLIP 0x00040000
+#define INTSTAT_IMMEDIATE 0x00080000
// IWP
// IRP
@@ -127,16 +127,16 @@ static const uint32_t xy_one = 1;
//-------------------------------------------------
// Vertex State
-#define VERTEXSTATE_TSORT_MASK 0x00000007
-#define VERTEXSTATE_TSORT_OMN 0x00000001
-#define VERTEXSTATE_TSORT_MNO 0x00000002
-#define VERTEXSTATE_TSORT_ONM 0x00000003
-#define VERTEXSTATE_TSORT_NOM 0x00000004
-#define VERTEXSTATE_TSORT_MON 0x00000005
-#define VERTEXSTATE_TSORT_NMO 0x00000006
+#define VERTEXSTATE_TSORT_MASK 0x00000007
+#define VERTEXSTATE_TSORT_OMN 0x00000001
+#define VERTEXSTATE_TSORT_MNO 0x00000002
+#define VERTEXSTATE_TSORT_ONM 0x00000003
+#define VERTEXSTATE_TSORT_NOM 0x00000004
+#define VERTEXSTATE_TSORT_MON 0x00000005
+#define VERTEXSTATE_TSORT_NMO 0x00000006
-#define VERTEXSTATE_VCNT_SHIFT 3
-#define VERTEXSTATE_VCNT_MASK 0x00000018
+#define VERTEXSTATE_VCNT_SHIFT 3
+#define VERTEXSTATE_VCNT_MASK 0x00000018
//-------------------------------------------------
@@ -144,9 +144,9 @@ static const uint32_t xy_one = 1;
//-------------------------------------------------
// Edge and Span Walker Control
-#define ESCNTL_DSPOFF 0x00000001
-#define ESCNTL_DUSCAN 0x00000002
-#define ESCNTL_PERSPECTIVEOFF 0x00000004
+#define ESCNTL_DSPOFF 0x00000001
+#define ESCNTL_DUSCAN 0x00000002
+#define ESCNTL_PERSPECTIVEOFF 0x00000004
//-------------------------------------------------
@@ -154,148 +154,148 @@ static const uint32_t xy_one = 1;
//-------------------------------------------------
// Texture Mapper Master Control (0x00046400)
-#define TXTCNTL_MMDMA_TRAM_ON 0x00000004
-#define TXTCNTL_MMDMA_PIP_ON 0x00000008
-#define TXTCNTL_SNOOP_ON 0x00000020
+#define TXTCNTL_MMDMA_TRAM_ON 0x00000004
+#define TXTCNTL_MMDMA_PIP_ON 0x00000008
+#define TXTCNTL_SNOOP_ON 0x00000020
// Texture Load Control (0x00046404)
-#define TXTLDCNTL_SRCBITOFFS 0x00000007
-#define TXTLDCNTL_LDMODE_MASK 0x00000300
-#define TXTLDCNTL_LDMODE_TEXLOAD 0x00000000
-#define TXTLDCNTL_LDMODE_MMDMA 0x00000100
-#define TXTLDCNTL_LDMODE_PIPLOAD 0x00000200
-#define TXTLDCNTL_LDMODE_RESERVED 0x00000300
-#define TXTLDCNTL_COMPRESSED 0x00000400
+#define TXTLDCNTL_SRCBITOFFS 0x00000007
+#define TXTLDCNTL_LDMODE_MASK 0x00000300
+#define TXTLDCNTL_LDMODE_TEXLOAD 0x00000000
+#define TXTLDCNTL_LDMODE_MMDMA 0x00000100
+#define TXTLDCNTL_LDMODE_PIPLOAD 0x00000200
+#define TXTLDCNTL_LDMODE_RESERVED 0x00000300
+#define TXTLDCNTL_COMPRESSED 0x00000400
// Address Control (0x00046408)
-#define TXTADDRCNTL_LODMAX_MASK 0x0000000f
-#define TXTADDRCNTL_FILTERSEL_MASK 0x00000003
-#define TXTADDRCNTL_FILTERSEL_POINT 0x00000000
-#define TXTADDRCNTL_FILTERSEL_LINEAR 0x00000001
-#define TXTADDRCNTL_FILTERSEL_BILINEAR 0x00000002
-#define TXTADDRCNTL_FILTERSEL_QUASITRI 0x00000003
-#define TXTADDRCNTL_R12FILTERSEL_SHIFT 4
-#define TXTADDRCNTL_R3FILTERSEL_SHIFT 7
-#define TXTADDRCNTL_R45FILTERSEL_SHIFT 10
-#define TXTADDRCNTL_LOOKUP_EN 0x00002000
+#define TXTADDRCNTL_LODMAX_MASK 0x0000000f
+#define TXTADDRCNTL_FILTERSEL_MASK 0x00000003
+#define TXTADDRCNTL_FILTERSEL_POINT 0x00000000
+#define TXTADDRCNTL_FILTERSEL_LINEAR 0x00000001
+#define TXTADDRCNTL_FILTERSEL_BILINEAR 0x00000002
+#define TXTADDRCNTL_FILTERSEL_QUASITRI 0x00000003
+#define TXTADDRCNTL_R12FILTERSEL_SHIFT 4
+#define TXTADDRCNTL_R3FILTERSEL_SHIFT 7
+#define TXTADDRCNTL_R45FILTERSEL_SHIFT 10
+#define TXTADDRCNTL_LOOKUP_EN 0x00002000
// PIP Control (0x0004640C)
-#define TXTPIPCNTL_INDEX_OFFSET 0x000000ff
-#define TXTPIPCNTL_COLORSEL_MASK 0x00000700
-#define TXTPIPCNTL_COLORSEL_SHIFT 8
-#define TXTPIPCNTL_ALPHASEL_MASK 0x00003800
-#define TXTPIPCNTL_ALPHASEL_SHIFT 11
-#define TXTPIPCNTL_SSBSEL_MASK 0x0001c000
-#define TXTPIPCNTL_SSBSEL_SHIFT 14
-
-#define TXTPIPCNTL_SEL_CONSTANT 0
-#define TXTPIPCNTL_SEL_TRAM 1
-#define TXTPIPCNTL_SEL_PIP 2
+#define TXTPIPCNTL_INDEX_OFFSET 0x000000ff
+#define TXTPIPCNTL_COLORSEL_MASK 0x00000700
+#define TXTPIPCNTL_COLORSEL_SHIFT 8
+#define TXTPIPCNTL_ALPHASEL_MASK 0x00003800
+#define TXTPIPCNTL_ALPHASEL_SHIFT 11
+#define TXTPIPCNTL_SSBSEL_MASK 0x0001c000
+#define TXTPIPCNTL_SSBSEL_SHIFT 14
+
+#define TXTPIPCNTL_SEL_CONSTANT 0
+#define TXTPIPCNTL_SEL_TRAM 1
+#define TXTPIPCNTL_SEL_PIP 2
// Texture Application Control (0x00046410)
-#define TXTTABCNTL_C_ASEL_MASK 0x00000007
-#define TXTTABCNTL_C_ASEL_SHIFT 0
-#define TXTTABCNTL_C_BSEL_MASK 0x00000038
-#define TXTTABCNTL_C_BSEL_SHIFT 3
-#define TXTTABCNTL_C_TSEL_MASK 0x000001c0
-#define TXTTABCNTL_C_TSEL_SHIFT 6
-
-#define TXTTABCNTL_C_ABTSEL_AITER 0
-#define TXTTABCNTL_C_ABTSEL_CITER 1
-#define TXTTABCNTL_C_ABTSEL_AT 2
-#define TXTTABCNTL_C_ABTSEL_CT 3
-#define TXTTABCNTL_C_ABTSEL_ACONST 4
-#define TXTTABCNTL_C_ABTSEL_CCONST 5
-
-#define TXTTABCNTL_C_OSEL_MASK 0x00000600
-#define TXTTABCNTL_C_OSEL_SHIFT 9
-
-#define TXTTABCNTL_CO_SEL_CITER 0
-#define TXTTABCNTL_CO_SEL_CT 1
-#define TXTTABCNTL_CO_SEL_BLEND 2
-#define TXTTABCNTL_CO_SEL_RESERVED 3
-
-#define TXTTABCNTL_A_ASEL_MASK 0x00001800
-#define TXTTABCNTL_A_ASEL_SHIFT 11
-#define TXTTABCNTL_A_BSEL_MASK 0x00006000
-#define TXTTABCNTL_A_BSEL_SHIFT 13
-
-#define TXTTABCNTL_A_ABSEL_AITER 0
-#define TXTTABCNTL_A_ABSEL_AT 1
-#define TXTTABCNTL_A_ABSEL_ACONST 2
-
-#define TXTTABCNTL_A_OSEL_MASK 0x00018000
-#define TXTTABCNTL_A_OSEL_SHIFT 15
-
-#define TXTTABCNTL_AO_SEL_AITER 0
-#define TXTTABCNTL_AO_SEL_AT 1
-#define TXTTABCNTL_AO_SEL_BLEND 2
-#define TXTTABCNTL_AO_SEL_RESERVED 3
-
-#define TXTTABCNTL_BLENDOP_MASK 0x00010000
-#define TXTTABCNTL_BLENDOP_SHIFT 16
-#define TXTTABCNTL_BLENDOP_LERP 0
-#define TXTTABCNTL_BLENDOP_MULT 1
+#define TXTTABCNTL_C_ASEL_MASK 0x00000007
+#define TXTTABCNTL_C_ASEL_SHIFT 0
+#define TXTTABCNTL_C_BSEL_MASK 0x00000038
+#define TXTTABCNTL_C_BSEL_SHIFT 3
+#define TXTTABCNTL_C_TSEL_MASK 0x000001c0
+#define TXTTABCNTL_C_TSEL_SHIFT 6
+
+#define TXTTABCNTL_C_ABTSEL_AITER 0
+#define TXTTABCNTL_C_ABTSEL_CITER 1
+#define TXTTABCNTL_C_ABTSEL_AT 2
+#define TXTTABCNTL_C_ABTSEL_CT 3
+#define TXTTABCNTL_C_ABTSEL_ACONST 4
+#define TXTTABCNTL_C_ABTSEL_CCONST 5
+
+#define TXTTABCNTL_C_OSEL_MASK 0x00000600
+#define TXTTABCNTL_C_OSEL_SHIFT 9
+
+#define TXTTABCNTL_CO_SEL_CITER 0
+#define TXTTABCNTL_CO_SEL_CT 1
+#define TXTTABCNTL_CO_SEL_BLEND 2
+#define TXTTABCNTL_CO_SEL_RESERVED 3
+
+#define TXTTABCNTL_A_ASEL_MASK 0x00001800
+#define TXTTABCNTL_A_ASEL_SHIFT 11
+#define TXTTABCNTL_A_BSEL_MASK 0x00006000
+#define TXTTABCNTL_A_BSEL_SHIFT 13
+
+#define TXTTABCNTL_A_ABSEL_AITER 0
+#define TXTTABCNTL_A_ABSEL_AT 1
+#define TXTTABCNTL_A_ABSEL_ACONST 2
+
+#define TXTTABCNTL_A_OSEL_MASK 0x00018000
+#define TXTTABCNTL_A_OSEL_SHIFT 15
+
+#define TXTTABCNTL_AO_SEL_AITER 0
+#define TXTTABCNTL_AO_SEL_AT 1
+#define TXTTABCNTL_AO_SEL_BLEND 2
+#define TXTTABCNTL_AO_SEL_RESERVED 3
+
+#define TXTTABCNTL_BLENDOP_MASK 0x00010000
+#define TXTTABCNTL_BLENDOP_SHIFT 16
+#define TXTTABCNTL_BLENDOP_LERP 0
+#define TXTTABCNTL_BLENDOP_MULT 1
// TAB Constants
-#define TXTTABCONST_BLUE 0x000000ff
-#define TXTTABCONST_BLUE_SHIFT 0
-#define TXTTABCONST_GREEN 0x0000ff00
-#define TXTTABCONST_GREEN_SHIFT 8
-#define TXTTABCONST_RED 0x00ff0000
-#define TXTTABCONST_RED_SHIFT 16
-#define TXTTABCONST_ALPHA 0x7f000000
-#define TXTTABCONST_ALPHA_SHIFT 24
-#define TXTTABCONST_SSB 0x80000000
+#define TXTTABCONST_BLUE 0x000000ff
+#define TXTTABCONST_BLUE_SHIFT 0
+#define TXTTABCONST_GREEN 0x0000ff00
+#define TXTTABCONST_GREEN_SHIFT 8
+#define TXTTABCONST_RED 0x00ff0000
+#define TXTTABCONST_RED_SHIFT 16
+#define TXTTABCONST_ALPHA 0x7f000000
+#define TXTTABCONST_ALPHA_SHIFT 24
+#define TXTTABCONST_SSB 0x80000000
// Texture Loader Destination Base (0x00046414)
-#define TXTLDDSTBASE_ADDR 0x00003ffc
+#define TXTLDDSTBASE_ADDR 0x00003ffc
// Texture Lod Base 0 (0x00046414)
// Texture Lod Base 1 (0x00046418)
// Texture Lod Base 2 (0x0004641C)
// Texture Lod Base 3 (0x00046420)
-#define TXTLODBASE_MASK 0x00003ffc
+#define TXTLODBASE_MASK 0x00003ffc
// Texture Loader Source Base (0x00046424)
-#define TXTLDSRCBASE_ADDR 0x00003fff
+#define TXTLDSRCBASE_ADDR 0x00003fff
// Texture Loader Counts (0x00046428)
-#define TXTLDBYTECNT_COUNT 0x0fffffff
-#define TXTLDROWCNT_COUNT 0x0fffffff
-#define TXTLDTEXCNT_COUNT 0x0fffffff
+#define TXTLDBYTECNT_COUNT 0x0fffffff
+#define TXTLDROWCNT_COUNT 0x0fffffff
+#define TXTLDTEXCNT_COUNT 0x0fffffff
// Texture Loader Width (0x00046428)
-#define TxTLDWIDTH_SRCROW 0x0000ffff
-#define TxTLDWIDTH_DSTROW_SHIFT 16
-#define TxTLDWIDTH_DSTROW 0xffff0000
+#define TxTLDWIDTH_SRCROW 0x0000ffff
+#define TxTLDWIDTH_DSTROW_SHIFT 16
+#define TxTLDWIDTH_DSTROW 0xffff0000
// Texture Size (0x0004642C)
-#define TXTUVMAX_VMAX_MASK 0x000003ff
-#define TXTUVMAX_VMAX_SHIFT 0
-#define TXTUVMAX_UMAX_MASK 0x03ff0000
-#define TXTUVMAX_UMAX_SHIFT 16
+#define TXTUVMAX_VMAX_MASK 0x000003ff
+#define TXTUVMAX_VMAX_SHIFT 0
+#define TXTUVMAX_UMAX_MASK 0x03ff0000
+#define TXTUVMAX_UMAX_SHIFT 16
// Texture Mask (0x00046430)
-#define TXTUVMASK_VMASK_MASK 0x000003ff
-#define TXTUVMASK_VMASK_SHIFT 0
-#define TXTUVMASK_UMASK_MASK 0x03ff0000
-#define TXTUVMASK_UMASK_SHIFT 16
+#define TXTUVMASK_VMASK_MASK 0x000003ff
+#define TXTUVMASK_VMASK_SHIFT 0
+#define TXTUVMASK_UMASK_MASK 0x03ff0000
+#define TXTUVMASK_UMASK_SHIFT 16
// TRAM Format (0x0004643C)
// TODO: Expansion formats
-#define TXTEXPFORM_CDEPTH_MASK 0x0000000f
-#define TXTEXPFORM_CDEPTH_SHIFT 0
-#define TXTEXPFORM_IDEPTH_MASK 0x0000000f
-#define TXTEXPFORM_IDEPTH_SHIFT 0
-#define TXTEXPFORM_ADEPTH_MASK 0x000000f0
-#define TXTEXPFORM_ADEPTH_SHIFT 4
-#define TXTEXPFORM_TRANSPARENT 0x00000100
-#define TXTEXPFORM_SSBON 0x00000200
-#define TXTEXPFORM_COLORON 0x00000400
-#define TXTEXPFORM_INDEXON 0x00000400
-#define TXTEXPFORM_ALPHAON 0x00000800
-#define TXTEXPFORM_LITERAL 0x00001000
+#define TXTEXPFORM_CDEPTH_MASK 0x0000000f
+#define TXTEXPFORM_CDEPTH_SHIFT 0
+#define TXTEXPFORM_IDEPTH_MASK 0x0000000f
+#define TXTEXPFORM_IDEPTH_SHIFT 0
+#define TXTEXPFORM_ADEPTH_MASK 0x000000f0
+#define TXTEXPFORM_ADEPTH_SHIFT 4
+#define TXTEXPFORM_TRANSPARENT 0x00000100
+#define TXTEXPFORM_SSBON 0x00000200
+#define TXTEXPFORM_COLORON 0x00000400
+#define TXTEXPFORM_INDEXON 0x00000400
+#define TXTEXPFORM_ALPHAON 0x00000800
+#define TXTEXPFORM_LITERAL 0x00001000
// Format Registers
@@ -306,204 +306,204 @@ static const uint32_t xy_one = 1;
//-------------------------------------------------
// Snoop (0x0048000)
-#define DBSNOOP_DESTWRSNOOP 0x00000001
-#define DBSNOOP_SRCRDSNOOP 0x00000002
-#define DBSNOOP_ZWRSNOOP 0x00000004
-#define DBSNOOP_ZRDSNOOP 0x00000008
+#define DBSNOOP_DESTWRSNOOP 0x00000001
+#define DBSNOOP_SRCRDSNOOP 0x00000002
+#define DBSNOOP_ZWRSNOOP 0x00000004
+#define DBSNOOP_ZRDSNOOP 0x00000008
// Supervisor General Control (0x0048004)
-#define DBSUPERGENCTL_DESTOUTEN 0x00000001
-#define DBSUPERGENCTL_DESTWR16BEN 0x00000002
-#define DBSUPERGENCTL_ZWR16BEN 0x00000004
+#define DBSUPERGENCTL_DESTOUTEN 0x00000001
+#define DBSUPERGENCTL_DESTWR16BEN 0x00000002
+#define DBSUPERGENCTL_ZWR16BEN 0x00000004
// User General Control (0x0048008)
-#define DBUSERGENCTL_DESTOUT_MASK 0x0000000f
-#define DBUSERGENCTL_DITHEREN 0x00000010
-#define DBUSERGENCTL_SRCINEN 0x00000020
-#define DBUSERGENCTL_BLENDEN 0x00000040
-#define DBUSERGENCTL_WCLIPOUTEN 0x00000080
-#define DBUSERGENCTL_WCLIPINEN 0x00000100
-#define DBUSERGENCTL_ZOUTEN 0x00000200
-#define DBUSERGENCTL_ZBUFEN 0x00000400
+#define DBUSERGENCTL_DESTOUT_MASK 0x0000000f
+#define DBUSERGENCTL_DITHEREN 0x00000010
+#define DBUSERGENCTL_SRCINEN 0x00000020
+#define DBUSERGENCTL_BLENDEN 0x00000040
+#define DBUSERGENCTL_WCLIPOUTEN 0x00000080
+#define DBUSERGENCTL_WCLIPINEN 0x00000100
+#define DBUSERGENCTL_ZOUTEN 0x00000200
+#define DBUSERGENCTL_ZBUFEN 0x00000400
// Discard Control (0x004800C)
-#define DBDISCARDCTL_ADISEN 0x00000001
-#define DBDISCARDCTL_RGBDISEN 0x00000002
-#define DBDISCARDCTL_SSBDISEN 0x00000004
-#define DBDISCARDCTL_ZCLIPDISEN 0x00000008
+#define DBDISCARDCTL_ADISEN 0x00000001
+#define DBDISCARDCTL_RGBDISEN 0x00000002
+#define DBDISCARDCTL_SSBDISEN 0x00000004
+#define DBDISCARDCTL_ZCLIPDISEN 0x00000008
// Status (0x0048010)
-#define DBSTATUS_ANYREND 0x00000001
-#define DBSTATUS_ZFUNC_GT 0x00000002
-#define DBSTATUS_ZFUNC_EQ 0x00000004
-#define DBSTATUS_ZFUNC_LT 0x00000008
-#define DBSTATUS_ALUSTAT_BLUE_GT 0x00000010
-#define DBSTATUS_ALUSTAT_BLUE_EQ 0x00000020
-#define DBSTATUS_ALUSTAT_BLUE_LT 0x00000040
-#define DBSTATUS_ALUSTAT_GREEN_GT 0x00000080
-#define DBSTATUS_ALUSTAT_GREEN_EQ 0x00000100
-#define DBSTATUS_ALUSTAT_GREEN_LT 0x00000200
-#define DBSTATUS_ALUSTAT_RED_GT 0x00000400
-#define DBSTATUS_ALUSTAT_RED_EQ 0x00000800
-#define DBSTATUS_ALUSTAT_RED_LT 0x00001000
-#define DBSTATUS_ZCLIP 0x00002000
-#define DBSTATUS_WINCLIP 0x00004000
-#define DBSTATUS_FBCLIP 0x00008000
+#define DBSTATUS_ANYREND 0x00000001
+#define DBSTATUS_ZFUNC_GT 0x00000002
+#define DBSTATUS_ZFUNC_EQ 0x00000004
+#define DBSTATUS_ZFUNC_LT 0x00000008
+#define DBSTATUS_ALUSTAT_BLUE_GT 0x00000010
+#define DBSTATUS_ALUSTAT_BLUE_EQ 0x00000020
+#define DBSTATUS_ALUSTAT_BLUE_LT 0x00000040
+#define DBSTATUS_ALUSTAT_GREEN_GT 0x00000080
+#define DBSTATUS_ALUSTAT_GREEN_EQ 0x00000100
+#define DBSTATUS_ALUSTAT_GREEN_LT 0x00000200
+#define DBSTATUS_ALUSTAT_RED_GT 0x00000400
+#define DBSTATUS_ALUSTAT_RED_EQ 0x00000800
+#define DBSTATUS_ALUSTAT_RED_LT 0x00001000
+#define DBSTATUS_ZCLIP 0x00002000
+#define DBSTATUS_WINCLIP 0x00004000
+#define DBSTATUS_FBCLIP 0x00008000
// Interrupt Control (0x00048014)
-#define DBINTCNTL_ZFUNCSTATINTEN_MASK 0x00000003
-#define DBINTCNTL_ZFUNCSTATINTEN_MASK 0x00000003
+#define DBINTCNTL_ZFUNCSTATINTEN_MASK 0x00000003
+#define DBINTCNTL_ZFUNCSTATINTEN_MASK 0x00000003
// Framebuffer XY Clip Control (0x00048018)
-#define DBFBCLIP_YFBCLIP_MASK 0x000007ff
-#define DBFBCLIP_YFBCLIP_SHIFT 0
-#define DBFBCLIP_XFBCLIP_MASK 0x07ff0000
-#define DBFBCLIP_XFBCLIP_SHIFT 16
+#define DBFBCLIP_YFBCLIP_MASK 0x000007ff
+#define DBFBCLIP_YFBCLIP_SHIFT 0
+#define DBFBCLIP_XFBCLIP_MASK 0x07ff0000
+#define DBFBCLIP_XFBCLIP_SHIFT 16
// Window X Clip Control (0x0004801C)
-#define DBFBXWINCLIP_XMAX_MASK 0x000007ff
-#define DBFBXWINCLIP_XMAX_SHIFT 0
-#define DBFBXWINCLIP_XMIN_MASK 0x07ff0000
-#define DBFBXWINCLIP_XMIN_SHIFT 16
+#define DBFBXWINCLIP_XMAX_MASK 0x000007ff
+#define DBFBXWINCLIP_XMAX_SHIFT 0
+#define DBFBXWINCLIP_XMIN_MASK 0x07ff0000
+#define DBFBXWINCLIP_XMIN_SHIFT 16
// Window Y Clip Control (0x00048020)
-#define DBFBYWINCLIP_YMAX_MASK 0x000007ff
-#define DBFBYWINCLIP_YMAX_SHIFT 0
-#define DBFBYWINCLIP_YMIN_MASK 0x07ff0000
-#define DBFBYWINCLIP_YMIN_SHIFT 16
+#define DBFBYWINCLIP_YMAX_MASK 0x000007ff
+#define DBFBYWINCLIP_YMAX_SHIFT 0
+#define DBFBYWINCLIP_YMIN_MASK 0x07ff0000
+#define DBFBYWINCLIP_YMIN_SHIFT 16
// Destination Write Control (0x0048024)
-#define DBDESTCNTL_32BPP 0x00000001
+#define DBDESTCNTL_32BPP 0x00000001
// Destination Write Base Address (0x0048028)
// Destination X Stride (0x004802C)
-#define DBDEST_XSTRIDE 0x000007ff
+#define DBDEST_XSTRIDE 0x000007ff
// Source Read Control (0x00048030)
-#define DBSRCCNTL_32BPP 0x00000001
-#define DBSRCCNTL_MSBREP 0x00000002
+#define DBSRCCNTL_32BPP 0x00000001
+#define DBSRCCNTL_MSBREP 0x00000002
// Source Read Base Address (0x00048034)
// Source X Stride (0x00048038)
-#define DBSRCXSTRIDE 0x000007ff
+#define DBSRCXSTRIDE 0x000007ff
// Source XY Offset (0x0004803C)
-#define DBSRCOFFS_YOFFS_MASK 0x00000fff
-#define DBSRCOFFS_YOFFS_SHIFT 0
-#define DBSRCOFFS_XOFFS_MASK 0x0fff0000
-#define DBSRCOFFS_XOFFS_SHIFT 16
+#define DBSRCOFFS_YOFFS_MASK 0x00000fff
+#define DBSRCOFFS_YOFFS_SHIFT 0
+#define DBSRCOFFS_XOFFS_MASK 0x0fff0000
+#define DBSRCOFFS_XOFFS_SHIFT 16
// Z Buffer Control (0x00048040)
-#define DBZCNTL_ZFUNCCNTL_MASK 0x0000003f
-#define DBZCNTL_ZPIXOUT_LT 0x00000001
-#define DBZCNTL_ZBUFOUT_LT 0x00000002
-#define DBZCNTL_ZPIXOUT_EQ 0x00000004
-#define DBZCNTL_ZBUFOUT_EQ 0x00000008
-#define DBZCNTL_ZPIXOUT_GT 0x00000010
-#define DBZCNTL_ZBUFOUT_GT 0x00000020
+#define DBZCNTL_ZFUNCCNTL_MASK 0x0000003f
+#define DBZCNTL_ZPIXOUT_LT 0x00000001
+#define DBZCNTL_ZBUFOUT_LT 0x00000002
+#define DBZCNTL_ZPIXOUT_EQ 0x00000004
+#define DBZCNTL_ZBUFOUT_EQ 0x00000008
+#define DBZCNTL_ZPIXOUT_GT 0x00000010
+#define DBZCNTL_ZBUFOUT_GT 0x00000020
// Z Buffer Base Address (0x00048044)
-#define DBZBASEADDR_MASK 0x00ffffff
+#define DBZBASEADDR_MASK 0x00ffffff
// Z Buffer XY Offset (0x00048048)
-#define DBZOFFS_YOFFS_MASK 0x00000fff
-#define DBZOFFS_YOFFS_SHIFT 0
-#define DBZOFFS_XOFFS_MASK 0x0fff0000
-#define DBZOFFS_XOFFS_SHIFT 16
+#define DBZOFFS_YOFFS_MASK 0x00000fff
+#define DBZOFFS_YOFFS_SHIFT 0
+#define DBZOFFS_XOFFS_MASK 0x0fff0000
+#define DBZOFFS_XOFFS_SHIFT 16
// Z Buffer Clip (0x0004804C)
-#define DBZCLIP_YCLIP_MASK 0x000007ff
-#define DBZCLIP_YCLIP_SHIFT 0
-#define DBZCLIP_XCLIP_MASK 0x07ff0000
-#define DBZCLIP_XCLIP_SHIFT 16
+#define DBZCLIP_YCLIP_MASK 0x000007ff
+#define DBZCLIP_YCLIP_SHIFT 0
+#define DBZCLIP_XCLIP_MASK 0x07ff0000
+#define DBZCLIP_XCLIP_SHIFT 16
// SSB/DSB Control (0x00048050)
-#define DBSSBDSBCNTL_DSBSELECT_MASK 0x00000007
-#define DBSSBDSBCNTL_DSBSELECT_SHIFT 0
-#define DBSSBDSBCNTL_DSBSELECT_SSB 0
-#define DBSSBDSBCNTL_DSBSELECT_CONSTANT 1
-#define DBSSBDSBCNTL_DSBSELECT_SRC 2
+#define DBSSBDSBCNTL_DSBSELECT_MASK 0x00000007
+#define DBSSBDSBCNTL_DSBSELECT_SHIFT 0
+#define DBSSBDSBCNTL_DSBSELECT_SSB 0
+#define DBSSBDSBCNTL_DSBSELECT_CONSTANT 1
+#define DBSSBDSBCNTL_DSBSELECT_SRC 2
-#define DBSSBDSBCNTL_DSBCONST 0x00000004
+#define DBSSBDSBCNTL_DSBCONST 0x00000004
// RGB constants (0x00048054)
-#define DBCONSTIN_B_MASK 0x000000ff
-#define DBCONSTIN_B_SHIFT 0
-#define DBCONSTIN_G_MASK 0x0000ff00
-#define DBCONSTIN_G_SHIFT 8
-#define DBCONSTIN_R_MASK 0x00ff0000
-#define DBCONSTIN_R_SHIFT 16
+#define DBCONSTIN_B_MASK 0x000000ff
+#define DBCONSTIN_B_SHIFT 0
+#define DBCONSTIN_G_MASK 0x0000ff00
+#define DBCONSTIN_G_SHIFT 8
+#define DBCONSTIN_R_MASK 0x00ff0000
+#define DBCONSTIN_R_SHIFT 16
// Texture Multiplication Control (0x00048058)
-#define DBTXTMULTCNTL_TXTRJUST 0x00000001
-#define DBTXTMULTCNTL_TXTCOEFCMP 0x00000002
-
-#define DBTXTMULTCNTL_TXTCONSTCNTL_MASK 0x0000000c
-#define DBTXTMULTCNTL_TXTCONSTCNTL_SHIFT 2
-#define DBTXTMULTCNTL_TXTCONSTCNTL_TEXSSB 0
-#define DBTXTMULTCNTL_TXTCONSTCNTL_SRCDSB 1
-
-#define DBTXTMULTCNTL_COEFSEL_MASK 0x00000030
-#define DBTXTMULTCNTL_COEFSEL_SHIFT 4
-#define DBTXTMULTCNTL_COEFSEL_ATI 0
-#define DBTXTMULTCNTL_COEFSEL_ASRC 1
-#define DBTXTMULTCNTL_COEFSEL_CONSTANT 2
-#define DBTXTMULTCNTL_COEFSEL_CSRC 3
-
-#define DBTXTMULTCNTL_INSEL_MASK 0x000000c0
-#define DBTXTMULTCNTL_INSEL_SHIFT 6
-#define DBTXTMULTCNTL_INSEL_CTI 0
-#define DBTXTMULTCNTL_INSEL_CONSTANT 1
-#define DBTXTMULTCNTL_INSEL_COMPSRC 2
-#define DBTXTMULTCNTL_INSEL_ATI 3
+#define DBTXTMULTCNTL_TXTRJUST 0x00000001
+#define DBTXTMULTCNTL_TXTCOEFCMP 0x00000002
+
+#define DBTXTMULTCNTL_TXTCONSTCNTL_MASK 0x0000000c
+#define DBTXTMULTCNTL_TXTCONSTCNTL_SHIFT 2
+#define DBTXTMULTCNTL_TXTCONSTCNTL_TEXSSB 0
+#define DBTXTMULTCNTL_TXTCONSTCNTL_SRCDSB 1
+
+#define DBTXTMULTCNTL_COEFSEL_MASK 0x00000030
+#define DBTXTMULTCNTL_COEFSEL_SHIFT 4
+#define DBTXTMULTCNTL_COEFSEL_ATI 0
+#define DBTXTMULTCNTL_COEFSEL_ASRC 1
+#define DBTXTMULTCNTL_COEFSEL_CONSTANT 2
+#define DBTXTMULTCNTL_COEFSEL_CSRC 3
+
+#define DBTXTMULTCNTL_INSEL_MASK 0x000000c0
+#define DBTXTMULTCNTL_INSEL_SHIFT 6
+#define DBTXTMULTCNTL_INSEL_CTI 0
+#define DBTXTMULTCNTL_INSEL_CONSTANT 1
+#define DBTXTMULTCNTL_INSEL_COMPSRC 2
+#define DBTXTMULTCNTL_INSEL_ATI 3
// Source Multiplication Control (0x00048058)
-#define DBSRCMULTCNTL_SRCRJUST 0x00000001
-#define DBSRCMULTCNTL_SRCCOEFCMP 0x00000002
-
-#define DBSRCMULTCNTL_SRCCONSTCNTL_MASK 0x0000000c
-#define DBSRCMULTCNTL_SRCCONSTCNTL_SHIFT 2
-#define DBSRCMULTCNTL_SRCCONSTCNTL_TEXSSB 0
-#define DBSRCMULTCNTL_SRCCONSTCNTL_SRCDSB 1
-
-#define DBSRCMULTCNTL_COEFSEL_MASK 0x00000030
-#define DBSRCMULTCNTL_COEFSEL_SHIFT 4
-#define DBSRCMULTCNTL_COEFSEL_ATI 0
-#define DBSRCMULTCNTL_COEFSEL_ASRC 1
-#define DBSRCMULTCNTL_COEFSEL_CONSTANT 2
-#define DBSRCMULTCNTL_COEFSEL_CTI 3
-
-#define DBSRCMULTCNTL_INSEL_MASK 0x000000c0
-#define DBSRCMULTCNTL_INSEL_SHIFT 6
-#define DBSRCMULTCNTL_INSEL_SRC 0
-#define DBSRCMULTCNTL_INSEL_CONSTANT 1
-#define DBSRCMULTCNTL_INSEL_COMPCTI 2
-#define DBSRCMULTCNTL_INSEL_TEXALPHA 3
+#define DBSRCMULTCNTL_SRCRJUST 0x00000001
+#define DBSRCMULTCNTL_SRCCOEFCMP 0x00000002
+
+#define DBSRCMULTCNTL_SRCCONSTCNTL_MASK 0x0000000c
+#define DBSRCMULTCNTL_SRCCONSTCNTL_SHIFT 2
+#define DBSRCMULTCNTL_SRCCONSTCNTL_TEXSSB 0
+#define DBSRCMULTCNTL_SRCCONSTCNTL_SRCDSB 1
+
+#define DBSRCMULTCNTL_COEFSEL_MASK 0x00000030
+#define DBSRCMULTCNTL_COEFSEL_SHIFT 4
+#define DBSRCMULTCNTL_COEFSEL_ATI 0
+#define DBSRCMULTCNTL_COEFSEL_ASRC 1
+#define DBSRCMULTCNTL_COEFSEL_CONSTANT 2
+#define DBSRCMULTCNTL_COEFSEL_CTI 3
+
+#define DBSRCMULTCNTL_INSEL_MASK 0x000000c0
+#define DBSRCMULTCNTL_INSEL_SHIFT 6
+#define DBSRCMULTCNTL_INSEL_SRC 0
+#define DBSRCMULTCNTL_INSEL_CONSTANT 1
+#define DBSRCMULTCNTL_INSEL_COMPCTI 2
+#define DBSRCMULTCNTL_INSEL_TEXALPHA 3
// ALU Control (0x00048070) TODO
-#define DBALUCNTL_FINALDIVIDE_MASK 0x00000007
-#define DBALUCNTL_FINALDIVIDE_SHIFT 0
+#define DBALUCNTL_FINALDIVIDE_MASK 0x00000007
+#define DBALUCNTL_FINALDIVIDE_SHIFT 0
-#define DBALUCNTL_ALUOP_MASK 0x000000f8
-#define DBALUCNTL_ALUOP_SHIFT 5
+#define DBALUCNTL_ALUOP_MASK 0x000000f8
+#define DBALUCNTL_ALUOP_SHIFT 5
// Source Alpha Control (0x00048074)
-#define DBDSTACNTL_ADESTSEL_MASK 0x00000003
-#define DBDSTACNTL_ADESTSEL_SHIFT 0
-#define DBDSTACNTL_ADESTCONSTCNTL_MASK 0x0000000c
-#define DBDSTACNTL_ADESTCONSTCNTL_SHIFT 2
+#define DBDSTACNTL_ADESTSEL_MASK 0x00000003
+#define DBDSTACNTL_ADESTSEL_SHIFT 0
+#define DBDSTACNTL_ADESTCONSTCNTL_MASK 0x0000000c
+#define DBDSTACNTL_ADESTCONSTCNTL_SHIFT 2
-#define DBDSTALPHACONST_CONST1_MASK 0x000000ff
-#define DBDSTALPHACONST_CONST1_SHIFT 0
-#define DBDSTALPHACONST_CONST0_MASK 0x00ff0000
-#define DBDSTALPHACONST_CONST0_SHIFT 16
+#define DBDSTALPHACONST_CONST1_MASK 0x000000ff
+#define DBDSTALPHACONST_CONST1_SHIFT 0
+#define DBDSTALPHACONST_CONST0_MASK 0x00ff0000
+#define DBDSTALPHACONST_CONST0_SHIFT 16
-#define DBSSBDSBCNTL_DSBSEL_MASK 0x00000003
-#define DBSSBDSBCNTL_DSBSEL_SHIFT 0
-#define DBSSBDSBCNTL_DSBCONST_MASK 0x00000004
-#define DBSSBDSBCNTL_DSBCONST_SHIFT 2
+#define DBSSBDSBCNTL_DSBSEL_MASK 0x00000003
+#define DBSSBDSBCNTL_DSBSEL_SHIFT 0
+#define DBSSBDSBCNTL_DSBCONST_MASK 0x00000004
+#define DBSSBDSBCNTL_DSBCONST_SHIFT 2
@@ -665,7 +665,7 @@ static const char *get_reg_name(uint32_t unit, uint32_t reg)
}
case 3:
{
-// if (reg < sizeof(tm_regs))
+// if (reg < sizeof(tm_regs))
{
sprintf(buffer, "TM:????");
return buffer;
@@ -836,7 +836,7 @@ WRITE32_MEMBER( m2_te_device::write )
uint32_t reg = offset & 0x1ff;
reg_wmode wmode = static_cast<reg_wmode>((offset >> 9) & 3);
-// logerror("%s: TE W[%.8x] (%s) %.8x\n", machine().describe_context(), 0x00040000 + (offset << 2), get_reg_name(unit, reg), data);
+// logerror("%s: TE W[%.8x] (%s) %.8x\n", machine().describe_context(), 0x00040000 + (offset << 2), get_reg_name(unit, reg), data);
switch (unit)
{
@@ -1184,7 +1184,7 @@ void m2_te_device::log_triangle(uint32_t flags)
void m2_te_device::setup_triangle(uint32_t flags)
{
-// log_triangle(flags);
+// log_triangle(flags);
se_vtx va = m_se.vertices[0];
se_vtx vb = m_se.vertices[1];
@@ -1362,24 +1362,24 @@ void m2_te_device::setup_triangle(uint32_t flags)
// Convert everything to fixed point and pass to the edge walker
/*
- NOT SURE THESE ARE RIGHT. See P209
+ NOT SURE THESE ARE RIGHT. See P209
- XY 12.0
- SL s12.0
- RGBA 9.0
- RGBA SLOPES = s9.11
- TEX: 11.13
- DEPTH: 1.23
- TEX SLOPES: s11.13
- DEPTH SLOPES: s1.23
- AREA : s23.0
+ XY 12.0
+ SL s12.0
+ RGBA 9.0
+ RGBA SLOPES = s9.11
+ TEX: 11.13
+ DEPTH: 1.23
+ TEX SLOPES: s11.13
+ DEPTH SLOPES: s1.23
+ AREA : s23.0
- Numbers output to the edge walker are 24 bits
+ Numbers output to the edge walker are 24 bits
- IEE: 1.8.23
- BDA: 1.7.24 (includes hidden bit)
+ IEE: 1.8.23
+ BDA: 1.7.24 (includes hidden bit)
- However, we're using 23 bits.
+ However, we're using 23 bits.
*/
@@ -2286,7 +2286,7 @@ void m2_te_device::texture_blend(
}
}
-void m2_te_device::select_lerp( uint32_t sel,
+void m2_te_device::select_lerp( uint32_t sel,
uint32_t ri, uint32_t gi, uint32_t bi, uint32_t ai,
uint32_t rt, uint32_t gt, uint32_t bt, uint32_t at, uint32_t ssbt,
uint32_t & ar, uint32_t & ag, uint32_t & ab )
@@ -2681,17 +2681,17 @@ void m2_te_device::destination_blend(uint32_t x, uint32_t y, uint32_t w, const r
// TODO: Status
/*
- {
- fbClipStat = fbClipDis
- winClipStat = winClipDis
- zClipStat = zClipDis
- alurstat
- alugstat
- alubstat
- zFuncStat
- anyRender
- set_interrupt
- }
+ {
+ fbClipStat = fbClipDis
+ winClipStat = winClipDis
+ zClipStat = zClipDis
+ alurstat
+ alugstat
+ alubstat
+ zFuncStat
+ anyRender
+ set_interrupt
+ }
*/
}
@@ -2710,9 +2710,9 @@ void m2_te_device::select_tex_pixel()
switch (cntl)
{
- case 0: m_dbstate.texpath.a = m_dbstate.ti.a; break;
- case 1: m_dbstate.texpath.a = 255; break;
- case 2: m_dbstate.texpath.a = 0; break;
+ case 0: m_dbstate.texpath.a = m_dbstate.ti.a; break;
+ case 1: m_dbstate.texpath.a = 255; break;
+ case 2: m_dbstate.texpath.a = 0; break;
}
switch ((m_db.txt_mult_cntl & DBTXTMULTCNTL_INSEL_MASK) >> DBTXTMULTCNTL_INSEL_SHIFT)
@@ -2896,18 +2896,18 @@ uint8_t m2_te_device::get_src_coef(uint8_t cti, uint8_t dm2const0, uint8_t dm2co
switch ((m_db.src_mult_cntl & DBSRCMULTCNTL_SRCCONSTCNTL_MASK) >> DBSRCMULTCNTL_SRCCONSTCNTL_SHIFT)
{
- case DBSRCMULTCNTL_SRCCONSTCNTL_TEXSSB: sel = m_dbstate.ssb; break;
- case DBSRCMULTCNTL_SRCCONSTCNTL_SRCDSB: sel = m_dbstate.dsb; break;
+ case DBSRCMULTCNTL_SRCCONSTCNTL_TEXSSB: sel = m_dbstate.ssb; break;
+ case DBSRCMULTCNTL_SRCCONSTCNTL_SRCDSB: sel = m_dbstate.dsb; break;
}
cnst = sel ? dm2const1 : dm2const0;
switch ((m_db.src_mult_cntl & DBSRCMULTCNTL_COEFSEL_MASK) >> DBSRCMULTCNTL_COEFSEL_SHIFT)
{
- case DBSRCMULTCNTL_COEFSEL_ATI: coef = m_dbstate.texpath.a; break;
- case DBSRCMULTCNTL_COEFSEL_ASRC: coef = m_dbstate.srcpath.a; break;
- case DBSRCMULTCNTL_COEFSEL_CONSTANT: coef = cnst; break;
- case DBSRCMULTCNTL_COEFSEL_CTI: coef = cti; break;
+ case DBSRCMULTCNTL_COEFSEL_ATI: coef = m_dbstate.texpath.a; break;
+ case DBSRCMULTCNTL_COEFSEL_ASRC: coef = m_dbstate.srcpath.a; break;
+ case DBSRCMULTCNTL_COEFSEL_CONSTANT: coef = cnst; break;
+ case DBSRCMULTCNTL_COEFSEL_CTI: coef = cti; break;
}
if (m_db.src_mult_cntl & DBSRCMULTCNTL_SRCCOEFCMP)
@@ -2933,10 +2933,10 @@ uint8_t m2_te_device::get_tex_coef(uint8_t cs, uint8_t dm1const0, uint8_t dm1con
switch ((m_db.txt_mult_cntl & DBTXTMULTCNTL_COEFSEL_MASK) >> DBTXTMULTCNTL_COEFSEL_SHIFT)
{
- case DBTXTMULTCNTL_COEFSEL_ATI: coef = m_dbstate.texpath.a; break;
- case DBTXTMULTCNTL_COEFSEL_ASRC: coef = m_dbstate.srcpath.a; break;
- case DBTXTMULTCNTL_COEFSEL_CONSTANT: coef = cnst; break;
- case DBTXTMULTCNTL_COEFSEL_CSRC: coef = cs; break;
+ case DBTXTMULTCNTL_COEFSEL_ATI: coef = m_dbstate.texpath.a; break;
+ case DBTXTMULTCNTL_COEFSEL_ASRC: coef = m_dbstate.srcpath.a; break;
+ case DBTXTMULTCNTL_COEFSEL_CONSTANT: coef = cnst; break;
+ case DBTXTMULTCNTL_COEFSEL_CSRC: coef = cs; break;
}
if (m_db.txt_mult_cntl & DBTXTMULTCNTL_TXTCOEFCMP)
@@ -2954,8 +2954,8 @@ void m2_te_device::select_alpha_dsb()
switch ((m_db.dst_alpha_ctrl & DBDSTACNTL_ADESTCONSTCNTL_MASK) >> DBDSTACNTL_ADESTCONSTCNTL_SHIFT)
{
- case 0: sel = m_dbstate.ssb; break;
- case 1: sel = m_dbstate.dsb; break;
+ case 0: sel = m_dbstate.ssb; break;
+ case 1: sel = m_dbstate.dsb; break;
}
if (sel)
@@ -2965,17 +2965,17 @@ void m2_te_device::select_alpha_dsb()
switch ((m_db.dst_alpha_ctrl & DBDSTACNTL_ADESTSEL_MASK) >> DBDSTACNTL_ADESTSEL_SHIFT)
{
- case 0: m_dbstate.dst.a = m_dbstate.texpath.a; break;
- case 1: m_dbstate.dst.a = aconst; break;
- case 2: m_dbstate.dst.a = m_dbstate.srcpath.a; break;
- case 3: m_dbstate.dst.a = m_dbstate.blend.r; break;
+ case 0: m_dbstate.dst.a = m_dbstate.texpath.a; break;
+ case 1: m_dbstate.dst.a = aconst; break;
+ case 2: m_dbstate.dst.a = m_dbstate.srcpath.a; break;
+ case 3: m_dbstate.dst.a = m_dbstate.blend.r; break;
}
switch ((m_db.ssbdsb_ctrl & DBSSBDSBCNTL_DSBSEL_MASK) >> DBSSBDSBCNTL_DSBSEL_SHIFT)
{
- case 0: m_dbstate.dsb = m_dbstate.ssb; break;
- case 1: m_dbstate.dsb = (m_db.ssbdsb_ctrl & DBSSBDSBCNTL_DSBCONST_MASK) >> DBSSBDSBCNTL_DSBCONST_SHIFT; break;
- case 2: m_dbstate.dsb = m_dbstate.dsb; break;
+ case 0: m_dbstate.dsb = m_dbstate.ssb; break;
+ case 1: m_dbstate.dsb = (m_db.ssbdsb_ctrl & DBSSBDSBCNTL_DSBCONST_MASK) >> DBSSBDSBCNTL_DSBCONST_SHIFT; break;
+ case 2: m_dbstate.dsb = m_dbstate.dsb; break;
}
}
else
@@ -3048,10 +3048,10 @@ uint8_t m2_te_device::alu_calc(uint16_t a, uint16_t b)
switch (j)
{
- case 0: cinv |= (cntl & 1); break;
- case 1: cinv |= (cntl & 2) && 1; break;
- case 2: cinv |= (cntl & 4) && 1; break;
- case 3: cinv |= (cntl & 8) && 1; break;
+ case 0: cinv |= (cntl & 1); break;
+ case 1: cinv |= (cntl & 2) && 1; break;
+ case 2: cinv |= (cntl & 4) && 1; break;
+ case 3: cinv |= (cntl & 8) && 1; break;
}
cinv <<= 1;
@@ -3075,13 +3075,13 @@ uint8_t m2_te_device::alu_calc(uint16_t a, uint16_t b)
switch ((m_db.alu_ctrl & DBALUCNTL_FINALDIVIDE_MASK) >> DBALUCNTL_FINALDIVIDE_SHIFT)
{
- case 1: blendout = result << 1; break;
- case 2: blendout = result << 2; break;
- case 3: blendout = result << 3; break;
- case 7: blendout = result >> 1; break;
- case 6: blendout = result >> 2; break;
- case 5: blendout = result >> 3; break;
- default: blendout = result; break;
+ case 1: blendout = result << 1; break;
+ case 2: blendout = result << 2; break;
+ case 3: blendout = result << 3; break;
+ case 7: blendout = result >> 1; break;
+ case 6: blendout = result >> 2; break;
+ case 5: blendout = result >> 3; break;
+ default: blendout = result; break;
}
if (blendout > 255)
@@ -3139,22 +3139,22 @@ void m2_te_device::walk_span(uint32_t wrange, bool omit_right,
xe = scan_lr ? xe + 1 : xe - 1;
/*
- Edge to Span walker
- X/Y 11.0
- RGBA 8.11
- U/W, V/W 10.13
- 1/W 0.23
- RGBA DDX s8.11
- UV DDX s10.13
- 1/W DDX s0.23
-
- To destination blender:
- X/Y 11.0
- W 0.16
-
- To texture mapper:
- RGBA 8.0
- UV 10.4
+ Edge to Span walker
+ X/Y 11.0
+ RGBA 8.11
+ U/W, V/W 10.13
+ 1/W 0.23
+ RGBA DDX s8.11
+ UV DDX s10.13
+ 1/W DDX s0.23
+
+ To destination blender:
+ X/Y 11.0
+ W 0.16
+
+ To texture mapper:
+ RGBA 8.0
+ UV 10.4
*/
if (omit_right)
@@ -3478,22 +3478,22 @@ void m2_te_device::execute()
#if TEST_TIMING
/*
- TESetup Engine: 600-700 triangles/sec (?)
+ TESetup Engine: 600-700 triangles/sec (?)
- Pixel Rates:
- Point - 132Mpix/s
- Linear - 66Mpix/s
- Bilin - 33Mpix
- QTril - 22M
+ Pixel Rates:
+ Point - 132Mpix/s
+ Linear - 66Mpix/s
+ Bilin - 33Mpix
+ QTril - 22M
- No blend, no Z - 120MPix
- Zbuffer - 66-120M pix
- Bend - 66 M pix
+ No blend, no Z - 120MPix
+ Zbuffer - 66-120M pix
+ Bend - 66 M pix
*/
uint32_t total_cycles = (g_statistics[STAT_TRIANGLES_PROCESSED] * 100) +
(g_statistics[STAT_TEXEL_READS]) +
-// (g_statistics[STAT_PIXELS_PROCESSED]) +
+// (g_statistics[STAT_PIXELS_PROCESSED]) +
(g_statistics[STAT_PIXEL_LOADS]) +
(g_statistics[STAT_PIXEL_STORES]) +
(g_statistics[STAT_TEXEL_BYTES]/4) +