aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/vga.cpp
diff options
context:
space:
mode:
authorMax Horn2007-06-30 17:34:49 +0000
committerMax Horn2007-06-30 17:34:49 +0000
commita6210289f5e22c135bd3c0738350bf2df3c8f7d9 (patch)
tree8b8100e6a8655d68027b579a70da233a4e72c6dd /engines/agos/vga.cpp
parenta5352e9a97daa92c8d6f5f4dfafc859937302508 (diff)
downloadscummvm-rg350-a6210289f5e22c135bd3c0738350bf2df3c8f7d9.tar.gz
scummvm-rg350-a6210289f5e22c135bd3c0738350bf2df3c8f7d9.tar.bz2
scummvm-rg350-a6210289f5e22c135bd3c0738350bf2df3c8f7d9.zip
AGOS code cleanup
svn-id: r27794
Diffstat (limited to 'engines/agos/vga.cpp')
-rw-r--r--engines/agos/vga.cpp53
1 files changed, 17 insertions, 36 deletions
diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp
index 2b8f6d3a09..38c401a80d 100644
--- a/engines/agos/vga.cpp
+++ b/engines/agos/vga.cpp
@@ -70,8 +70,8 @@ void AGOSEngine::setupVideoOpcodes(VgaOpcodeProc *op) {
op[36] = &AGOSEngine::vc36_setWindowImage;
op[38] = &AGOSEngine::vc38_ifVarNotZero;
op[39] = &AGOSEngine::vc39_setVar;
- op[40] = &AGOSEngine::vc40;
- op[41] = &AGOSEngine::vc41;
+ op[40] = &AGOSEngine::vc40_scrollRight;
+ op[41] = &AGOSEngine::vc41_scrollLeft;
op[42] = &AGOSEngine::vc42_delayIfNotEQ;
op[43] = &AGOSEngine::vc43_ifBitSet;
op[44] = &AGOSEngine::vc44_ifBitClear;
@@ -124,8 +124,8 @@ void AGOSEngine_Elvira1::setupVideoOpcodes(VgaOpcodeProc *op) {
op[41] = &AGOSEngine::vc37_pokePalette;
op[51] = &AGOSEngine::vc38_ifVarNotZero;
op[52] = &AGOSEngine::vc39_setVar;
- op[53] = &AGOSEngine::vc40;
- op[54] = &AGOSEngine::vc41;
+ op[53] = &AGOSEngine::vc40_scrollRight;
+ op[54] = &AGOSEngine::vc41_scrollLeft;
op[56] = &AGOSEngine::vc42_delayIfNotEQ;
}
@@ -1257,57 +1257,38 @@ void AGOSEngine::vc39_setVar() {
vcWriteVar(var, value);
}
-void AGOSEngine::vc40() {
+void AGOSEngine::vc40_scrollRight() {
uint16 var = vcReadNextWord();
int16 value = vcReadVar(var) + vcReadNextWord();
if (getGameType() == GType_SIMON2 && var == 15 && !getBitFlag(80)) {
- int16 tmp;
- if (_scrollCount != 0) {
- if (_scrollCount >= 0)
- goto no_scroll;
+ if ((_scrollCount < 0) || (_scrollCount == 0 && _scrollFlag == 0)) {
_scrollCount = 0;
- } else {
- if (_scrollFlag != 0)
- goto no_scroll;
- }
-
- if (value - _scrollX >= 30) {
- _scrollCount = 20;
- tmp = _scrollXMax - _scrollX;
- if (tmp < 20)
- _scrollCount = tmp;
- addVgaEvent(6, SCROLL_EVENT, NULL, 0, 0);
+ if (value - _scrollX >= 30) {
+ _scrollCount = MIN(20, _scrollXMax - _scrollX);
+ addVgaEvent(6, SCROLL_EVENT, NULL, 0, 0);
+ }
}
}
-no_scroll:;
vcWriteVar(var, value);
}
-void AGOSEngine::vc41() {
+void AGOSEngine::vc41_scrollLeft() {
uint16 var = vcReadNextWord();
int16 value = vcReadVar(var) - vcReadNextWord();
if (getGameType() == GType_SIMON2 && var == 15 && !getBitFlag(80)) {
- if (_scrollCount != 0) {
- if (_scrollCount < 0)
- goto no_scroll;
- _scrollCount = 0;
- } else {
- if (_scrollFlag != 0)
- goto no_scroll;
- }
- if ((uint16)(value - _scrollX) < 11) {
- _scrollCount = -20;
- if (_scrollX < 20)
- _scrollCount = -_scrollX;
- addVgaEvent(6, SCROLL_EVENT, NULL, 0, 0);
+ if ((_scrollCount > 0) || (_scrollCount == 0 && _scrollFlag == 0)) {
+ _scrollCount = 0;
+ if ((uint16)(value - _scrollX) < 11) {
+ _scrollCount = -MIN(20, (int)_scrollX);
+ addVgaEvent(6, SCROLL_EVENT, NULL, 0, 0);
+ }
}
}
-no_scroll:;
vcWriteVar(var, value);
}