src/mess/machine/sms.c
| r9595 | r9596 | |
| 268 | 268 | } |
| 269 | 269 | |
| 270 | 270 | |
| 271 | | // at each frame we check if lightguns are enabled in one of the ports: |
| 271 | // at each input port read we check if lightguns are enabled in one of the ports: |
| 272 | 272 | // if so, we turn on crosshair and the lightgun timer |
| 273 | 273 | static TIMER_CALLBACK( lightgun_tick ) |
| 274 | 274 | { |
| r9595 | r9596 | |
| 1927 | 1927 | } |
| 1928 | 1928 | |
| 1929 | 1929 | |
| 1930 | | /* This needs to be here to check if segascope has been enabled */ |
| 1931 | 1930 | static void sms_black_bitmap( const screen_device *screen, bitmap_t *bitmap ) |
| 1932 | 1931 | { |
| 1933 | 1932 | const int width = screen->width(); |
| r9595 | r9596 | |
| 1959 | 1958 | UINT8 sscope_binocular_hack = input_port_read_safe(screen->machine, "SSCOPE_BINOCULAR", 0x00); |
| 1960 | 1959 | UINT8 occluded_view = 0; |
| 1961 | 1960 | |
| 1962 | | // without SuperScope, both LCDs for glasses go black |
| 1961 | // without SegaScope, both LCDs for glasses go black |
| 1963 | 1962 | if ((screen != state->main_scr) && !sscope) |
| 1964 | 1963 | occluded_view = 1; |
| 1965 | 1964 | |
| 1966 | | // with SuperScope, sscope_state 0 = left screen OFF, right screen ON |
| 1965 | // with SegaScope, sscope_state 0 = left screen OFF, right screen ON |
| 1967 | 1966 | if (!(state->sscope_state & 0x01) && (screen == state->left_lcd)) |
| 1968 | 1967 | occluded_view = 1; |
| 1969 | 1968 | |
| 1970 | | // with SuperScope, sscope_state 1 = left screen ON, right screen OFF |
| 1969 | // with SegaScope, sscope_state 1 = left screen ON, right screen OFF |
| 1971 | 1970 | if ((state->sscope_state & 0x01) && (screen == state->right_lcd)) |
| 1972 | 1971 | occluded_view = 1; |
| 1973 | 1972 | |
| r9595 | r9596 | |
| 2026 | 2025 | sms_vdp_update(state->vdp, state->tmp_bitmap, cliprect); |
| 2027 | 2026 | |
| 2028 | 2027 | // HACK: fake LCD persistence effect |
| 2029 | | // (it would be better to generalized this in the core, to be used for all LCD systems) |
| 2028 | // (it would be better to generalize this in the core, to be used for all LCD systems) |
| 2030 | 2029 | for (y = 0; y < height; y++) |
| 2031 | 2030 | { |
| 2032 | 2031 | UINT32 *line0 = BITMAP_ADDR32(state->tmp_bitmap, y, 0); |