mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-02 17:03:13 +00:00
renamed setCursorHotspot2 to setCursorHotspot; fixed (with a hack) cursor in Loom
svn-id: r7132
This commit is contained in:
parent
5626e42f5b
commit
2d8fa42f44
@ -3218,7 +3218,7 @@ void Scumm::setCursor(int cursor) {
|
|||||||
warning("setCursor(%d)", cursor);
|
warning("setCursor(%d)", cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scumm::setCursorHotspot2(int x, int y) {
|
void Scumm::setCursorHotspot(int x, int y) {
|
||||||
_cursor.hotspotX = x;
|
_cursor.hotspotX = x;
|
||||||
_cursor.hotspotY = y;
|
_cursor.hotspotY = y;
|
||||||
// FIXME this hacks around offset cursor in the humongous games
|
// FIXME this hacks around offset cursor in the humongous games
|
||||||
@ -3272,14 +3272,18 @@ void Scumm::decompressDefaultCursor(int idx) {
|
|||||||
// FIXME: None of the stock cursors are right for Loom. Why is that?
|
// FIXME: None of the stock cursors are right for Loom. Why is that?
|
||||||
|
|
||||||
if ((_gameId == GID_LOOM256) || (_gameId == GID_LOOM)) {
|
if ((_gameId == GID_LOOM256) || (_gameId == GID_LOOM)) {
|
||||||
int w;
|
int w = 0;
|
||||||
|
|
||||||
_cursor.width = 8;
|
_cursor.width = 8;
|
||||||
_cursor.height = 8;
|
_cursor.height = 8;
|
||||||
_cursor.hotspotX = 0;
|
_cursor.hotspotX = 0;
|
||||||
_cursor.hotspotY = 0;
|
_cursor.hotspotY = 0;
|
||||||
|
|
||||||
for (i = 0, w = 0; i < 8; i++) {
|
// FIXME - this corrects the cursor hotspot in Loom (EGA)
|
||||||
|
if (_gameId == GID_LOOM)
|
||||||
|
_cursor.hotspotY = 15;
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
w += (i >= 6) ? -2 : 1;
|
w += (i >= 6) ? -2 : 1;
|
||||||
for (j = 0; j < w; j++)
|
for (j = 0; j < w; j++)
|
||||||
_grabbedCursor[i * 8 + j] = color;
|
_grabbedCursor[i * 8 + j] = color;
|
||||||
|
@ -1250,17 +1250,17 @@ void Scumm::setCursorImg(uint img, uint room, uint imgindex) {
|
|||||||
findObjectInRoom(&foir, foCodeHeader | foImageHeader | foCheckAlreadyLoaded, img, room);
|
findObjectInRoom(&foir, foCodeHeader | foImageHeader | foCheckAlreadyLoaded, img, room);
|
||||||
|
|
||||||
if (_features & GF_AFTER_V8) {
|
if (_features & GF_AFTER_V8) {
|
||||||
setCursorHotspot2(READ_LE_UINT32(&foir.imhd->v8.hotspot[0].x),
|
setCursorHotspot(READ_LE_UINT32(&foir.imhd->v8.hotspot[0].x),
|
||||||
READ_LE_UINT32(&foir.imhd->v8.hotspot[0].y));
|
READ_LE_UINT32(&foir.imhd->v8.hotspot[0].y));
|
||||||
w = READ_LE_UINT32(&foir.imhd->v8.width) >> 3;
|
w = READ_LE_UINT32(&foir.imhd->v8.width) >> 3;
|
||||||
h = READ_LE_UINT32(&foir.imhd->v8.height) >> 3;
|
h = READ_LE_UINT32(&foir.imhd->v8.height) >> 3;
|
||||||
} else if (_features & GF_AFTER_V7) {
|
} else if (_features & GF_AFTER_V7) {
|
||||||
setCursorHotspot2(READ_LE_UINT16(&foir.imhd->v7.hotspot[0].x),
|
setCursorHotspot(READ_LE_UINT16(&foir.imhd->v7.hotspot[0].x),
|
||||||
READ_LE_UINT16(&foir.imhd->v7.hotspot[0].y));
|
READ_LE_UINT16(&foir.imhd->v7.hotspot[0].y));
|
||||||
w = READ_LE_UINT16(&foir.imhd->v7.width) >> 3;
|
w = READ_LE_UINT16(&foir.imhd->v7.width) >> 3;
|
||||||
h = READ_LE_UINT16(&foir.imhd->v7.height) >> 3;
|
h = READ_LE_UINT16(&foir.imhd->v7.height) >> 3;
|
||||||
} else {
|
} else {
|
||||||
setCursorHotspot2(READ_LE_UINT16(&foir.imhd->old.hotspot[0].x),
|
setCursorHotspot(READ_LE_UINT16(&foir.imhd->old.hotspot[0].x),
|
||||||
READ_LE_UINT16(&foir.imhd->old.hotspot[0].y));
|
READ_LE_UINT16(&foir.imhd->old.hotspot[0].y));
|
||||||
w = READ_LE_UINT16(&foir.cdhd->v6.w) >> 3;
|
w = READ_LE_UINT16(&foir.cdhd->v6.w) >> 3;
|
||||||
h = READ_LE_UINT16(&foir.cdhd->v6.h) >> 3;
|
h = READ_LE_UINT16(&foir.cdhd->v6.h) >> 3;
|
||||||
|
@ -633,7 +633,7 @@ void Scumm_v5::o5_cursorCommand() {
|
|||||||
i = getVarOrDirectByte(0x80);
|
i = getVarOrDirectByte(0x80);
|
||||||
j = getVarOrDirectByte(0x40);
|
j = getVarOrDirectByte(0x40);
|
||||||
k = getVarOrDirectByte(0x20);
|
k = getVarOrDirectByte(0x20);
|
||||||
setCursorHotspot2(j, k);
|
setCursorHotspot(j, k);
|
||||||
break;
|
break;
|
||||||
case 12: /* init cursor */
|
case 12: /* init cursor */
|
||||||
setCursor(getVarOrDirectByte(0x80));
|
setCursor(getVarOrDirectByte(0x80));
|
||||||
|
@ -820,7 +820,7 @@ void Scumm_v6::o6_cursorCommand() {
|
|||||||
}
|
}
|
||||||
case 0x9A:
|
case 0x9A:
|
||||||
a = pop();
|
a = pop();
|
||||||
setCursorHotspot2(pop(), a);
|
setCursorHotspot(pop(), a);
|
||||||
break;
|
break;
|
||||||
case 0x9C: /* init charset */
|
case 0x9C: /* init charset */
|
||||||
initCharset(pop());
|
initCharset(pop());
|
||||||
|
@ -829,7 +829,7 @@ void Scumm_v8::o8_cursorCommand() {
|
|||||||
break;
|
break;
|
||||||
case 0xE5: // SO_CURSOR_HOTSPOT Set cursor hotspot
|
case 0xE5: // SO_CURSOR_HOTSPOT Set cursor hotspot
|
||||||
a = pop();
|
a = pop();
|
||||||
setCursorHotspot2(pop(), a);
|
setCursorHotspot(pop(), a);
|
||||||
break;
|
break;
|
||||||
case 0xE6: // SO_CURSOR_TRANSPARENT Set cursor transparent color
|
case 0xE6: // SO_CURSOR_TRANSPARENT Set cursor transparent color
|
||||||
makeCursorColorTransparent(pop());
|
makeCursorColorTransparent(pop());
|
||||||
|
@ -815,7 +815,7 @@ public:
|
|||||||
|
|
||||||
void setCursor(int cursor);
|
void setCursor(int cursor);
|
||||||
void setCursorImg(uint img, uint room, uint imgindex);
|
void setCursorImg(uint img, uint room, uint imgindex);
|
||||||
void setCursorHotspot2(int x, int y);
|
void setCursorHotspot(int x, int y);
|
||||||
void grabCursor(int x, int y, int w, int h);
|
void grabCursor(int x, int y, int w, int h);
|
||||||
void grabCursor(byte *ptr, int width, int height);
|
void grabCursor(byte *ptr, int width, int height);
|
||||||
void makeCursorColorTransparent(int a);
|
void makeCursorColorTransparent(int a);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user