diff options
author | James Brown | 2002-04-17 11:20:55 +0000 |
---|---|---|
committer | James Brown | 2002-04-17 11:20:55 +0000 |
commit | 2be1b45bdfa04050308adc5f19557a5111e1a3c8 (patch) | |
tree | ea3377f324171190786ffdbc8edeb1c614546bb7 | |
parent | 8df45c662cacd08c969fc83f348607e6763b957b (diff) | |
download | scummvm-rg350-2be1b45bdfa04050308adc5f19557a5111e1a3c8.tar.gz scummvm-rg350-2be1b45bdfa04050308adc5f19557a5111e1a3c8.tar.bz2 scummvm-rg350-2be1b45bdfa04050308adc5f19557a5111e1a3c8.zip |
Add BeIDE project file (update readme accordingly).
Readd shaking support. It doesn't work properly - probably due to the
removal of redrawLines(). Ludde? You vanished before I could confirm this
with you.. is there a new function to call?
svn-id: r3973
-rw-r--r-- | readme.txt | 7 | ||||
-rw-r--r-- | scummvm.proj | bin | 0 -> 8240 bytes | |||
-rw-r--r-- | sdl.cpp | 42 |
3 files changed, 46 insertions, 3 deletions
diff --git a/readme.txt b/readme.txt index b516a93096..031ddbbc03 100644 --- a/readme.txt +++ b/readme.txt @@ -75,8 +75,8 @@ ScummVM and wish to commit it into the main CVS, feel free to contact us! Macintosh - SDL/CUSTOM (Including Classic and Mac OS X) AmigaOS - SDL/AGA MorphOS - SDL + BeOS - SDL Acorn (RiscOS) - ??? - BeOS - ??? Dreamcast - ??? Known Bugs: @@ -96,6 +96,8 @@ listed here, nor in the compatibility table on the website, please see below. an alarm, at Bumpusville - Some overlap may occur in graphics, expecially the intro - Music does not work in adlib mode, use midi + - The dark-light torch does not work in the Tunnel of Love. + You'll have to guess where to throw :) Loom (256 Talkie): - CD music and voices are not always syncronised @@ -147,7 +149,10 @@ found in the 'tools' CVS module, or in the 'scummvm-tools' package. * Enter the path to the SDL include files in Tools|Options|Directories * Now it should compile successfully. + BeOS: + * Open the 'scummvm.proj' file in BeIDE. Compile as normal. + Running: -------- diff --git a/scummvm.proj b/scummvm.proj Binary files differnew file mode 100644 index 0000000000..a08b350484 --- /dev/null +++ b/scummvm.proj @@ -7,7 +7,8 @@ #include "mp3_cd.h" #include <SDL.h> - +#define MAX(a,b) (((a)<(b)) ? (b) : (a)) +#define MIN(a,b) (((a)>(b)) ? (b) : (a)) class OSystem_SDL : public OSystem { public: @@ -567,7 +568,7 @@ void OSystem_SDL::update_screen() { /* Calculate area */ area += r->w * r->h; - /* scale the rect to fit in SDL_UpdateRects */ + /* scaling the rect to fit in SDL_UpdateRects */ r->x <<= 1; r->y <<= 1; r->w <<= 1; @@ -624,6 +625,43 @@ void OSystem_SDL::set_mouse_cursor(const byte *buf, uint w, uint h, int hotspot_ } void OSystem_SDL::set_shake_pos(int shake_pos) { + int old_shake_pos = _current_shake_pos; + int dirty_height, dirty_blackheight; + int dirty_top, dirty_blacktop; + + if (shake_pos != old_shake_pos) { + _current_shake_pos = shake_pos; + force_full = true; + + /* Old shake pos was current_shake_pos, new is shake_pos. + * Move the screen up or down to account for the change. + */ + SDL_Rect dstr = { 0, shake_pos*scaling, 320*scaling, 200*scaling }; + SDL_Rect srcr = { 0, old_shake_pos*scaling, 320*scaling, 200*scaling }; + SDL_BlitSurface(sdl_screen, &srcr, sdl_screen, &dstr); + + /* Refresh either the upper part of the screen, + * or the lower part */ + if (shake_pos > old_shake_pos) { + dirty_height = MIN(shake_pos, 0) - MIN(old_shake_pos, 0); + dirty_top = -MIN(shake_pos, 0); + dirty_blackheight = MAX(shake_pos, 0) - MAX(old_shake_pos, 0); + dirty_blacktop = MAX(old_shake_pos, 0); + } else { + dirty_height = MAX(old_shake_pos, 0) - MAX(shake_pos, 0); + dirty_top = 200 - MAX(old_shake_pos, 0); + dirty_blackheight = MIN(old_shake_pos, 0) - MIN(shake_pos, 0); + dirty_blacktop = 200 + MIN(shake_pos, 0); + } + + /* Fill the dirty area with blackness or the scumm image */ + SDL_Rect blackrect = {0, dirty_blacktop*scaling, 320*scaling, dirty_blackheight*scaling}; + SDL_FillRect(sdl_screen, &blackrect, 0); + + /* FIXME: Um, screen seems to glitch since this + 'not needed' function was removed */ + //g_scumm->redrawLines(dirty_top, dirty_top + dirty_height); + } } uint32 OSystem_SDL::get_msecs() { |