trunk/src/mame/video/stvvdp1.c
| r20806 | r20807 | |
| 16 | 16 | #include "emu.h" |
| 17 | 17 | #include "includes/stv.h" |
| 18 | 18 | |
| 19 | | #define VDP1_LOG 0 |
| 19 | #define VDP1_LOG 1 |
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | enum { FRAC_SHIFT = 16 }; |
| r20806 | r20807 | |
| 827 | 827 | UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram; |
| 828 | 828 | UINT16 pix; |
| 829 | 829 | |
| 830 | | pix = vdp1_vram[(patterndata+offsetcnt/2)^3]; |
| 830 | pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff]; |
| 831 | 831 | if ( pix & 0xff ) |
| 832 | 832 | { |
| 833 | 833 | m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank; |
| r20806 | r20807 | |
| 839 | 839 | UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram; |
| 840 | 840 | UINT16 pix; |
| 841 | 841 | |
| 842 | | pix = vdp1_vram[(patterndata+offsetcnt/2)^3]; |
| 842 | pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff]; |
| 843 | 843 | pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ; |
| 844 | 844 | m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank; |
| 845 | 845 | } |
| r20806 | r20807 | |
| 849 | 849 | UINT8 *vdp1_vram = (UINT8 *)m_vdp1_vram; |
| 850 | 850 | UINT16 pix; |
| 851 | 851 | |
| 852 | | pix = vdp1_vram[(patterndata+offsetcnt/2)^3]; |
| 852 | pix = vdp1_vram[((patterndata+offsetcnt)^3) & 0x7ffff]; |
| 853 | 853 | pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ; |
| 854 | 854 | if ( pix ) |
| 855 | 855 | m_vdp1.framebuffer_draw_lines[y][x] = pix | m_sprite_colorbank; |
| r20806 | r20807 | |
| 887 | 887 | { |
| 888 | 888 | case 0x0000: // mode 0 16 colour bank mode (4bits) (hanagumi blocks) |
| 889 | 889 | // 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]; |
| 891 | 891 | pix = offsetcnt&1 ? (pix & 0x0f):((pix & 0xf0)>>4) ; |
| 892 | 892 | pix = pix+((stv2_current_sprite.CMDCOLR&0xfff0)); |
| 893 | 893 | mode = 0; |
| r20806 | r20807 | |
| 895 | 895 | break; |
| 896 | 896 | case 0x0008: // mode 1 16 colour lookup table mode (4bits) |
| 897 | 897 | // 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]; |
| 899 | 899 | pix2 = offsetcnt&1 ? (pix2 & 0x0f):((pix2 & 0xf0)>>4); |
| 900 | 900 | pix = pix2&1 ? |
| 901 | 901 | ((((m_vdp1_vram[(((stv2_current_sprite.CMDCOLR&0xffff)*8)>>2)+((pix2&0xfffe)/2)])) & 0x0000ffff) >> 0): |
| r20806 | r20807 | |
| 917 | 917 | } |
| 918 | 918 | break; |
| 919 | 919 | 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]; |
| 921 | 921 | mode = 2; |
| 922 | 922 | pix = pix+(stv2_current_sprite.CMDCOLR&0xffc0); |
| 923 | 923 | transmask = 0x3f; |
| 924 | 924 | break; |
| 925 | 925 | 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]; |
| 927 | 927 | pix = pix+(stv2_current_sprite.CMDCOLR&0xff80); |
| 928 | 928 | transmask = 0x7f; |
| 929 | 929 | mode = 3; |
| 930 | 930 | break; |
| 931 | 931 | 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]; |
| 933 | 933 | pix = pix+(stv2_current_sprite.CMDCOLR&0xff00); |
| 934 | 934 | transmask = 0xff; |
| 935 | 935 | mode = 4; |
| 936 | 936 | break; |
| 937 | 937 | 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) ; |
| 939 | 939 | mode = 5; |
| 940 | 940 | transmask = -1; /* TODO: check me */ |
| 941 | 941 | break; |