Opened 18 years ago

Closed 18 years ago

Last modified 2 years ago

#8031 closed patch

missing screen effects

Reported by: SF/roever Owned by:
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Indiana Jones 4

Description

Hi,

I've just implemented the 4 missing screen effects that were mentioned in

https://sourceforge.net/forum/forum.php?thread_id=724766&forum_id=115756

The patch is relatively untested because I have no savegame in indy4 that is inside atlantis to test.

but i temporarily replacd the dissolve effect with the scroller to see all transitions at the start of indy when the statue is opened. so there is a chance that is works.

for the effects i needed to add a new function to the system classes. they do move the screen contents by a few pixels around.

I've tried to implement the function for all backends but only tested for SDL and X11

Ticket imported from: #602595. Ticket imported from: patches/136.

Attachments (5)

patch_screeneffects.diff (11.5 KB ) - added by SF/roever 18 years ago.
patch against august 30. cvs version
patch_screeneffects2.diff (11.7 KB ) - added by SF/roever 18 years ago.
new patch, last one contained error
move_screen.cpp (834 bytes ) - added by fingolfin 18 years ago.
Optimized move_screen
patch_screeneffects3.diff (14.7 KB ) - added by SF/roever 18 years ago.
next version of patch (split screen and optimisation)
patch_screeneffects4.diff (12.9 KB ) - added by SF/roever 18 years ago.
third, tested version of patch

Download all attachments as: .zip

Change History (15)

by SF/roever, 18 years ago

Attachment: patch_screeneffects.diff added

patch against august 30. cvs version

by SF/roever, 18 years ago

Attachment: patch_screeneffects2.diff added

new patch, last one contained error

comment:1 by fingolfin, 18 years ago

This is not working correctly at all - you move the full screen contents, including areas which are in fact outside of virtual screen 0 (e.g. the verbs), which means that e.g. the verbs will be scrolled out, which is definitly not correct.

So the least you'd have to do would be to reimplement move_screen to take an additional "height" parameter that describes the height of the area in which scrolling should be performed.

comment:2 by SF/roever, 18 years ago

it doesn't matter (at least not in FOA, because it's full screen there.

I don't know what it is like in DOTT.

But ok, I'll try to add a hight parameter and scroll only the top height pixel rows

comment:3 by fingolfin, 18 years ago

In fact it would be better if you add a full rect parameter,i.e. to constrain scrolling to a rect.

This way it'll be much more flexible, and you can optimize drawing (it is *very* slow over here): instead of scrolling everything and copying everything each turn, you just scroll the remaining parts, and only copy the parts that were just left "free" by the stuff moved away.

by fingolfin, 18 years ago

Attachment: move_screen.cpp added

Optimized move_screen

comment:4 by fingolfin, 18 years ago

I made an optimized version of move_screen for the SDL port (it's taking a height paramter already), which is almost twice as fast as the old one over here (I did some time tests where I removed the waitForTimer() calls, used steps of 1, and then use get_msecs to time how long scrollEffect took for a scroll up). You might want to use that :-)

comment:5 by fingolfin, 18 years ago

Gah, just ignore my previous two comments:

* I think it's completly sufficient if you add a "height" parameter to move_screen * the atteched move_screen source is incorrect/not working properly

by SF/roever, 18 years ago

Attachment: patch_screeneffects3.diff added

next version of patch (split screen and optimisation)

comment:6 by SF/roever, 18 years ago

New version of patch appended. it does contain the new height parameter for the move_screen function (only for sdl at the moment) and an optimisation of the drawing of the new image. only the necesary parts are drawn

it's still untested in the intended situations. I am working on reaching the places in FOA and DOTT but that takes time

by SF/roever, 18 years ago

Attachment: patch_screeneffects4.diff added

third, tested version of patch

comment:7 by SF/roever, 18 years ago

All right: last tweaks. this time it's tested in DOTT. there are all 4 directions available with gap at the bottom for the verbs. they do all work.

i've implemented the move_screen function for all backends except mac, but only tested for x11 and sdl

the thing that's missing now is maybe a test for FOA fullscreen scroll in the outer ring of atlantis.

comment:8 by SF/roever, 18 years ago

full screen scrolling in indy 4 in the dessert works too. so if there are no formal complaints i think it can be applied.

comment:9 by SF/chuzwuzza, 18 years ago

Status: newclosed

comment:10 by digitall, 2 years ago

Component: Engine: SCUMM
Game: Indiana Jones 4
Note: See TracTickets for help on using tickets.