aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-01-30 03:26:47 +0000
committerTravis Howell2004-01-30 03:26:47 +0000
commit519437aab119d1a93ee372d002fc51e9af6ecb24 (patch)
treea4b07911b7e7d1d130ff63a1810a5d14a47d5181
parentd1ac15e23c333c9c3297c9f1bee5b398f66b3284 (diff)
downloadscummvm-rg350-519437aab119d1a93ee372d002fc51e9af6ecb24.tar.gz
scummvm-rg350-519437aab119d1a93ee372d002fc51e9af6ecb24.tar.bz2
scummvm-rg350-519437aab119d1a93ee372d002fc51e9af6ecb24.zip
Add better work around for inventory arrows issue in some Simon1 versions.
Remove seom debugging output. svn-id: r12673
-rw-r--r--simon/simon.cpp11
-rw-r--r--simon/simon.h1
-rw-r--r--simon/vga.cpp21
3 files changed, 9 insertions, 24 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp
index 465fff7a69..b80f6bf869 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -362,7 +362,6 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
_vga_var5 = 0;
_vga_var7 = 0;
_vga_var8 = 0;
- _keep_arrows = 0;
_script_cond_a = 0;
_script_cond_b = 0;
@@ -1765,8 +1764,6 @@ void SimonEngine::setup_hit_areas(FillOrCopyStruct *fcs, uint fcs_index) {
ha->unk3 = 1;
// Simon1 specific
- if (!(_game & GF_WIN))
- _keep_arrows = 1;
o_kill_sprite_simon1(0x80);
start_vga_code(0, 1, 0x80, 0, 0, 0xE);
} else {
@@ -3001,9 +2998,6 @@ void SimonEngine::timer_vga_sprites() {
if (_video_var_9 == 2)
_video_var_9 = 1;
- if (_continous_vgascript)
- fprintf(_dump_file, "***\n");
-
if (_game & GF_SIMON2 && _vga_var3) {
timer_vga_sprites_helper();
}
@@ -3109,8 +3103,6 @@ void SimonEngine::timer_vga_sprites_2() {
vsp++;
}
- fprintf(_dump_file, "***\n");
-
_video_var_8++;
_vc_ptr = vc_ptr_org;
}
@@ -3385,8 +3377,7 @@ void SimonEngine::fcs_unk1(uint fcs_index) {
// ok
void SimonEngine::fcs_unk_5(FillOrCopyStruct *fcs, uint fcs_index) {
- if (_game & GF_WIN)
- o_kill_sprite_simon1(0x80);
+ o_kill_sprite_simon1(0x80);
}
void SimonEngine::delete_hitarea_by_index(uint index) {
diff --git a/simon/simon.h b/simon/simon.h
index e7582aa7b3..adfceeef33 100644
--- a/simon/simon.h
+++ b/simon/simon.h
@@ -266,7 +266,6 @@ protected:
bool _exit_cutscene;
bool _skip_speech;
byte _video_var_9;
- bool _keep_arrows;
uint _sound_file_id;
int16 _last_music_played;
diff --git a/simon/vga.cpp b/simon/vga.cpp
index c1b7888187..2cde65f487 100644
--- a/simon/vga.cpp
+++ b/simon/vga.cpp
@@ -1009,6 +1009,7 @@ void SimonEngine::vc_11_clear_pathfind_array() {
}
void SimonEngine::vc_12_delay() {
+ VgaSprite *vsp = find_cur_sprite();
uint num;
if (!(_game & GF_SIMON2)) {
@@ -1017,10 +1018,14 @@ void SimonEngine::vc_12_delay() {
num = vc_read_next_byte() * _vga_base_delay;
}
- if (_continous_vgascript)
- fprintf(_dump_file, "; sleep_ex = %d\n", num + VGA_DELAY_BASE);
+ // Work around to allow inventory arrows to be
+ // shown in some versions of Simon the Sorcerer 1
+ if (!(_game & GF_SIMON2) && !(_game & GF_WIN) && vsp->id == 0x80)
+ num = 0;
+ else
+ num += VGA_DELAY_BASE;
- add_vga_timer(num + VGA_DELAY_BASE, _vc_ptr, _vga_cur_sprite_id, _vga_cur_file_id);
+ add_vga_timer(num, _vc_ptr, _vga_cur_sprite_id, _vga_cur_file_id);
_vc_ptr = (byte *)&vc_get_out_of_code;
}
@@ -1202,13 +1207,6 @@ void SimonEngine::vc_24_set_sprite_xy() {
void SimonEngine::vc_25_halt_sprite() {
VgaSprite *vsp = find_cur_sprite();
- // Work around to allow inventory arrows to be
- // showned in some versions of Simon the Sorcerer 1
- if (vsp->id == 0x80 && _keep_arrows) {
- _keep_arrows = 0;
- return;
- }
-
while (vsp->id != 0) {
memcpy(vsp, vsp + 1, sizeof(VgaSprite));
vsp++;
@@ -1597,9 +1595,6 @@ void SimonEngine::vc_56_delay() {
if (_game & GF_SIMON2) {
uint num = vc_read_var_or_word() * _vga_base_delay;
- if (_continous_vgascript)
- fprintf(_dump_file, "; sleep_ex = %d\n", num + VGA_DELAY_BASE);
-
add_vga_timer(num + VGA_DELAY_BASE, _vc_ptr, _vga_cur_sprite_id, _vga_cur_file_id);
_vc_ptr = (byte *)&vc_get_out_of_code;
}