diff options
Diffstat (limited to 'simon')
-rw-r--r-- | simon/simon.cpp | 67 |
1 files changed, 37 insertions, 30 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp index b2f2c3774c..2b5bc42bab 100644 --- a/simon/simon.cpp +++ b/simon/simon.cpp @@ -1744,10 +1744,16 @@ void SimonEngine::f10_key() { uint count; uint y_, x_; byte *dst; - uint b; + uint b, color; _lock_word |= 0x8000; + if (_game & GF_SIMON2) + color = 0xec; + else + color = 0xe1; + + for (int i = 0; i < 5; i++) { ha = _hit_areas; count = ARRAYSIZE(_hit_areas); @@ -1755,9 +1761,10 @@ void SimonEngine::f10_key() { timer_vga_sprites(); do { - if (ha->id != 0 && ha->flags & 0x20 && !(ha->flags & 0x40)) { - if (ha->y >= 0xc8 || ha->y >= _vga_var8) - continue; + if (ha->id != 0 && ha->flags & 0x20 && !(ha->flags & 0x40) && ha->flags & 1) { + if (_game & GF_SIMON2) + if (ha->y >= 0xc8 || ha->y >= _vga_var8) + continue; y_ = (ha->height >> 1) - 4 + ha->y; @@ -1771,37 +1778,37 @@ void SimonEngine::f10_key() { dst += (((_dx_surface_pitch >> 2) * y_) << 2) + x_; b = _dx_surface_pitch; - dst[4] = 0xec; - dst[b+1] = 0xec; - dst[b+4] = 0xec; - dst[b+7] = 0xec; + dst[4] = color; + dst[b+1] = color; + dst[b+4] = color; + dst[b+7] = color; b += _dx_surface_pitch; - dst[b+2] = 0xec; - dst[b+4] = 0xec; - dst[b+6] = 0xec; + dst[b+2] = color; + dst[b+4] = color; + dst[b+6] = color; b += _dx_surface_pitch; - dst[b+3] = 0xec; - dst[b+5] = 0xec; + dst[b+3] = color; + dst[b+5] = color; b += _dx_surface_pitch; - dst[b] = 0xec; - dst[b+1] = 0xec; - dst[b+2] = 0xec; - dst[b+6] = 0xec; - dst[b+7] = 0xec; - dst[b+8] = 0xec; + dst[b] = color; + dst[b+1] = color; + dst[b+2] = color; + dst[b+6] = color; + dst[b+7] = color; + dst[b+8] = color; b += _dx_surface_pitch; - dst[b+3] = 0xec; - dst[b+5] = 0xec; + dst[b+3] = color; + dst[b+5] = color; b += _dx_surface_pitch; - dst[b+2] = 0xec; - dst[b+4] = 0xec; - dst[b+6] = 0xec; + dst[b+2] = color; + dst[b+4] = color; + dst[b+6] = color; b += _dx_surface_pitch; - dst[b+1] = 0xec; - dst[b+4] = 0xec; - dst[b+7] = 0xec; + dst[b+1] = color; + dst[b+4] = color; + dst[b+7] = color; b += _dx_surface_pitch; - dst[b+4] = 0xec; + dst[b+4] = color; dx_unlock_attached(); } @@ -1834,7 +1841,7 @@ startOver: _last_hitarea = NULL; _last_hitarea_3 = NULL; for (;;) { - if (_game & GF_SIMON2 && _key_pressed == 35) + if (_key_pressed == 35) f10_key(); processSpecialKeys(); if (_last_hitarea_3 == (HitArea *) 0xFFFFFFFF) @@ -3870,7 +3877,7 @@ void SimonEngine::talk_with_text(uint num_1, uint num_2, const char *string_ptr, len_div_3 >>= 1; if (_variableArray[86] == 2) len_div_3 <<= 1; - _variableArray[85] = len_div_3 * 5; + _variableArray[85] = len_div_3 * 2; } num_of_rows = strlen(string_ptr) / letters_per_row; |