From f9512e917c5e0ebcb21ea383727ef2cee3a93db7 Mon Sep 17 00:00:00 2001 From: zicodxx <> Date: Thu, 8 Feb 2007 15:36:56 +0000 Subject: [PATCH] since Movies are initiated once in runtime, indroduced SCREEN_MOVIE to set desired movie resolutions seperatly from menu or game resolution --- dxx-changelog.txt | 1 + main/game.c | 9 +++++++++ main/movie.c | 25 +++++++++++++------------ main/movie.h | 8 ++++++++ main/screens.h | 3 ++- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/dxx-changelog.txt b/dxx-changelog.txt index 043a4831e..695127a91 100755 --- a/dxx-changelog.txt +++ b/dxx-changelog.txt @@ -3,6 +3,7 @@ D2X-Rebirth Changelog 20070208 -------- main/newdemo.c: fixed demo playback Afterburner gauge and Primary weapon ammo info +main/game.c, main/game.c, main/movie.c, main/movie.h: since Movies are initiated once in runtime, indroduced SCREEN_MOVIE to set desired movie resolutions seperatly from menu or game resolution 20070207 -------- diff --git a/main/game.c b/main/game.c index a62d4963a..14a1e9201 100755 --- a/main/game.c +++ b/main/game.c @@ -115,6 +115,7 @@ char game_rcsid[] = "$Id: game.c,v 1.1.1.1 2006/03/17 19:55:53 zicodxx Exp $"; #include "playsave.h" #include "fix.h" #include "hudmsg.h" +#include "movie.h" int VGA_current_mode; @@ -634,6 +635,14 @@ int set_screen_mode(int sm) init_editor_screen(); //setup other editor stuff break; #endif + case SCREEN_MOVIE: + if (grd_curscreen->sc_mode != SM(MOVIE_WIDTH,MOVIE_HEIGHT)) { + if (gr_set_mode(SM(MOVIE_WIDTH,MOVIE_HEIGHT))) Error("Cannot set screen mode for game!"); + gr_palette_load( gr_palette ); + } + gr_init_sub_canvas( &VR_screen_pages[0], &grd_curscreen->sc_canvas, 0, 0, MOVIE_WIDTH,MOVIE_HEIGHT ); + gr_init_sub_canvas( &VR_screen_pages[1], &grd_curscreen->sc_canvas, 0, 0, MOVIE_WIDTH,MOVIE_HEIGHT ); + break; default: Error("Invalid screen mode %d",sm); } diff --git a/main/movie.c b/main/movie.c index 45af7320d..fecdc7158 100644 --- a/main/movie.c +++ b/main/movie.c @@ -105,7 +105,6 @@ int RunMovie(char *filename, int highres_flag, int allow_abort,int dx,int dy); void decode_text_line(char *p); void draw_subtitles(int frame_num); - // ---------------------------------------------------------------------- void* MPlayAlloc(unsigned size) { @@ -201,6 +200,7 @@ void MovieShowFrame(ubyte *buf, uint bufw, uint bufh, uint sx, uint sy, uint w, glEnable (GL_BLEND); + gr_update(); #else gr_bm_ubitblt(bufw,bufh,dstx,dsty,sx,sy,&source_bm,&grd_curcanv->cv_bitmap); #endif @@ -287,8 +287,8 @@ int RunMovie(char *filename, int hires_flag, int must_have,int dx,int dy) MVE_ioCallbacks(FileRead); #ifdef OGL - gr_set_mode(SM(grd_curscreen->sc_w,grd_curscreen->sc_h)); - set_screen_mode(SCREEN_MENU); +// gr_set_mode(SM(grd_curscreen->sc_w,grd_curscreen->sc_h)); + set_screen_mode(SCREEN_MOVIE); gr_copy_palette(pal_save, gr_palette, 768); memset(gr_palette, 0, 768); gr_palette_load(gr_palette); @@ -363,15 +363,16 @@ int RunMovie(char *filename, int hires_flag, int must_have,int dx,int dy) int InitMovieBriefing() { -#ifndef OGL // 0 - if (MovieHires) - gr_set_mode(SM(640,480)); - else - gr_set_mode(SM(320,200)); - - gr_init_sub_canvas( &VR_screen_pages[0], &grd_curscreen->sc_canvas, 0, 0, grd_curscreen->sc_w, grd_curscreen->sc_h ); - gr_init_sub_canvas( &VR_screen_pages[1], &grd_curscreen->sc_canvas, 0, 0, grd_curscreen->sc_w, grd_curscreen->sc_h ); -#endif +// #ifndef OGL // 0 +// if (MovieHires) +// gr_set_mode(SM(640,480)); +// else +// gr_set_mode(SM(320,200)); +// +// gr_init_sub_canvas( &VR_screen_pages[0], &grd_curscreen->sc_canvas, 0, 0, grd_curscreen->sc_w, grd_curscreen->sc_h ); +// gr_init_sub_canvas( &VR_screen_pages[1], &grd_curscreen->sc_canvas, 0, 0, grd_curscreen->sc_w, grd_curscreen->sc_h ); +// #endif + set_screen_mode(SCREEN_MOVIE); return 1; } diff --git a/main/movie.h b/main/movie.h index 787ff9947..83835ffec 100755 --- a/main/movie.h +++ b/main/movie.h @@ -28,6 +28,14 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define MOVIE_PLAYED_FULL 1 // movie was played all the way through #define MOVIE_ABORTED 2 // movie started by was aborted +#ifdef OGL +#define MOVIE_WIDTH (MovieHires&&grd_curscreen->sc_w<640?640:grd_curscreen->sc_w) +#define MOVIE_HEIGHT (MovieHires&&grd_curscreen->sc_h<480?480:grd_curscreen->sc_h) +#else +#define MOVIE_WIDTH (MovieHires?640:320) +#define MOVIE_HEIGHT (MovieHires?480:200) +#endif + extern int PlayMovie(const char *filename, int allow_abort); extern int PlayMovies(int num_files, const char *filename[], int graphmode, int allow_abort); extern int InitRobotMovie(char *filename); diff --git a/main/screens.h b/main/screens.h index 96d4f56cd..14e5cc8f3 100755 --- a/main/screens.h +++ b/main/screens.h @@ -29,7 +29,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. // for Screen_mode variable #define SCREEN_MENU 0 // viewing the menu screen #define SCREEN_GAME 1 // viewing the menu screen -#define SCREEN_EDITOR 2 // viewing the editor screen +#define SCREEN_EDITOR 2 // viewing the editor screen +#define SCREEN_MOVIE 3 // viewing a movie //from editor.c extern grs_canvas *Canv_editor; // the full on-scrren editor canvas