[Scummvm-cvs-logs] CVS: scummvm/sky screen.cpp,1.13,1.14 sky.cpp,1.40,1.41
Robert G?ffringmann
lavosspawn at users.sourceforge.net
Wed May 28 20:20:04 CEST 2003
Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1:/tmp/cvs-serv10630/sky
Modified Files:
screen.cpp sky.cpp
Log Message:
still not what it should look like, but well......
Index: screen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/screen.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- screen.cpp 28 May 2003 20:55:25 -0000 1.13
+++ screen.cpp 29 May 2003 03:19:46 -0000 1.14
@@ -171,7 +171,6 @@
}
screenPos += (GRID_H - 1) * GAME_SCREEN_WIDTH;
}
- showScreen(_backScreen);
}
void SkyScreen::flip(void) {
@@ -435,6 +434,7 @@
currDrawList++;
do { // a_new_draw_list:
+ //printf("loading drawlist %d\n",loadDrawList);
uint16 *drawListData = (uint16*)SkyState::fetchCompact(loadDrawList);
nextDrawList = false;
while ((!nextDrawList) && (drawListData[0])) {
@@ -446,8 +446,11 @@
Compact *spriteComp = SkyState::fetchCompact(drawListData[0]);
if ((spriteComp->status & 4) && // is it sortable playfield?(!?!)
(spriteComp->screen == SkyLogic::_scriptVariables[SCREEN])) { // on current screen
+ //printf("Adding to drawlist. status = %X, screen = %X\n",spriteComp->status,spriteComp->screen);
dataFileHeader *spriteData =
(dataFileHeader*)SkyState::fetchItem(spriteComp->frame >> 6);
+ //printf("ycood = %d, s_offset_y = %d, height = %d\n",spriteComp->ycood,spriteData->s_offset_y,spriteData->s_height);
+ //printf("xcood = %d, s_offset_x = %d, width = %d\n",spriteComp->xcood,spriteData->s_offset_x,spriteData->s_width);
if (!spriteData) {
printf("Missing file %d!\n",spriteComp->frame >> 6);
spriteComp->status = 0;
@@ -483,9 +486,7 @@
drawSprite((uint8*)sortList[cnt].sprite, sortList[cnt].compact);
if (sortList[cnt].compact->status & 8) vectorToGame(0x81);
else vectorToGame(1);
- if (sortList[cnt].compact->status & 0x200) {
- verticalMask();
- }
+ if (!(sortList[cnt].compact->status & 0x200)) verticalMask();
}
}
}
@@ -494,24 +495,17 @@
uint16 drawListNum = DRAW_LIST_NO;
uint32 idNum;
- bool getNextDrawList;
uint16* drawList;
while (SkyLogic::_scriptVariables[drawListNum]) { // std sp loop
idNum = SkyLogic::_scriptVariables[drawListNum];
drawListNum++;
+ //printf("std_sp: New DrawList: %d\n",idNum); getchar();
drawList = (uint16*)SkyState::fetchCompact(idNum);
- getNextDrawList = false;
while(drawList[0]) {
// new_draw_list:
- while ((!getNextDrawList) && (drawList[0])) {
+ while ((drawList[0] != 0) && (drawList[0] != 0xFFFF)) {
// back_loop:
- if (drawList[0]) {
- if (drawList[0] == 0xFFFF) {
- // new_draw_list
- idNum = drawList[1];
- getNextDrawList = true;
- } else {
// not_new_list
Compact *spriteData = SkyState::fetchCompact(drawList[0]);
drawList++;
@@ -523,12 +517,10 @@
if (spriteData->status & 8) vectorToGame(0x81);
else vectorToGame(1);
}
- }
- }
}
- if (drawList[0]) {
- drawList = (uint16*)SkyState::fetchCompact(idNum);
- getNextDrawList = false;
+ if (drawList[0] == 0xFFFF) {
+ //printf("sub: New DrawList: %d\n",drawList[1]); getchar();
+ drawList = (uint16*)SkyState::fetchCompact(drawList[1]);
}
}
}
@@ -547,8 +539,7 @@
_maskX1 = _maskX2 = 0;
uint8 *spriteData = spriteInfo + (sprCompact->frame & 0x3F) * sprDataFile->s_sp_size;
spriteData += sizeof(dataFileHeader);
-
- int32 spriteY = sprCompact->ycood + sprDataFile->s_offset_y - TOP_LEFT_Y;
+ int32 spriteY = sprCompact->ycood + (int16)sprDataFile->s_offset_y - TOP_LEFT_Y;
if (spriteY < 0) {
spriteY = ~spriteY;
if (_sprHeight <= (uint32)spriteY) {
@@ -569,7 +560,7 @@
}
}
_sprY = (uint32)spriteY;
- int32 spriteX = sprCompact->xcood + sprDataFile->s_offset_x - TOP_LEFT_X;
+ int32 spriteX = sprCompact->xcood + (int16)sprDataFile->s_offset_x - TOP_LEFT_X;
if (spriteX < 0) {
spriteX = ~spriteX;
if (_sprWidth <= (uint32)spriteX) {
@@ -598,9 +589,12 @@
_sprWidth = 0;
return ;
}
+
for (uint8 cnty = 0; cnty < _sprHeight; cnty++) {
for (uint8 cntx = 0; cntx < _sprWidth; cntx++)
if (spriteData[cntx + _maskX1]) screenPtr[cntx] = spriteData[cntx + _maskX1];
+ _system->copy_rect(screenPtr,320,_sprX + _maskX1, _sprY + cnty, _sprWidth, 1);
+ _system->update_screen();
spriteData += _sprWidth;
screenPtr += GAME_SCREEN_WIDTH;
}
Index: sky.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/sky.cpp,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- sky.cpp 28 May 2003 23:31:43 -0000 1.40
+++ sky.cpp 29 May 2003 03:19:46 -0000 1.41
@@ -145,7 +145,6 @@
while (1) {
delay(100);
_skyLogic->engine();
- _skyScreen->recreate();
_skyScreen->spriteEngine();
_skyScreen->flip();
}
@@ -155,6 +154,8 @@
//initialise_memory();
+ memset(_itemList, sizeof(void*), 2048);
+
_skyDisk = new SkyDisk(_gameDataPath);
_skySound = new SkySound(_mixer, _skyDisk);
@@ -335,7 +336,7 @@
}
bool SkyState::isCDVersion(uint32 version) {
-
+return false;
switch (version) {
case 267:
return false;
More information about the Scummvm-git-logs
mailing list