aboutsummaryrefslogtreecommitdiff
path: root/sky/intro.cpp
diff options
context:
space:
mode:
authorMax Horn2003-03-05 19:04:34 +0000
committerMax Horn2003-03-05 19:04:34 +0000
commit5ffeedb1cbea471b3d902da96767ffad168023c5 (patch)
tree5ba28837ca5499b4ae6edcab35d5522c63612a1b /sky/intro.cpp
parentf02506f9931c3b4d7eb97887e16228623461011b (diff)
downloadscummvm-rg350-5ffeedb1cbea471b3d902da96767ffad168023c5.tar.gz
scummvm-rg350-5ffeedb1cbea471b3d902da96767ffad168023c5.tar.bz2
scummvm-rg350-5ffeedb1cbea471b3d902da96767ffad168023c5.zip
Patch #697312: Beneath a Steel Sky interim/initial support patch
svn-id: r6691
Diffstat (limited to 'sky/intro.cpp')
-rw-r--r--sky/intro.cpp266
1 files changed, 266 insertions, 0 deletions
diff --git a/sky/intro.cpp b/sky/intro.cpp
new file mode 100644
index 0000000000..b13d8ebece
--- /dev/null
+++ b/sky/intro.cpp
@@ -0,0 +1,266 @@
+/* ScummVM - Scumm Interpreter
+ * Copyright (C) 2003 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ *
+ */
+
+#include <string.h>
+#include "common/scummsys.h"
+#include "sky/skydefs.h"
+#include "sky/sky.h"
+
+#define intro_text_width 128
+
+#define fn_a_pal 60080
+#define fn_1a_log 60081
+#define fn_1a 60082
+#define fn_1b 60083
+#define fn_1c 60084
+#define fn_1d 60085
+#define fn_1e 60086
+#define fn_4a 60087
+#define fn_4b_log 60088
+#define fn_4b 60089
+#define fn_4c_log 60090
+#define fn_4c 60091
+#define fn_5_pal 60092
+#define fn_5_log 60093
+#define fn_5 60094
+#define fn_6_pal 60095
+#define fn_6_log 60096
+#define fn_6a 60097
+#define fn_6b 60098
+
+#ifdef short_intro_start
+#define virgin_time_1 3
+#define viring_time_2 3
+#define rev_time 8
+#define gibb_time 6
+#else
+#define virgin_time_1 (3*50)
+#define virgin_time_2 ((3*50)+8)
+#define rev_time ((8*50)+8)
+#define gibb_time ((6*50)+8)
+#endif
+
+void prepare_text(void);
+void show_intro_text(void);
+void remove_text(void);
+void intro_fx(void);
+void intro_vol(void);
+
+uint8 *seq1a_data;
+uint8 *seq1b_data;
+uint8 *seq1c_data;
+uint8 *seq1d_data;
+uint8 *seq1e_data;
+uint8 *seq4a_data;
+uint8 *seq4b_data;
+uint8 *seq4c_data;
+uint8 *seq5_data;
+uint8 *seq6a_data;
+uint8 *seq6b_data;
+
+
+uint8 *vga_data;
+uint8 *diff_data;
+
+uint8 *work_base;
+uint8 *work_screen;
+uint8 *work_screen_end;
+
+uint8 *intro_text_space; //space for storing text messages
+uint8 *intro_text_save; //save screen data here
+
+uint8 *vga_pointer;
+uint8 *diff_pointer;
+
+uint32 no_frames; //number of frames in scrolling intro
+uint32 frame_counter;
+
+#define ic_prepare_text 0
+#define ic_show_text 1
+#define ic_remove_text 2
+#define ic_make_sound 3
+#define ic_fx_volume 4
+
+
+typedef void (*pfc)(void);
+pfc command_routines[] = { &prepare_text, &show_intro_text, &remove_text, &intro_fx, &intro_vol };
+
+uint32 cockpit_commands[] =
+{
+ 1000, //do straight away
+ ic_prepare_text,
+ 77,
+ 220,
+ ic_show_text, //radar detects jamming signal
+ 20,
+ 160,
+ 105,
+ ic_remove_text,
+ 81,
+ 105,
+ ic_show_text, //well switch to override you fool
+ 170,
+ 86,
+ 35,
+ ic_remove_text,
+ 35,
+ ic_prepare_text,
+ 477,
+ 35,
+ ic_show_text,
+ 30,
+ 160,
+ 3,
+ ic_remove_text
+};
+
+uint32 zero_commands[] = { 0 };
+
+uint32 anim5_commands[] =
+{
+ 31,
+ ic_make_sound,
+ 2,
+ 127,
+ 0
+};
+
+uint32 anim4a_commands[] =
+{
+ 136,
+ ic_make_sound,
+ 1,
+ 70,
+ 90,
+ ic_fx_volume,
+ 80,
+ 50,
+ ic_fx_volume,
+ 90,
+ 5,
+ ic_fx_volume,
+ 100,
+ 0
+};
+
+uint32 anim4c_commands[] =
+{
+ 1000,
+ ic_fx_volume,
+ 100,
+ 25,
+ ic_fx_volume,
+ 110,
+ 15,
+ ic_fx_volume,
+ 120,
+ 4,
+ ic_fx_volume,
+ 127,
+ 0
+};
+
+uint32 anim6a_commands[] =
+{
+ 1000,
+ ic_prepare_text,
+ 478,
+ 13,
+ ic_show_text,
+ 175,
+ 155,
+ 0
+};
+
+uint32 anim6b_commands[] =
+{
+ 131,
+ ic_remove_text,
+ 131,
+ ic_prepare_text,
+ 479,
+ 74,
+ ic_show_text,
+ 175,
+ 155,
+ 45,
+ ic_remove_text,
+ 45,
+ ic_prepare_text,
+ 162,
+ 44,
+ ic_show_text,
+ 175,
+ 155,
+ 4,
+ ic_remove_text,
+ 0
+};
+
+uint32 *command_pointer = (uint32 *)zero_commands;
+
+
+void SkyState::init_virgin()
+{
+ _temp_pal = (uint8 *)load_file(60111, NULL);
+ if (_temp_pal != NULL)
+ set_palette(_temp_pal);
+
+ _work_screen = (uint8 *)load_file(60110, NULL);
+
+ if (_work_screen != NULL)
+ show_screen();
+
+ //free the memory that was malloc'ed indirectly via load_file
+ free (_work_screen);
+ free (_temp_pal);
+}
+
+void SkyState::show_screen(void)
+{
+ _system->copy_rect(_work_screen, 320, 0, 0, 320, 200);
+ _system->update_screen();
+}
+
+void prepare_text(void)
+{
+
+}
+
+void show_intro_text(void)
+{
+
+}
+
+void remove_text(void)
+{
+
+}
+
+void intro_fx(void)
+{
+
+}
+
+void intro_vol(void)
+{
+
+}