trunk/src/mame/machine/3do.c
| r20163 | r20164 | |
| 579 | 579 | return m_clio.seed; |
| 580 | 580 | case 0x003c/4: |
| 581 | 581 | return m_clio.random; |
| 582 | case 0x0040/4: |
| 583 | case 0x0044/4: |
| 584 | return m_clio.irq0; |
| 585 | case 0x0048/4: |
| 586 | case 0x004c/4: |
| 587 | return m_clio.irq0_enable; |
| 582 | 588 | case 0x0080/4: |
| 583 | 589 | return m_clio.hdelay; |
| 584 | 590 | case 0x0084/4: |
| r20163 | r20164 | |
| 968 | 974 | VIDEO_START_MEMBER(_3do_state,_3do) |
| 969 | 975 | { |
| 970 | 976 | /* We only keep the odd bits and get rid of the even bits */ |
| 971 | | for ( int i = 0; i < 512; i++ ) |
| 972 | | { |
| 973 | | m_video_bits[i] = ( i & 1 ) | ( ( i & 4 ) >> 1 ) | ( ( i & 0x10 ) >> 2 ) | ( ( i & 0x40 ) >> 3 ) | ( ( i & 0x100 ) >> 4 ); |
| 974 | | } |
| 977 | // for ( int i = 0; i < 512; i++ ) |
| 978 | // { |
| 979 | // m_video_bits[i] = ( i & 1 ) | ( ( i & 4 ) >> 1 ) | ( ( i & 0x10 ) >> 2 ) | ( ( i & 0x40 ) >> 3 ) | ( ( i & 0x100 ) >> 4 ); |
| 980 | // } |
| 975 | 981 | } |
| 976 | 982 | |
| 977 | 983 | |
| r20163 | r20164 | |
| 980 | 986 | { |
| 981 | 987 | UINT32 *source_p = m_vram + 0x1c0000 / 4; |
| 982 | 988 | |
| 983 | | for ( int i = 0; i < 120; i++ ) |
| 989 | for ( int y = 0; y < 120; y++ ) |
| 984 | 990 | { |
| 985 | | UINT32 *dest_p0 = &bitmap.pix32(22 + i * 2, 254 ); |
| 986 | | UINT32 *dest_p1 = &bitmap.pix32(22 + i * 2 + 1, 254 ); |
| 991 | UINT32 *dest_p0 = &bitmap.pix32(22 + y * 2, 254 ); |
| 992 | UINT32 *dest_p1 = &bitmap.pix32(22 + y * 2 + 1, 254 ); |
| 987 | 993 | |
| 988 | | for ( int j = 0; j < 320; j++ ) |
| 994 | for ( int x = 0; x < 320; x++ ) |
| 989 | 995 | { |
| 990 | 996 | /* Odd numbered bits go to lower half, even numbered bits to upper half */ |
| 991 | | UINT32 lower = *source_p & 0x55555555; |
| 992 | | UINT32 upper = ( *source_p >> 1 ) & 0x55555555; |
| 993 | | UINT32 rgb = 0; |
| 997 | UINT32 lower = *source_p & 0xffff; |
| 998 | UINT32 upper = ( *source_p >> 16 ) & 0xffff; |
| 999 | int r, g, b; |
| 994 | 1000 | |
| 995 | | rgb = ( ( m_video_bits[upper & 0x1ff] << 3 ) << 8 ); |
| 996 | | rgb |= ( ( m_video_bits[ ( upper >> 10 ) & 0x1ff ] << 3 ) << 0 ); |
| 997 | | rgb |= ( ( m_video_bits[ ( upper >> 20 ) & 0x1ff ] << 3 ) << 16 ); |
| 1001 | r = (upper & 0x7c00) >> 10; |
| 1002 | g = (upper & 0x03e0) >> 5; |
| 1003 | b = (upper & 0x001f) >> 0; |
| 1004 | r = (r << 3) | (r & 7); |
| 1005 | g = (g << 3) | (g & 7); |
| 1006 | b = (b << 3) | (b & 7); |
| 998 | 1007 | |
| 999 | | dest_p0[0] = rgb; |
| 1000 | | dest_p0[1] = rgb; |
| 1001 | | dest_p0[2] = rgb; |
| 1002 | | dest_p0[3] = rgb; |
| 1008 | dest_p0[0] = r << 16 | g << 8 | b; |
| 1009 | dest_p0[1] = r << 16 | g << 8 | b; |
| 1010 | dest_p0[2] = r << 16 | g << 8 | b; |
| 1011 | dest_p0[3] = r << 16 | g << 8 | b; |
| 1003 | 1012 | |
| 1004 | | rgb = ( ( m_video_bits[lower & 0x1ff] << 3 ) << 8 ); |
| 1005 | | rgb |= ( ( m_video_bits[ ( lower >> 10 ) & 0x1ff ] << 3 ) << 0 ); |
| 1006 | | rgb |= ( ( m_video_bits[ ( lower >> 20 ) & 0x1ff ] << 3 ) << 16 ); |
| 1013 | r = (lower & 0x7c00) >> 10; |
| 1014 | g = (lower & 0x03e0) >> 5; |
| 1015 | b = (lower & 0x001f) >> 0; |
| 1016 | r = (r << 3) | (r & 7); |
| 1017 | g = (g << 3) | (g & 7); |
| 1018 | b = (b << 3) | (b & 7); |
| 1007 | 1019 | |
| 1008 | | dest_p1[0] = rgb; |
| 1009 | | dest_p1[1] = rgb; |
| 1010 | | dest_p1[2] = rgb; |
| 1011 | | dest_p1[3] = rgb; |
| 1020 | dest_p1[0] = r << 16 | g << 8 | b; |
| 1021 | dest_p1[1] = r << 16 | g << 8 | b; |
| 1022 | dest_p1[2] = r << 16 | g << 8 | b; |
| 1023 | dest_p1[3] = r << 16 | g << 8 | b; |
| 1012 | 1024 | |
| 1013 | 1025 | source_p++; |
| 1014 | 1026 | dest_p0 += 4; |