trunk/src/mame/video/stvvdp2.c
| r20424 | r20425 | |
| 3927 | 3927 | int i; |
| 3928 | 3928 | int scroll_values_equal; |
| 3929 | 3929 | int lines; |
| 3930 | | INT16 scrollx, scrolly; |
| 3930 | INT16 main_scrollx, main_scrolly; |
| 3931 | 3931 | // INT32 incx; |
| 3932 | 3932 | int linescroll_enable, vertical_linescroll_enable, linezoom_enable; |
| 3933 | 3933 | int vertical_linescroll_index = -1; |
| 3934 | 3934 | |
| 3935 | 3935 | // read original scroll values |
| 3936 | | scrollx = stv2_current_tilemap.scrollx; |
| 3937 | | scrolly = stv2_current_tilemap.scrolly; |
| 3936 | main_scrollx = stv2_current_tilemap.scrollx; |
| 3937 | main_scrolly = stv2_current_tilemap.scrolly; |
| 3938 | 3938 | // incx = stv2_current_tilemap.incx; |
| 3939 | 3939 | |
| 3940 | 3940 | // prepare linescroll flags |
| r20424 | r20425 | |
| 4019 | 4019 | { |
| 4020 | 4020 | prev_scroll_values[i] &= 0x07ffff00; |
| 4021 | 4021 | if ( prev_scroll_values[i] & 0x04000000 ) prev_scroll_values[i] |= 0xf8000000; |
| 4022 | | stv2_current_tilemap.scrollx = scrollx + (prev_scroll_values[i] >> 16); |
| 4022 | stv2_current_tilemap.scrollx = main_scrollx + (prev_scroll_values[i] >> 16); |
| 4023 | 4023 | i++; |
| 4024 | 4024 | } |
| 4025 | 4025 | // vertical line scroll |
| 4026 | 4026 | if ( vertical_linescroll_enable ) |
| 4027 | 4027 | { |
| 4028 | | stv2_current_tilemap.scrolly = scrolly + (prev_scroll_values[i] >> 16); |
| 4028 | stv2_current_tilemap.scrolly = main_scrolly + (prev_scroll_values[i] >> 16); |
| 4029 | 4029 | i++; |
| 4030 | 4030 | } |
| 4031 | 4031 | |
| r20424 | r20425 | |
| 4040 | 4040 | |
| 4041 | 4041 | // if ( LOG_VDP2 ) logerror( "Linescroll: y < %d, %d >, scrollx = %d, scrolly = %d, incx = %f\n", mycliprect.min_y, mycliprect.max_y, stv2_current_tilemap.scrollx, stv2_current_tilemap.scrolly, (float)stv2_current_tilemap.incx/65536.0 ); |
| 4042 | 4042 | // render current tilemap portion |
| 4043 | | stv_vdp2_check_tilemap(machine, bitmap, mycliprect ); |
| 4043 | stv_vdp2_apply_window_on_layer(machine,mycliprect); |
| 4044 | 4044 | |
| 4045 | if (stv2_current_tilemap.bitmap_enable) // this layer is a bitmap |
| 4046 | { |
| 4047 | /*elandore doesn't like current cliprect code,will be worked on...*/ |
| 4048 | //if ( window_applied && stv2_current_tilemap.colour_depth != 4) |
| 4049 | // stv2_current_tilemap.window_control = 0; |
| 4050 | |
| 4051 | stv_vdp2_draw_basic_bitmap(machine, bitmap, mycliprect); |
| 4052 | } |
| 4053 | else |
| 4054 | { |
| 4055 | stv_vdp2_draw_basic_tilemap(machine, bitmap, mycliprect); |
| 4056 | } |
| 4057 | |
| 4045 | 4058 | // update parameters for next iteration |
| 4046 | 4059 | memcpy( prev_scroll_values, scroll_values, sizeof(scroll_values)); |
| 4047 | 4060 | cur_line += lines; |
trunk/src/emu/sound/scsp.c
| r20424 | r20425 | |
| 736 | 736 | case 0x7: |
| 737 | 737 | scsp_midi_in(space.machine().device("scsp"), space, 0, scsp->udata.data[0x6/2]&0xff, 0); |
| 738 | 738 | break; |
| 739 | case 8: |
| 740 | case 9: |
| 741 | /* Only MSLC could be written. */ |
| 742 | scsp->udata.data[0x8/2] &= 0x7800; |
| 743 | break; |
| 739 | 744 | case 0x12: |
| 740 | 745 | case 0x13: |
| 741 | 746 | case 0x14: |
| r20424 | r20425 | |
| 901 | 906 | unsigned int SGC = (slot->EG.state) & 3; |
| 902 | 907 | unsigned int CA = (slot->cur_addr>>(SHIFT+12)) & 0xf; |
| 903 | 908 | unsigned int EG = (0x1f - (slot->EG.volume>>(EG_SHIFT+5))) & 0x1f; |
| 904 | | scsp->udata.data[0x8/2] = (MSLC << 11) | (CA << 7) | (SGC << 5) | EG; |
| 909 | /* note: according to the manual MSLC is write only, CA, SGC and EG read only. */ |
| 910 | scsp->udata.data[0x8/2] = /*(MSLC << 11) |*/ (CA << 7) | (SGC << 5) | EG; |
| 905 | 911 | } |
| 906 | 912 | break; |
| 907 | 913 | |