Previous 199869 Revisions Next

r20807 Thursday 7th February, 2013 at 18:18:58 UTC by Angelo Salese
Obviously I don't understand why there was a /2 in the drawpixel functions, fixed gfx regressions
[src/mame/video]stvvdp1.c

trunk/src/mame/video/stvvdp1.c
r20806r20807
1616#include "emu.h"
1717#include "includes/stv.h"
1818
19#define VDP1_LOG 0
19#define VDP1_LOG 1
2020
2121
2222enum { FRAC_SHIFT = 16 };
r20806r20807
827827   UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram;
828828   UINT16 pix;
829829
830   pix = vdp1_vram[(patterndata+offsetcnt/2)^3];
830   pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
831831   if ( pix & 0xff )
832832   {
833833      m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank;
r20806r20807
839839   UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram;
840840   UINT16 pix;
841841
842   pix = vdp1_vram[(patterndata+offsetcnt/2)^3];
842   pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
843843   pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ;
844844   m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank;
845845}
r20806r20807
849849   UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram;
850850   UINT16 pix;
851851
852   pix = vdp1_vram[(patterndata+offsetcnt/2)^3];
852   pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
853853   pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ;
854854   if ( pix )
855855      m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank;
r20806r20807
887887      {
888888         case 0x0000: // mode 0 16 colour bank mode (4bits) (hanagumi blocks)
889889            // most of the shienryu sprites use this mode
890            pix = vdp1_vram[((patterndata+offsetcnt/2)^3) & 0xfffff];
890            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
891891            pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ;
892892            pix = pix+((stv2_current_sprite.CMDCOLR&0xfff0));
893893            mode = 0;
r20806r20807
895895            break;
896896         case 0x0008: // mode 1 16 colour lookup table mode (4bits)
897897            // shienryu explosisons (and some enemies) use this mode
898            pix2 = vdp1_vram[((patterndata+offsetcnt/2)^3) & 0xfffff];
898            pix2 = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
899899            pix2 = offsetcnt&1 ?  (pix2 & 0x0f):((pix2 & 0xf0)>>4);
900900            pix = pix2&1 ?
901901            ((((m_vdp1_vram[(((stv2_current_sprite.CMDCOLR&0xffff)*8)>>2)+((pix2&0xfffe)/2)])) & 0x0000ffff) >> 0):
r20806r20807
917917            }
918918            break;
919919         case 0x0010: // mode 2 64 colour bank mode (8bits) (character select portraits on hanagumi)
920            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0xfffff];
920            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
921921            mode = 2;
922922            pix = pix+(stv2_current_sprite.CMDCOLR&0xffc0);
923923            transmask = 0x3f;
924924            break;
925925         case 0x0018: // mode 3 128 colour bank mode (8bits) (little characters on hanagumi use this mode)
926            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0xfffff];
926            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
927927            pix = pix+(stv2_current_sprite.CMDCOLR&0xff80);
928928            transmask = 0x7f;
929929            mode = 3;
930930            break;
931931         case 0x0020: // mode 4 256 colour bank mode (8bits) (hanagumi title)
932            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0xfffff];
932            pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff];
933933            pix = pix+(stv2_current_sprite.CMDCOLR&0xff00);
934934            transmask = 0xff;
935935            mode = 4;
936936            break;
937937         case 0x0028: // mode 5 32,768 colour RGB mode (16bits)
938            pix = vdp1_vram[((patterndata+offsetcnt*2+1)^3) & 0xfffff] | (vdp1_vram[((patterndata+offsetcnt*2)^3) & 0xfffff]<<8) ;
938            pix = vdp1_vram[((patterndata+offsetcnt*2+1)^3) & 0x7ffff] | (vdp1_vram[((patterndata+offsetcnt*2)^3) & 0x7ffff]<<8) ;
939939            mode = 5;
940940            transmask = -1; /* TODO: check me */
941941            break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team