From 5f82f6208dc8e098774512df48ed273639867a10 Mon Sep 17 00:00:00 2001 From: davidhay Date: Sun, 22 Mar 2009 19:02:57 +0000 Subject: [PATCH] naomi: no actual improvements yet, just reorganizing some of the existing code slightly while I learn how it works. --- src/mame/video/dc.c | 582 +++++++++++++++++++++++--------------------- 1 file changed, 304 insertions(+), 278 deletions(-) diff --git a/src/mame/video/dc.c b/src/mame/video/dc.c index a1f512babe4..0bb36195868 100644 --- a/src/mame/video/dc.c +++ b/src/mame/video/dc.c @@ -32,24 +32,32 @@ static UINT32 tafifo_buff[32]; static emu_timer *vbout_timer; -typedef struct { - struct testsprites - { - int positionx, positiony; - int sizex, sizey; - UINT32 textureaddress; - float u, v, du, dv; - int texturemode; - int texturesizex, texturesizey, texturesizes, texturepf, texturepalette; - } showsprites[2048]; +typedef struct +{ + int positionx, positiony; + int sizex, sizey; + UINT32 textureaddress; + float u, v, du, dv; + int texturemode; + int texturesizex, texturesizey, texturesizes, texturepf, texturepalette; +} testsprites; + #if DEBUG_VERTICES - struct testvertices - { - int x; - int y; - int endofstrip; - } showvertices[65536]; +typedef struct +{ + int x; + int y; + int endofstrip; +} testvertices; #endif + +typedef struct { + testsprites showsprites[2048]; + + #if DEBUG_VERTICES + testvertices showvertices[65536]; + #endif + int testsprites_size, testsprites_toerase, testvertices_size; UINT32 ispbase; UINT32 fbwsof1; @@ -342,10 +350,285 @@ WRITE64_HANDLER( pvr_ta_w ) #endif } -WRITE64_HANDLER( ta_fifo_poly_w ) +void process_ta_fifo(running_machine* machine) { UINT32 a; + // Para Control + state_ta.paracontrol=(tafifo_buff[0] >> 24) & 0xff; + // 0 end of list + // 1 user tile clip + // 2 object list set + // 3 reserved + // 4 polygon/modifier volume + // 5 sprite + // 6 reserved + // 7 vertex + state_ta.paratype=(state_ta.paracontrol >> 5) & 7; + state_ta.endofstrip=(state_ta.paracontrol >> 4) & 1; + state_ta.listtype=(state_ta.paracontrol >> 0) & 7; + if ((state_ta.paratype >= 4) && (state_ta.paratype <= 6)) + { + state_ta.global_paratype = state_ta.paratype; + // Group Control + state_ta.groupcontrol=(tafifo_buff[0] >> 16) & 0xff; + state_ta.groupen=(state_ta.groupcontrol >> 7) & 1; + state_ta.striplen=(state_ta.groupcontrol >> 2) & 3; + state_ta.userclip=(state_ta.groupcontrol >> 0) & 3; + // Obj Control + state_ta.objcontrol=(tafifo_buff[0] >> 0) & 0xffff; + state_ta.shadow=(state_ta.objcontrol >> 7) & 1; + state_ta.volume=(state_ta.objcontrol >> 6) & 1; + state_ta.coltype=(state_ta.objcontrol >> 4) & 3; + state_ta.texture=(state_ta.objcontrol >> 3) & 1; + state_ta.offfset=(state_ta.objcontrol >> 2) & 1; + state_ta.gouraud=(state_ta.objcontrol >> 1) & 1; + state_ta.uv16bit=(state_ta.objcontrol >> 0) & 1; + } + + // check if we need 8 words more + if (state_ta.tafifo_mask == 7) + { + state_ta.parameterconfig = pvr_parameterconfig[state_ta.objcontrol & 0x3d]; + // decide number of words per vertex + if (state_ta.paratype == 7) + { + if ((state_ta.global_paratype == 5) || (state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) + state_ta.tafifo_vertexwords = 16; + if (state_ta.tafifo_vertexwords == 16) + { + state_ta.tafifo_mask = 15; + state_ta.tafifo_pos = 8; + return; + } + } + // decide number of words when not a vertex + state_ta.tafifo_vertexwords=pvr_wordsvertex[state_ta.parameterconfig]; + if ((state_ta.paratype == 4) && ((state_ta.listtype != 1) && (state_ta.listtype != 3))) + if (pvr_wordspolygon[state_ta.parameterconfig] == 16) + { + state_ta.tafifo_mask = 15; + state_ta.tafifo_pos = 8; + return; + } + } + state_ta.tafifo_mask = 7; + + // now we heve all the needed words + // here we should generate the data for the various tiles + // for now, just interpret their meaning + if (state_ta.paratype == 0) + { // end of list + #if DEBUG_PVRDLIST + mame_printf_verbose("Para Type 0 End of List\n"); + #endif + a=0; // 6-10 0-3 + switch (state_ta.tafifo_listtype) + { + case 0: + a = 1 << 7; + break; + case 1: + a = 1 << 8; + break; + case 2: + a = 1 << 9; + break; + case 3: + a = 1 << 10; + break; + case 4: + a = 1 << 21; + break; + } + + dc_sysctrl_regs[SB_ISTNRM] |= a; + dc_update_interrupt_status(machine); + state_ta.tafifo_listtype= -1; // no list being received + state_ta.listtype_used |= (2+8); + } + else if (state_ta.paratype == 1) + { // user tile clip + #if DEBUG_PVRDLIST + mame_printf_verbose("Para Type 1 User Tile Clip\n"); + mame_printf_verbose(" (%d , %d)-(%d , %d)\n", tafifo_buff[4], tafifo_buff[5], tafifo_buff[6], tafifo_buff[7]); + #endif + } + else if (state_ta.paratype == 2) + { // object list set + #if DEBUG_PVRDLIST + mame_printf_verbose("Para Type 2 Object List Set at %08x\n", tafifo_buff[1]); + mame_printf_verbose(" (%d , %d)-(%d , %d)\n", tafifo_buff[4], tafifo_buff[5], tafifo_buff[6], tafifo_buff[7]); + #endif + } + else if (state_ta.paratype == 3) + { + #if DEBUG_PVRDLIST + mame_printf_verbose("Para Type %x Unknown!\n", tafifo_buff[0]); + #endif + } + else + { // global parameter or vertex parameter + #if DEBUG_PVRDLIST + mame_printf_verbose("Para Type %d", state_ta.paratype); + if (state_ta.paratype == 7) + mame_printf_verbose(" End of Strip %d", state_ta.endofstrip); + if (state_ta.listtype_used & 3) + mame_printf_verbose(" List Type %d", state_ta.listtype); + mame_printf_verbose("\n"); + #endif + + // set type of list currently being recieved + if ((state_ta.paratype == 4) || (state_ta.paratype == 5) || (state_ta.paratype == 6)) + { + if (state_ta.tafifo_listtype < 0) + { + state_ta.tafifo_listtype = state_ta.listtype; + } + } + state_ta.listtype_used = state_ta.listtype_used ^ (state_ta.listtype_used & 3); + + if ((state_ta.paratype == 4) || (state_ta.paratype == 5)) + { // quad or polygon + state_ta.depthcomparemode=(tafifo_buff[1] >> 29) & 7; + state_ta.cullingmode=(tafifo_buff[1] >> 27) & 3; + state_ta.zwritedisable=(tafifo_buff[1] >> 26) & 1; + state_ta.cachebypass=(tafifo_buff[1] >> 21) & 1; + state_ta.dcalcctrl=(tafifo_buff[1] >> 20) & 1; + state_ta.volumeinstruction=(tafifo_buff[1] >> 29) & 7; + state_ta.textureusize=1 << (3+((tafifo_buff[2] >> 3) & 7)); + state_ta.texturevsize=1 << (3+(tafifo_buff[2] & 7)); + state_ta.texturesizes=tafifo_buff[2] & 0x3f; + state_ta.srcalphainstr=(tafifo_buff[2] >> 29) & 7; + state_ta.dstalphainstr=(tafifo_buff[2] >> 26) & 7; + state_ta.srcselect=(tafifo_buff[2] >> 25) & 1; + state_ta.dstselect=(tafifo_buff[2] >> 24) & 1; + state_ta.fogcontrol=(tafifo_buff[2] >> 22) & 3; + state_ta.colorclamp=(tafifo_buff[2] >> 21) & 1; + state_ta.usealpha=(tafifo_buff[2] >> 20) & 1; + state_ta.ignoretexalpha=(tafifo_buff[2] >> 19) & 1; + state_ta.flipuv=(tafifo_buff[2] >> 17) & 3; + state_ta.clampuv=(tafifo_buff[2] >> 15) & 3; + state_ta.filtermode=(tafifo_buff[2] >> 13) & 3; + state_ta.sstexture=(tafifo_buff[2] >> 12) & 1; + state_ta.mmdadjust=(tafifo_buff[2] >> 8) & 1; + state_ta.tsinstruction=(tafifo_buff[2] >> 6) & 3; + if (state_ta.texture == 1) + { + state_ta.textureaddress=(tafifo_buff[3] & 0x1FFFFF) << 3; + state_ta.scanorder=(tafifo_buff[3] >> 26) & 1; + state_ta.pixelformat=(tafifo_buff[3] >> 27) & 7; + state_ta.mipmapped=(tafifo_buff[3] >> 31) & 1; + state_ta.vqcompressed=(tafifo_buff[3] >> 30) & 1; + state_ta.strideselect=(tafifo_buff[3] >> 25) & 1; + state_ta.paletteselector=(tafifo_buff[3] >> 21) & 0x3F; + #if DEBUG_PVRDLIST + mame_printf_verbose(" Texture %d x %d at %08x format %d\n", state_ta.textureusize, state_ta.texturevsize, (tafifo_buff[3] & 0x1FFFFF) << 3, state_ta.pixelformat); + #endif + } + if (state_ta.paratype == 4) + { // polygon or mv + if ((state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" Modifier Volume\n"); + #endif + } + else + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" Polygon\n"); + #endif + } + } + if (state_ta.paratype == 5) + { // quad + #if DEBUG_PVRDLIST + mame_printf_verbose(" Sprite\n"); + #endif + } + } + + if (state_ta.paratype == 7) + { // vertex + if ((state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" Vertex modifier volume"); + mame_printf_verbose(" A(%f,%f,%f) B(%f,%f,%f) C(%f,%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), + u2f(tafifo_buff[3]), u2f(tafifo_buff[4]), u2f(tafifo_buff[5]), u2f(tafifo_buff[6]), u2f(tafifo_buff[7]), + u2f(tafifo_buff[8]), u2f(tafifo_buff[9])); + mame_printf_verbose("\n"); + #endif + } + else if (state_ta.global_paratype == 5) + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" Vertex sprite"); + mame_printf_verbose(" A(%f,%f,%f) B(%f,%f,%f) C(%f,%f,%f) D(%f,%f,)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), + u2f(tafifo_buff[3]), u2f(tafifo_buff[4]), u2f(tafifo_buff[5]), u2f(tafifo_buff[6]), u2f(tafifo_buff[7]), + u2f(tafifo_buff[8]), u2f(tafifo_buff[9]), u2f(tafifo_buff[10]), u2f(tafifo_buff[11])); + mame_printf_verbose("\n"); + #endif + if (state_ta.texture == 1) + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" A(%f,%f) B(%f,%f) C(%f,%f)\n",u2f(tafifo_buff[13] & 0xffff0000),u2f((tafifo_buff[13] & 0xffff) << 16),u2f(tafifo_buff[14] & 0xffff0000),u2f((tafifo_buff[14] & 0xffff) << 16),u2f(tafifo_buff[15] & 0xffff0000),u2f((tafifo_buff[15] & 0xffff) << 16)); + #endif + + /* add a sprite to our 'test sprites' list */ + /* sprites are used for the Naomi Bios logo + text for example */ + /* -- this is wildly inaccurate! */ + testsprites* testsprite = &state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size]; + + testsprite->positionx=u2f(tafifo_buff[1]); + testsprite->positiony=u2f(tafifo_buff[2]); + testsprite->sizex=u2f(tafifo_buff[4])-u2f(tafifo_buff[1]); + testsprite->sizey=u2f(tafifo_buff[8])-u2f(tafifo_buff[2]); + testsprite->u=u2f(tafifo_buff[13] & 0xffff0000); + testsprite->v=u2f((tafifo_buff[13] & 0xffff) << 16); + testsprite->du=u2f(tafifo_buff[14] & 0xffff0000)-testsprite->u; + testsprite->dv=u2f((tafifo_buff[15] & 0xffff) << 16)-testsprite->v; + testsprite->textureaddress=state_ta.textureaddress; + testsprite->texturesizex=state_ta.textureusize; + testsprite->texturesizey=state_ta.texturevsize; + testsprite->texturemode=state_ta.scanorder+state_ta.vqcompressed*2; + testsprite->texturesizes=state_ta.texturesizes; + testsprite->texturepf=state_ta.pixelformat; + testsprite->texturepalette=state_ta.paletteselector; + + state_ta.grab[state_ta.grabsel].testsprites_size++; + } + } + else if (state_ta.global_paratype == 4) + { + #if DEBUG_PVRDLIST + mame_printf_verbose(" Vertex polygon"); + mame_printf_verbose(" V(%f,%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), u2f(tafifo_buff[3])); + mame_printf_verbose("\n"); + #endif +#if DEBUG_VERTICES + if (state_ta.grab[state_ta.grabsel].testvertices_size <= 65530) + { + /* add a vertex to our 'testverticies' list */ + /* this is used for 3d stuff, ie most of the graphics (see guilty gear, confidential mission, maze of the kings etc.) */ + /* -- this is also wildly inaccurate! */ + testvertices* testvertex = &state_ta.grab[state_ta.grabsel].showvertices[state_ta.grab[state_ta.grabsel].testvertices_size]; + + testvertex->x=u2f(tafifo_buff[1]); + testvertex->y=u2f(tafifo_buff[2]); + testvertex->endofstrip=state_ta.endofstrip; + } + state_ta.grab[state_ta.grabsel].testvertices_size++; +#endif + } + } + } +} + +WRITE64_HANDLER( ta_fifo_poly_w ) +{ + if (mem_mask == U64(0xffffffffffffffff)) // 64 bit { tafifo_buff[state_ta.tafifo_pos]=(UINT32)data; @@ -357,272 +640,15 @@ WRITE64_HANDLER( ta_fifo_poly_w ) } else { - mame_printf_debug("ta_fifo_poly_w: Only 64 bit writes supported!\n"); + fatalerror("ta_fifo_poly_w: Only 64 bit writes supported!\n"); } state_ta.tafifo_pos &= state_ta.tafifo_mask; + + // if the command is complete, process it if (state_ta.tafifo_pos == 0) - { - // Para Control - state_ta.paracontrol=(tafifo_buff[0] >> 24) & 0xff; - // 0 end of list - // 1 user tile clip - // 2 object list set - // 3 reserved - // 4 polygon/modifier volume - // 5 sprite - // 6 reserved - // 7 vertex - state_ta.paratype=(state_ta.paracontrol >> 5) & 7; - state_ta.endofstrip=(state_ta.paracontrol >> 4) & 1; - state_ta.listtype=(state_ta.paracontrol >> 0) & 7; - if ((state_ta.paratype >= 4) && (state_ta.paratype <= 6)) - { - state_ta.global_paratype = state_ta.paratype; - // Group Control - state_ta.groupcontrol=(tafifo_buff[0] >> 16) & 0xff; - state_ta.groupen=(state_ta.groupcontrol >> 7) & 1; - state_ta.striplen=(state_ta.groupcontrol >> 2) & 3; - state_ta.userclip=(state_ta.groupcontrol >> 0) & 3; - // Obj Control - state_ta.objcontrol=(tafifo_buff[0] >> 0) & 0xffff; - state_ta.shadow=(state_ta.objcontrol >> 7) & 1; - state_ta.volume=(state_ta.objcontrol >> 6) & 1; - state_ta.coltype=(state_ta.objcontrol >> 4) & 3; - state_ta.texture=(state_ta.objcontrol >> 3) & 1; - state_ta.offfset=(state_ta.objcontrol >> 2) & 1; - state_ta.gouraud=(state_ta.objcontrol >> 1) & 1; - state_ta.uv16bit=(state_ta.objcontrol >> 0) & 1; - } + process_ta_fifo(space->machine); - // check if we need 8 words more - if (state_ta.tafifo_mask == 7) - { - state_ta.parameterconfig = pvr_parameterconfig[state_ta.objcontrol & 0x3d]; - // decide number of words per vertex - if (state_ta.paratype == 7) - { - if ((state_ta.global_paratype == 5) || (state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) - state_ta.tafifo_vertexwords = 16; - if (state_ta.tafifo_vertexwords == 16) - { - state_ta.tafifo_mask = 15; - state_ta.tafifo_pos = 8; - return; - } - } - // decide number of words when not a vertex - state_ta.tafifo_vertexwords=pvr_wordsvertex[state_ta.parameterconfig]; - if ((state_ta.paratype == 4) && ((state_ta.listtype != 1) && (state_ta.listtype != 3))) - if (pvr_wordspolygon[state_ta.parameterconfig] == 16) - { - state_ta.tafifo_mask = 15; - state_ta.tafifo_pos = 8; - return; - } - } - state_ta.tafifo_mask = 7; - - // now we heve all the needed words - // here we should generate the data for the various tiles - // for now, just interpret their meaning - if (state_ta.paratype == 0) - { // end of list - #if DEBUG_PVRDLIST - mame_printf_verbose("Para Type 0 End of List\n"); - #endif - a=0; // 6-10 0-3 - switch (state_ta.tafifo_listtype) - { - case 0: - a = 1 << 7; - break; - case 1: - a = 1 << 8; - break; - case 2: - a = 1 << 9; - break; - case 3: - a = 1 << 10; - break; - case 4: - a = 1 << 21; - break; - } - dc_sysctrl_regs[SB_ISTNRM] |= a; - dc_update_interrupt_status(space->machine); - state_ta.tafifo_listtype= -1; // no list being received - state_ta.listtype_used |= (2+8); - } - else if (state_ta.paratype == 1) - { // user tile clip - #if DEBUG_PVRDLIST - mame_printf_verbose("Para Type 1 User Tile Clip\n"); - mame_printf_verbose(" (%d , %d)-(%d , %d)\n", tafifo_buff[4], tafifo_buff[5], tafifo_buff[6], tafifo_buff[7]); - #endif - } - else if (state_ta.paratype == 2) - { // object list set - #if DEBUG_PVRDLIST - mame_printf_verbose("Para Type 2 Object List Set at %08x\n", tafifo_buff[1]); - mame_printf_verbose(" (%d , %d)-(%d , %d)\n", tafifo_buff[4], tafifo_buff[5], tafifo_buff[6], tafifo_buff[7]); - #endif - } - else if (state_ta.paratype == 3) - { - #if DEBUG_PVRDLIST - mame_printf_verbose("Para Type %x Unknown!\n", tafifo_buff[0]); - #endif - } - else - { // global parameter or vertex parameter - #if DEBUG_PVRDLIST - mame_printf_verbose("Para Type %d", state_ta.paratype); - if (state_ta.paratype == 7) - mame_printf_verbose(" End of Strip %d", state_ta.endofstrip); - if (state_ta.listtype_used & 3) - mame_printf_verbose(" List Type %d", state_ta.listtype); - mame_printf_verbose("\n"); - #endif - - // set type of list currently being recieved - if ((state_ta.paratype == 4) || (state_ta.paratype == 5) || (state_ta.paratype == 6)) - { - if (state_ta.tafifo_listtype < 0) - { - state_ta.tafifo_listtype = state_ta.listtype; - } - } - state_ta.listtype_used = state_ta.listtype_used ^ (state_ta.listtype_used & 3); - - if ((state_ta.paratype == 4) || (state_ta.paratype == 5)) - { // quad or polygon - state_ta.depthcomparemode=(tafifo_buff[1] >> 29) & 7; - state_ta.cullingmode=(tafifo_buff[1] >> 27) & 3; - state_ta.zwritedisable=(tafifo_buff[1] >> 26) & 1; - state_ta.cachebypass=(tafifo_buff[1] >> 21) & 1; - state_ta.dcalcctrl=(tafifo_buff[1] >> 20) & 1; - state_ta.volumeinstruction=(tafifo_buff[1] >> 29) & 7; - state_ta.textureusize=1 << (3+((tafifo_buff[2] >> 3) & 7)); - state_ta.texturevsize=1 << (3+(tafifo_buff[2] & 7)); - state_ta.texturesizes=tafifo_buff[2] & 0x3f; - state_ta.srcalphainstr=(tafifo_buff[2] >> 29) & 7; - state_ta.dstalphainstr=(tafifo_buff[2] >> 26) & 7; - state_ta.srcselect=(tafifo_buff[2] >> 25) & 1; - state_ta.dstselect=(tafifo_buff[2] >> 24) & 1; - state_ta.fogcontrol=(tafifo_buff[2] >> 22) & 3; - state_ta.colorclamp=(tafifo_buff[2] >> 21) & 1; - state_ta.usealpha=(tafifo_buff[2] >> 20) & 1; - state_ta.ignoretexalpha=(tafifo_buff[2] >> 19) & 1; - state_ta.flipuv=(tafifo_buff[2] >> 17) & 3; - state_ta.clampuv=(tafifo_buff[2] >> 15) & 3; - state_ta.filtermode=(tafifo_buff[2] >> 13) & 3; - state_ta.sstexture=(tafifo_buff[2] >> 12) & 1; - state_ta.mmdadjust=(tafifo_buff[2] >> 8) & 1; - state_ta.tsinstruction=(tafifo_buff[2] >> 6) & 3; - if (state_ta.texture == 1) - { - state_ta.textureaddress=(tafifo_buff[3] & 0x1FFFFF) << 3; - state_ta.scanorder=(tafifo_buff[3] >> 26) & 1; - state_ta.pixelformat=(tafifo_buff[3] >> 27) & 7; - state_ta.mipmapped=(tafifo_buff[3] >> 31) & 1; - state_ta.vqcompressed=(tafifo_buff[3] >> 30) & 1; - state_ta.strideselect=(tafifo_buff[3] >> 25) & 1; - state_ta.paletteselector=(tafifo_buff[3] >> 21) & 0x3F; - #if DEBUG_PVRDLIST - mame_printf_verbose(" Texture %d x %d at %08x format %d\n", state_ta.textureusize, state_ta.texturevsize, (tafifo_buff[3] & 0x1FFFFF) << 3, state_ta.pixelformat); - #endif - } - if (state_ta.paratype == 4) - { // polygon or mv - if ((state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" Modifier Volume\n"); - #endif - } - else - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" Polygon\n"); - #endif - } - } - if (state_ta.paratype == 5) - { // quad - #if DEBUG_PVRDLIST - mame_printf_verbose(" Sprite\n"); - #endif - } - } - - if (state_ta.paratype == 7) - { // vertex - if ((state_ta.tafifo_listtype == 1) || (state_ta.tafifo_listtype == 3)) - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" Vertex modifier volume"); - mame_printf_verbose(" A(%f,%f,%f) B(%f,%f,%f) C(%f,%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), - u2f(tafifo_buff[3]), u2f(tafifo_buff[4]), u2f(tafifo_buff[5]), u2f(tafifo_buff[6]), u2f(tafifo_buff[7]), - u2f(tafifo_buff[8]), u2f(tafifo_buff[9])); - mame_printf_verbose("\n"); - #endif - } - else if (state_ta.global_paratype == 5) - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" Vertex sprite"); - mame_printf_verbose(" A(%f,%f,%f) B(%f,%f,%f) C(%f,%f,%f) D(%f,%f,)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), - u2f(tafifo_buff[3]), u2f(tafifo_buff[4]), u2f(tafifo_buff[5]), u2f(tafifo_buff[6]), u2f(tafifo_buff[7]), - u2f(tafifo_buff[8]), u2f(tafifo_buff[9]), u2f(tafifo_buff[10]), u2f(tafifo_buff[11])); - mame_printf_verbose("\n"); - #endif - if (state_ta.texture == 1) - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" A(%f,%f) B(%f,%f) C(%f,%f)\n",u2f(tafifo_buff[13] & 0xffff0000),u2f((tafifo_buff[13] & 0xffff) << 16),u2f(tafifo_buff[14] & 0xffff0000),u2f((tafifo_buff[14] & 0xffff) << 16),u2f(tafifo_buff[15] & 0xffff0000),u2f((tafifo_buff[15] & 0xffff) << 16)); - #endif -/* test video start */ - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].positionx=u2f(tafifo_buff[1]); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].positiony=u2f(tafifo_buff[2]); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].sizex=u2f(tafifo_buff[4])-u2f(tafifo_buff[1]); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].sizey=u2f(tafifo_buff[8])-u2f(tafifo_buff[2]); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].u=u2f(tafifo_buff[13] & 0xffff0000); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].v=u2f((tafifo_buff[13] & 0xffff) << 16); - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].du=u2f(tafifo_buff[14] & 0xffff0000)-state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].u; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].dv=u2f((tafifo_buff[15] & 0xffff) << 16)-state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].v; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].textureaddress=state_ta.textureaddress; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturesizex=state_ta.textureusize; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturesizey=state_ta.texturevsize; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturemode=state_ta.scanorder+state_ta.vqcompressed*2; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturesizes=state_ta.texturesizes; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturepf=state_ta.pixelformat; - state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size].texturepalette=state_ta.paletteselector; - state_ta.grab[state_ta.grabsel].testsprites_size=state_ta.grab[state_ta.grabsel].testsprites_size+1; -/* test video end */ - } - } - else if (state_ta.global_paratype == 4) - { - #if DEBUG_PVRDLIST - mame_printf_verbose(" Vertex polygon"); - mame_printf_verbose(" V(%f,%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), u2f(tafifo_buff[3])); - mame_printf_verbose("\n"); - #endif -#if DEBUG_VERTICES - if (state_ta.grab[state_ta.grabsel].testvertices_size <= 65530) - { - state_ta.grab[state_ta.grabsel].showvertices[state_ta.grab[state_ta.grabsel].testvertices_size].x=u2f(tafifo_buff[1]); - state_ta.grab[state_ta.grabsel].showvertices[state_ta.grab[state_ta.grabsel].testvertices_size].y=u2f(tafifo_buff[2]); - state_ta.grab[state_ta.grabsel].showvertices[state_ta.grab[state_ta.grabsel].testvertices_size].endofstrip=state_ta.endofstrip; - } - state_ta.grab[state_ta.grabsel].testvertices_size=state_ta.grab[state_ta.grabsel].testvertices_size+1; -#endif - } - } - } - } // if (state_ta.tafifo_pos == 0) } WRITE64_HANDLER( ta_fifo_yuv_w )