aboutsummaryrefslogtreecommitdiff
path: root/simon/simon.cpp
diff options
context:
space:
mode:
authorMax Horn2004-12-18 02:08:32 +0000
committerMax Horn2004-12-18 02:08:32 +0000
commit06315c1ce1cc8fbf2d05637603d27f6dbc6c0cf2 (patch)
tree0a94215e7653e477dc4758a8e6882cb2d63f0806 /simon/simon.cpp
parent0ceb634fd4f0ccac5012ed7db61f131b814b7a3b (diff)
downloadscummvm-rg350-06315c1ce1cc8fbf2d05637603d27f6dbc6c0cf2.tar.gz
scummvm-rg350-06315c1ce1cc8fbf2d05637603d27f6dbc6c0cf2.tar.bz2
scummvm-rg350-06315c1ce1cc8fbf2d05637603d27f6dbc6c0cf2.zip
A little more cleanup (the Simon code really is a big mess :-)
svn-id: r16107
Diffstat (limited to 'simon/simon.cpp')
-rw-r--r--simon/simon.cpp69
1 files changed, 42 insertions, 27 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp
index f6f6cd3da2..f547010f63 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -495,8 +495,8 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
_x_scroll = 0;
_vga_var1 = 0;
_vga_var2 = 0;
- _vga_var3 = 0;
- _vga_var5 = 0;
+ _xscroll_step = 0;
+ _sprite_height = 0;
_vga_var7 = 0;
_vga_var8 = 0;
@@ -727,6 +727,18 @@ int SimonEngine::init(GameDetector &detector) {
}
SimonEngine::~SimonEngine() {
+ delete _game_file;
+
+ midi.close();
+
+ free(_stringtab_ptr);
+ free(_itemarray_ptr);
+ free(_itemheap_ptr - _itemheap_curpos);
+ free(_tablesheap_ptr - _tablesheap_curpos);
+ free(_tbl_list);
+ free(_icon_file_ptr);
+ free(_game_offsets_ptr);
+
delete _dummy_item_1;
delete _dummy_item_2;
delete _dummy_item_3;
@@ -1018,8 +1030,9 @@ void SimonEngine::setItemUnk3(Item *item, int value) {
}
int SimonEngine::getNextWord() {
+ int16 a = (int16)READ_BE_UINT16(_code_ptr);
_code_ptr += 2;
- return (int16)((_code_ptr[-2] << 8) | _code_ptr[-1]);
+ return a;
}
uint SimonEngine::getNextStringID() {
@@ -1034,7 +1047,7 @@ uint SimonEngine::getVarOrByte() {
}
uint SimonEngine::getVarOrWord() {
- uint a = (_code_ptr[0] << 8) | _code_ptr[1];
+ uint a = READ_BE_UINT16(_code_ptr);
_code_ptr += 2;
if (a >= 30000 && a < 30512)
return readVariable(a - 30000);
@@ -1348,7 +1361,7 @@ void SimonEngine::loadTablesIntoMem(uint subr_id) {
}
}
- debug(1,"loadTablesIntoMem: didn't find %d", subr_id);
+ debug(1,"loadTablesIntoMem: didn't find %d", subr_id);
}
void SimonEngine::playSting(uint a) {
@@ -1718,10 +1731,10 @@ void SimonEngine::handle_mouse_moved() {
if (_vga_var2 == 0) {
if (_mouse_x >= 631 / 2) {
if (_x_scroll != _vga_var1)
- _vga_var3 = 1;
+ _xscroll_step = 1;
} else if (_mouse_x < 8) {
if (_x_scroll != 0)
- _vga_var3 = -1;
+ _xscroll_step = -1;
}
}
} else {
@@ -2469,8 +2482,8 @@ void SimonEngine::set_video_mode_internal(uint mode, uint vga_res_id) {
_x_scroll = 0;
_vga_var1 = 0;
_vga_var2 = 0;
- _vga_var3 = 0;
- _vga_var5 = 134;
+ _xscroll_step = 0;
+ _sprite_height = 134;
if (_variableArray[34] != -1)
_variableArray[251] = 0;
}
@@ -2586,14 +2599,14 @@ void SimonEngine::scroll_timeout() {
return;
if (_vga_var2 < 0) {
- if (_vga_var3 != -1) {
- _vga_var3 = -1;
+ if (_xscroll_step != -1) {
+ _xscroll_step = -1;
if (++_vga_var2 == 0)
return;
}
} else {
- if (_vga_var3 != 1) {
- _vga_var3 = 1;
+ if (_xscroll_step != 1) {
+ _xscroll_step = 1;
if (--_vga_var2 == 0)
return;
}
@@ -2718,7 +2731,7 @@ void SimonEngine::timer_vga_sprites() {
if (_video_var_9 == 2)
_video_var_9 = 1;
- if (_game & GF_SIMON2 && _vga_var3) {
+ if (_game & GF_SIMON2 && _xscroll_step) {
timer_vga_sprites_helper();
}
@@ -2762,34 +2775,34 @@ void SimonEngine::timer_vga_sprites_helper() {
const byte *src;
uint x;
- if (_vga_var3 < 0) {
- memmove(dst + 8, dst, 320 * _vga_var5 - 8);
+ if (_xscroll_step < 0) {
+ memmove(dst + 8, dst, 320 * _sprite_height - 8);
} else {
- memmove(dst, dst + 8, 320 * _vga_var5 - 8);
+ memmove(dst, dst + 8, 320 * _sprite_height - 8);
}
x = _x_scroll - 1;
- if (_vga_var3 > 0) {
+ if (_xscroll_step > 0) {
dst += 320 - 8;
x += 41;
}
src = _vga_var7 + x * 4;
- decodeStripA(dst, src + READ_BE_UINT32(src), _vga_var5);
+ decodeStripA(dst, src + READ_BE_UINT32(src), _sprite_height);
dx_unlock_2();
memcpy(_sdl_buf_attached, _sdl_buf, 320 * 200);
- dx_copy_from_attached_to_3(_vga_var5);
+ dx_copy_from_attached_to_3(_sprite_height);
- _x_scroll += _vga_var3;
+ _x_scroll += _xscroll_step;
vc_write_var(0xfB, _x_scroll);
- _vga_var3 = 0;
+ _xscroll_step = 0;
}
void SimonEngine::timer_vga_sprites_2() {
@@ -4018,16 +4031,18 @@ int SimonEngine::go() {
}
void SimonEngine::shutdown() {
- if (_game_file) {
- delete _game_file;
- _game_file = NULL;
- }
+ delete _game_file;
+
+ midi.close();
free(_stringtab_ptr);
free(_itemarray_ptr);
free(_itemheap_ptr - _itemheap_curpos);
free(_tablesheap_ptr - _tablesheap_curpos);
- midi.close();
+ free(_tbl_list);
+ free(_icon_file_ptr);
+ free(_game_offsets_ptr);
+
_system->quit();
}