mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-03 16:58:26 +00:00
Add separate function for loading palette from choosen room.
Avoid pointer problems. svn-id: r17653
This commit is contained in:
parent
2141a2648c
commit
caae2f00de
@ -857,14 +857,24 @@ void ScummEngine::setPalColor(int idx, int r, int g, int b) {
|
||||
setDirtyColors(idx, idx);
|
||||
}
|
||||
|
||||
void ScummEngine::setPalette(int palindex, int room) {
|
||||
void ScummEngine::setPalette(int palindex) {
|
||||
const byte *pals;
|
||||
|
||||
_curPalIndex = palindex;
|
||||
pals = getPalettePtr(_curPalIndex, room);
|
||||
pals = getPalettePtr(_curPalIndex, _roomResource);
|
||||
setPaletteFromPtr(pals);
|
||||
}
|
||||
|
||||
void ScummEngine::setRoomPalette(int palindex, int room) {
|
||||
const byte *roomptr = getResourceAddress(rtRoom, room);
|
||||
assert(roomptr);
|
||||
const byte *pals = findResource(MKID('PALS'), roomptr);
|
||||
assert(pals);
|
||||
const byte *rgbs = findPalInPals(pals, palindex);
|
||||
assert(rgbs);
|
||||
setPaletteFromPtr(rgbs);
|
||||
}
|
||||
|
||||
const byte *ScummEngine::findPalInPals(const byte *pal, int idx) {
|
||||
const byte *offs;
|
||||
uint32 size;
|
||||
|
@ -519,7 +519,7 @@ void ScummEngine::initRoomSubBlocks() {
|
||||
}
|
||||
|
||||
if (_PALS_offs || _CLUT_offs)
|
||||
setPalette(0, _roomResource);
|
||||
setPalette(0);
|
||||
|
||||
initBGBuffers(_roomHeight);
|
||||
}
|
||||
|
@ -1573,13 +1573,13 @@ void ScummEngine_v100he::o100_roomOps() {
|
||||
|
||||
case 134: // SO_ROOM_NEW_PALETTE
|
||||
a = pop();
|
||||
setPalette(a, _roomResource);
|
||||
setPalette(a);
|
||||
break;
|
||||
|
||||
case 135:
|
||||
b = pop();
|
||||
a = pop();
|
||||
setPalette(a, b);
|
||||
setRoomPalette(a, b);
|
||||
break;
|
||||
|
||||
case 136: // SO_ROOM_SAVEGAME
|
||||
|
@ -1757,7 +1757,7 @@ void ScummEngine_v6::o6_roomOps() {
|
||||
if (_gameId == GID_SAMNMAX && vm.slot[_currentScript].number == 64)
|
||||
setDirtyColors(0, 255);
|
||||
else
|
||||
setPalette(a, _roomResource);
|
||||
setPalette(a);
|
||||
break;
|
||||
default:
|
||||
error("o6_roomOps: default case %d", op);
|
||||
|
@ -526,7 +526,7 @@ void ScummEngine_v60he::o60_roomOps() {
|
||||
|
||||
case 213: // SO_ROOM_NEW_PALETTE
|
||||
a = pop();
|
||||
setPalette(a, _roomResource);
|
||||
setPalette(a);
|
||||
break;
|
||||
case 220:
|
||||
a = pop();
|
||||
@ -549,7 +549,7 @@ void ScummEngine_v60he::o60_roomOps() {
|
||||
case 236: // HE 7.2
|
||||
b = pop();
|
||||
a = pop();
|
||||
setPalette(a, b);
|
||||
setRoomPalette(a, b);
|
||||
break;
|
||||
default:
|
||||
error("o60_roomOps: default case %d", op);
|
||||
|
@ -1043,7 +1043,7 @@ void ScummEngine_v72he::o72_roomOps() {
|
||||
|
||||
case 213: // SO_ROOM_NEW_PALETTE
|
||||
a = pop();
|
||||
setPalette(a, _roomResource);
|
||||
setPalette(a);
|
||||
break;
|
||||
|
||||
case 220:
|
||||
@ -1068,7 +1068,7 @@ void ScummEngine_v72he::o72_roomOps() {
|
||||
case 236:
|
||||
b = pop();
|
||||
a = pop();
|
||||
setPalette(a, b);
|
||||
setRoomPalette(a, b);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -868,7 +868,7 @@ void ScummEngine_v8::o8_roomOps() {
|
||||
break;
|
||||
case 0x5C: // SO_ROOM_NEW_PALETTE New palette
|
||||
a = pop();
|
||||
setPalette(a, _roomResource);
|
||||
setPalette(a);
|
||||
break;
|
||||
case 0x5D: // SO_ROOM_SAVE_GAME Save game
|
||||
_saveTemporaryState = true;
|
||||
|
@ -978,7 +978,8 @@ protected:
|
||||
void setupEGAPalette();
|
||||
void setupV1ManiacPalette();
|
||||
void setupV1ZakPalette();
|
||||
void setPalette(int pal, int room);
|
||||
void setPalette(int pal);
|
||||
void setRoomPalette(int pal, int room);
|
||||
virtual void setPaletteFromPtr(const byte *ptr, int numcolor = -1);
|
||||
virtual void setPalColor(int index, int r, int g, int b);
|
||||
void setDirtyColors(int min, int max);
|
||||
|
Loading…
x
Reference in New Issue
Block a user