aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/engine/kyra_rpg.cpp
diff options
context:
space:
mode:
authorathrxx2019-02-16 00:51:42 +0100
committerathrxx2019-03-06 20:48:21 +0100
commit946597d3b293fa75d7f0a39f345ad07a36052bd1 (patch)
treeeaada3e2605e00756934e0526e03c9f3b81a943c /engines/kyra/engine/kyra_rpg.cpp
parent21712209c05605d4a75ef2e0f1f9b8bce3a547e7 (diff)
downloadscummvm-rg350-946597d3b293fa75d7f0a39f345ad07a36052bd1.tar.gz
scummvm-rg350-946597d3b293fa75d7f0a39f345ad07a36052bd1.tar.bz2
scummvm-rg350-946597d3b293fa75d7f0a39f345ad07a36052bd1.zip
KYRA: (EOB1/Amiga) - fix level graphics
Diffstat (limited to 'engines/kyra/engine/kyra_rpg.cpp')
-rw-r--r--engines/kyra/engine/kyra_rpg.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/engines/kyra/engine/kyra_rpg.cpp b/engines/kyra/engine/kyra_rpg.cpp
index 3d7a4df208..46fef3fcff 100644
--- a/engines/kyra/engine/kyra_rpg.cpp
+++ b/engines/kyra/engine/kyra_rpg.cpp
@@ -43,12 +43,16 @@ KyraRpgEngine::KyraRpgEngine(OSystem *system, const GameFlags &flags) : KyraEngi
_vcnBlocks = 0;
_vcfBlocks = 0;
- _vcnTransitionMask = 0;
+ _vcnTransitionMask = _vcnMaskTbl = 0;
_vcnShift = 0;
_vcnColTable = 0;
+ _vcnShiftVal = 0;
_vcnBpp = flags.useHiColorMode ? 2 : 1;
+ _vcnSrcBitsPerPixel = (flags.platform == Common::kPlatformAmiga) ? 5 : (_vcnBpp == 2 ? 8 : 4);
+ _vcnDrawLine = 0;
+
_vmpPtr = 0;
- _blockBrightness = _wllVcnOffset = 0;
+ _blockBrightness = _wllVcnOffset = _wllVcnOffset2 = _wllVcnRmdOffset = 0;
_blockDrawingBuffer = 0;
_sceneWindowBuffer = 0;
_monsterShapes = _monsterPalettes = 0;
@@ -135,6 +139,7 @@ KyraRpgEngine::~KyraRpgEngine() {
delete[] _vcnShift;
delete[] _blockDrawingBuffer;
delete[] _sceneWindowBuffer;
+ delete _vcnDrawLine;
delete[] _lvlShapeTop;
delete[] _lvlShapeBottom;
@@ -184,6 +189,16 @@ Common::Error KyraRpgEngine::init() {
for (int i = 0; i < 128; i++)
_vcnColTable[i] = i & 0x0F;
+ if (_vcnBpp == 2)
+ _vcnDrawLine = new VcnLineDrawingMethods(new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_hiCol), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_hiCol),
+ new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_trans_hiCol), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_trans_hiCol));
+ else if (_flags.platform == Common::kPlatformAmiga)
+ _vcnDrawLine = new VcnLineDrawingMethods(new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_Amiga), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_Amiga),
+ new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_trans_Amiga), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_trans_Amiga));
+ else
+ _vcnDrawLine = new VcnLineDrawingMethods(new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_4bit), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_4bit),
+ new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_fw_trans_4bit), new VcnDrawProc(this, &KyraRpgEngine::vcnDraw_bw_trans_4bit));
+
_doorShapes = new uint8*[6];
memset(_doorShapes, 0, 6 * sizeof(uint8 *));