aboutsummaryrefslogtreecommitdiff
path: root/engines/sword2/build_display.h
diff options
context:
space:
mode:
authorTorbjörn Andersson2006-02-12 19:38:26 +0000
committerTorbjörn Andersson2006-02-12 19:38:26 +0000
commit0dbeb2f65b3f597d054125ae8bc8a7435c268cb8 (patch)
treeb6a44e2d786b503d6b674784fdc3890934cd554a /engines/sword2/build_display.h
parent2ec85848287900ae4bce80b9280a3f5ce80942d4 (diff)
downloadscummvm-rg350-0dbeb2f65b3f597d054125ae8bc8a7435c268cb8.tar.gz
scummvm-rg350-0dbeb2f65b3f597d054125ae8bc8a7435c268cb8.tar.bz2
scummvm-rg350-0dbeb2f65b3f597d054125ae8bc8a7435c268cb8.zip
Oops. Forgot to tell SVN to actually *move* the files. I'll get the hang of it
eventually. svn-id: r20652
Diffstat (limited to 'engines/sword2/build_display.h')
-rw-r--r--engines/sword2/build_display.h441
1 files changed, 0 insertions, 441 deletions
diff --git a/engines/sword2/build_display.h b/engines/sword2/build_display.h
deleted file mode 100644
index 1a362da137..0000000000
--- a/engines/sword2/build_display.h
+++ /dev/null
@@ -1,441 +0,0 @@
-/* Copyright (C) 1994-1998 Revolution Software Ltd.
- * Copyright (C) 2003-2006 The ScummVM project
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- */
-
-#ifndef _BUILD_DISPLAY
-#define _BUILD_DISPLAY
-
-#include "common/rect.h"
-#include "common/stream.h"
-
-#define MAX_bgp0_sprites 6
-#define MAX_bgp1_sprites 6
-#define MAX_back_sprites 30
-#define MAX_sort_sprites 30
-#define MAX_fore_sprites 30
-#define MAX_fgp0_sprites 6
-#define MAX_fgp1_sprites 6
-
-#define PALTABLESIZE (64 * 64 * 64)
-
-#define BLOCKWIDTH 64
-#define BLOCKHEIGHT 64
-#define MAXLAYERS 5
-
-#define MENUDEEP 40
-#define RENDERWIDE 640
-#define RENDERDEEP (480 - (MENUDEEP * 2))
-
-// Maximum scaled size of a sprite
-#define SCALE_MAXWIDTH 512
-#define SCALE_MAXHEIGHT 512
-
-// Dirty grid cell size
-#define CELLWIDE 10
-#define CELLDEEP 20
-
-namespace Sword2 {
-
-class Sword2Engine;
-
-// Sprite defines
-
-enum {
- // This is the low byte part of the sprite type.
-
- RDSPR_TRANS = 0x0001,
- RDSPR_BLEND = 0x0004,
- RDSPR_FLIP = 0x0008,
- RDSPR_SHADOW = 0x0010,
- RDSPR_DISPLAYALIGN = 0x0020,
- RDSPR_NOCOMPRESSION = 0x0040,
- RDSPR_EDGEBLEND = 0x0080, // Unused
-
- // This is the high byte part of the sprite type, which defines what
- // type of compression is used. Unless RDSPR_NOCOMPRESSION is set.
-
- RDSPR_RLE16 = 0x0000,
- RDSPR_RLE256 = 0x0100,
- RDSPR_RLE256FAST = 0x0200
-};
-
-// Fading defines
-
-enum {
- RDFADE_NONE,
- RDFADE_UP,
- RDFADE_DOWN,
- RDFADE_BLACK
-};
-
-// Palette defines
-
-enum {
- RDPAL_FADE,
- RDPAL_INSTANT
-};
-
-// Blitting FX defines
-
-enum {
- RDBLTFX_SPRITEBLEND = 0x01,
- RDBLTFX_SHADOWBLEND = 0x02,
- RDBLTFX_EDGEBLEND = 0x04
-};
-
-// Structure filled out by each object to register its graphic printing
-// requrements
-
-struct BuildUnit {
- int16 x;
- int16 y;
- uint16 scaled_width;
- uint16 scaled_height;
- int16 sort_y;
- uint32 anim_resource;
- uint16 anim_pc;
-
- // Denotes a scaling sprite at print time - and holds the scaling value
- // for the shrink routine
-
- uint16 scale;
-
- // Non-zero means this item is a layer - retrieve from background layer
- // and send to special renderer
-
- uint16 layer_number;
-
- // True means we want this frame to be affected by the shading mask
-
- bool shadingFlag;
-};
-
-struct ScreenInfo {
- uint16 scroll_offset_x; // Position x
- uint16 scroll_offset_y; // Position y
- uint16 max_scroll_offset_x; // Calc'ed in fnInitBackground
- uint16 max_scroll_offset_y;
- int16 player_feet_x; // Feet coordinates to use - cant just
- int16 player_feet_y; // fetch the player compact anymore
- int16 feet_x; // Special offset-to-player position -
- int16 feet_y; // tweek as desired - always set in
- // screen manager object startup
- uint16 screen_wide; // Size of background layer - hence
- uint16 screen_deep; // size of back buffer itself (Paul
- // actually malloc's it)
- uint32 background_layer_id; // Id of the normal background layer
- // from the header of the main
- // background layer
- uint16 number_of_layers;
- uint8 new_palette; // Set to non zero to start the
- // palette held within layer file
- // fading up after a build_display
- uint8 scroll_flag; // Scroll mode 0 off 1 on
- bool mask_flag; // Using shading mask
-};
-
-// The SpriteInfo structure is used to tell the driver96 code what attributes
-// are linked to a sprite for drawing. These include position, scaling and
-// compression.
-
-struct SpriteInfo {
- int16 x; // coords for top-left of sprite
- int16 y;
- uint16 w; // dimensions of sprite (before scaling)
- uint16 h;
- uint16 scale; // scale at which to draw, given in 256ths ['0' or '256' MEANS DON'T SCALE]
- uint16 scaledWidth; // new dimensions (we calc these for the mouse area, so may as well pass to you to save time)
- uint16 scaledHeight; //
- uint16 type; // mask containing 'RDSPR_' bits specifying compression type, flip, transparency, etc
- uint16 blend; // holds the blending values.
- byte *data; // pointer to the sprite data
- byte *colourTable; // pointer to 16-byte colour table, only applicable to 16-col compression type
-};
-
-struct BlockSurface {
- byte data[BLOCKWIDTH * BLOCKHEIGHT];
- bool transparent;
-};
-
-struct Parallax {
- uint16 w;
- uint16 h;
-
- // The dimensions are followed by an offset table, but we don't know in
- // advance how big it is. See initializeBackgroundLayer().
-
- static const int size() {
- return 4;
- }
-
- void read(byte *addr) {
- Common::MemoryReadStream readS(addr, size());
-
- w = readS.readUint16LE();
- h = readS.readUint16LE();
- }
-
- void write(byte *addr) {
- Common::MemoryWriteStream writeS(addr, size());
-
- writeS.writeUint16LE(w);
- writeS.writeUint16LE(h);
- }
-};
-
-class Screen {
-private:
- Sword2Engine *_vm;
-
- // _thisScreen describes the current back buffer and its in-game scroll
- // positions, etc.
-
- ScreenInfo _thisScreen;
-
- int32 _renderCaps;
- int8 _renderLevel;
-
- byte *_buffer;
- byte *_lightMask;
-
- // Game screen metrics
- int16 _screenWide;
- int16 _screenDeep;
-
- bool _needFullRedraw;
-
- // Scroll variables. _scrollX and _scrollY hold the current scroll
- // position, and _scrollXTarget and _scrollYTarget are the target
- // position for the end of the game cycle.
-
- int16 _scrollX;
- int16 _scrollY;
-
- int16 _scrollXTarget;
- int16 _scrollYTarget;
- int16 _scrollXOld;
- int16 _scrollYOld;
-
- int16 _parallaxScrollX; // current x offset to link a sprite to the
- // parallax layer
- int16 _parallaxScrollY; // current y offset to link a sprite to the
- // parallax layer
- int16 _locationWide;
- int16 _locationDeep;
-
- // Dirty grid handling
- byte *_dirtyGrid;
-
- uint16 _gridWide;
- uint16 _gridDeep;
-
- byte _palette[256 * 4];
- byte _paletteMatch[PALTABLESIZE];
-
- uint8 _fadeStatus;
- int32 _fadeStartTime;
- int32 _fadeTotalTime;
-
- // 'frames per second' counting stuff
- uint32 _fps;
- uint32 _cycleTime;
- uint32 _frameCount;
-
- int32 _initialTime;
- int32 _startTime;
- int32 _totalTime;
- int32 _renderAverageTime;
- int32 _framesPerGameCycle;
- bool _renderTooSlow;
-
- void startNewPalette();
-
- void resetRenderEngine();
-
- void startRenderCycle();
- bool endRenderCycle();
-
- // Holds the order of the sort list, i.e. the list stays static and we
- // sort this array.
-
- uint16 _sortOrder[MAX_sort_sprites];
-
- BuildUnit _bgp0List[MAX_bgp0_sprites];
- BuildUnit _bgp1List[MAX_bgp1_sprites];
- BuildUnit _backList[MAX_back_sprites];
- BuildUnit _sortList[MAX_sort_sprites];
- BuildUnit _foreList[MAX_fore_sprites];
- BuildUnit _fgp0List[MAX_fgp0_sprites];
- BuildUnit _fgp1List[MAX_fgp1_sprites];
-
- uint32 _curBgp0;
- uint32 _curBgp1;
- uint32 _curBack;
- uint32 _curSort;
- uint32 _curFore;
- uint32 _curFgp0;
- uint32 _curFgp1;
-
- void drawBackPar0Frames();
- void drawBackPar1Frames();
- void drawBackFrames();
- void drawSortFrames(byte *file);
- void drawForeFrames();
- void drawForePar0Frames();
- void drawForePar1Frames();
-
- void processLayer(byte *file, uint32 layer_number);
- void processImage(BuildUnit *build_unit);
-
- uint8 _scrollFraction;
-
- // Last palette used - so that we can restore the correct one after a
- // pause (which dims the screen) and it's not always the main screen
- // palette that we want, eg. during the eclipse
-
- // This flag gets set in startNewPalette() and setFullPalette()
-
- uint32 _lastPaletteRes;
-
- // Debugging stuff
- uint32 _largestLayerArea;
- uint32 _largestSpriteArea;
- char _largestLayerInfo[128];
- char _largestSpriteInfo[128];
-
- void registerFrame(byte *ob_mouse, byte *ob_graph, byte *ob_mega, BuildUnit *build_unit);
-
- void mirrorSprite(byte *dst, byte *src, int16 w, int16 h);
- int32 decompressRLE256(byte *dst, byte *src, int32 decompSize);
- void unwindRaw16(byte *dst, byte *src, uint8 blockSize, byte *colTable);
- int32 decompressRLE16(byte *dst, byte *src, int32 decompSize, byte *colTable);
- void renderParallax(byte *ptr, int16 layer);
-
- void markAsDirty(int16 x0, int16 y0, int16 x1, int16 y1);
-
- uint8 _xBlocks[MAXLAYERS];
- uint8 _yBlocks[MAXLAYERS];
-
- // An array of sub-blocks, one for each of the parallax layers.
-
- BlockSurface **_blockSurfaces[MAXLAYERS];
-
- uint16 _xScale[SCALE_MAXWIDTH];
- uint16 _yScale[SCALE_MAXHEIGHT];
-
- void blitBlockSurface(BlockSurface *s, Common::Rect *r, Common::Rect *clipRect);
-
- uint16 _layer;
-
-public:
- Screen(Sword2Engine *vm, int16 width, int16 height);
- ~Screen();
-
- int8 getRenderLevel();
- void setRenderLevel(int8 level);
-
- byte *getScreen() { return _buffer; }
- byte *getPalette() { return _palette; }
- ScreenInfo *getScreenInfo() { return &_thisScreen; }
-
- int16 getScreenWide() { return _screenWide; }
- int16 getScreenDeep() { return _screenDeep; }
-
- uint32 getCurBgp0() { return _curBgp0; }
- uint32 getCurBgp1() { return _curBgp1; }
- uint32 getCurBack() { return _curBack; }
- uint32 getCurSort() { return _curSort; }
- uint32 getCurFore() { return _curFore; }
- uint32 getCurFgp0() { return _curFgp0; }
- uint32 getCurFgp1() { return _curFgp1; }
-
- uint32 getFps() { return _fps; }
-
- uint32 getLargestLayerArea() { return _largestLayerArea; }
- uint32 getLargestSpriteArea() { return _largestSpriteArea; }
- char *getLargestLayerInfo() { return _largestLayerInfo; }
- char *getLargestSpriteInfo() { return _largestSpriteInfo; }
-
- void setNeedFullRedraw();
-
- void clearScene();
-
- void resetRenderLists();
-
- void setLocationMetrics(uint16 w, uint16 h);
- int32 initialiseBackgroundLayer(byte *parallax);
- void closeBackgroundLayer();
-
- void initialiseRenderCycle();
-
- void initBackground(int32 res, int32 new_palette);
- void registerFrame(byte *ob_mouse, byte *ob_graph, byte *ob_mega);
-
- void setScrollFraction(uint8 f) { _scrollFraction = f; }
- void setScrollTarget(int16 x, int16 y);
- void setScrolling();
-
- void setFullPalette(int32 palRes);
- void setPalette(int16 startEntry, int16 noEntries, byte *palette, uint8 setNow);
- uint8 quickMatch(uint8 r, uint8 g, uint8 b);
- int32 fadeUp(float time = 0.75);
- int32 fadeDown(float time = 0.75);
- uint8 getFadeStatus();
- void dimPalette();
- void waitForFade();
- void fadeServer();
-
- void updateDisplay(bool redrawScene = true);
-
- void displayMsg(byte *text, int time);
-
- int32 createSurface(SpriteInfo *s, byte **surface);
- void drawSurface(SpriteInfo *s, byte *surface, Common::Rect *clipRect = NULL);
- void deleteSurface(byte *surface);
- int32 drawSprite(SpriteInfo *s);
-
- void scaleImageFast(byte *dst, uint16 dstPitch, uint16 dstWidth,
- uint16 dstHeight, byte *src, uint16 srcPitch, uint16 srcWidth,
- uint16 srcHeight);
- void scaleImageGood(byte *dst, uint16 dstPitch, uint16 dstWidth,
- uint16 dstHeight, byte *src, uint16 srcPitch, uint16 srcWidth,
- uint16 srcHeight, byte *backbuf);
-
- void updateRect(Common::Rect *r);
-
- int32 openLightMask(SpriteInfo *s);
- int32 closeLightMask();
-
- void buildDisplay();
-
- void plotPoint(int x, int y, uint8 colour);
- void drawLine(int x0, int y0, int x1, int y1, uint8 colour);
-
-#ifdef BACKEND_8BIT
- void plotYUV(byte *lut, int width, int height, byte *const *dat);
-#endif
-
- void rollCredits();
- void splashScreen();
-};
-
-} // End of namespace Sword2
-
-#endif