| 1223 | } |
| 1224 | |
| 1225 | void cGraphics_Amiga::Service_Draw(int16 pSpriteID, int16 pX, int16 pY) { |
| 1226 | |
| 1227 | uint8* di = mSurface->GetSurfaceBuffer() + 16; |
| 1228 | |
| 1229 | pY += 16; |
| 1230 | di += mSurface->GetWidth() * pY; |
| 1231 | di += pX; |
| 1232 | |
| 1233 | uint8* si = 0; |
| 1234 | |
| 1235 | if (stru_A918A[pSpriteID].mSpriteSheet == 0) { |
| 1236 | si = mImageService.mData->data(); |
| 1237 | mBMHD_Current = mImageService.GetHeader(); |
| 1238 | } |
| 1239 | else { |
| 1240 | si = mSpriteSheet_RankFont.mData->data(); |
| 1241 | mBMHD_Current = mSpriteSheet_RankFont.GetHeader(); |
| 1242 | } |
| 1243 | |
| 1244 | int16 d0 = stru_A918A[pSpriteID].mWidth << 1; |
| 1245 | mFodder->mDraw_Source_SkipPixelsPerRow = 40 - d0; |
| 1246 | mFodder->mDraw_Dest_SkipPixelsPerRow = mSurface->GetWidth() - (d0 * 8); |
| 1247 | mFodder->mVideo_Draw_PaletteIndex = 0; |
| 1248 | |
| 1249 | si += stru_A918A[pSpriteID].mOffset; |
| 1250 | |
| 1251 | // Height |
| 1252 | for (int16 dx = stru_A918A[pSpriteID].mHeight; dx > 0; --dx) { |
| 1253 | |
| 1254 | // Width |
| 1255 | for (int16 cx = 0; cx < stru_A918A[pSpriteID].mWidth; ++cx) { |
| 1256 | |
| 1257 | DrawPixels_16(si, di, mFodder->mVideo_Draw_PaletteIndex); |
| 1258 | |
| 1259 | di += 16; |
| 1260 | si += 2; |
| 1261 | } |
| 1262 | |
| 1263 | si += mFodder->mDraw_Source_SkipPixelsPerRow; |
| 1264 | di += mFodder->mDraw_Dest_SkipPixelsPerRow; |
| 1265 | } |
| 1266 | } |
| 1267 | |
| 1268 | void cGraphics_Amiga::Mission_Intro_Load_Resources(const eTileTypes pTileset) { |
| 1269 |
no test coverage detected