diff options
author | Max Horn | 2003-05-28 20:01:47 +0000 |
---|---|---|
committer | Max Horn | 2003-05-28 20:01:47 +0000 |
commit | 1f70da01556164c5b39bb0e804e2c919dd7b3c83 (patch) | |
tree | 3b39f7df442c0cc00fb9bf93dd33808e7982f89b | |
parent | 01ac371c6afd94b4987528a49ee2bfe8c1cf84ea (diff) | |
download | scummvm-rg350-1f70da01556164c5b39bb0e804e2c919dd7b3c83.tar.gz scummvm-rg350-1f70da01556164c5b39bb0e804e2c919dd7b3c83.tar.bz2 scummvm-rg350-1f70da01556164c5b39bb0e804e2c919dd7b3c83.zip |
const as const can!
svn-id: r8058
-rw-r--r-- | scumm/actor.cpp | 6 | ||||
-rw-r--r-- | scumm/akos.cpp | 55 | ||||
-rw-r--r-- | scumm/akos.h | 22 | ||||
-rw-r--r-- | scumm/gfx.cpp | 81 | ||||
-rw-r--r-- | scumm/gfx.h | 6 | ||||
-rw-r--r-- | scumm/object.cpp | 132 | ||||
-rw-r--r-- | scumm/object.h | 10 | ||||
-rw-r--r-- | scumm/resource.cpp | 12 | ||||
-rw-r--r-- | scumm/resource.h | 12 | ||||
-rw-r--r-- | scumm/script.cpp | 6 | ||||
-rw-r--r-- | scumm/scumm.h | 20 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 10 | ||||
-rw-r--r-- | scumm/verbs.cpp | 11 |
13 files changed, 217 insertions, 166 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp index 9955621abf..0b9b7646e6 100644 --- a/scumm/actor.cpp +++ b/scumm/actor.cpp @@ -1004,7 +1004,7 @@ void Actor::animateLimb(int limb, int f) { if (costume == 0) return; - byte *aksq, *akfo; + const byte *aksq, *akfo; uint size; byte *akos = _vm->getResourceAddress(rtCostume, costume); assert(akos); @@ -1016,7 +1016,7 @@ void Actor::animateLimb(int limb, int f) { while (f--) { if (cost.active[limb] != 0) - _vm->akos_increaseAnim(this, limb, aksq, (uint16 *)akfo, size); + _vm->akos_increaseAnim(this, limb, aksq, (const uint16 *)akfo, size); } // needRedraw = true; @@ -1422,7 +1422,7 @@ byte *Actor::getActorName() { } void Actor::remapActorPalette(int r_fact, int g_fact, int b_fact, int threshold) { - byte *akos, *rgbs, *akpl; + const byte *akos, *rgbs, *akpl; int akpl_size, i; int r, g, b; byte akpl_color; diff --git a/scumm/akos.cpp b/scumm/akos.cpp index cfced1bc87..306b65a426 100644 --- a/scumm/akos.cpp +++ b/scumm/akos.cpp @@ -101,12 +101,12 @@ enum AkosOpcodes { bool Scumm::akos_hasManyDirections(Actor *a) { byte *akos; - AkosHeader *akhd; + const AkosHeader *akhd; akos = getResourceAddress(rtCostume, a->costume); assert(akos); - akhd = (AkosHeader *) findResourceData(MKID('AKHD'), akos); + akhd = (const AkosHeader *)findResourceData(MKID('AKHD'), akos); return (akhd->flags & 2) != 0; } @@ -119,8 +119,8 @@ int Scumm::akos_frameToAnim(Actor *a, int frame) { void Scumm::akos_decodeData(Actor *a, int frame, uint usemask) { uint anim; - byte *akos, *r; - AkosHeader *akhd; + const byte *akos, *r; + const AkosHeader *akhd; uint offs; int i; byte code; @@ -135,7 +135,7 @@ void Scumm::akos_decodeData(Actor *a, int frame, uint usemask) { akos = getResourceAddress(rtCostume, a->costume); assert(akos); - akhd = (AkosHeader *) findResourceData(MKID('AKHD'), akos); + akhd = (const AkosHeader *)findResourceData(MKID('AKHD'), akos); if (anim >= READ_LE_UINT16(&akhd->num_anims)) return; @@ -193,7 +193,7 @@ void Scumm::akos_decodeData(Actor *a, int frame, uint usemask) { } void AkosRenderer::setPalette(byte *new_palette) { - byte *the_akpl; + const byte *the_akpl; uint size, i; the_akpl = _vm->findResourceData(MKID('AKPL'), akos); @@ -220,8 +220,8 @@ void AkosRenderer::setCostume(int costume) { akos = _vm->getResourceAddress(rtCostume, costume); assert(akos); - akhd = (AkosHeader *) _vm->findResourceData(MKID('AKHD'), akos); - akof = (AkosOffset *) _vm->findResourceData(MKID('AKOF'), akos); + akhd = (const AkosHeader *) _vm->findResourceData(MKID('AKHD'), akos); + akof = (const AkosOffset *) _vm->findResourceData(MKID('AKOF'), akos); akci = _vm->findResourceData(MKID('AKCI'), akos); aksq = _vm->findResourceData(MKID('AKSQ'), akos); akcd = _vm->findResourceData(MKID('AKCD'), akos); @@ -237,9 +237,9 @@ void AkosRenderer::setFacing(Actor *a) { byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) { uint code; - byte *p; - AkosOffset *off; - AkosCI *the_akci; + const byte *p; + const AkosOffset *off; + const AkosCI *the_akci; uint i, extra; if (!cost.active[limb] || cost.stopped & (1 << limb)) @@ -257,11 +257,11 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) { if (code != AKC_ComplexChan) { off = akof + (code & 0xFFF); - assert((code & 0xFFF) * 6 < READ_BE_UINT32_UNALIGNED((byte *)akof - 4) - 8); + assert((code & 0xFFF) * 6 < READ_BE_UINT32_UNALIGNED((const byte *)akof - 4) - 8); assert((code & 0x7000) == 0); srcptr = akcd + READ_LE_UINT32(&off->akcd); - the_akci = (AkosCI *) (akci + READ_LE_UINT16(&off->akci)); + the_akci = (const AkosCI *) (akci + READ_LE_UINT16(&off->akci)); _xmoveCur = _xmove + (int16)READ_LE_UINT16(&the_akci->rel_x); _ymoveCur = _ymove + (int16)READ_LE_UINT16(&the_akci->rel_y); @@ -294,7 +294,7 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) { off = akof + code; srcptr = akcd + READ_LE_UINT32(&off->akcd); - the_akci = (AkosCI *) (akci + READ_LE_UINT16(&off->akci)); + the_akci = (const AkosCI *) (akci + READ_LE_UINT16(&off->akci)); _xmoveCur = _xmove + (int16)READ_LE_UINT16(p + 0); _ymoveCur = _ymove + (int16)READ_LE_UINT16(p + 2); @@ -324,7 +324,8 @@ byte AkosRenderer::drawLimb(const CostumeData &cost, int limb) { } void AkosRenderer::codec1_genericDecode() { - byte *src, *dst; + const byte *src; + byte *dst; byte len, maskbit; uint y, color, height; const byte *scaleytab, *mask; @@ -386,7 +387,8 @@ void AkosRenderer::codec1_genericDecode() { } void AkosRenderer::codec1_spec1() { - byte *src, *dst; + const byte *src; + byte *dst; byte len, maskbit; uint y, color, height; byte pcolor; @@ -456,7 +458,8 @@ void AkosRenderer::codec1_spec2() { } void AkosRenderer::codec1_spec3() { - byte *src, *dst; + const byte *src; + byte *dst; byte len, maskbit; uint y, color, height; uint pcolor; @@ -876,7 +879,7 @@ void AkosRenderer::codec1_ignorePakCols(int num) { int n; byte repcolor; byte replen; - byte *src; + const byte *src; n = _height; if (num > 1) @@ -980,7 +983,7 @@ void AkosRenderer::codec5() { _vm->_bompActorPalletePtr = NULL; } -void AkosRenderer::akos16SetupBitReader(byte *src) { +void AkosRenderer::akos16SetupBitReader(const byte *src) { akos16.unk5 = 0; akos16.numbits = 16; akos16.mask = (1 << *src) - 1; @@ -990,7 +993,7 @@ void AkosRenderer::akos16SetupBitReader(byte *src) { akos16.dataptr = src + 4; } -void AkosRenderer::akos16PutOnScreen(byte *dest, byte *src, byte transparency, int32 count) { +void AkosRenderer::akos16PutOnScreen(byte *dest, const byte *src, byte transparency, int32 count) { byte tmp_data; if (count == 0) @@ -1152,7 +1155,7 @@ void AkosRenderer::akos16ApplyMask(byte *dest, byte *maskptr, byte bits, int32 c } } -void AkosRenderer::akos16Decompress(byte *dest, int32 pitch, byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency) { +void AkosRenderer::akos16Decompress(byte *dest, int32 pitch, const byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency) { byte *tmp_buf = akos16.buffer; if (dir < 0) { @@ -1179,7 +1182,7 @@ void AkosRenderer::akos16Decompress(byte *dest, int32 pitch, byte *src, int32 t_ } } -void AkosRenderer::akos16DecompressMask(byte *dest, int32 pitch, byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency, byte * maskptr, int32 bitpos_start) { +void AkosRenderer::akos16DecompressMask(byte *dest, int32 pitch, const byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency, byte * maskptr, int32 bitpos_start) { byte *tmp_buf = akos16.buffer; int maskpitch; @@ -1334,8 +1337,8 @@ void AkosRenderer::codec16() { akos16DecompressMask(dest, pitch, srcptr, cur_x, out_height, dir, numskip_before, numskip_after, transparency, ptr, clip_left / 8); } -bool Scumm::akos_increaseAnims(byte *akos, Actor *a) { - byte *aksq, *akfo; +bool Scumm::akos_increaseAnims(const byte *akos, Actor *a) { + const byte *aksq, *akfo; int i; uint size; bool result; @@ -1348,7 +1351,7 @@ bool Scumm::akos_increaseAnims(byte *akos, Actor *a) { result = false; for (i = 0; i < 16; i++) { if (a->cost.active[i] != 0) - result |= akos_increaseAnim(a, i, aksq, (uint16 *)akfo, size); + result |= akos_increaseAnim(a, i, aksq, (const uint16 *)akfo, size); } return result; } @@ -1357,7 +1360,7 @@ bool Scumm::akos_increaseAnims(byte *akos, Actor *a) { #define GUW(o) READ_LE_UINT16(aksq+curpos+(o)) #define GB(o) aksq[curpos+(o)] -bool Scumm::akos_increaseAnim(Actor *a, int chan, byte *aksq, uint16 *akfo, int numakfo) { +bool Scumm::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const uint16 *akfo, int numakfo) { byte active; uint old_curpos, curpos, end; uint code; diff --git a/scumm/akos.h b/scumm/akos.h index 6952741f4a..4c30acfdab 100644 --- a/scumm/akos.h +++ b/scumm/akos.h @@ -36,7 +36,7 @@ public: protected: uint16 codec; - byte *srcptr; + const byte *srcptr; // movement of cel to decode int _xmoveCur, _ymoveCur; @@ -45,12 +45,12 @@ protected: byte palette[256]; // pointer to various parts of the costume resource - byte *akos; - AkosHeader *akhd; + const byte *akos; + const AkosHeader *akhd; - byte *akpl, *akci, *aksq; - AkosOffset *akof; - byte *akcd; + const byte *akpl, *akci, *aksq; + const AkosOffset *akof; + const byte *akcd; struct { /* codec stuff */ @@ -77,7 +77,7 @@ protected: byte shift; uint16 bits; byte numbits; - byte *dataptr; + const byte *dataptr; byte buffer[336]; } akos16; @@ -111,13 +111,13 @@ protected: void codec5(); void codec16(); - void akos16SetupBitReader(byte *src); - void akos16PutOnScreen(byte *dest, byte *src, byte transparency, int32 count); + void akos16SetupBitReader(const byte *src); + void akos16PutOnScreen(byte *dest, const byte *src, byte transparency, int32 count); void akos16SkipData(int32 numskip); void akos16DecodeLine(byte *buf, int32 numbytes, int32 dir); void akos16ApplyMask(byte *dest, byte *maskptr, byte bits, int32 count, byte fillwith); - void akos16Decompress(byte *dest, int32 pitch, byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency); - void akos16DecompressMask(byte *dest, int32 pitch, byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency, byte *maskptr, int32 bitpos_start); + void akos16Decompress(byte *dest, int32 pitch, const byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency); + void akos16DecompressMask(byte *dest, int32 pitch, const byte *src, int32 t_width, int32 t_height, int32 dir, int32 numskip_before, int32 numskip_after, byte transparency, byte *maskptr, int32 bitpos_start); }; #endif diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp index 6451860a26..32dfde2e11 100644 --- a/scumm/gfx.cpp +++ b/scumm/gfx.cpp @@ -586,7 +586,7 @@ void Scumm::drawBox(int x, int y, int x2, int y2, int color) { #pragma mark - void Scumm::initBGBuffers(int height) { - byte *ptr; + const byte *ptr; int size, itemsize, i; byte *room; @@ -923,15 +923,17 @@ bool Scumm::isMaskActiveAt(int l, int t, int r, int b, byte *mem) { #pragma mark --- Image drawing --- #pragma mark - -void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, const int height, +void Gdi::drawBitmap(const byte *ptr, VirtScreen *vs, int x, int y, const int width, const int height, int stripnr, int numstrip, byte flag) { assert(ptr); assert(height > 0); - byte *backbuff_ptr, *bgbak_ptr, *smap_ptr; + byte *backbuff_ptr, *bgbak_ptr; + const byte *smap_ptr; + const byte *z_plane_ptr; byte *mask_ptr; int i; - byte *zplane_list[9]; + const byte *zplane_list[9]; int bottom; int numzbuf; @@ -976,7 +978,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c } } else if (_vm->_features & GF_AFTER_V8) { // Find the OFFS chunk of the ZPLN chunk - byte *zplnOffsChunkStart = smap_ptr + READ_BE_UINT32(smap_ptr + 12) + 24; + const byte *zplnOffsChunkStart = smap_ptr + READ_BE_UINT32(smap_ptr + 12) + 24; // Each ZPLN contains a WRAP chunk, which has (as always) an OFFS subchunk pointing // at ZSTR chunks. These once more contain a WRAP chunk which contains nothing but @@ -1039,7 +1041,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c const int left = (stripnr << 3); const int right = left + (numstrip << 3); byte *dst = bgbak_ptr; - byte *src = smap_ptr; + const byte *src = smap_ptr; byte color = 0, data = 0; int run = 1; bool dither = false; @@ -1202,7 +1204,6 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c // don't know what for. At the time of writing, these games // are still too unstable for me to investigate. - byte *z_plane_ptr; if (_vm->_features & GF_AFTER_V8) z_plane_ptr = zplane_list[1] + READ_LE_UINT32(zplane_list[1] + stripnr * 4 + 8); else @@ -1235,7 +1236,7 @@ void Gdi::drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, c mask_ptr = _vm->getResourceAddress(rtBuffer, 9) + y * _numStrips + x + _imgBufOffs[i]; if (offs) { - byte *z_plane_ptr = zplane_list[i] + offs; + z_plane_ptr = zplane_list[i] + offs; if (useOrDecompress && (flag & dbAllowMaskOr)) { decompressMaskImgOr(mask_ptr, z_plane_ptr, height); @@ -1339,10 +1340,10 @@ void Gdi::decodeStripEGA(byte *dst, const byte *src, int height) { } } -bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProcess) { +bool Gdi::decompressBitmap(byte *bgbak_ptr, const byte *src, int numLinesToProcess) { assert(numLinesToProcess); - byte code = *smap_ptr++; + byte code = *src++; if (_vm->_features & GF_AMIGA) _palette_mod = 16; @@ -1355,23 +1356,23 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces switch (code) { case 1: - unkDecode7(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecode7(bgbak_ptr, src, numLinesToProcess); break; case 2: - unkDecode8(bgbak_ptr, smap_ptr, numLinesToProcess); /* Ender - Zak256/Indy256 */ + unkDecode8(bgbak_ptr, src, numLinesToProcess); /* Ender - Zak256/Indy256 */ break; case 3: - unkDecode9(bgbak_ptr, smap_ptr, numLinesToProcess); /* Ender - Zak256/Indy256 */ + unkDecode9(bgbak_ptr, src, numLinesToProcess); /* Ender - Zak256/Indy256 */ break; case 4: - unkDecode10(bgbak_ptr, smap_ptr, numLinesToProcess); /* Ender - Zak256/Indy256 */ + unkDecode10(bgbak_ptr, src, numLinesToProcess); /* Ender - Zak256/Indy256 */ break; case 7: - unkDecode11(bgbak_ptr, smap_ptr, numLinesToProcess); /* Ender - Zak256/Indy256 */ + unkDecode11(bgbak_ptr, src, numLinesToProcess); /* Ender - Zak256/Indy256 */ break; case 14: @@ -1379,7 +1380,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 16: case 17: case 18: - unkDecodeC(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeC(bgbak_ptr, src, numLinesToProcess); break; case 24: @@ -1387,7 +1388,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 26: case 27: case 28: - unkDecodeB(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeB(bgbak_ptr, src, numLinesToProcess); break; case 34: @@ -1396,7 +1397,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 37: case 38: useOrDecompress = true; - unkDecodeC_trans(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeC_trans(bgbak_ptr, src, numLinesToProcess); break; case 44: @@ -1405,7 +1406,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 47: case 48: useOrDecompress = true; - unkDecodeB_trans(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeB_trans(bgbak_ptr, src, numLinesToProcess); break; case 64: @@ -1418,7 +1419,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 106: case 107: case 108: - unkDecodeA(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeA(bgbak_ptr, src, numLinesToProcess); break; case 84: @@ -1432,7 +1433,7 @@ bool Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProces case 127: case 128: useOrDecompress = true; - unkDecodeA_trans(bgbak_ptr, smap_ptr, numLinesToProcess); + unkDecodeA_trans(bgbak_ptr, src, numLinesToProcess); break; default: @@ -2791,7 +2792,7 @@ void Scumm::setDirtyColors(int min, int max) { _palDirtyMax = max; } -void Scumm::initCycl(byte *ptr) { +void Scumm::initCycl(const byte *ptr) { int j; ColorCycle *cycl; @@ -3011,9 +3012,9 @@ void Scumm::setupShadowPalette(int slot, int redScale, int greenScale, int blueS } void Scumm::setupShadowPalette(int redScale, int greenScale, int blueScale, int startColor, int endColor) { - byte *basepal = getPalettePtr(); - byte *pal = basepal; - byte *compareptr; + const byte *basepal = getPalettePtr(); + const byte *pal = basepal; + const byte *compareptr; byte *table = _shadowPalette; int i; @@ -3086,9 +3087,8 @@ void Scumm::setupShadowPalette(int redScale, int greenScale, int blueScale, int /* Yazoo: This function create the specialPalette used for semi-transparency in SamnMax */ void Scumm::createSpecialPalette(int16 from, int16 to, int16 redScale, int16 greenScale, int16 blueScale, int16 startColor, int16 endColor) { - byte *palPtr; - byte *curPtr; - byte *searchPtr; + const byte *palPtr, *curPtr; + const byte *searchPtr; uint bestResult; uint currentResult; @@ -3141,7 +3141,8 @@ void Scumm::darkenPalette(int redScale, int greenScale, int blueScale, int start return; if (startColor <= endColor) { - byte *cptr, *cur; + const byte *cptr; + byte *cur; int j; int color; @@ -3199,7 +3200,8 @@ void Scumm::desaturatePalette(int hueScale, int satScale, int lightScale, int st // FIXME: Rewrite using integer arithmetics only? if (startColor <= endColor) { - byte *cptr, *cur; + const byte *cptr; + byte *cur; int j; cptr = getPalettePtr() + startColor * 3; @@ -3380,15 +3382,15 @@ void Scumm::setPalColor(int idx, int r, int g, int b) { } void Scumm::setPalette(int palindex) { - byte *pals; + const byte *pals; _curPalIndex = palindex; pals = getPalettePtr(); setPaletteFromPtr(pals); } -byte *Scumm::findPalInPals(byte *pal, int idx) { - byte *offs; +const byte *Scumm::findPalInPals(const byte *pal, int idx) { + const byte *offs; uint32 size; pal = findResource(MKID('WRAP'), pal); @@ -3407,8 +3409,8 @@ byte *Scumm::findPalInPals(byte *pal, int idx) { return offs + READ_LE_UINT32(offs + idx * sizeof(uint32)); } -byte *Scumm::getPalettePtr() { - byte *cptr; +const byte *Scumm::getPalettePtr() { + const byte *cptr; cptr = getResourceAddress(rtRoom, _roomResource); assert(cptr); @@ -3459,9 +3461,10 @@ void Scumm::grabCursor(byte *ptr, int width, int height) { updateCursor(); } -void Scumm::useIm01Cursor(byte *im, int w, int h) { +void Scumm::useIm01Cursor(const byte *im, int w, int h) { VirtScreen *vs = &virtscr[0]; - byte *buf, *src, *dst; + byte *buf, *dst; + const byte *src; int i; w <<= 3; @@ -3529,7 +3532,7 @@ void Scumm::animateCursor() { } } -void Scumm::useBompCursor(byte *im, int width, int height) { +void Scumm::useBompCursor(const byte *im, int width, int height) { uint size; width <<= 3; @@ -3830,7 +3833,7 @@ void Scumm::drawBomp(BompDrawData *bd, int decode_mode, int mask) { clip_bottom -= tmp_y - bd->outheight; } - byte *src = bd->dataptr; + const byte *src = bd->dataptr; byte *dst = bd->out + bd->y * bd->outwidth + bd->x + clip_left; mask_pitch = _screenWidth / 8; diff --git a/scumm/gfx.h b/scumm/gfx.h index ad0142b9a6..edc23ba35d 100644 --- a/scumm/gfx.h +++ b/scumm/gfx.h @@ -104,7 +104,7 @@ struct BompDrawData { /* Bomp graphics data */ int outwidth, outheight; int x, y; byte scale_x, scale_y; - byte *dataptr; + const byte *dataptr; int srcwidth, srcheight; uint16 shadowMode; }; @@ -133,7 +133,7 @@ protected: bool _zbufferDisabled; /* Bitmap decompressors */ - bool decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProcess); + bool decompressBitmap(byte *bgbak_ptr, const byte *src, int numLinesToProcess); void decodeStripEGA(byte *dst, const byte *src, int height); void decodeStripOldEGA(byte *dst, const byte *src, int height, int stripnr); void decompressMaskImgOld(byte *dst, const byte *src, int stripnr); @@ -161,7 +161,7 @@ protected: void updateDirtyScreen(VirtScreen *vs); public: - void drawBitmap(byte *ptr, VirtScreen *vs, int x, int y, const int width, const int height, + void drawBitmap(const byte *ptr, VirtScreen *vs, int x, int y, const int width, const int height, int stripnr, int numstrip, byte flag); void clearUpperMask(); diff --git a/scumm/object.cpp b/scumm/object.cpp index 93a566fe7d..777f79ed79 100644 --- a/scumm/object.cpp +++ b/scumm/object.cpp @@ -190,8 +190,8 @@ int Scumm::getObjectOrActorXY(int object, int &x, int &y) { void Scumm::getObjectXYPos(int object, int &x, int &y, int &dir) { ObjectData *od = &_objs[getObjectIndex(object)]; int state; - byte *ptr; - ImageHeader *imhd; + const byte *ptr; + const ImageHeader *imhd; if (_features & GF_AFTER_V6) { state = getState(object) - 1; @@ -206,7 +206,7 @@ void Scumm::getObjectXYPos(int object, int &x, int &y, int &dir) { ptr += od->OBIMoffset; } assert(ptr); - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), ptr); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), ptr); if (_features & GF_AFTER_V8) { x = od->x_pos + (int32)READ_LE_UINT32(&imhd->v8.hotspot[state].x); y = od->y_pos + (int32)READ_LE_UINT32(&imhd->v8.hotspot[state].y); @@ -343,7 +343,7 @@ static const uint32 IMxx_tags[] = { void Scumm::drawObject(int obj, int arg) { ObjectData *od; int xpos, ypos, height, width; - byte *ptr; + const byte *ptr; int x, a, numstrip; int tmp; @@ -451,16 +451,16 @@ void Scumm::clearRoomObjects() { void Scumm::loadRoomObjects() { int i, j; ObjectData *od; - byte *ptr; + const byte *ptr; uint16 obim_id; - byte *room, *searchptr, *rootptr; - ImageHeader *imhd; - RoomHeader *roomhdr; - CodeHeader *cdhd; + const byte *room, *searchptr, *rootptr; + const ImageHeader *imhd; + const RoomHeader *roomhdr; + const CodeHeader *cdhd; CHECK_HEAP room = getResourceAddress(rtRoom, _roomResource); - roomhdr = (RoomHeader *)findResourceData(MKID('RMHD'), room); + roomhdr = (const RoomHeader *)findResourceData(MKID('RMHD'), room); if (_features & GF_AFTER_V8) _numObjectsInRoom = (byte)READ_LE_UINT32(&(roomhdr->v8.numObjects)); @@ -490,7 +490,7 @@ void Scumm::loadRoomObjects() { error("Room %d missing object code block(s)", _roomResource); od->OBCDoffset = ptr - rootptr; - cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), ptr); + cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), ptr); if (_features & GF_AFTER_V7) od->obj_nr = READ_LE_UINT16(&(cdhd->v7.obj_id)); @@ -515,7 +515,7 @@ void Scumm::loadRoomObjects() { if (ptr == NULL) error("Room %d missing image blocks(s)", _roomResource); - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), ptr); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), ptr); if (_features & GF_AFTER_V8) // In V8, IMHD has no obj_id, but rather a name string. We map the name // back to an object id using a table derived from the DOBJ resource. @@ -543,7 +543,7 @@ void Scumm::loadRoomObjects() { void Scumm::loadRoomObjectsOldBundle() { int i; ObjectData *od; - byte *room, *ptr; + const byte *room, *ptr; CHECK_HEAP room = getResourceAddress(rtRoom, _roomResource); @@ -583,14 +583,14 @@ void Scumm::loadRoomObjectsOldBundle() { void Scumm::loadRoomObjectsSmall() { int i, j; ObjectData *od; - byte *ptr; + const byte *ptr; uint16 obim_id; - byte *room, *searchptr; - RoomHeader *roomhdr; + const byte *room, *searchptr; + const RoomHeader *roomhdr; CHECK_HEAP room = getResourceAddress(rtRoom, _roomResource); - roomhdr = (RoomHeader *)findResourceData(MKID('RMHD'), room); + roomhdr = (const RoomHeader *)findResourceData(MKID('RMHD'), room); _numObjectsInRoom = READ_LE_UINT16(&(roomhdr->old.numObjects)); @@ -643,15 +643,15 @@ void Scumm::loadRoomObjectsSmall() { CHECK_HEAP } -void Scumm::setupRoomObject(ObjectData *od, byte *room, byte *searchptr) { - CodeHeader *cdhd = NULL; - ImageHeader *imhd = NULL; +void Scumm::setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr) { + const CodeHeader *cdhd = NULL; + const ImageHeader *imhd = NULL; assert(room); if (_features & GF_SMALL_HEADER) { - byte *ptr = room + od->OBCDoffset; + const byte *ptr = room + od->OBCDoffset; if (_features & GF_OLD_BUNDLE) ptr -= 2; @@ -691,7 +691,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room, byte *searchptr) { searchptr = room; } - cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), searchptr + od->OBCDoffset); + cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), searchptr + od->OBCDoffset); if (cdhd == NULL) error("Room %d missing CDHD blocks(s)", _roomResource); @@ -701,7 +701,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room, byte *searchptr) { od->parent = cdhd->v7.parent; od->parentstate = cdhd->v7.parentstate; - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset); od->x_pos = (int)READ_LE_UINT32(&imhd->v8.x_pos); od->y_pos = (int)READ_LE_UINT32(&imhd->v8.y_pos); od->width = (uint)READ_LE_UINT32(&imhd->v8.width); @@ -715,7 +715,7 @@ void Scumm::setupRoomObject(ObjectData *od, byte *room, byte *searchptr) { od->parent = cdhd->v7.parent; od->parentstate = cdhd->v7.parentstate; - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), room + od->OBIMoffset); od->x_pos = READ_LE_UINT16(&imhd->v7.x_pos); od->y_pos = READ_LE_UINT16(&imhd->v7.y_pos); od->width = READ_LE_UINT16(&imhd->v7.width); @@ -874,7 +874,7 @@ byte *Scumm::getObjOrActorName(int obj) { } if (_features & GF_AFTER_V6) { - for (i = 1; i < 50; i++) { + for (i = 0; i < _numNewNames; i++) { if (_newNames[i] == obj) { debug(5, "Found new name for object %d at _newNames[i]", obj, i); return getResourceAddress(rtObjectName, i); @@ -887,7 +887,50 @@ byte *Scumm::getObjOrActorName(int obj) { if (objptr == NULL) return NULL; +#if 0 return findResourceData(MKID('OBNA'), objptr); +#else + // FIXME: we can't use findResourceData anymore, because it returns const + // data, while this function *must* return a non-const pointer. That is so + // because in o2_setObjectName / o5_setObjectName we directly modify this + // data. Now, we could add a non-const version of findResourceData, too + // (C++ makes that easy); but this here is really the *only* place in all + // of ScummVM where it wold be needed! That seems kind of a waste... + // + // So for now, I duplicate some code from findResourceData / findResource + // here. However, a much nicer solution might be (with stress on "might") + // to use the same technique as in V6 games: that is, use a seperate + // resource for changed names. That would be the cleanest solution, but + // might proof to be infeasible, as it might lead to unforseen regressions. + + uint32 tag = MKID('OBNA'); + byte *searchin = objptr; + uint32 curpos, totalsize, size; + + assert(searchin); + + searchin += 4; + totalsize = READ_BE_UINT32_UNALIGNED(searchin); + curpos = 8; + searchin += 4; + + while (curpos < totalsize) { + if (READ_UINT32_UNALIGNED(searchin) == tag) + return searchin + _resourceHeaderSize; + + size = READ_BE_UINT32_UNALIGNED(searchin + 4); + if ((int32)size <= 0) { + error("(%c%c%c%c) Not found in %d... illegal block len %d", + tag & 0xFF, (tag >> 8) & 0xFF, (tag >> 16) & 0xFF, (tag >> 24) & 0xFF, 0, size); + return NULL; + } + + curpos += size; + searchin += size; + } + + return NULL; +#endif } uint32 Scumm::getOBCDOffs(int object) { @@ -931,7 +974,8 @@ byte *Scumm::getOBCDFromObject(int obj) { void Scumm::addObjectToInventory(uint obj, uint room) { int i, slot; uint32 size; - byte *ptr, *dst; + const byte *ptr; + byte *dst; FindObjectInRoom foir; debug(1, "Adding object %d from room %d into inventory", obj, room); @@ -963,10 +1007,10 @@ void Scumm::addObjectToInventory(uint obj, uint room) { void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint room) { - CodeHeader *cdhd; + const CodeHeader *cdhd; int i, numobj; - byte *roomptr, *obcdptr, *obimptr, *searchptr; - ImageHeader *imhd; + const byte *roomptr, *obcdptr, *obimptr, *searchptr; + const ImageHeader *imhd; int id2; int id3; @@ -978,10 +1022,10 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint error("findObjectInRoom foCheckAlreadyLoaded NYI for GF_OLD_BUNDLE (id = %d, room = %d)", id, room); } fo->obcd = obcdptr = getOBCDFromObject(id); - assert((byte *)obcdptr > (byte *)256); + assert((const byte *)obcdptr > (byte *)256); fo->obim = obimptr = obcdptr + RES_SIZE(obcdptr); - fo->cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), obcdptr); - fo->imhd = (ImageHeader *)findResourceData(MKID('IMHD'), obimptr); + fo->cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), obcdptr); + fo->imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), obimptr); return; } @@ -992,7 +1036,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint if (_features & GF_OLD_BUNDLE) { numobj = roomptr[20]; } else { - RoomHeader *roomhdr = (RoomHeader *)findResourceData(MKID('RMHD'), roomptr); + const RoomHeader *roomhdr = (const RoomHeader *)findResourceData(MKID('RMHD'), roomptr); if (_features & GF_AFTER_V8) numobj = READ_LE_UINT32(&(roomhdr->v8.numObjects)); @@ -1021,7 +1065,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint if (id2 == (uint16)id) { if (findWhat & foCodeHeader) { fo->obcd = obcdptr; - fo->cdhd = (CodeHeader *)(obcdptr + 10); // TODO - FIXME + fo->cdhd = (const CodeHeader *)(obcdptr + 10); // TODO - FIXME } if (findWhat & foImageHeader) { fo->obim = obimptr; @@ -1047,7 +1091,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint obcdptr = findResource(MKID('OBCD'), searchptr); if (obcdptr == NULL) error("findObjectInRoom: Not enough code blocks in room %d", room); - cdhd = (CodeHeader *)findResourceData(MKID('CDHD'), obcdptr); + cdhd = (const CodeHeader *)findResourceData(MKID('CDHD'), obcdptr); if (_features & GF_SMALL_HEADER) id2 = READ_LE_UINT16(obcdptr + 6); @@ -1080,7 +1124,7 @@ void Scumm::findObjectInRoom(FindObjectInRoom *fo, byte findWhat, uint id, uint obimptr = findResource(MKID('OBIM'), searchptr); if (obimptr == NULL) error("findObjectInRoom: Not enough image blocks in room %d", room); - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), obimptr); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), obimptr); if (_features & GF_SMALL_HEADER) id3 = READ_LE_UINT16(obimptr + 6); else if (_features & GF_AFTER_V8) @@ -1272,7 +1316,7 @@ int Scumm::getDistanceBetween(bool is_obj_1, int b, int c, bool is_obj_2, int e, void Scumm::setCursorImg(uint img, uint room, uint imgindex) { int w, h; - byte *dataptr, *bomp; + const byte *dataptr, *bomp; uint32 size; FindObjectInRoom foir; @@ -1395,7 +1439,7 @@ void Scumm::drawBlastObjects() { void Scumm::drawBlastObject(BlastObject *eo) { VirtScreen *vs; - byte *bomp, *ptr; + const byte *bomp, *ptr; int idx, objnum; BompDrawData bdd; @@ -1432,7 +1476,7 @@ void Scumm::drawBlastObject(BlastObject *eo) { // Get the address of the specified BOMP (we really should verify it's a BOMP and not a SMAP bomp = ptr + READ_LE_UINT32(ptr + 4 + 4*eo->image) + 8; } else { - byte *img = findResource(IMxx_tags[eo->image], ptr); + const byte *img = findResource(IMxx_tags[eo->image], ptr); if (!img) img = findResource(IMxx_tags[1], ptr); // Backward compatibility with samnmax blast objects @@ -1448,11 +1492,11 @@ void Scumm::drawBlastObject(BlastObject *eo) { //hexdump(bomp,32); if (_features & GF_AFTER_V8) { - bdd.srcwidth = READ_LE_UINT32(&((BompHeader *)bomp)->v8.width); - bdd.srcheight = READ_LE_UINT32(&((BompHeader *)bomp)->v8.height); + bdd.srcwidth = READ_LE_UINT32(&((const BompHeader *)bomp)->v8.width); + bdd.srcheight = READ_LE_UINT32(&((const BompHeader *)bomp)->v8.height); } else { - bdd.srcwidth = READ_LE_UINT16(&((BompHeader *)bomp)->old.width); - bdd.srcheight = READ_LE_UINT16(&((BompHeader *)bomp)->old.height); + bdd.srcwidth = READ_LE_UINT16(&((const BompHeader *)bomp)->old.width); + bdd.srcheight = READ_LE_UINT16(&((const BompHeader *)bomp)->old.height); } bdd.out = vs->screenPtr + vs->xstart; @@ -1746,7 +1790,7 @@ void Scumm::loadFlObject(uint object, uint room) { // Dump object script if (_dumpScripts) { char buf[32]; - byte *ptr = foir.obcd; + const byte *ptr = foir.obcd; sprintf(buf, "roomobj-%d-", room); ptr = findResource(MKID('VERB'), ptr, 0); dumpResource(buf, object, ptr); diff --git a/scumm/object.h b/scumm/object.h index 69f114f99f..1689799d05 100644 --- a/scumm/object.h +++ b/scumm/object.h @@ -136,11 +136,11 @@ struct ImageHeader { /* file format */ #endif struct FindObjectInRoom { - CodeHeader *cdhd; - byte *obcd; - ImageHeader *imhd; - byte *obim; - byte *roomptr; + const CodeHeader *cdhd; + const byte *obcd; + const ImageHeader *imhd; + const byte *obim; + const byte *roomptr; }; enum FindObjectWhat { diff --git a/scumm/resource.cpp b/scumm/resource.cpp index 9c6228bf61..d507f0d82a 100644 --- a/scumm/resource.cpp +++ b/scumm/resource.cpp @@ -1344,7 +1344,7 @@ void Scumm::nukeResource(int type, int idx) { } } -byte *Scumm::findResourceData(uint32 tag, byte *ptr) { +const byte *Scumm::findResourceData(uint32 tag, const byte *ptr) { if (_features & GF_OLD_BUNDLE) error("findResourceData must not be used in GF_OLD_BUNDLE games"); else if (_features & GF_SMALL_HEADER) @@ -1371,11 +1371,11 @@ int Scumm::getResourceDataSize(const byte *ptr) const { struct FindResourceState { uint32 size, pos; - byte *ptr; + const byte *ptr; }; /* just O(N) complexity when iterating with this function */ -byte *findResource(uint32 tag, byte *searchin) { +const byte *findResource(uint32 tag, const byte *searchin) { uint32 size; static FindResourceState frs; FindResourceState *f = &frs; /* easier to make it thread safe like this */ @@ -1403,7 +1403,7 @@ byte *findResource(uint32 tag, byte *searchin) { return f->ptr; } -byte *findResourceSmall(uint32 tag, byte *searchin) { +const byte *findResourceSmall(uint32 tag, const byte *searchin) { uint32 size; static FindResourceState frs; FindResourceState *f = &frs; /* easier to make it thread safe like this */ @@ -1434,7 +1434,7 @@ byte *findResourceSmall(uint32 tag, byte *searchin) { return f->ptr; } -byte *findResource(uint32 tag, byte *searchin, int idx) { +const byte *findResource(uint32 tag, const byte *searchin, int idx) { uint32 curpos, totalsize, size; assert(searchin); @@ -1462,7 +1462,7 @@ byte *findResource(uint32 tag, byte *searchin, int idx) { return NULL; } -byte *findResourceSmall(uint32 tag, byte *searchin, int idx) { +const byte *findResourceSmall(uint32 tag, const byte *searchin, int idx) { uint32 curpos, totalsize, size; uint16 smallTag; diff --git a/scumm/resource.h b/scumm/resource.h index d0d09afcdb..03453c7c06 100644 --- a/scumm/resource.h +++ b/scumm/resource.h @@ -33,8 +33,8 @@ struct ResHdr { #pragma END_PACK_STRUCTS #endif -#define RES_DATA(x) (((byte*)x) + sizeof(ResHdr)) -#define RES_SIZE(x) (READ_BE_UINT32_UNALIGNED(&((ResHdr* )x)->size)) +#define RES_DATA(x) (((const byte*)x) + sizeof(ResHdr)) +#define RES_SIZE(x) (READ_BE_UINT32_UNALIGNED(&((const ResHdr* )x)->size)) enum { OF_OWNER_MASK = 0x0F, @@ -50,9 +50,9 @@ enum { }; -byte *findResource(uint32 tag, byte *searchin, int index); -byte *findResourceSmall(uint32 tag, byte *searchin, int index); -byte *findResource(uint32 tag, byte *searchin); -byte *findResourceSmall(uint32 tag, byte *searchin); +const byte *findResource(uint32 tag, const byte *searchin, int index); +const byte *findResourceSmall(uint32 tag, const byte *searchin, int index); +const byte *findResource(uint32 tag, const byte *searchin); +const byte *findResourceSmall(uint32 tag, const byte *searchin); #endif diff --git a/scumm/script.cpp b/scumm/script.cpp index 432977707b..724c934420 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -128,7 +128,7 @@ void Scumm::initializeLocals(int slot, int *vars) { } int Scumm::getVerbEntrypoint(int obj, int entry) { - byte *objptr, *verbptr; + const byte *objptr, *verbptr; int verboffs; if (whereIsObject(obj) == WIO_NOT_FOUND) @@ -154,7 +154,7 @@ int Scumm::getVerbEntrypoint(int obj, int entry) { verbptr += _resourceHeaderSize; if (_features & GF_AFTER_V8) { - uint32 *ptr = (uint32 *)verbptr; + const uint32 *ptr = (const uint32 *)verbptr; uint32 verb; do { verb = READ_LE_UINT32(ptr); @@ -729,7 +729,7 @@ void Scumm::runExitScript() { // FIXME: Oddly, Indy3 seems to contain exit scripts with only a size // and a tag - not even a terminating NULL! byte *roomptr = getResourceAddress(rtRoom, _roomResource); - byte *excd = findResourceData(MKID('EXCD'), roomptr) - _resourceHeaderSize; + const byte *excd = findResourceData(MKID('EXCD'), roomptr) - _resourceHeaderSize; if (!excd || (getResourceDataSize(excd) < 1)) { debug(2, "Exit-%d is empty", _roomResource); return; diff --git a/scumm/scumm.h b/scumm/scumm.h index 8feb58765e..b24ebaf6be 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -622,9 +622,9 @@ protected: int _lastLoadedRoom; public: - byte *findResourceData(uint32 tag, byte *ptr); + const byte *findResourceData(uint32 tag, const byte *ptr); int getResourceDataSize(const byte *ptr) const; - void dumpResource(const char *tag, int index, byte *ptr, int length = -1); + void dumpResource(const char *tag, int index, const byte *ptr, int length = -1); protected: int getArrayId(); @@ -651,7 +651,7 @@ protected: ObjectIDMap _objectIDMap; byte _numObjectsInRoom; - void setupRoomObject(ObjectData *od, byte *room, byte *searchptr = NULL); + void setupRoomObject(ObjectData *od, const byte *room, const byte *searchptr = NULL); void removeObjectFromRoom(int obj); void loadFlObject(uint object, uint room); void nukeFlObjects(int min, int max); @@ -755,8 +755,8 @@ public: int cost_frameToAnim(Actor *a, int frame); // Akos Class - bool akos_increaseAnims(byte *akos, Actor *a); - bool akos_increaseAnim(Actor *a, int i, byte *aksq, uint16 *akfo, int numakfo); + bool akos_increaseAnims(const byte *akos, Actor *a); + bool akos_increaseAnim(Actor *a, int i, const byte *aksq, const uint16 *akfo, int numakfo); void akos_queCommand(byte cmd, Actor *a, int param_1, int param_2); bool akos_compare(int a, int b, byte cmd); void akos_decodeData(Actor *a, int frame, uint usemask); @@ -804,7 +804,7 @@ protected: void initScreens(int a, int b, int w, int h); void initVirtScreen(int slot, int number, int top, int width, int height, bool twobufs, bool scrollable); void initBGBuffers(int height); - void initCycl(byte *ptr); // Color cycle + void initCycl(const byte *ptr); // Color cycle void createSpecialPalette(int16 a, int16 b, int16 c, int16 d, int16 e, int16 colorMin, int16 colorMax); @@ -825,14 +825,14 @@ protected: void setCameraFollows(Actor *a); void clampCameraPos(ScummVM::Point *pt); - byte *getPalettePtr(); + const byte *getPalettePtr(); void setupEGAPalette(); void setPalette(int pal); void setPaletteFromPtr(const byte *ptr); void setPaletteFromRes(); void setPalColor(int index, int r, int g, int b); void setDirtyColors(int min, int max); - byte *findPalInPals(byte *pal, int index); + const byte *findPalInPals(const byte *pal, int index); void swapPalColors(int a, int b); void copyPalColor(int dst, int src); void cyclePalette(); @@ -856,8 +856,8 @@ protected: void makeCursorColorTransparent(int a); void setupCursor() { _cursor.animate = 1; } void decompressDefaultCursor(int index); - void useIm01Cursor(byte *im, int w, int h); - void useBompCursor(byte *im, int w, int h); + void useIm01Cursor(const byte *im, int w, int h); + void useBompCursor(const byte *im, int w, int h); public: diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index c7e733ed59..055461675b 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -1244,9 +1244,9 @@ void Scumm::startScene(int room, Actor * a, int objectNr) { void Scumm::initRoomSubBlocks() { int i, offs; - byte *ptr; + const byte *ptr; byte *roomptr, *searchptr, *roomResPtr; - RoomHeader *rmhd; + const RoomHeader *rmhd; _ENCD_offs = 0; _EXCD_offs = 0; @@ -1274,9 +1274,9 @@ void Scumm::initRoomSubBlocks() { // Determine the room dimensions (width/height) // if (_features & GF_OLD_BUNDLE) - rmhd = (RoomHeader *)(roomptr + 4); + rmhd = (const RoomHeader *)(roomptr + 4); else - rmhd = (RoomHeader *)findResourceData(MKID('RMHD'), roomptr); + rmhd = (const RoomHeader *)findResourceData(MKID('RMHD'), roomptr); if (_features & GF_AFTER_V8) { _roomWidth = READ_LE_UINT32(&(rmhd->v8.width)); @@ -1610,7 +1610,7 @@ void Scumm::setScaleSlot(int slot, int x1, int y1, int scale1, int x2, int y2, i _scaleSlots[slot-1].scale1 = scale1; } -void Scumm::dumpResource(const char *tag, int idx, byte *ptr, int length) { +void Scumm::dumpResource(const char *tag, int idx, const byte *ptr, int length) { char buf[256]; File out; diff --git a/scumm/verbs.cpp b/scumm/verbs.cpp index 2138ac458f..a8dbabe5e1 100644 --- a/scumm/verbs.cpp +++ b/scumm/verbs.cpp @@ -287,12 +287,13 @@ void Scumm::restoreVerbBG(int verb) { void Scumm::drawVerbBitmap(int verb, int x, int y) { VirtScreen *vs; VerbSlot *vst; - byte twobufs, *imptr = 0; + byte twobufs; + const byte *imptr = 0; int ydiff, xstrip; int imgw, imgh; int i, tmp; byte *obim; - ImageHeader *imhd; + const ImageHeader *imhd; uint32 size; if ((vs = findVirtScreen(y)) == NULL) @@ -319,7 +320,7 @@ void Scumm::drawVerbBitmap(int verb, int x, int y) { imgh = (*(obim + size + 17)) >> 3; imptr = (obim + 8); } else { - imhd = (ImageHeader *)findResourceData(MKID('IMHD'), obim); + imhd = (const ImageHeader *)findResourceData(MKID('IMHD'), obim); if (_features & GF_AFTER_V7) { imgw = READ_LE_UINT16(&imhd->v7.width) >> 3; imgh = READ_LE_UINT16(&imhd->v7.height) >> 3; @@ -393,8 +394,8 @@ void Scumm::killVerb(int slot) { } void Scumm::setVerbObject(uint room, uint object, uint verb) { - byte *obimptr; - byte *obcdptr; + const byte *obimptr; + const byte *obcdptr; uint32 size, size2; FindObjectInRoom foir; int i; |