[Scummvm-cvs-logs] CVS: scummvm/queen display.h,1.30,1.31 display.cpp,1.42,1.43 graphics.cpp,1.62,1.63
Gregory Montoir
cyx at users.sourceforge.net
Fri Jan 2 06:16:11 CET 2004
Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1:/tmp/cvs-serv11231
Modified Files:
display.h display.cpp graphics.cpp
Log Message:
minor rewrite of screenblanker code
Index: display.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/display.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- display.h 29 Dec 2003 21:05:33 -0000 1.30
+++ display.h 2 Jan 2004 14:15:45 -0000 1.31
@@ -97,7 +97,7 @@
void readPCXPanel(const uint8 *pcxBuf, uint32 size);
void horizontalScrollUpdate(int16 xCamera);
- void horizontalScroll(int16 scroll);
+ void horizontalScroll(int16 scroll) { _horizontalScroll = scroll; }
int16 horizontalScroll() const { return _horizontalScroll; }
void fullscreen(bool fs) { debug(6, "Display::fullscreen(%d)", fs); _fullscreen = fs; }
@@ -131,9 +131,7 @@
SCREEN_W = 320,
SCREEN_H = 200,
PANEL_W = 320,
- PANEL_H = 50,
- MINI_W = 32,
- MINI_H = 32
+ PANEL_H = 50
};
TextRenderer _textRenderer;
@@ -145,8 +143,8 @@
bool scrollable;
} _pal;
- uint8 *_buffer[4];
- uint16 _bufPitch[4];
+ uint8 *_buffer[3];
+ uint16 _bufPitch[3];
bool _fullscreen;
Index: display.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/display.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- display.cpp 31 Dec 2003 12:53:43 -0000 1.42
+++ display.cpp 2 Jan 2004 14:15:45 -0000 1.43
@@ -105,15 +105,12 @@
_buffer[RB_BACKDROP] = new uint8[BACKDROP_W * BACKDROP_H];
_buffer[RB_PANEL] = new uint8[PANEL_W * PANEL_H];
_buffer[RB_SCREEN] = new uint8[SCREEN_W * SCREEN_H];
- _buffer[RB_MINI] = new uint8[MINI_W * MINI_H];
memset(_buffer[RB_BACKDROP], 0, BACKDROP_W * BACKDROP_H);
memset(_buffer[RB_PANEL], 0, PANEL_W * PANEL_H);
memset(_buffer[RB_SCREEN], 0, SCREEN_W * SCREEN_H);
- memset(_buffer[RB_MINI], 0, MINI_W * MINI_H);
_bufPitch[RB_BACKDROP] = BACKDROP_W;
_bufPitch[RB_PANEL] = PANEL_W;
_bufPitch[RB_SCREEN] = SCREEN_W;
- _bufPitch[RB_MINI] = MINI_W;
_pal.room = new uint8[ 256 * 3 ];
_pal.screen = new uint8[ 256 * 3 ];
@@ -129,7 +126,6 @@
delete[] _buffer[RB_BACKDROP];
delete[] _buffer[RB_PANEL];
delete[] _buffer[RB_SCREEN];
- delete[] _buffer[RB_MINI];
delete[] _pal.room;
delete[] _pal.screen;
@@ -764,11 +760,6 @@
}
-void Display::horizontalScroll(int16 scroll) {
- _horizontalScroll = scroll;
-}
-
-
void Display::handleTimer() {
_gotTick = true;
}
@@ -849,17 +840,24 @@
&Display::blankScreenEffect3
};
(this->*effects[_curBlankingEffect])();
- _curBlankingEffect = (_curBlankingEffect + 1) % 3;
+ _curBlankingEffect = (_curBlankingEffect + 1) % ARRAYSIZE(effects);
}
void Display::blankScreenEffect1() {
+ uint8 buf[32 * 32];
while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
for(int i = 0; i < 2; ++i) {
- uint16 x = _vm->randomizer.getRandomNumber(SCREEN_W - MINI_W - 2) + 1;
- uint16 y = _vm->randomizer.getRandomNumber(SCREEN_H - MINI_H - 2) + 1;
+ uint16 x = _vm->randomizer.getRandomNumber(SCREEN_W - 32 - 2) + 1;
+ uint16 y = _vm->randomizer.getRandomNumber(SCREEN_H - 32 - 2) + 1;
uint8 *p = _buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * y + x;
- blit(RB_MINI, 0, 0, p, MINI_W, MINI_H, _bufPitch[RB_SCREEN], false, false);
+ uint8 *q = buf;
+ uint16 h = 32;
+ while (h--) {
+ memcpy(q, p, 32);
+ p += _bufPitch[RB_SCREEN];
+ q += 32;
+ }
if (_vm->randomizer.getRandomNumber(1)) {
--x;
} else {
@@ -870,8 +868,9 @@
} else {
++y;
}
- blit(RB_SCREEN, x, y, _buffer[RB_MINI], MINI_W, MINI_H, _bufPitch[RB_MINI], false, false);
- drawScreen();
+ _system->copy_rect(buf, 32, x, y, 32, 32);
+ _system->update_screen();
+ waitForTimer();
}
}
}
@@ -881,30 +880,33 @@
while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
uint16 x = _vm->randomizer.getRandomNumber(SCREEN_W - 2);
uint16 y = _vm->randomizer.getRandomNumber(SCREEN_H - 2);
+ uint8 *p = _buffer[RB_SCREEN] + y * _bufPitch[RB_SCREEN] + x;
uint8 c = 0;
switch (_vm->randomizer.getRandomNumber(3)) {
case 0:
- c = *(_buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * y + x);
+ c = *p;
break;
case 1:
- c = *(_buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * y + x + 1);
+ c = *(p + 1);
break;
case 2:
- c = *(_buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * (y + 1) + x);
+ c = *(p + _bufPitch[RB_SCREEN]);
break;
case 3:
- c = *(_buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * (y + 1) + x + 1);
+ c = *(p + _bufPitch[RB_SCREEN] + 1);
break;
default:
break;
}
- uint8 *p = _buffer[RB_SCREEN] + y * _bufPitch[RB_SCREEN] + x;
+ uint8 *buf = p;
int j = 2;
while (j--) {
memset(p, c, 2);
p += _bufPitch[RB_SCREEN];
}
- drawScreen();
+ _system->copy_rect(buf, _bufPitch[RB_SCREEN], x, y, 2, 2);
+ _system->update_screen();
+ waitForTimer();
}
}
@@ -912,24 +914,29 @@
void Display::blankScreenEffect3() {
uint32 i = 0;
while (_vm->input()->idleTime() >= Input::DELAY_SCREEN_BLANKER) {
- uint16 x = _vm->randomizer.getRandomNumber(SCREEN_W - 2);
- uint16 y = _vm->randomizer.getRandomNumber(SCREEN_H - 2);
- uint8 *p = _buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * y + x;
- uint8 p0 = *p;
- uint8 p1 = *(p + 1);
- uint8 p2 = *(p + _bufPitch[RB_SCREEN]);
- uint8 p3 = *(p + _bufPitch[RB_SCREEN] + 1);
- uint8 c = (p0 + p1 + p2 + p3) / 4;
- int j = 2;
- while (j--) {
- memset(p, c, 2);
- p += _bufPitch[RB_SCREEN];
- }
if (i > 4000000) {
memset(_buffer[RB_SCREEN], 0, SCREEN_W * SCREEN_H);
+ _system->copy_rect(_buffer[RB_SCREEN], _bufPitch[RB_SCREEN], 0, 0, SCREEN_W, SCREEN_H);
+ } else {
+ uint16 x = _vm->randomizer.getRandomNumber(SCREEN_W - 2);
+ uint16 y = _vm->randomizer.getRandomNumber(SCREEN_H - 2);
+ uint8 *p = _buffer[RB_SCREEN] + _bufPitch[RB_SCREEN] * y + x;
+ uint8 p0 = *p;
+ uint8 p1 = *(p + 1);
+ uint8 p2 = *(p + _bufPitch[RB_SCREEN]);
+ uint8 p3 = *(p + _bufPitch[RB_SCREEN] + 1);
+ uint8 c = (p0 + p1 + p2 + p3) / 4;
+ uint8 *buf = p;
+ int j = 2;
+ while (j--) {
+ memset(p, c, 2);
+ p += _bufPitch[RB_SCREEN];
+ }
+ ++i;
+ _system->copy_rect(buf, _bufPitch[RB_SCREEN], x, y, 2, 2);
}
- drawScreen();
- ++i;
+ _system->update_screen();
+ waitForTimer();
}
}
Index: graphics.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/graphics.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- graphics.cpp 30 Dec 2003 22:01:16 -0000 1.62
+++ graphics.cpp 2 Jan 2004 14:15:45 -0000 1.63
@@ -335,14 +335,12 @@
src += w * y_skip;
if (!bs->xflip) {
src += x_skip;
- _vm->display()->blit(RB_SCREEN, x, y, src, w_new, h_new, w, bs->xflip, true);
} else {
src += w - w_new - x_skip;
x += w_new - 1;
- _vm->display()->blit(RB_SCREEN, x, y, src, w_new, h_new, w, bs->xflip, true);
}
+ _vm->display()->blit(RB_SCREEN, x, y, src, w_new, h_new, w, bs->xflip, true);
}
-
}
@@ -567,7 +565,6 @@
break;
case ROOM_INTRO_RITA_JOE_HEADS: // CR 2 - CD-Rom pan right while Rita talks...
_cameraBob = -1;
- debug(9, "Graphics::bobCustomParallax() - %d", screenScroll);
if (screenScroll < 80) {
_vm->display()->horizontalScroll(screenScroll + 4);
// Joe's body and head
More information about the Scummvm-git-logs
mailing list