|
|
ba40aaf |
diff -urN lacewing.orig/Makefile lacewing/Makefile
|
|
|
ba40aaf |
--- lacewing.orig/Makefile 1970-01-01 01:00:00.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/Makefile 2006-01-20 13:14:27.000000000 +0100
|
|
|
ba40aaf |
@@ -0,0 +1,28 @@
|
|
|
ba40aaf |
+PREFIX = /home/opt
|
|
|
ba40aaf |
+DATADIR = $(PREFIX)/share/$(TARGET)
|
|
|
ba40aaf |
+CFLAGS = -g -Wall -O2
|
|
|
cb2ff4e |
+LDFLAGS = `allegro-config --libs` -lm
|
|
|
ba40aaf |
+DEFINES = -DDATADIR=\"$(DATADIR)/\"
|
|
|
ba40aaf |
+OBJS = actor.o bullet.o cloud.o cmds.o displ_in.o display.o eclass.o \
|
|
|
ba40aaf |
+ enemy.o game.o input.o levels.o main.o menu.o palette.o pickup.o \
|
|
|
ba40aaf |
+ score.o ships.o sound.o stars.o stuff.o upgrades.o
|
|
|
ba40aaf |
+TARGET = lacewing
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+$(TARGET): $(OBJS)
|
|
|
ba40aaf |
+ $(CC) $(LDFLAGS) -o $@ $^
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+%.o: %.c
|
|
|
ba40aaf |
+ $(CC) $(CFLAGS) $(DEFINES) -o $@ -c $<
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+install: $(TARGET)
|
|
|
ba40aaf |
+ mkdir -p $(PREFIX)/bin
|
|
|
ba40aaf |
+ mkdir -p $(DATADIR)/gfx
|
|
|
ba40aaf |
+ mkdir -p $(DATADIR)/sound/ambi
|
|
|
ba40aaf |
+ install -p -m 755 $(TARGET) $(PREFIX)/bin
|
|
|
ba40aaf |
+ install -p -m 644 lacew.cfg $(DATADIR)
|
|
|
ba40aaf |
+ install -p -m 644 gfx/* $(DATADIR)/gfx
|
|
|
ba40aaf |
+ install -p -m 644 sound/*.wav $(DATADIR)/sound
|
|
|
ba40aaf |
+ install -p -m 644 sound/ambi/* $(DATADIR)/sound/ambi
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+clean:
|
|
|
ba40aaf |
+ rm -f $(OBJS) $(TARGET) *~
|
|
|
ba40aaf |
diff -urN lacewing.orig/config.h lacewing/config.h
|
|
|
ba40aaf |
--- lacewing.orig/config.h 2003-11-24 21:54:40.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/config.h 2006-01-20 14:34:10.000000000 +0100
|
|
|
ba40aaf |
@@ -37,6 +37,8 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
#define ATTACK_NONE -1
|
|
|
ba40aaf |
|
|
|
ba40aaf |
+#define MAX_FRAMESKIP 4
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
struct armoury
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
char *name;
|
|
|
ba40aaf |
@@ -1067,3 +1069,13 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
+/* compat defines */
|
|
|
ba40aaf |
+#include <stdio.h>
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+#ifndef DATADIR
|
|
|
ba40aaf |
+#define DATADIR
|
|
|
ba40aaf |
+#endif
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+#define PI M_PI
|
|
|
ba40aaf |
+#define itoa(integer, buf, bufsize) \
|
|
|
ba40aaf |
+ (snprintf(buf, bufsize, "%d", integer), buf)
|
|
|
ba40aaf |
diff -urN lacewing.orig/displ_in.c lacewing/displ_in.c
|
|
|
ba40aaf |
--- lacewing.orig/displ_in.c 2003-11-25 01:25:16.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/displ_in.c 2006-01-20 00:28:03.000000000 +0100
|
|
|
ba40aaf |
@@ -89,7 +89,7 @@
|
|
|
ba40aaf |
RGB temp_palette [256];
|
|
|
ba40aaf |
RGB temp_palette3 [1024];
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- DATAFILE *datf = load_datafile("gfx\\data.dat");
|
|
|
ba40aaf |
+ DATAFILE *datf = load_datafile(DATADIR "gfx/data.dat");
|
|
|
ba40aaf |
if (datf == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
|
|
|
ba40aaf |
@@ -107,7 +107,7 @@
|
|
|
ba40aaf |
textprintf_centre(screen, font, 320, 200, COLOUR_GREEN8, "Loading}...");
|
|
|
ba40aaf |
textprintf_centre(screen, font2, 320, 200, COLOUR_YELLOW8, "Loading}...");
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- BITMAP *temp_bitmap = load_bitmap("gfx\\ship8_i.bmp", temp_palette);
|
|
|
ba40aaf |
+ BITMAP *temp_bitmap = load_bitmap(DATADIR "gfx/ship8_i.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap");
|
|
|
ba40aaf |
@@ -205,7 +205,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
// Load in enemy bitmaps:
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\enemy1.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/enemy1.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (enemy1.bmp not loaded correctly?)");
|
|
|
ba40aaf |
@@ -251,7 +251,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bitmap);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\enemy3.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/enemy3.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (enemy3.bmp not loaded correctly?)");
|
|
|
ba40aaf |
@@ -273,7 +273,7 @@
|
|
|
ba40aaf |
destroy_bitmap(temp_bitmap);
|
|
|
ba40aaf |
// destroy_bitmap(temp_bitmap2);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\small1.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/small1.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (small1.bmp not loaded correctly?)");
|
|
|
ba40aaf |
@@ -287,7 +287,7 @@
|
|
|
ba40aaf |
destroy_bitmap(temp_bitmap);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\small2.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/small2.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (small2.bmp not loaded correctly?)");
|
|
|
ba40aaf |
@@ -300,7 +300,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bitmap);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\enemy2.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/enemy2.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (enemy2.bmp not loaded correctly?)");
|
|
|
ba40aaf |
@@ -313,7 +313,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bitmap);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bitmap = load_bitmap("gfx\\lships.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bitmap = load_bitmap(DATADIR "gfx/lships.bmp", temp_palette);
|
|
|
ba40aaf |
if (temp_bitmap == NULL)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
bitmap_error("temp_bitmap (lships.bmp not loaded correctly?)");
|
|
|
ba40aaf |
diff -urN lacewing.orig/display.c lacewing/display.c
|
|
|
ba40aaf |
--- lacewing.orig/display.c 2003-11-25 01:27:20.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/display.c 2006-01-20 14:32:31.000000000 +0100
|
|
|
ba40aaf |
@@ -53,7 +53,6 @@
|
|
|
ba40aaf |
BITMAP *player2;
|
|
|
ba40aaf |
//extern volatile int frames_per_second;
|
|
|
ba40aaf |
extern volatile int ticked;
|
|
|
ba40aaf |
-extern int slacktime;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
extern struct optionstruct options;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -3093,12 +3092,10 @@
|
|
|
ba40aaf |
// textprintf(bmp, small_font, 20, 110, 5, "Xs %i Ys %i TS %f DS %f Drag %i",
|
|
|
ba40aaf |
// actor[player[play].actor_controlled].x_speed, actor[player[play].actor_controlled].y_speed, hypot(actor[player[play].actor_controlled].x_speed, actor[player[play].actor_controlled].y_speed), hypot(actor[player[play].actor_controlled].x_speed, actor[player[play].actor_controlled].y_speed) * game.drag, actor[player[play].actor_controlled].drag_amount);
|
|
|
ba40aaf |
// textprintf(bmp, small_font, 20, 60, 5, "Stack %i", stackavail());
|
|
|
ba40aaf |
-// textprintf(bmp, small_font, 20, 90, 5, "Slack %i", slacktime);
|
|
|
ba40aaf |
// textprintf(bmp, small_font, 20, 100, 5, "Lock %i", actor[0].lock);
|
|
|
ba40aaf |
//textprintf(bmp, smallfont, 20, 50, 5, "Fps} %i", frames_per_second);
|
|
|
ba40aaf |
/* textprintf(bmp, font, 20, 50, 5, "Fps} %i", frames_per_second);
|
|
|
ba40aaf |
textprintf(bmp, font2, 20, 50, 5, "Fps} %i", frames_per_second);
|
|
|
ba40aaf |
- textprintf(bmp, font, 20, 80, 5, "Slack} %i", slacktime);
|
|
|
ba40aaf |
textprintf(bmp, font, 20, 110, 5, "Xs} %i Ys} %i Drag} %i",
|
|
|
ba40aaf |
actor[player[play].actor_controlled].x_speed, actor[player[play].actor_controlled].y_speed, actor[player[play].actor_controlled].drag_amount);
|
|
|
ba40aaf |
textprintf(bmp, font, 20, 140, 5, "X} %i Y} %i ",
|
|
|
ba40aaf |
@@ -3107,7 +3104,6 @@
|
|
|
ba40aaf |
enemy[0].angle, enemy[0].attribute [ATTRIB_SWERVER_ANGLE], enemy[0].attacking, enemy[0].recycle);
|
|
|
ba40aaf |
textprintf(bmp, font, 20, 200, 5, "Lock} %i ", actor[0].lock);*/
|
|
|
ba40aaf |
/* textprintf(bmp, small_font, 20, 50, 5, "FPS %i", frames_per_second);
|
|
|
ba40aaf |
- textprintf(bmp, small_font, 20, 60, 5, "SLACK %i", slacktime);
|
|
|
ba40aaf |
textprintf(bmp, small_font, 20, 70, 5, "XS %i YS %i DRAG %i",
|
|
|
ba40aaf |
actor[player[play].actor_controlled].x_speed, actor[player[play].actor_controlled].y_speed, actor[player[play].actor_controlled].drag_amount);
|
|
|
ba40aaf |
textprintf(bmp, small_font, 20, 80, 5, "X %i Y %i ",
|
|
|
ba40aaf |
@@ -3128,10 +3124,11 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void level_announcement(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
+ int frames_skipped = 0;
|
|
|
ba40aaf |
+ int waiting = 30;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
clear_bitmap(screen);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- int waiting = 30;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (arena.level == 1)
|
|
|
ba40aaf |
waiting = 60;
|
|
|
ba40aaf |
@@ -3142,11 +3139,20 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
do
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
- while(ticked > 0)
|
|
|
ba40aaf |
+ while(ticked == 0)
|
|
|
ba40aaf |
+ rest(0);
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ waiting--;
|
|
|
ba40aaf |
+ ticked--;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ /* skip drawing if we can't keep up */
|
|
|
ba40aaf |
+ if (ticked && (frames_skipped < MAX_FRAMESKIP))
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
- waiting --;
|
|
|
ba40aaf |
- ticked --;
|
|
|
ba40aaf |
- };
|
|
|
ba40aaf |
+ frames_skipped++;
|
|
|
ba40aaf |
+ continue;
|
|
|
ba40aaf |
+ }
|
|
|
ba40aaf |
+ frames_skipped = 0;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
if ((waiting / 5) % 2 == 0)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
textprintf_centre(screen, font, 320, 240, COLOUR_GREEN4 + (waiting / 2) % 4, "Get} Ready}");
|
|
|
ba40aaf |
diff -urN lacewing.orig/game.c lacewing/game.c
|
|
|
ba40aaf |
--- lacewing.orig/game.c 2003-10-06 00:35:54.000000000 +0200
|
|
|
ba40aaf |
+++ lacewing/game.c 2006-01-20 14:32:11.000000000 +0100
|
|
|
ba40aaf |
@@ -64,12 +64,12 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
extern volatile unsigned char ticked;
|
|
|
ba40aaf |
extern volatile int framecounter;
|
|
|
ba40aaf |
-extern int slacktime;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void game_loop(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
int playing = 1;
|
|
|
ba40aaf |
+ int frames_skipped = 0;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
counter = 0;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -168,19 +168,20 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- if (ticked == 0)
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ /* only draw if we can keepup */
|
|
|
ba40aaf |
+ if ( (ticked == 0) || (frames_skipped > MAX_FRAMESKIP))
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
run_display();
|
|
|
ba40aaf |
+ frames_skipped = 0;
|
|
|
ba40aaf |
// framecounter++;
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
+ else
|
|
|
ba40aaf |
+ frames_skipped++;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ while(ticked == 0)
|
|
|
ba40aaf |
+ rest(0);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- slacktime = 0;
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- slacktime ++;
|
|
|
ba40aaf |
- } while(ticked == 0);
|
|
|
ba40aaf |
ticked --;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
counter ++;
|
|
|
ba40aaf |
diff -urN lacewing.orig/main.c lacewing/main.c
|
|
|
ba40aaf |
--- lacewing.orig/main.c 2003-11-22 13:33:22.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/main.c 2006-01-20 14:03:49.000000000 +0100
|
|
|
ba40aaf |
@@ -96,11 +96,10 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
#include "allegro.h"
|
|
|
ba40aaf |
|
|
|
ba40aaf |
-#include <conio.h>
|
|
|
ba40aaf |
#include <string.h>
|
|
|
ba40aaf |
#include <stdlib.h>
|
|
|
ba40aaf |
-#include <pc.h>
|
|
|
ba40aaf |
#include <math.h>
|
|
|
ba40aaf |
+#include <stdio.h>
|
|
|
ba40aaf |
|
|
|
ba40aaf |
#include "config.h"
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -150,17 +149,16 @@
|
|
|
ba40aaf |
//volatile int framecounter;
|
|
|
ba40aaf |
//volatile int frames_per_second;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
-volatile int inputcounter = 0;
|
|
|
ba40aaf |
-volatile int inputs_per_second = 0;
|
|
|
ba40aaf |
+//volatile int inputcounter = 0;
|
|
|
ba40aaf |
+//volatile int inputs_per_second = 0;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
-volatile int turncounter = 0;
|
|
|
ba40aaf |
-volatile int turns_per_second = 0;
|
|
|
ba40aaf |
+//volatile int turncounter = 0;
|
|
|
ba40aaf |
+//volatile int turns_per_second = 0;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void tickover(void);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
volatile unsigned char ticked;
|
|
|
ba40aaf |
//volatile unsigned char tick_counter;
|
|
|
ba40aaf |
-int slacktime;
|
|
|
ba40aaf |
// --- end timer interupt
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -199,33 +197,13 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
int main(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- cprintf("\n\rHello and welcome to Lacewing version 1.10!");
|
|
|
ba40aaf |
- cprintf("\n\rCopyright 2003 by Linley Henzell & Captain Pork.\n\r");
|
|
|
ba40aaf |
- cprintf("\n\rLacewing is free software published under the");
|
|
|
ba40aaf |
- cprintf("\n\rGeneral Public Licence. It can be modified and");
|
|
|
ba40aaf |
- cprintf("\n\rredistributed under certain conditions and comes");
|
|
|
ba40aaf |
- cprintf("\n\rwith no warranties of any kind.");
|
|
|
ba40aaf |
- cprintf("\n\rPlease read the LICENCE.TXT file for more information.\n\r");
|
|
|
ba40aaf |
- cprintf("\n\rPress Q to Quit, or any other key to continue...\n\r");
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- char rkey;
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- int randcount; // doesn't matter if it's not initialised - better, actually
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- randcount ++;
|
|
|
ba40aaf |
- }
|
|
|
ba40aaf |
- while(kbhit() == 0);
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- rkey = getch();
|
|
|
ba40aaf |
- if (rkey == 'q' || rkey == 'Q')
|
|
|
ba40aaf |
- return 0;
|
|
|
ba40aaf |
- if (rkey == 0)
|
|
|
ba40aaf |
- getch();
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- srandom(randcount);
|
|
|
ba40aaf |
+ printf("Hello and welcome to Lacewing version 1.10!");
|
|
|
ba40aaf |
+ printf("\nCopyright 2003 by Linley Henzell & Captain Pork.\n");
|
|
|
ba40aaf |
+ printf("\nLacewing is free software published under the");
|
|
|
ba40aaf |
+ printf("\nGeneral Public Licence. It can be modified and");
|
|
|
ba40aaf |
+ printf("\nredistributed under certain conditions and comes");
|
|
|
ba40aaf |
+ printf("\nwith no warranties of any kind.");
|
|
|
ba40aaf |
+ printf("\nPlease read the LICENCE.TXT file for more information.\n");
|
|
|
ba40aaf |
|
|
|
ba40aaf |
init_at_startup();
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -242,9 +220,9 @@
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
|
|
|
ba40aaf |
allegro_init();
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
- set_config_file("lacew.cfg");
|
|
|
ba40aaf |
|
|
|
ba40aaf |
+ init_config();
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
install_keyboard();
|
|
|
ba40aaf |
install_timer();
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -257,8 +235,8 @@
|
|
|
ba40aaf |
// LOCK_VARIABLE (tick_counter);
|
|
|
ba40aaf |
// LOCK_VARIABLE (frames_per_second);
|
|
|
ba40aaf |
// LOCK_VARIABLE (framecounter);
|
|
|
ba40aaf |
- LOCK_VARIABLE (turns_per_second);
|
|
|
ba40aaf |
- LOCK_VARIABLE (turncounter);
|
|
|
ba40aaf |
+// LOCK_VARIABLE (turns_per_second);
|
|
|
ba40aaf |
+// LOCK_VARIABLE (turncounter);
|
|
|
ba40aaf |
// LOCK_VARIABLE (inputs_per_second);
|
|
|
ba40aaf |
// LOCK_VARIABLE (inputcounter);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
diff -urN lacewing.orig/menu.c lacewing/menu.c
|
|
|
ba40aaf |
--- lacewing.orig/menu.c 2003-11-25 01:53:04.000000000 +0100
|
|
|
ba40aaf |
+++ lacewing/menu.c 2006-01-20 14:33:30.000000000 +0100
|
|
|
ba40aaf |
@@ -138,7 +138,6 @@
|
|
|
ba40aaf |
int option_index(void);
|
|
|
ba40aaf |
void enter_keystroke(void);
|
|
|
ba40aaf |
int option_jump(int direction);
|
|
|
ba40aaf |
-void init_config(void);
|
|
|
ba40aaf |
void save_config(void);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void choose_ships(void);
|
|
|
ba40aaf |
@@ -205,7 +204,6 @@
|
|
|
ba40aaf |
void init_menus_once_only(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
text_mode(-1);
|
|
|
ba40aaf |
- init_config();
|
|
|
ba40aaf |
|
|
|
ba40aaf |
menu_bmp = create_bitmap(640, 480);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -226,7 +224,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
RGB temp_palette [256];
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- BITMAP *temp_bmp = load_bitmap("gfx\\title_i.bmp", temp_palette);
|
|
|
ba40aaf |
+ BITMAP *temp_bmp = load_bitmap(DATADIR "gfx/title_i.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!temp_bmp)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -246,7 +244,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bmp);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bmp = load_bitmap("gfx\\title_o.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bmp = load_bitmap(DATADIR "gfx/title_o.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!temp_bmp)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -266,7 +264,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bmp);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- temp_bmp = load_bitmap("gfx\\title_s.bmp", temp_palette);
|
|
|
ba40aaf |
+ temp_bmp = load_bitmap(DATADIR "gfx/title_s.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!temp_bmp)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -286,7 +284,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
destroy_bitmap(temp_bmp);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- upgrade_box1 = load_bitmap("gfx\\upg_box.bmp", temp_palette);
|
|
|
ba40aaf |
+ upgrade_box1 = load_bitmap(DATADIR "gfx/upg_box.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!upgrade_box1)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -295,7 +293,7 @@
|
|
|
ba40aaf |
exit(1);
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- upgrade_box2 = load_bitmap("gfx\\upg_box2.bmp", temp_palette);
|
|
|
ba40aaf |
+ upgrade_box2 = load_bitmap(DATADIR "gfx/upg_box2.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!upgrade_box2)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -304,7 +302,7 @@
|
|
|
ba40aaf |
exit(1);
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- upgrade_box3 = load_bitmap("gfx\\upg_box3.bmp", temp_palette);
|
|
|
ba40aaf |
+ upgrade_box3 = load_bitmap(DATADIR "gfx/upg_box3.bmp", temp_palette);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
if (!upgrade_box3)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
@@ -324,7 +322,8 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void menu_loop(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
+ int frames_skipped = 0;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
which_menu = MENU_MAIN;
|
|
|
ba40aaf |
menu_index_max = 4;
|
|
|
ba40aaf |
menu_index_min = 0;
|
|
|
ba40aaf |
@@ -347,20 +346,21 @@
|
|
|
ba40aaf |
if (which_menu == MENU_SCORES || which_menu == MENU_ENTER_SCORES)
|
|
|
ba40aaf |
make_bouncies_move();
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- if (ticked == 0)
|
|
|
ba40aaf |
+ /* only draw if we can keepup */
|
|
|
ba40aaf |
+ if ( (ticked == 0) || (frames_skipped > MAX_FRAMESKIP))
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
clear_bitmap(menu_bmp);
|
|
|
ba40aaf |
menu_display();
|
|
|
ba40aaf |
blit(menu_bmp, screen, 0, 0, 0, 0, 640, 480);
|
|
|
ba40aaf |
+ frames_skipped = 0;
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
+ else
|
|
|
ba40aaf |
+ frames_skipped++;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
menu_input();
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- slacktime = 0;
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- slacktime ++;
|
|
|
ba40aaf |
- } while(ticked == 0);
|
|
|
ba40aaf |
+ while(ticked == 0)
|
|
|
ba40aaf |
+ rest(0);
|
|
|
ba40aaf |
ticked --;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
} while(TRUE);
|
|
|
ba40aaf |
@@ -1431,8 +1431,6 @@
|
|
|
ba40aaf |
game.single_player = 0;
|
|
|
ba40aaf |
game.users = 1;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- int county = 0;
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
int keypress_wait1 = KP_WAIT_SHORT;
|
|
|
ba40aaf |
int keypress_wait2 = KP_WAIT_SHORT;
|
|
|
ba40aaf |
int waiting = 5;
|
|
|
ba40aaf |
@@ -1577,10 +1575,8 @@
|
|
|
ba40aaf |
blit(menu_bmp, screen, 0, 0, 0, 0, 640, 480);
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- county ++;
|
|
|
ba40aaf |
- } while (ticked == 0);
|
|
|
ba40aaf |
+ while (ticked == 0)
|
|
|
ba40aaf |
+ rest(0);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
ticked --;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -2451,7 +2447,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
|
|
|
ba40aaf |
// clrscr();
|
|
|
ba40aaf |
- allegro_message("\n\rBye bye! ");
|
|
|
ba40aaf |
+// allegro_message("\n\rBye bye! ");
|
|
|
ba40aaf |
// free(palet);
|
|
|
ba40aaf |
exit(0);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -2762,17 +2758,69 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
+/* Function(s) to find the homedir of a user under Unix */
|
|
|
ba40aaf |
+#ifdef __unix__
|
|
|
ba40aaf |
+#include <pwd.h>
|
|
|
ba40aaf |
+#include <unistd.h>
|
|
|
ba40aaf |
+#include <sys/types.h>
|
|
|
ba40aaf |
+#if defined(__DECC) && defined(VMS)
|
|
|
ba40aaf |
+#include <unixlib.h>
|
|
|
ba40aaf |
+static char *vms_to_unix_buffer = NULL;
|
|
|
ba40aaf |
+static int convert_vms_to_unix(char *vms_dir_name)
|
|
|
ba40aaf |
+{
|
|
|
ba40aaf |
+ vms_to_unix_buffer = vms_dir_name;
|
|
|
ba40aaf |
+}
|
|
|
ba40aaf |
+#endif
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+/*
|
|
|
ba40aaf |
+ * Locate user's home directory.
|
|
|
ba40aaf |
+ */
|
|
|
ba40aaf |
+char *get_home_dir(void)
|
|
|
ba40aaf |
+{
|
|
|
ba40aaf |
+ struct passwd *pw;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ if (!(pw = getpwuid(getuid())))
|
|
|
ba40aaf |
+ {
|
|
|
ba40aaf |
+ fprintf(stderr, "Who are you? Not found in passwd database!!\n");
|
|
|
ba40aaf |
+ return NULL;
|
|
|
ba40aaf |
+ }
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+#if defined(__DECC) && defined(VMS)
|
|
|
ba40aaf |
+ /* Convert The OpenVMS Formatted "$HOME" Directory Path Into Unix
|
|
|
ba40aaf |
+ Format. */
|
|
|
ba40aaf |
+ decc$from_vms(pw->pw_dir, convert_vms_to_unix, 1);
|
|
|
ba40aaf |
+ return vms_to_unix_buffer;
|
|
|
ba40aaf |
+#else
|
|
|
ba40aaf |
+ return pw->pw_dir;
|
|
|
ba40aaf |
+#endif
|
|
|
ba40aaf |
+}
|
|
|
ba40aaf |
+#endif /* defined __unix__ */
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
void init_config(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
-set_config_file("lacew.cfg");
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
char miscstring [40];
|
|
|
ba40aaf |
char wstring [40];
|
|
|
ba40aaf |
char itstring [40];
|
|
|
ba40aaf |
int i;
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
+#ifdef __unix__
|
|
|
ba40aaf |
+ char config_file_name[512];
|
|
|
ba40aaf |
+ char *home_dir = get_home_dir();
|
|
|
ba40aaf |
+ int using_global_cfg = 1;
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ snprintf(config_file_name, sizeof(config_file_name)/sizeof(char), "%s/.%s",
|
|
|
ba40aaf |
+ home_dir? home_dir:".", "lacew.cfg");
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ /* does the cfg file exist? */
|
|
|
ba40aaf |
+ if (access(config_file_name, R_OK) == 0)
|
|
|
ba40aaf |
+ {
|
|
|
ba40aaf |
+ override_config_file(config_file_name);
|
|
|
ba40aaf |
+ using_global_cfg = 0;
|
|
|
ba40aaf |
+ }
|
|
|
ba40aaf |
+ else
|
|
|
ba40aaf |
+#endif
|
|
|
ba40aaf |
+ override_config_file(DATADIR "lacew.cfg");
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+ srandom(get_config_int("Misc", "Seed", 0));
|
|
|
ba40aaf |
|
|
|
ba40aaf |
options.sound_init = get_config_int("Options", "Sound_init", 1);
|
|
|
ba40aaf |
options.sound_mode = get_config_int("Options", "Sound_mode", SOUNDMODE_STEREO);
|
|
|
ba40aaf |
@@ -2835,7 +2883,12 @@
|
|
|
ba40aaf |
strcat(miscstring, itoa(i, itstring, 10));
|
|
|
ba40aaf |
strcpy(hs_coop[i].name, get_config_string(wstring, miscstring, "CaptainP"));
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
+#ifdef __unix__
|
|
|
ba40aaf |
+ /* make sure any changes get written to the per user file and not to
|
|
|
ba40aaf |
+ the global file */
|
|
|
ba40aaf |
+ if (using_global_cfg)
|
|
|
ba40aaf |
+ override_config_file(config_file_name);
|
|
|
ba40aaf |
+#endif
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void save_config(void)
|
|
|
ba40aaf |
@@ -2845,6 +2898,8 @@
|
|
|
ba40aaf |
char itstring [40];
|
|
|
ba40aaf |
int i;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
+ set_config_int("Misc", "Seed", random());
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
// options.sound_init = get_config_int("Options", "Sound_init", 1);
|
|
|
ba40aaf |
set_config_int("Options", "Sound_mode", options.sound_mode);
|
|
|
ba40aaf |
set_config_int("Options", "Run_vsync", options.run_vsync);
|
|
|
ba40aaf |
@@ -3102,7 +3157,6 @@
|
|
|
ba40aaf |
void display_victory_screen(void)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- int county = 0;
|
|
|
ba40aaf |
int county2 = 0;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
do
|
|
|
ba40aaf |
@@ -3128,11 +3182,8 @@
|
|
|
ba40aaf |
blit(menu_bmp, screen, 0, 0, 0, 0, 640, 480);
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- county ++;
|
|
|
ba40aaf |
- } while (ticked == 0);
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
+ while (ticked == 0)
|
|
|
ba40aaf |
+ rest(0);
|
|
|
ba40aaf |
ticked --;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
county2 ++;
|
|
|
ba40aaf |
diff -urN lacewing.orig/menu.h lacewing/menu.h
|
|
|
ba40aaf |
--- lacewing.orig/menu.h 2003-09-04 19:28:36.000000000 +0200
|
|
|
ba40aaf |
+++ lacewing/menu.h 2006-01-20 13:10:33.000000000 +0100
|
|
|
ba40aaf |
@@ -1,3 +1,5 @@
|
|
|
ba40aaf |
void init_menus_once_only(void);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
void menu_loop(void);
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
+void init_config(void);
|
|
|
ba40aaf |
diff -urN lacewing.orig/ships.c lacewing/ships.c
|
|
|
ba40aaf |
--- lacewing.orig/ships.c 2003-09-04 20:51:46.000000000 +0200
|
|
|
ba40aaf |
+++ lacewing/ships.c 2006-01-18 22:10:54.000000000 +0100
|
|
|
ba40aaf |
@@ -55,7 +55,8 @@
|
|
|
ba40aaf |
0, // system 3 status 2
|
|
|
ba40aaf |
BRAKES_DRAG, // brake type
|
|
|
ba40aaf |
5, // brake strength
|
|
|
ba40aaf |
-1000 // armour },
|
|
|
ba40aaf |
+1000 // armour
|
|
|
ba40aaf |
+},
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
"Arrow",
|
|
|
ba40aaf |
6000, // radius
|
|
|
ba40aaf |
diff -urN lacewing.orig/sound.c lacewing/sound.c
|
|
|
ba40aaf |
--- lacewing.orig/sound.c 2003-10-06 22:22:16.000000000 +0200
|
|
|
ba40aaf |
+++ lacewing/sound.c 2006-01-20 00:33:01.000000000 +0100
|
|
|
ba40aaf |
@@ -41,7 +41,6 @@
|
|
|
ba40aaf |
#include "config.h"
|
|
|
ba40aaf |
#include "globvars.h"
|
|
|
ba40aaf |
|
|
|
ba40aaf |
-#include "conio.h"
|
|
|
ba40aaf |
#include "math.h"
|
|
|
ba40aaf |
//DATAFILE *soundf;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -114,7 +113,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
|
|
|
ba40aaf |
sound_active = 1;
|
|
|
ba40aaf |
-
|
|
|
ba40aaf |
+
|
|
|
ba40aaf |
if (options.sound_init == 0)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
// cprintf("\n\r\n\rSound disabled in proj.cfg.");
|
|
|
ba40aaf |
@@ -128,12 +127,8 @@
|
|
|
ba40aaf |
reserve_voices(10, 0);
|
|
|
ba40aaf |
if (install_sound (DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) == -1)
|
|
|
ba40aaf |
{
|
|
|
ba40aaf |
-// allegro_message("\n\r\n\rSound autodetect failed.");
|
|
|
ba40aaf |
+ printf("Warning: %s, sound disabled\n", allegro_error);
|
|
|
ba40aaf |
sound_active = 0;
|
|
|
ba40aaf |
- rest(300);
|
|
|
ba40aaf |
- do
|
|
|
ba40aaf |
- {
|
|
|
ba40aaf |
- } while (keypressed() == 0);
|
|
|
ba40aaf |
}
|
|
|
ba40aaf |
set_volume(255, 0);
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -263,7 +258,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
char sfile_name [50];
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- strcpy(sfile_name, ".\\sound\\");
|
|
|
ba40aaf |
+ strcpy(sfile_name, DATADIR "sound/");
|
|
|
ba40aaf |
strcat(sfile_name, sfile);
|
|
|
ba40aaf |
strcat(sfile_name, ".wav");
|
|
|
ba40aaf |
|
|
|
ba40aaf |
@@ -678,7 +673,7 @@
|
|
|
ba40aaf |
|
|
|
ba40aaf |
char sfile_name [50];
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- strcpy(sfile_name, ".\\sound\\ambi\\");
|
|
|
ba40aaf |
+ strcpy(sfile_name, DATADIR "sound/ambi/");
|
|
|
ba40aaf |
strcat(sfile_name, sfile);
|
|
|
ba40aaf |
strcat(sfile_name, ".wav");
|
|
|
ba40aaf |
|
|
|
ba40aaf |
diff -urN lacewing.orig/stars.c lacewing/stars.c
|
|
|
ba40aaf |
--- lacewing.orig/stars.c 2003-08-06 01:32:04.000000000 +0200
|
|
|
ba40aaf |
+++ lacewing/stars.c 2006-01-18 22:13:12.000000000 +0100
|
|
|
ba40aaf |
@@ -56,7 +56,7 @@
|
|
|
ba40aaf |
int j = 0;
|
|
|
ba40aaf |
int k = 1;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
- if (game[0].users == 2)
|
|
|
ba40aaf |
+ if (game.users == 2)
|
|
|
ba40aaf |
k = 2;
|
|
|
ba40aaf |
|
|
|
ba40aaf |
for (j = 0; j < k; j ++)
|