Files
haikuports/games-arcade/alex4/patches/alex4-1.0.patchset
2019-05-12 15:17:39 +02:00

1637 lines
61 KiB
Plaintext

From 9fdd88ae4724145d90c8ac5ba82a519a6c9e0d71 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sun, 12 May 2019 13:04:42 +0200
Subject: Patch from
http://downloads.sourceforge.net/allegator/alex4_beos_src.zip
diff --git a/src/actor.c b/src/actor.c
index c6348c2..e9d31f8 100644
--- a/src/actor.c
+++ b/src/actor.c
@@ -43,23 +43,23 @@ void draw_actor(BITMAP *bmp, Tactor *a, int x, int y) {
if (a->status == AC_NORM) {
// normal drawing, just select direction
if (a->direction)
- draw_sprite_h_flip(bmp, a->data[a->frames[a->frame] + (a->is_hit ? a->hit_offset : 0)].dat, x, y - a->h - a->oy);
+ draw_sprite_h_flip(bmp, (BITMAP*)a->data[a->frames[a->frame] + (a->is_hit ? a->hit_offset : 0)].dat, x, y - a->h - a->oy);
else
- draw_sprite(bmp, a->data[a->frames[a->frame] + (a->is_hit ? a->hit_offset : 0)].dat, x, y - a->h - a->oy);
+ draw_sprite(bmp, (BITMAP*)a->data[a->frames[a->frame] + (a->is_hit ? a->hit_offset : 0)].dat, x, y - a->h - a->oy);
}
else if (a->status == AC_DEAD) {
// draw dead frame, check for direction
if (a->direction)
- draw_sprite_vh_flip(bmp, a->data[a->frames[a->frame]].dat, x, y - a->h - a->oy);
+ draw_sprite_vh_flip(bmp, (BITMAP*)a->data[a->frames[a->frame]].dat, x, y - a->h - a->oy);
else
- draw_sprite_v_flip(bmp, a->data[a->frames[a->frame]].dat, x, y - a->h - a->oy);
+ draw_sprite_v_flip(bmp, (BITMAP*)a->data[a->frames[a->frame]].dat, x, y - a->h - a->oy);
}
else if (a->status == AC_FLAT) {
// draw flat frame, check for direction
if (a->direction)
- draw_sprite_h_flip(bmp, a->data[a->flat_frame].dat, x, y - a->h - a->oy);
+ draw_sprite_h_flip(bmp, (BITMAP*)a->data[a->flat_frame].dat, x, y - a->h - a->oy);
else
- draw_sprite(bmp, a->data[a->flat_frame].dat, x, y - a->h - a->oy);
+ draw_sprite(bmp, (BITMAP*)a->data[a->flat_frame].dat, x, y - a->h - a->oy);
}
}
@@ -271,7 +271,7 @@ void update_actor_with_map(Tactor *a, Tmap *m) {
Tbullet *b = get_free_bullet(bullet, MAX_BULLETS);
if (b != NULL) {
int diff = (player.actor->x + 8) - (a->x + 8);
- set_bullet(b, a->x + (diff > 0 ? 8 : -12), a->y - 16, (diff > 0 ? 3 : -3), 0, data[ENEMY6].dat, 1);
+ set_bullet(b, a->x + (diff > 0 ? 8 : -12), a->y - 16, (diff > 0 ? 3 : -3), 0, (BITMAP*)data[ENEMY6].dat, 1);
create_burst(particle, a->x + (diff > 0 ? 18 : -2), a->y - 8, 8, 8, 25, PARTICLE_DUST);
a->mode = 0;
play_sound_id(SMPL_SHOOT);
@@ -422,9 +422,9 @@ void update_actor_with_map(Tactor *a, Tmap *m) {
for(i = 0; i < 3; i ++) {
b = get_free_bullet(bullet, MAX_BULLETS);
if (b != NULL) {
- set_bullet(b, a->x + 16, a->y - 32, rand()%5 - 2, -(rand()%5 + 2), data[BULLET_1].dat, 1);
+ set_bullet(b, a->x + 16, a->y - 32, rand()%5 - 2, -(rand()%5 + 2), (BITMAP*)data[BULLET_1].dat, 1);
b->animate = b->gravity = 1;
- b->bmp2 = data[BULLET_2].dat;
+ b->bmp2 = (BITMAP*)data[BULLET_2].dat;
}
}
a->mode ++;
diff --git a/src/actor.h b/src/actor.h
index 5ab9458..8e14fff 100644
--- a/src/actor.h
+++ b/src/actor.h
@@ -91,4 +91,4 @@ void update_actor_with_map(Tactor *a, Tmap *m);
void kill_actor(Tactor *a);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/bullet.c b/src/bullet.c
index d389a51..4d65906 100644
--- a/src/bullet.c
+++ b/src/bullet.c
@@ -26,6 +26,8 @@
#include "timer.h"
#include "../data/data.h"
+// the bullets themselves
+Tbullet bullet[MAX_BULLETS];
// sets values on a bullet
void set_bullet(Tbullet *b, int x, int y, double dx, double dy, BITMAP *bmp, int bad) {
@@ -44,8 +46,8 @@ void set_bullet(Tbullet *b, int x, int y, double dx, double dy, BITMAP *bmp, int
// draws the bukllet on specified bitmap
// pass along the map offset to get it right
void draw_bullet(BITMAP *bmp, Tbullet *b, int ox, int oy) {
- int x = b->x - ox;
- int y = b->y - oy;
+ int x = (int)(b->x - ox);
+ int y = (int)(b->y - oy);
// is the bullet inside the screen
if (x < -b->bmp->w || x > bmp->w + b->bmp->w || y < -b->bmp->h || y > bmp->h + b->bmp->h) return;
diff --git a/src/bullet.h b/src/bullet.h
index c5d1ead..53bcbc6 100644
--- a/src/bullet.h
+++ b/src/bullet.h
@@ -27,7 +27,7 @@
#include "particle.h"
// the bullet struct
-typedef struct {
+typedef struct Tbullet {
double x, y;
double dx, dy;
int exist;
@@ -36,13 +36,13 @@ typedef struct {
int bad;
int animate;
int gravity;
-} Tbullet;
+};
// max bullets at any time
#define MAX_BULLETS 64
// the bullets themselves
-Tbullet bullet[MAX_BULLETS];
+extern Tbullet bullet[MAX_BULLETS];
// functions
void reset_bullets(Tbullet *b, int max);
@@ -52,4 +52,4 @@ void draw_bullet(BITMAP *bmp, Tbullet *b, int ox, int oy);
void update_bullet(Tbullet *b);
void update_bullet_with_map(Tbullet *b, Tmap *m);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/edit.c b/src/edit.c
index c87fa03..8c66cb5 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -33,8 +33,7 @@
int edit_tile = 0;
// path to current map
char edit_path_and_file[1024];
-// datafile to use
-DATAFILE *data;
+
// current edit mode
int edit_mode;
@@ -64,28 +63,28 @@ void draw_edit_mode(BITMAP *bmp, Tmap *map, int mx, int my) {
// blit mouse tile
if (tx < map->width && ty < map->height) {
- if (edit_tile) draw_sprite(bmp, data[TILE000 + edit_tile - 1].dat, (tx << 4) - map->offset_x, ty << 4);
+ if (edit_tile) draw_sprite(bmp, (BITMAP*)data[TILE000 + edit_tile - 1].dat, (tx << 4) - map->offset_x, ty << 4);
rect(bmp, (tx << 4) - map->offset_x - 1, (ty << 4) - 1, (tx << 4)+16 - map->offset_x, (ty << 4)+16, gui_bg_color);
}
-
+
// show stuff
- textprintf(bmp, data[THE_FONT].dat, 1, 1, 0, "TILE: %d,%d", tx, ty);
- textprintf(bmp, data[THE_FONT].dat, 1, 11, 0, "SIZE: %d,%d", map->width, map->height);
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, 1, 0, "TILE: %d,%d", tx, ty);
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, 11, 0, "SIZE: %d,%d", map->width, map->height);
// show start pos
x = (ABS(map->start_x) << 4) - map->offset_x;
y = (map->start_y << 4) - map->offset_y;
rect(bmp, x+5, y+5, x+10, y+10, gui_bg_color);
line(bmp, x+8, y+8, x+8+SGN(map->start_x)*6, y+8, gui_bg_color);
-
+
// draw status bar
rectfill(bmp, 0, 110, 159, 119, 1);
- textprintf(bmp, data[THE_FONT].dat, 1, 111, 4, "EDITING: %s", get_filename(edit_path_and_file));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, 111, 4, "EDITING: %s", get_filename(edit_path_and_file));
}
else if (edit_mode == EDIT_MODE_SELECT) { // draw tile palette
// calculate offset depending on mouse pointer
- int ox = (32.0 * mx) / 160.0;
- int oy = ( 8.0 * my) / 120.0;
+ int ox = (int)((32.0 * mx) / 160.0);
+ int oy = (int)((8.0 * my) / 120.0);
int tx = (mx + ox) / 16;
int ty = (my + oy) / 16;
@@ -93,7 +92,7 @@ void draw_edit_mode(BITMAP *bmp, Tmap *map, int mx, int my) {
clear_to_color(bmp, gui_bg_color);
for(y = 0; y < 8; y ++) {
for(x = 0; x < 12; x ++) {
- draw_sprite(bmp, data[TILE000 + x + y * 12].dat, x * 16 - ox, y * 16 - oy);
+ draw_sprite(bmp, (BITMAP*)data[TILE000 + x + y * 12].dat, x * 16 - ox, y * 16 - oy);
}
}
@@ -104,16 +103,16 @@ void draw_edit_mode(BITMAP *bmp, Tmap *map, int mx, int my) {
else if (edit_mode == EDIT_MODE_STATS) { // draw map properties
int ty = 16;
clear_to_color(bmp, 3);
- textprintf(bmp, data[THE_FONT].dat, 1, 1, 1, "%s (props)", get_filename(edit_path_and_file));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, 1, 1, "%s (props)", get_filename(edit_path_and_file));
line(bmp, 0, 10, 159, 10, 1);
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, "Win by:");
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, " 1) reach exit (%s)", (map->win_conditions & MAP_WIN_EXIT ? "X" : " "));
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, " 2) kill boss (%s)", (map->win_conditions & MAP_WIN_KILL_GUARDIAN ? "X" : " "));
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, " 3) kill all (%s)", (map->win_conditions & MAP_WIN_KILL_ALL ? "X" : " "));
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, "4) Boss level: (%s)", (map->boss_level ? "X" : " "));
- textprintf(bmp, data[THE_FONT].dat, 1, ty+=10, 1, "5) Name: %s", map->name);
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, "Win by:");
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, " 1) reach exit (%s)", (map->win_conditions & MAP_WIN_EXIT ? "X" : " "));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, " 2) kill boss (%s)", (map->win_conditions & MAP_WIN_KILL_GUARDIAN ? "X" : " "));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, " 3) kill all (%s)", (map->win_conditions & MAP_WIN_KILL_ALL ? "X" : " "));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, "4) Boss level: (%s)", (map->boss_level ? "X" : " "));
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, ty+=10, 1, "5) Name: %s", map->name);
- textprintf(bmp, data[THE_FONT].dat, 1, 110, 1, "F1: back to editor");
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 1, 110, 1, "F1: back to editor");
}
if (edit_mode != EDIT_MODE_STATS) {
@@ -342,8 +341,8 @@ void update_edit_mode(Tmap *map, BITMAP *bmp, int mx, int my, int mb) {
}
else if (edit_mode == EDIT_MODE_SELECT) {
- int ox = (32.0 * mx) / 160.0;
- int oy = ( 8.0 * my) / 120.0;
+ int ox = (int)((32.0 * mx) / 160.0);
+ int oy = (int)((8.0 * my) / 120.0);
int tx = (mx + ox) / 16;
int ty = (my + oy) / 16;
@@ -364,7 +363,7 @@ void update_edit_mode(Tmap *map, BITMAP *bmp, int mx, int my, int mb) {
if (kb == '3') map->win_conditions ^= MAP_WIN_KILL_ALL;
if (kb == '4') map->boss_level ^= 1;
- if (kb == '5') get_string(bmp, map->name, 32, data[THE_FONT].dat, 8, 90, gui_fg_color, NULL);
+ if (kb == '5') get_string(bmp, map->name, 32, (FONT*)data[THE_FONT].dat, 8, 90, gui_fg_color, NULL);
}
if (key[KEY_F1]) {
diff --git a/src/edit.h b/src/edit.h
index 7bbcacf..c9d739e 100644
--- a/src/edit.h
+++ b/src/edit.h
@@ -37,4 +37,4 @@ void set_edit_path_and_file(char *str);
void draw_edit_mode(BITMAP *bmp, Tmap *map, int mx, int my);
void update_edit_mode(Tmap *map, BITMAP *bmp, int mx, int my, int mb);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/hisc.c b/src/hisc.c
index b8a4452..cef0aca 100644
--- a/src/hisc.c
+++ b/src/hisc.c
@@ -28,7 +28,7 @@
Thisc* make_hisc_table() {
Thisc *tmp;
- tmp = malloc(MAX_SCORES*sizeof(Thisc));
+ tmp = (Thisc*)malloc(MAX_SCORES*sizeof(Thisc));
if (!tmp) return NULL;
return tmp;
diff --git a/src/hisc.h b/src/hisc.h
index c4e9c07..962f4ed 100644
--- a/src/hisc.h
+++ b/src/hisc.h
@@ -48,4 +48,4 @@ void save_hisc_table(Thisc *table, PACKFILE *fp);
void draw_hisc_post(Thisc *table, BITMAP *bmp, FONT *fnt, int x, int y, int color, int show_level);
void draw_hisc_table(Thisc *table, BITMAP *bmp, FONT *fnt, int x, int y, int color, int show_level);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/main.c b/src/main.c
index 8c29ccc..cec8bc6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -132,12 +132,12 @@ int init_ok = 0;
// returns pointer to the game over bitmap
BITMAP *get_gameover_sign() {
- return data[GAME_OVER].dat;
+ return (BITMAP*)data[GAME_OVER].dat;
}
// returns pointer to the lets go bitmap
BITMAP *get_letsgo_sign() {
- return data[LETSGO].dat;
+ return (BITMAP*)data[LETSGO].dat;
}
// returns pointer to the space highscore table
@@ -225,7 +225,7 @@ void play_sound_id(int id) {
// plays a sample using user settings
void play_sound_ex(SAMPLE *s, int vol, int freq, int loop) {
if (got_sound && s != NULL) {
- int v = (get_config_int("sound", "sample_volume", 100) * (float)(vol))/100.0;
+ int v = (int)((get_config_int("sound", "sample_volume", 100) * (float)(vol))/100.0);
play_sample(s, v, 128, freq, loop);
}
}
@@ -245,7 +245,7 @@ void stop_sound_id(int id) {
void adjust_sound_id_ex(int id, int x) {
if (got_sound) {
int vol = MAX(100 - ABS(player.actor->x - x) / 2, 0);
- int v = get_config_int("sound", "sample_volume", 100) * (float)(vol)/100.0;
+ int v = (int)(get_config_int("sound", "sample_volume", 100) * (float)(vol)/100.0);
int pan = MID(0, 128 + x - player.actor->x, 255);
if (sfx[id] != NULL) {
adjust_sample(sfx[id], v, pan, 1000, 1);
@@ -496,16 +496,16 @@ void draw_status_bar(BITMAP *bmp, int y) {
int i;
rectfill(bmp, 0, y, 159, y+9, 1);
- draw_sprite_h_flip(bmp, data[HERO_NORM].dat, 0, y+1);
- textprintf(bmp, data[THE_FONT].dat, 9, y+1, 4, " :%d", player.lives);
+ draw_sprite_h_flip(bmp, (BITMAP*)data[HERO_NORM].dat, 0, y+1);
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 9, y+1, 4, " :%d", player.lives);
for(i = 0; i < player.health; i ++)
- draw_sprite(bmp, data[HEART2].dat, 40 + 10 * i, y-3);
+ draw_sprite(bmp, (BITMAP*)data[HEART2].dat, 40 + 10 * i, y-3);
- draw_sprite(bmp, data[EGG].dat, 80, y-5);
- textprintf(bmp, data[THE_FONT].dat, 85, y+1, 4, " :%d", player.ammo);
+ draw_sprite(bmp, (BITMAP*)data[EGG].dat, 80, y-5);
+ textprintf(bmp, (FONT*)data[THE_FONT].dat, 85, y+1, 4, " :%d", player.ammo);
- textprintf_right(bmp, data[THE_FONT].dat, 158, y+1, 4, "%d", player.score);
+ textprintf_right(bmp, (FONT*)data[THE_FONT].dat, 158, y+1, 4, "%d", player.score);
}
@@ -521,12 +521,12 @@ void draw_frame(BITMAP *bmp, int _status_bar) {
x2 = (-ox % 320) >> 1;
// draw backgrounds
- blit(data[BG0].dat, bmp, 0, 0, x0, 0, 160, 120);
- blit(data[BG0].dat, bmp, 0, 0, x0 + 160, 0, 160, 120);
- draw_sprite(bmp, data[BG1].dat, x1, 120 - ((BITMAP *)data[BG1].dat)->h);
- draw_sprite(bmp, data[BG1].dat, x1 + 160, 120 - ((BITMAP *)data[BG1].dat)->h);
- draw_sprite(bmp, data[BG2].dat, x2, 120 - ((BITMAP *)data[BG2].dat)->h);
- draw_sprite(bmp, data[BG2].dat, x2 + 160, 120 - ((BITMAP *)data[BG2].dat)->h);
+ blit((BITMAP*)data[BG0].dat, bmp, 0, 0, x0, 0, 160, 120);
+ blit((BITMAP*)data[BG0].dat, bmp, 0, 0, x0 + 160, 0, 160, 120);
+ draw_sprite(bmp, (BITMAP*)data[BG1].dat, x1, 120 - ((BITMAP *)data[BG1].dat)->h);
+ draw_sprite(bmp, (BITMAP*)data[BG1].dat, x1 + 160, 120 - ((BITMAP *)data[BG1].dat)->h);
+ draw_sprite(bmp, (BITMAP*)data[BG2].dat, x2, 120 - ((BITMAP *)data[BG2].dat)->h);
+ draw_sprite(bmp, (BITMAP*)data[BG2].dat, x2 + 160, 120 - ((BITMAP *)data[BG2].dat)->h);
// draw frame
draw_map(bmp, map, 0, 0, 160, 120, editing);
@@ -536,16 +536,16 @@ void draw_frame(BITMAP *bmp, int _status_bar) {
for(i = 1; i < MAX_ACTORS; i ++)
if (actor[i].active)
draw_actor(bmp, &actor[i], actor[i].x - ox, actor[i].y);
-
+
// draw particles
- for(i = 0; i < MAX_PARTICLES; i ++)
+ for(i = 0; i < MAX_PARTICLES; i ++)
if (particle[i].life)
draw_particle(bmp, &particle[i], ox, 0);
}
// draw player
draw_player(bmp, &player, player.actor->x - ox, player.actor->y);
-
+
// draw bullets
for(i = 0; i < MAX_BULLETS; i ++)
if (bullet[i].exist)
@@ -555,11 +555,10 @@ void draw_frame(BITMAP *bmp, int _status_bar) {
if (!editing) {
if (_status_bar) draw_status_bar(bmp, 110);
else rectfill(bmp, 0, 110, 159, 119, 1);
-
}
else { /////////////// EDIT stats
- int mx = mouse_x / (SCREEN_W / 160);
- int my = mouse_y / (SCREEN_H / 120);
+ int mx = (int)(mouse_x / (SCREEN_W / 160));
+ int my = (int)(mouse_y / (SCREEN_H / 120));
draw_edit_mode(bmp, map, mx, my);
}
}
@@ -759,12 +758,12 @@ int init_game(const char *map_file) {
((RGB *)data[0].dat)[0].g = 0;
((RGB *)data[0].dat)[0].b = 0;
fix_gui_colors();
- set_palette(data[0].dat);
+ set_palette((RGB*)data[0].dat);
// show splash screen
clear_to_color(swap_screen, 3);
- bmp = data[FLD_LOGO].dat;
+ bmp = (BITMAP*)data[FLD_LOGO].dat;
draw_character(swap_screen, bmp, 80 - bmp->w / 2 + 0, 50 + 1, 1);
draw_character(swap_screen, bmp, 80 - bmp->w / 2, 50, 4);
@@ -841,6 +840,10 @@ int init_game(const char *map_file) {
log2file(" DIGI_AUTODETECT selected (%d)", i);
break;
case 2:
+ i = DIGI_BEOS;
+ log2file(" DIGI_BEOS selected (%d)",i);
+ break;
+/* case 2:
i = DIGI_DIRECTX(0);
log2file(" DIGI_DIRECTX(0) selected (%d)", i);
break;
@@ -848,7 +851,7 @@ int init_game(const char *map_file) {
i = DIGI_DIRECTAMX(0);
log2file(" DIGI_DIRECTAMX(0) selected (%d)", i);
break;
- default:
+*/ default:
i = -770405; // dummy number
got_sound = 0;
log2file(" NO_SOUND selected");
@@ -889,31 +892,31 @@ int init_game(const char *map_file) {
if (!s) log2file(" sfx_22.dat will be used");
// assign samples
- sfx[SMPL_CHERRY] = sfx_data[0].dat;
- sfx[SMPL_CHOPPER] = sfx_data[1].dat;
- sfx[SMPL_CRUSH] = sfx_data[2].dat;
- sfx[SMPL_A_DIE] = sfx_data[3].dat;
- sfx[SMPL_EAT] = sfx_data[4].dat;
- sfx[SMPL_BEAM] = sfx_data[5].dat;
- sfx[SMPL_ENGINE] = sfx_data[6].dat;
- sfx[SMPL_HEART] = sfx_data[7].dat;
- sfx[SMPL_HIT] = sfx_data[8].dat;
- sfx[SMPL_HURT] = sfx_data[9].dat;
- sfx[SMPL_CRUSH_LAND] = sfx_data[10].dat;
- sfx[SMPL_JUMP] = sfx_data[11].dat;
- sfx[SMPL_E_DIE] = sfx_data[12].dat;
- sfx[SMPL_MENU] = sfx_data[13].dat;
- sfx[SMPL_PAUSE] = sfx_data[14].dat;
- sfx[SMPL_POINT] = sfx_data[15].dat;
- sfx[SMPL_SHIP] = sfx_data[16].dat;
- sfx[SMPL_SHOOT] = sfx_data[17].dat;
- sfx[SMPL_SPIT] = sfx_data[18].dat;
- sfx[SMPL_STAR] = sfx_data[19].dat;
- sfx[SMPL_STARTUP] = sfx_data[20].dat;
- sfx[SMPL_MASH] = sfx_data[21].dat;
- sfx[SMPL_TALK] = sfx_data[22].dat;
- sfx[SMPL_SPIN] = sfx_data[23].dat;
- sfx[SMPL_XTRALIFE] = sfx_data[24].dat;
+ sfx[SMPL_CHERRY] = (SAMPLE*)sfx_data[0].dat;
+ sfx[SMPL_CHOPPER] = (SAMPLE*)sfx_data[1].dat;
+ sfx[SMPL_CRUSH] = (SAMPLE*)sfx_data[2].dat;
+ sfx[SMPL_A_DIE] = (SAMPLE*)sfx_data[3].dat;
+ sfx[SMPL_EAT] = (SAMPLE*)sfx_data[4].dat;
+ sfx[SMPL_BEAM] = (SAMPLE*)sfx_data[5].dat;
+ sfx[SMPL_ENGINE] = (SAMPLE*)sfx_data[6].dat;
+ sfx[SMPL_HEART] = (SAMPLE*)sfx_data[7].dat;
+ sfx[SMPL_HIT] = (SAMPLE*)sfx_data[8].dat;
+ sfx[SMPL_HURT] = (SAMPLE*)sfx_data[9].dat;
+ sfx[SMPL_CRUSH_LAND] = (SAMPLE*)sfx_data[10].dat;
+ sfx[SMPL_JUMP] = (SAMPLE*)sfx_data[11].dat;
+ sfx[SMPL_E_DIE] = (SAMPLE*)sfx_data[12].dat;
+ sfx[SMPL_MENU] = (SAMPLE*)sfx_data[13].dat;
+ sfx[SMPL_PAUSE] = (SAMPLE*)sfx_data[14].dat;
+ sfx[SMPL_POINT] = (SAMPLE*)sfx_data[15].dat;
+ sfx[SMPL_SHIP] = (SAMPLE*)sfx_data[16].dat;
+ sfx[SMPL_SHOOT] = (SAMPLE*)sfx_data[17].dat;
+ sfx[SMPL_SPIT] = (SAMPLE*)sfx_data[18].dat;
+ sfx[SMPL_STAR] = (SAMPLE*)sfx_data[19].dat;
+ sfx[SMPL_STARTUP] = (SAMPLE*)sfx_data[20].dat;
+ sfx[SMPL_MASH] = (SAMPLE*)sfx_data[21].dat;
+ sfx[SMPL_TALK] = (SAMPLE*)sfx_data[22].dat;
+ sfx[SMPL_SPIN] = (SAMPLE*)sfx_data[23].dat;
+ sfx[SMPL_XTRALIFE] = (SAMPLE*)sfx_data[24].dat;
}
}
else {
@@ -950,7 +953,7 @@ int init_game(const char *map_file) {
// misc
log2file(" initializing scroller");
- init_scroller(&hscroll, data[THE_FONT].dat, scroller_message, 160, 10, TRUE);
+ init_scroller(&hscroll, (FONT*)data[THE_FONT].dat, scroller_message, 160, 10, TRUE);
options.use_vsync = get_config_int("graphics", "vsync", 0);
log2file(" vsync set to %s", (options.use_vsync ? "ON" : "OFF"));
@@ -1046,17 +1049,17 @@ void init_player(Tplayer *p, Tmap *m) {
// draws text with an outline
void textout_outline(BITMAP *bmp, const char *txt, int x, int y) {
- textout(bmp, data[THE_FONT].dat, txt, x+1, y, 1);
- textout(bmp, data[THE_FONT].dat, txt, x-1, y, 1);
- textout(bmp, data[THE_FONT].dat, txt, x, y+1, 1);
- textout(bmp, data[THE_FONT].dat, txt, x, y-1, 1);
- textout(bmp, data[THE_FONT].dat, txt, x, y, 4);
+ textout(bmp, (FONT*)data[THE_FONT].dat, txt, x+1, y, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, txt, x-1, y, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, txt, x, y+1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, txt, x, y-1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, txt, x, y, 4);
}
// draws centered text with an outline
void textout_outline_center(BITMAP *bmp, const char *txt, int cx, int y) {
- int x = cx - text_length(data[THE_FONT].dat, txt) / 2;
+ int x = cx - text_length((FONT*)data[THE_FONT].dat, txt) / 2;
textout_outline(bmp, txt, x, y);
}
@@ -1064,7 +1067,7 @@ void textout_outline_center(BITMAP *bmp, const char *txt, int cx, int y) {
// plays the let's go sequence
void show_lets_go() {
- BITMAP *go = data[LETSGO].dat;
+ BITMAP *go = (BITMAP*)data[LETSGO].dat;
int x = -go->w;
int mode = 0;
int wait = 0;
@@ -1112,7 +1115,7 @@ void show_lets_go() {
// shows the game over sign sequence
void show_game_over() {
- BITMAP *go = data[GAME_OVER].dat;
+ BITMAP *go = (BITMAP*)data[GAME_OVER].dat;
int x = -go->w;
int mode = 0;
@@ -1154,16 +1157,16 @@ void show_game_over() {
// show_custom_ending()
void draw_custom_ending(BITMAP *bmp) {
int i, r;
- BITMAP *head = data[FLD_HEAD].dat;
+ BITMAP *head = (BITMAP*)data[FLD_HEAD].dat;
- blit(data[INTRO_BG].dat, bmp, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)data[INTRO_BG].dat, bmp, 0, 0, 0, 0, 160, 120);
r = 70 + fixtoi(20 * fcos(itofix(game_count >> 1)) + 20 * fsin(itofix((int)(game_count / 2.7))) );
for(i = 0; i < 256; i += 32)
draw_sprite(bmp, head, 80 - head->w/2 + fixtoi(r * fcos(itofix(game_count + i))), 60 - head->h/2 + fixtoi(r * fsin(itofix(game_count + i))));
- draw_sprite_h_flip(bmp, data[ALEX].dat, 60, 40);
- draw_sprite(bmp, data[LOLA].dat, 84, 40);
+ draw_sprite_h_flip(bmp, (BITMAP*)data[ALEX].dat, 60, 40);
+ draw_sprite(bmp, (BITMAP*)data[LOLA].dat, 84, 40);
textout_outline_center(bmp, "Congratulations!", 80, 60);
textout_outline_center(bmp, "A winner is you!", 80, 80);
@@ -1229,7 +1232,7 @@ void transform_bitmap(BITMAP *bmp, int steps) {
// draws the scoring sequence at end of level
// used by show_cutscene(..)
void draw_cutscene(BITMAP *bmp, int org_level, int _level, int _lives, int _stars, int _cherries) {
- BITMAP *go = data[LEVELCOMPLETE].dat;
+ BITMAP *go = (BITMAP*)data[LEVELCOMPLETE].dat;
char buf[80];
clear_bitmap(bmp);
@@ -1346,14 +1349,14 @@ void show_scores(int space, Thisc *table) {
df = load_datafile_object("data/a45.dat", "BG1");
packfile_password(NULL);
if (df != NULL) {
- bg = df->dat;
+ bg = (BITMAP*)df->dat;
}
else
msg_box("ooga");
}
if (bg == NULL || !space)
- blit(data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
else {
clear_to_color(swap_screen, 1);
blit(bg, swap_screen, 0, 0, 0, 0, 160, 120);
@@ -1362,7 +1365,7 @@ void show_scores(int space, Thisc *table) {
textout_outline_center(swap_screen, "High scores", 80, 8);
textout_outline_center(swap_screen, "Press any key", 80, 100);
- draw_hisc_table(table, swap_screen, data[THE_FONT].dat, 10, 30, (space ? 4 : 1), !space);
+ draw_hisc_table(table, swap_screen, (FONT*)data[THE_FONT].dat, 10, 30, (space ? 4 : 1), !space);
blit_to_screen(swap_screen);
fade_in_pal(100);
@@ -1388,30 +1391,30 @@ void draw_select_starting_level(BITMAP *bmp, int level, int min, int max) {
char buf[80];
int xpos = 2;
- blit(data[ALEX_BG].dat, bmp, 0, 0, 0, 0, 160, 112);
+ blit((BITMAP*)data[ALEX_BG].dat, bmp, 0, 0, 0, 0, 160, 112);
rectfill(bmp, 0, 112, 160, 120, 2);
sprintf(buf, "%s %d %s", (level > min ? "<" : " "), level, (level < max ? ">" : " "));
clear_bitmap(stuff);
- textout_centre(stuff, data[THE_FONT].dat, buf, stuff->w/2 + 1, 1, 2);
- textout_centre(stuff, data[THE_FONT].dat, buf, stuff->w/2, 0, 1);
+ textout_centre(stuff, (FONT*)data[THE_FONT].dat, buf, stuff->w/2 + 1, 1, 2);
+ textout_centre(stuff, (FONT*)data[THE_FONT].dat, buf, stuff->w/2, 0, 1);
stretch_sprite(bmp, stuff, 80 - 4*stuff->w/2, 30, 4*stuff->w, 4*stuff->h);
- textout_centre(bmp, data[THE_FONT].dat, "SELECT START LEVEL", 80, 90, 1);
- textout_centre(bmp, data[THE_FONT].dat, "SELECT START LEVEL", 79, 89, 4);
+ textout_centre(bmp, (FONT*)data[THE_FONT].dat, "SELECT START LEVEL", 80, 90, 1);
+ textout_centre(bmp, (FONT*)data[THE_FONT].dat, "SELECT START LEVEL", 79, 89, 4);
if (options.one_hundred) {
- if (game_count & 32 || game_count & 16) draw_sprite(bmp, data[SHIP100].dat, xpos, 2);
+ if (game_count & 32 || game_count & 16) draw_sprite(bmp, (BITMAP*)data[SHIP100].dat, xpos, 2);
}
else {
if (options.stars[level - 1]) {
- draw_sprite(bmp, data[STAR].dat, xpos, 2);
- draw_sprite(bmp, data[ALL100].dat, xpos + 4, 14);
+ draw_sprite(bmp, (BITMAP*)data[STAR].dat, xpos, 2);
+ draw_sprite(bmp, (BITMAP*)data[ALL100].dat, xpos + 4, 14);
xpos += 20;
}
if (options.cherries[level - 1]) {
- draw_sprite(bmp, data[CHERRY].dat, xpos, 2);
- draw_sprite(bmp, data[ALL100].dat, xpos + 4, 14);
+ draw_sprite(bmp, (BITMAP*)data[CHERRY].dat, xpos, 2);
+ draw_sprite(bmp, (BITMAP*)data[ALL100].dat, xpos + 4, 14);
}
}
@@ -1773,7 +1776,7 @@ void update_player() {
if (player.ammo) {
Tbullet *b = get_free_bullet(bullet, MAX_BULLETS);
if (b != NULL) {
- set_bullet(b, (int)player.actor->x + 7, (int)player.actor->y - 14, (player.actor->direction ? 4 : -4), 0, data[EGG2].dat, 0);
+ set_bullet(b, (int)player.actor->x + 7, (int)player.actor->y - 14, (player.actor->direction ? 4 : -4), 0, (BITMAP*)data[EGG2].dat, 0);
player.ammo --;
play_sound(sfx[SMPL_SPIT]);
}
@@ -2149,7 +2152,7 @@ void check_alex_with_enemies() {
// calculates camera pos for map m considering player p
void calculate_camera_pos(Tplayer *p, Tmap *m) {
- static camera_type = 1;
+ static int camera_type = 1;
if (p->actor->status == AC_BALL) {
camera_type = 2;
@@ -2459,33 +2462,33 @@ void draw_title(BITMAP *bmp, int tick) {
if (!playing_original_game) strcpy(start_string, "CUSTOM GAME");
- blit(data[ALEX_BG].dat, bmp, 0, 0, 0, 0, 160, 112);
+ blit((BITMAP*)data[ALEX_BG].dat, bmp, 0, 0, 0, 0, 160, 112);
rectfill(bmp, 0, 112, 160, 120, 2);
w = ((BITMAP *)data[ALEX_LOGO].dat)->w;
h = ((BITMAP *)data[ALEX_LOGO].dat)->h;
- draw_sprite(bmp, data[ALEX_LOGO].dat, 80 - w/2, 30 - h/2);
+ draw_sprite(bmp, (BITMAP*)data[ALEX_LOGO].dat, 80 - w/2, 30 - h/2);
draw_scroller(&hscroll, bmp, 0, 110);
y = 60;
x = 50;
- textout(bmp, data[THE_FONT].dat, start_string, x+1, y+1, 1);
- textout(bmp, data[THE_FONT].dat, start_string, x, y, 4);
+ textout(bmp, (FONT*)data[THE_FONT].dat, start_string, x+1, y+1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, start_string, x, y, 4);
y += step;
- textout(bmp, data[THE_FONT].dat, "HIGH SCORES", x+1, y+1, 1);
- textout(bmp, data[THE_FONT].dat, "HIGH SCORES", x, y, 4);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "HIGH SCORES", x+1, y+1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "HIGH SCORES", x, y, 4);
y += step;
- textout(bmp, data[THE_FONT].dat, "EDITOR", x+1, y+1, 1);
- textout(bmp, data[THE_FONT].dat, "EDITOR", x, y, 4);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "EDITOR", x+1, y+1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "EDITOR", x, y, 4);
y += step;
- textout(bmp, data[THE_FONT].dat, "QUIT", x+1, y+1, 1);
- textout(bmp, data[THE_FONT].dat, "QUIT", x, y, 4);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "QUIT", x+1, y+1, 1);
+ textout(bmp, (FONT*)data[THE_FONT].dat, "QUIT", x, y, 4);
- draw_sprite(bmp, data[POINTER].dat, x - 25 + fixtoi(3 * fcos(itofix(tick << 2))), 44 + menu_choice * step);
+ draw_sprite(bmp, (BITMAP*)data[POINTER].dat, x - 25 + fixtoi(3 * fcos(itofix(tick << 2))), 44 + menu_choice * step);
}
@@ -2508,7 +2511,7 @@ void switch_gfx_mode(int mode, int w, int h) {
}
}
- set_palette(data[0].dat);
+ set_palette((RGB*)data[0].dat);
}
@@ -2612,7 +2615,7 @@ int get_string(BITMAP *bmp, char *string, int max_size, FONT *f, int pos_x, int
// lets the player enter a name for highscore use (or what ever)
void get_player_name(char *name) {
- blit(data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
transform_bitmap(swap_screen, -1);
textout_outline_center(swap_screen, "Congratulations,", 80, 8);
textout_outline_center(swap_screen, "You've got", 80, 19);
@@ -2620,7 +2623,7 @@ void get_player_name(char *name) {
textout_outline_center(swap_screen, "Enter your name:", 80, 55);
blit_to_screen(swap_screen);
fade_in_pal(100);
- get_string(swap_screen, name, 10, data[THE_FONT].dat, 50, 80, 4, &ctrl);
+ get_string(swap_screen, name, 10, (FONT*)data[THE_FONT].dat, 50, 80, 4, &ctrl);
}
@@ -2756,7 +2759,7 @@ int do_main_menu() {
set_edit_mode(EDIT_MODE_DRAW);
set_edit_path_and_file("new.map");
- draw_frame(swap_screen, 1);
+ draw_frame(swap_screen, 1);printf("drawed frame\n");
blit_to_screen(swap_screen);
fade_in_pal(100);
status = play(-1);
@@ -2946,7 +2949,7 @@ int do_main_menu() {
stop_music();
fade_out_pal(100);
// show bye bye screen
- blit(data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)data[INTRO_BG].dat, swap_screen, 0, 0, 0, 0, 160, 120);
transform_bitmap(swap_screen, -1);
textout_outline_center(swap_screen, "Thanks for playing!", 80, 20);
textout_outline_center(swap_screen, "Design, Code, GFX:", 80, 48);
diff --git a/src/main.h b/src/main.h
index 290a453..2082430 100644
--- a/src/main.h
+++ b/src/main.h
@@ -59,6 +59,7 @@
#define SMPL_TALK 24
#define SMPL_BEAM 25
+extern DATAFILE *data;
// functions
char *get_init_string();
@@ -90,8 +91,6 @@ void poll_music();
// a little bounding box quickie
-#define check_bb_collision(x1,y1,w1,h1,x2,y2,w2,h2) (!( ((x1)>=(x2)+(w2)) || ((x2)>=(x1)+(w1)) || \
- ((y1)>=(y2)+(h2)) || ((y2)>=(y1)+(h1)) ))
+#define check_bb_collision(x1,y1,w1,h1,x2,y2,w2,h2) (!( ((x1)>=(x2)+(w2)) || ((x2)>=(x1)+(w1)) || ((y1)>=(y2)+(h2)) || ((y2)>=(y1)+(h1)) ))
-
-#endif
\ No newline at end of file
+#endif
diff --git a/src/map.c b/src/map.c
index 284445a..5d10c23 100644
--- a/src/map.c
+++ b/src/map.c
@@ -35,7 +35,7 @@
Tmap *create_map(int w, int h) {
Tmap *m;
- m = malloc(sizeof(Tmap));
+ m = (Tmap*)malloc(sizeof(Tmap));
if (m == NULL) return NULL;
strcpy(m->name, "noname");
@@ -52,7 +52,7 @@ Tmap *create_map(int w, int h) {
m->offset_y = 0;
m->width = w;
m->height = h;
- m->dat = malloc(w * h * sizeof(Tmappos));
+ m->dat = (Tmappos*)malloc(w * h * sizeof(Tmappos));
if (m->dat == NULL) {
free(m);
@@ -86,7 +86,7 @@ Tmap *load_map(char *fname) {
}
// get memory
- m = malloc(sizeof(Tmap));
+ m = (Tmap*)malloc(sizeof(Tmap));
if (m == NULL) {
fclose(fp);
return NULL;
@@ -96,7 +96,7 @@ Tmap *load_map(char *fname) {
fread(m, sizeof(Tmap), 1, fp);
// read map data
- m->dat = malloc(m->width * m->height * sizeof(Tmappos));
+ m->dat = (Tmappos*)malloc(m->width * m->height * sizeof(Tmappos));
if (m->dat == NULL) {
free(m);
return NULL;
@@ -130,7 +130,7 @@ Tmap *load_map_from_memory(void *mem) {
c += 6;
// get memory
- m = malloc(sizeof(Tmap));
+ m = (Tmap*)malloc(sizeof(Tmap));
if (m == NULL) {
//fclose(fp);
return NULL;
@@ -142,7 +142,7 @@ Tmap *load_map_from_memory(void *mem) {
c += sizeof(Tmap);
// read map data
- m->dat = malloc(m->width * m->height * sizeof(Tmappos));
+ m->dat = (Tmappos*)malloc(m->width * m->height * sizeof(Tmappos));
if (m->dat == NULL) {
free(m);
return NULL;
@@ -164,7 +164,7 @@ Tmap *load_map_from_memory(void *mem) {
// saves a map to file
int save_map(Tmap *m, char *fname) {
FILE *fp;
- char header[6] = "AX4MAP";
+ char header[7] = "AX4MAP";
// open file
fp = fopen(fname, "wb");
@@ -222,41 +222,41 @@ void draw_map(BITMAP *bmp, Tmap *sm, int dx, int dy, int w, int h, int edit) {
pos = tx + ty * sm->width;
if (sm->dat[pos].tile) {
- draw_sprite(bmp, sm->data[sm->dat[pos].tile + TILE000 - 1].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[sm->dat[pos].tile + TILE000 - 1].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].item) {
if (sm->dat[pos].item == MAP_EGG) {
- draw_sprite(bmp, sm->data[EGG].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[EGG].dat, dx + x*16 + ax, dy + y*16 + ay);
}
else if (sm->dat[pos].item == MAP_1UP) {
- draw_sprite(bmp, sm->data[ONEUP].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[ONEUP].dat, dx + x*16 + ax, dy + y*16 + ay);
}
else if (sm->dat[pos].item == MAP_STAR) {
- draw_sprite(bmp, sm->data[STAR].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[STAR].dat, dx + x*16 + ax, dy + y*16 + ay);
}
else if (sm->dat[pos].item == MAP_HEART) {
- draw_sprite(bmp, sm->data[HEART].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[HEART].dat, dx + x*16 + ax, dy + y*16 + ay);
}
else if (sm->dat[pos].item == MAP_CHERRY) {
- draw_sprite(bmp, sm->data[CHERRY].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[CHERRY].dat, dx + x*16 + ax, dy + y*16 + ay);
}
else if (sm->dat[pos].item == MAP_LOLA) {
- draw_sprite(bmp, sm->data[LOLA].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[LOLA].dat, dx + x*16 + ax, dy + y*16 + ay);
}
}
if (sm->dat[pos].type) {
if (sm->dat[pos].type == MAP_SPIN) {
- draw_sprite(bmp, sm->data[SPIN1 + ((ABS(game_count) >> 2) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[SPIN1 + ((ABS(game_count) >> 2) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].type == MAP_WATER) {
- blit(sm->data[WATER].dat, bmp, ((ABS(game_count) >> 2) % 4) << 4, 0, dx + x*16 + ax, dy + y*16 + ay, 16, 16);
+ blit((BITMAP*)sm->data[WATER].dat, bmp, ((ABS(game_count) >> 2) % 4) << 4, 0, dx + x*16 + ax, dy + y*16 + ay, 16, 16);
}
if (sm->dat[pos].type == MAP_SURFACE) {
- masked_blit(sm->data[WATER_SURFACE].dat, bmp, ((ABS(game_count) >> 2) % 8) << 4, 0, dx + x*16 + ax, dy + y*16 + ay, 16, 16);
+ masked_blit((BITMAP*)sm->data[WATER_SURFACE].dat, bmp, ((ABS(game_count) >> 2) % 8) << 4, 0, dx + x*16 + ax, dy + y*16 + ay, 16, 16);
}
}
@@ -271,28 +271,28 @@ void draw_map(BITMAP *bmp, Tmap *sm, int dx, int dy, int w, int h, int edit) {
textout(bmp, font, "GL", dx + x*16 + ax, dy + y*16 + ay, 255);
}
if (sm->dat[pos].type == MAP_ENEMY1) {
- draw_sprite(bmp, sm->data[ENEMY1_01 + ((ABS(game_count) >> 3) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY1_01 + ((ABS(game_count) >> 3) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].type == MAP_ENEMY2) {
- draw_sprite(bmp, sm->data[ENEMY2_01 + ((ABS(game_count) >> 3) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay - 8);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY2_01 + ((ABS(game_count) >> 3) % 4)].dat, dx + x*16 + ax, dy + y*16 + ay - 8);
}
if (sm->dat[pos].type == MAP_ENEMY3) {
- draw_sprite(bmp, sm->data[ENEMY3].dat, dx + x*16 + ax, dy + y*16 + ay - 96);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY3].dat, dx + x*16 + ax, dy + y*16 + ay - 96);
}
if (sm->dat[pos].type == MAP_ENEMY4) {
- draw_sprite(bmp, sm->data[ENEMY4].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY4].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].type == MAP_ENEMY5) {
- draw_sprite(bmp, sm->data[ENEMY5_01].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY5_01].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].type == MAP_ENEMY6) {
- draw_sprite(bmp, sm->data[ENEMY6].dat, dx + x*16 + ax, dy + y*16 + ay);
+ draw_sprite(bmp, (BITMAP*)sm->data[ENEMY6].dat, dx + x*16 + ax, dy + y*16 + ay);
}
if (sm->dat[pos].type == MAP_GUARD1) {
- draw_sprite(bmp, sm->data[GUARD1_1].dat, dx + x*16 + ax, dy + y*16 + ay - 16);
+ draw_sprite(bmp, (BITMAP*)sm->data[GUARD1_1].dat, dx + x*16 + ax, dy + y*16 + ay - 16);
}
if (sm->dat[pos].type == MAP_GUARD2) {
- draw_sprite(bmp, sm->data[GUARD2_1a].dat, dx + x*16 + ax, dy + y*16 + ay - 32);
+ draw_sprite(bmp, (BITMAP*)sm->data[GUARD2_1a].dat, dx + x*16 + ax, dy + y*16 + ay - 32);
}
}
}
@@ -339,7 +339,7 @@ void change_map_size(Tmap *sm, int dw, int dh, int dir_flags) {
tsm.width = sm->width;
tsm.height = sm->height;
sm->height += dh;
- sm->dat = malloc(sm->width * sm->height * sizeof(Tmappos));
+ sm->dat = (Tmappos*)malloc(sm->width * sm->height * sizeof(Tmappos));
for(i=0;i<sm->width*sm->height;i++) sm->dat[i].tile = sm->dat[i].mask = sm->dat[i].type = sm->dat[i].item = 0;
// copy relevant parts
@@ -361,7 +361,7 @@ void change_map_size(Tmap *sm, int dw, int dh, int dir_flags) {
tsm.width = sm->width;
tsm.height = sm->height;
sm->width += dw;
- sm->dat = malloc(sm->width * sm->height * sizeof(Tmappos));
+ sm->dat = (Tmappos*)malloc(sm->width * sm->height * sizeof(Tmappos));
for(i=0;i<sm->width*sm->height;i++) sm->dat[i].tile = sm->dat[i].mask = sm->dat[i].type = sm->dat[i].item = 0;
// copy relevant parts
diff --git a/src/map.h b/src/map.h
index 5dfb974..b204cc6 100644
--- a/src/map.h
+++ b/src/map.h
@@ -72,7 +72,7 @@ typedef struct {
} Tmappos;
// map header (overall stuff)
-typedef struct {
+typedef struct Tmap {
char name[32];
char dummy[27];
char map_data_needs_to_be_destroyed;
@@ -87,7 +87,7 @@ typedef struct {
DATAFILE *data;
int start_x;
int start_y;
-} Tmap;
+};
// functions
@@ -111,4 +111,4 @@ int adjust_xpos (Tmap *m, int x, int y, int ground, int dx);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/options.h b/src/options.h
index b1e3c55..83041af 100644
--- a/src/options.h
+++ b/src/options.h
@@ -43,4 +43,4 @@ void save_options(Toptions *o, PACKFILE *fp);
void load_options(Toptions *o, PACKFILE *fp);
void reset_options(Toptions *o);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/particle.c b/src/particle.c
index 5435d58..1e28c5e 100644
--- a/src/particle.c
+++ b/src/particle.c
@@ -20,18 +20,11 @@
-
+#include "main.h"
#include "particle.h"
-// pointer to datafile
-DATAFILE *data;
-
-
-// set datafile to use
-void set_datafile(DATAFILE *d) {
- data = d;
-}
-
+// the particles themselves
+Tparticle particle[MAX_PARTICLES];
// inits variables in a particle
void set_particle(Tparticle *p, int x, int y, double dx, double dy, int color, int life, int bmp) {
@@ -47,8 +40,8 @@ void set_particle(Tparticle *p, int x, int y, double dx, double dy, int color, i
// draws particle depending on map offset (ox and oy)
void draw_particle(BITMAP *bmp, Tparticle*p, int ox, int oy) {
- int x = p->x - ox;
- int y = p->y - oy;
+ int x = (int)(p->x - ox);
+ int y = (int)(p->y - oy);
// is the particle inside the screen
if (x < -16 || x > bmp->w + 16 || y < -16 || y > bmp->h +16) return;
@@ -57,12 +50,12 @@ void draw_particle(BITMAP *bmp, Tparticle*p, int ox, int oy) {
if (p->bmp == -1)
putpixel(bmp, x, y, p->color);
else {
- BITMAP *b = data[p->bmp + (p->color == -1 ? p->count>>1 : 0)].dat;
+ BITMAP *b = (BITMAP*)data[p->bmp + (p->color == -1 ? p->count>>1 : 0)].dat;
draw_sprite(bmp, b, x - b->w/2, y - b->h/2);
}
}
-// updates the particle data (position etc)
+// updates the particle particledata (position etc)
void update_particle(Tparticle* p) {
p->x += p->dx;
p->y += p->dy;
diff --git a/src/particle.h b/src/particle.h
index f81ee87..9e27a5b 100644
--- a/src/particle.h
+++ b/src/particle.h
@@ -31,21 +31,20 @@
// the particle struct
-typedef struct {
+typedef struct Tparticle {
double x, y;
double dx, dy;
int color;
int life;
int count;
int bmp;
-} Tparticle;
+};
// the particles themselves
-Tparticle particle[MAX_PARTICLES];
+extern Tparticle particle[MAX_PARTICLES];
// functions
-void set_datafile(DATAFILE *d);
void reset_particles(Tparticle *p, int max);
Tparticle *get_free_particle(Tparticle *p, int max);
void set_particle(Tparticle *p, int x, int y, double dx, double dy, int color, int life, int bmp);
@@ -54,4 +53,4 @@ void update_particle(Tparticle *p);
void update_particle_with_map(Tparticle *p, Tmap *m);
void create_burst(Tparticle *ps, int x, int y, int spread, int num, int life, int bmp);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/player.c b/src/player.c
index a608281..edd1671 100644
--- a/src/player.c
+++ b/src/player.c
@@ -25,6 +25,8 @@
#include "timer.h"
#include "../data/data.h"
+Tplayer player;
+
// draws the player depending on his state
void draw_player(BITMAP *bmp, Tplayer *p, int x, int y) {
BITMAP *head, *body;
@@ -33,26 +35,26 @@ void draw_player(BITMAP *bmp, Tplayer *p, int x, int y) {
if (p->wounded && (game_count % 2)) return;
if (p->actor->status == AC_DEAD) {
- head = p->actor->data[HERO_NORM].dat;
- body = p->actor->data[HERO_JUMP].dat;
+ head = (BITMAP*)p->actor->data[HERO_NORM].dat;
+ body = (BITMAP*)p->actor->data[HERO_JUMP].dat;
draw_sprite_v_flip(bmp, body, x, y - 32);
draw_sprite_v_flip(bmp, head, x, y - 16);
}
else if (p->actor->status == AC_BALL) {
if (!p->actor->direction)
- rotate_sprite(bmp, p->actor->data[HERO_BALL].dat, x, y-16, itofix(p->angle));
+ rotate_sprite(bmp, (BITMAP*)p->actor->data[HERO_BALL].dat, x, y-16, itofix(p->angle));
else
- rotate_sprite_v_flip(bmp, p->actor->data[HERO_BALL].dat, x, y-16, itofix(p->angle + 128));
+ rotate_sprite_v_flip(bmp, (BITMAP*)p->actor->data[HERO_BALL].dat, x, y-16, itofix(p->angle + 128));
}
else if (p->actor->status != AC_EAT) {
- if (p->actor->status == AC_FULL) head = p->actor->data[HERO_FULL].dat;
- else if (p->actor->status == AC_SPIT) head = p->actor->data[HERO_SPIT].dat;
- else head = p->actor->data[HERO_NORM].dat;
+ if (p->actor->status == AC_FULL) head = (BITMAP*)p->actor->data[HERO_FULL].dat;
+ else if (p->actor->status == AC_SPIT) head = (BITMAP*)p->actor->data[HERO_SPIT].dat;
+ else head = (BITMAP*)p->actor->data[HERO_NORM].dat;
if (p->jumping)
- body = p->actor->data[HERO_JUMP].dat;
+ body = (BITMAP*)p->actor->data[HERO_JUMP].dat;
else
- body = p->actor->data[p->actor->frames[p->actor->frame]].dat;
+ body = (BITMAP*)p->actor->data[p->actor->frames[p->actor->frame]].dat;
if (p->actor->direction) {
draw_sprite_h_flip(bmp, body, x, y - 16);
@@ -66,15 +68,15 @@ void draw_player(BITMAP *bmp, Tplayer *p, int x, int y) {
else {
if (!p->jumping) {
if (p->actor->direction) {
- draw_sprite_h_flip(bmp, p->actor->data[HERO_EAT].dat, x, y - 16);
+ draw_sprite_h_flip(bmp, (BITMAP*)p->actor->data[HERO_EAT].dat, x, y - 16);
}
else {
- draw_sprite(bmp, p->actor->data[HERO_EAT].dat, x - 16, y - 16);
+ draw_sprite(bmp, (BITMAP*)p->actor->data[HERO_EAT].dat, x - 16, y - 16);
}
}
else {
- head = p->actor->data[HERO_SPIT].dat;
- body = p->actor->data[HERO_JUMP].dat;
+ head = (BITMAP*)p->actor->data[HERO_SPIT].dat;
+ body = (BITMAP*)p->actor->data[HERO_JUMP].dat;
if (p->actor->direction) {
draw_sprite_h_flip(bmp, body, x, y - 16);
draw_sprite_h_flip(bmp, head, x, y - 16);
diff --git a/src/player.h b/src/player.h
index 0f19f95..cccb21d 100644
--- a/src/player.h
+++ b/src/player.h
@@ -26,7 +26,7 @@
// struct for the player
-typedef struct {
+typedef struct Tplayer {
Tactor *actor;
int score;
@@ -49,15 +49,14 @@ typedef struct {
int stars;
int cherries_taken;
int stars_taken;
-} Tplayer;
-
+};
// the player
-Tplayer player;
+extern Tplayer player;
// functions
void draw_player(BITMAP *bmp, Tplayer *p, int x, int y);
void wound_player(Tplayer *p);
void kill_player(Tplayer *p);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/script.c b/src/script.c
index 5efb139..8ef1d51 100644
--- a/src/script.c
+++ b/src/script.c
@@ -33,9 +33,11 @@
// silly value
#define NO_CHANGE -3249587
+// array holding the sounds ids
+int active_sounds[MAX_SCRIPT_SOUNDS];
-// datafile to use
-DATAFILE *data;
+// scriptdatafile to use
+DATAFILE *scriptdata;
// internal buffers
BITMAP *buffer;
BITMAP *swap_buffer;
@@ -55,7 +57,7 @@ void draw_speak_bulb(BITMAP *bmp, DATAFILE *d, int src_x, int src_y, int up, int
// get max text length
for(i = 0; i < lines; i ++) {
- int len = text_length(d[THE_FONT].dat, rows[i]);
+ int len = text_length((FONT*)d[THE_FONT].dat, rows[i]);
if (max_w < len) max_w = len;
}
@@ -80,16 +82,16 @@ void draw_speak_bulb(BITMAP *bmp, DATAFILE *d, int src_x, int src_y, int up, int
line(bmp, x1 + 4, y2, x2 - 4, y2, 1);
line(bmp, x2+1, y1 + 4, x2+1, y2 - 4, 1);
line(bmp, x1 + 4, y2+1, x2 - 4, y2+1, 1);
- draw_sprite(bmp, d[BULB_TL].dat, x1, y1);
- draw_sprite(bmp, d[BULB_BL].dat, x1, y2 - 5);
- draw_sprite(bmp, d[BULB_TR].dat, x2 - 5, y1);
- draw_sprite(bmp, d[BULB_BR].dat, x2 - 5, y2 - 5);
+ draw_sprite(bmp, (BITMAP*)d[BULB_TL].dat, x1, y1);
+ draw_sprite(bmp, (BITMAP*)d[BULB_BL].dat, x1, y2 - 5);
+ draw_sprite(bmp, (BITMAP*)d[BULB_TR].dat, x2 - 5, y1);
+ draw_sprite(bmp, (BITMAP*)d[BULB_BR].dat, x2 - 5, y2 - 5);
if (arrow)
- draw_sprite(bmp, d[(left ? (up ? BULBA_TL : BULBA_BL) : (up ? BULBA_TR : BULBA_BR))].dat, xa, ya);
+ draw_sprite(bmp, (BITMAP*)d[(left ? (up ? BULBA_TL : BULBA_BL) : (up ? BULBA_TR : BULBA_BR))].dat, xa, ya);
// draw text
for(i = 0; i < lines; i ++) {
- textout(bmp, d[THE_FONT].dat, rows[i], x1 + 4, y1 + 5 + i * 9, 1);
+ textout(bmp, (FONT*)d[THE_FONT].dat, rows[i], x1 + 4, y1 + 5 + i * 9, 1);
}
}
@@ -144,7 +146,7 @@ int set_object(char *name, int x, int y, int dir) {
// create new if not found
if (o == NULL) {
- o = malloc(sizeof(Tscript_object));
+ o = (Tscript_object*)malloc(sizeof(Tscript_object));
if (o == NULL) return 0;
new_object = 1;
o->x = 0;
@@ -162,31 +164,31 @@ int set_object(char *name, int x, int y, int dir) {
// set bitmap
if (!stricmp(name, "helicopter")) {
- o->bmp[0] = data[CHOPPER1].dat;
- o->bmp[1] = data[CHOPPER2].dat;
- o->bmp[2] = data[CHOPPER3].dat;
- o->bmp[3] = data[CHOPPER4].dat;
+ o->bmp[0] = (BITMAP*)scriptdata[CHOPPER1].dat;
+ o->bmp[1] = (BITMAP*)scriptdata[CHOPPER2].dat;
+ o->bmp[2] = (BITMAP*)scriptdata[CHOPPER3].dat;
+ o->bmp[3] = (BITMAP*)scriptdata[CHOPPER4].dat;
o->frames = 4;
}
- else if (!stricmp(name, "cage1")) o->bmp[0] = data[CAGE_SML1].dat;
- else if (!stricmp(name, "cage2")) o->bmp[0] = data[CAGE_BIG].dat;
- else if (!stricmp(name, "cage3")) o->bmp[0] = data[CAGE_SML2].dat;
- else if (!stricmp(name, "chain")) o->bmp[0] = data[CHAIN].dat;
- else if (!stricmp(name, "lola")) o->bmp[0] = data[LOLA].dat;
- else if (!stricmp(name, "alex")) o->bmp[0] = data[ALEX].dat;
- else if (!stricmp(name, "ufo")) o->bmp[0] = data[UFO_BIG].dat;
- else if (!stricmp(name, "ufo0")) o->bmp[0] = data[UFO0].dat;
- else if (!stricmp(name, "ufo1")) o->bmp[0] = data[UFO1].dat;
- else if (!stricmp(name, "beam")) o->bmp[0] = data[UFOBEAM].dat;
- else if (!stricmp(name, "ship0")) o->bmp[0] = data[SHIP0].dat;
- else if (!stricmp(name, "ship1")) o->bmp[0] = data[SHIP1].dat;
- else if (!stricmp(name, "ball")) o->bmp[0] = data[HERO_BALL].dat;
- else if (!strncmp(name, "drumcan", 7)) o->bmp[0] = data[DRUMCAN].dat;
+ else if (!stricmp(name, "cage1")) o->bmp[0] = (BITMAP*)scriptdata[CAGE_SML1].dat;
+ else if (!stricmp(name, "cage2")) o->bmp[0] = (BITMAP*)scriptdata[CAGE_BIG].dat;
+ else if (!stricmp(name, "cage3")) o->bmp[0] = (BITMAP*)scriptdata[CAGE_SML2].dat;
+ else if (!stricmp(name, "chain")) o->bmp[0] = (BITMAP*)scriptdata[CHAIN].dat;
+ else if (!stricmp(name, "lola")) o->bmp[0] = (BITMAP*)scriptdata[LOLA].dat;
+ else if (!stricmp(name, "alex")) o->bmp[0] = (BITMAP*)scriptdata[ALEX].dat;
+ else if (!stricmp(name, "ufo")) o->bmp[0] = (BITMAP*)scriptdata[UFO_BIG].dat;
+ else if (!stricmp(name, "ufo0")) o->bmp[0] = (BITMAP*)scriptdata[UFO0].dat;
+ else if (!stricmp(name, "ufo1")) o->bmp[0] = (BITMAP*)scriptdata[UFO1].dat;
+ else if (!stricmp(name, "beam")) o->bmp[0] = (BITMAP*)scriptdata[UFOBEAM].dat;
+ else if (!stricmp(name, "ship0")) o->bmp[0] = (BITMAP*)scriptdata[SHIP0].dat;
+ else if (!stricmp(name, "ship1")) o->bmp[0] = (BITMAP*)scriptdata[SHIP1].dat;
+ else if (!stricmp(name, "ball")) o->bmp[0] = (BITMAP*)scriptdata[HERO_BALL].dat;
+ else if (!strncmp(name, "drumcan", 7)) o->bmp[0] = (BITMAP*)scriptdata[DRUMCAN].dat;
else o->bmp[0] = NULL;
// rearrange pointers
if (new_object) {
- o->next = (struct Tscript_object *)objects;
+ o->next = (Tscript_object *)objects;
objects = o;
}
@@ -202,7 +204,7 @@ int set_line(char *name, Tscript_object *src, int sx, int sy, Tscript_object *ds
// create new if not found
if (o == NULL) {
- o = malloc(sizeof(Tscript_object));
+ o = (Tscript_object*)malloc(sizeof(Tscript_object));
if (o == NULL) return 0;
new_object = 1;
o->line = 1;
@@ -289,7 +291,7 @@ void cmd_showbmp(char *name) {
blit(buffer, swap_buffer, 0, 0, 0, 0, 160, 120);
}
else if (!stricmp(name, "treetops")) {
- blit(data[INTRO_BG].dat, swap_buffer, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)scriptdata[INTRO_BG].dat, swap_buffer, 0, 0, 0, 0, 160, 120);
}
else if (!stricmp(name, "darkness")) {
clear_to_color(swap_buffer, 2);
@@ -340,7 +342,7 @@ void cmd_speak(Ttoken *t, int arrow) {
t = (Ttoken *)t->next;
}
- draw_speak_bulb(swap_buffer, data, sx, sy, up, left, lines, rows, arrow);
+ draw_speak_bulb(swap_buffer, scriptdata, sx, sy, up, left, lines, rows, arrow);
}
@@ -581,8 +583,8 @@ int run_script(char *script, DATAFILE *d) {
Ttoken *token;
int i;
- // set datafile
- data = d;
+ // set scriptdatafile
+ scriptdata = d;
clear_keybuf();
diff --git a/src/script.h b/src/script.h
index d025b6c..b1d1d0e 100644
--- a/src/script.h
+++ b/src/script.h
@@ -26,7 +26,7 @@
// struct holding script data
-typedef struct {
+typedef struct Tscript_object {
char name[16];
int x, y, vx, vy; // position and velocity
BITMAP *bmp[4];
@@ -37,12 +37,12 @@ typedef struct {
struct Tscript_object *line_to;
struct Tscript_object *next;
-} Tscript_object;
+};
// max number of sounds played by the script
#define MAX_SCRIPT_SOUNDS 16
// array holding the sounds ids
-int active_sounds[MAX_SCRIPT_SOUNDS];
+extern int active_sounds[MAX_SCRIPT_SOUNDS];
// functions
@@ -51,4 +51,4 @@ void draw_speak_bulb(BITMAP *bmp, DATAFILE *d, int src_x, int src_y, int up, int
-#endif
\ No newline at end of file
+#endif
diff --git a/src/scroller.h b/src/scroller.h
index b31e521..b5144f7 100644
--- a/src/scroller.h
+++ b/src/scroller.h
@@ -51,4 +51,4 @@ void restart_scroller(Tscroller *sc);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/shooter.c b/src/shooter.c
index 3193d5d..e906823 100644
--- a/src/shooter.c
+++ b/src/shooter.c
@@ -239,8 +239,7 @@ Tshooter_event s_level[] = {
// PIXEL PERFECT COLLISION ROUTINES COURTESY OF IVAN BALDO'S PPCOL
-#define pp_check_bb_collision_general(x1,y1,w1,h1,x2,y2,w2,h2) (!( ((x1)>=(x2)+(w2)) || ((x2)>=(x1)+(w1)) || \
- ((y1)>=(y2)+(h2)) || ((y2)>=(y1)+(h1)) ))
+#define pp_check_bb_collision_general(x1,y1,w1,h1,x2,y2,w2,h2) (!( ((x1)>=(x2)+(w2)) || ((x2)>=(x1)+(w1)) || ((y1)>=(y2)+(h2)) || ((y2)>=(y1)+(h1)) ))
#define pp_check_bb_collision(mask1,mask2,x1,y1,x2,y2) pp_check_bb_collision_general(x1,y1,mask1->w,mask1->h,x2,y2,mask2->w,mask2->h)
int s_check_pp_collision(BITMAP *spr1, BITMAP *spr2, int x1, int y1, int x2, int y2) {
@@ -339,9 +338,9 @@ static void s_start_music(int startorder) {
void s_draw_object(BITMAP *bmp, Tspace_object *o) {
if (o->type != SO_EXPLOSION) {
if (!o->hit || o->type == SO_PLAYER_BULLET)
- draw_sprite(bmp, s_data[o->image].dat, (int)o->x, (int)o->y);
+ draw_sprite(bmp, (BITMAP*)s_data[o->image].dat, (int)o->x, (int)o->y);
else
- draw_character(bmp, s_data[o->image].dat, (int)o->x, (int)o->y, 4);
+ draw_character(bmp, (BITMAP*)s_data[o->image].dat, (int)o->x, (int)o->y, 4);
}
else {
int c = (o->energy + 8) >> 3;
@@ -362,15 +361,15 @@ void s_draw_status_bar(BITMAP *bmp, int x, int y) {
int padding;
// draw bar
- blit(s_data[STATUSBAR].dat, bmp, 0, 0, 0, 109, 160, 11);
+ blit((BITMAP*)s_data[STATUSBAR].dat, bmp, 0, 0, 0, 109, 160, 11);
// draw lives
for(i = 0; i < s_var.lives; i ++)
- draw_sprite(bmp, s_data[ST_LIFE].dat, x + 3 + i * 8, y + 3);
+ draw_sprite(bmp, (BITMAP*)s_data[ST_LIFE].dat, x + 3 + i * 8, y + 3);
// draw stars
for(i = 0; i < 5; i ++)
- draw_sprite(bmp, s_data[(i < s_var.power_gauge ? ST_STAR_ON : ST_STAR_OFF)].dat, x + 36 + i * 8, y + 3);
+ draw_sprite(bmp, (BITMAP*)s_data[(i < s_var.power_gauge ? ST_STAR_ON : ST_STAR_OFF)].dat, x + 36 + i * 8, y + 3);
// draw score
sprintf(score_str, "%d", s_var.show_score);
@@ -379,8 +378,8 @@ void s_draw_status_bar(BITMAP *bmp, int x, int y) {
padding_str[i] = '0';
padding_str[i] = '\0';
strcat(padding_str, score_str);
- textprintf_right(bmp, s_data[SPACE_FONT].dat, x + 160, y + 2, 3, "%s", padding_str);
- if (s_var.score) textprintf_right(bmp, s_data[SPACE_FONT].dat, x + 160, y + 2, 4, "%s", score_str);
+ textprintf_right(bmp, (FONT*)s_data[SPACE_FONT].dat, x + 160, y + 2, 3, "%s", padding_str);
+ if (s_var.score) textprintf_right(bmp, (FONT*)s_data[SPACE_FONT].dat, x + 160, y + 2, 4, "%s", score_str);
}
@@ -388,8 +387,8 @@ void s_draw_frame(BITMAP *bmp) {
int i;
// blit bg
- blit(s_data[BG1].dat, bmp, 0, 0, -(game_count % 160), 0, 160, 120);
- blit(s_data[BG1].dat, bmp, 0, 0, 160 - (game_count % 160), 0, 160, 120);
+ blit((BITMAP*)s_data[BG1].dat, bmp, 0, 0, -(game_count % 160), 0, 160, 120);
+ blit((BITMAP*)s_data[BG1].dat, bmp, 0, 0, 160 - (game_count % 160), 0, 160, 120);
// draw stars
for(i = 0; i < 64; i ++)
@@ -512,8 +511,8 @@ void s_update_object(Tspace_object *o) {
if (o->x > o->d1) {
o->x += o->vx;
o->t = 0;
- o->ty = o->y;
- o->tx = o->x;
+ o->ty = (int)o->y;
+ o->tx = (int)o->x;
}
else {
o->y = o->ty + fixtoi(fmul(ftofix(o->vy), fsin(itofix(o->t))));
@@ -826,7 +825,7 @@ void s_check_collision(Tspace_object *array_a, int num_a, Tspace_object *array_b
for(b = 0; b < num_b; b ++) {
if (array_b[b].alive && !array_b[b].hit) {
// do bb collision
- if (s_check_pp_collision(s_data[array_a[a].image].dat, s_data[array_b[b].image].dat,
+ if (s_check_pp_collision((BITMAP*)s_data[array_a[a].image].dat, (BITMAP*)s_data[array_b[b].image].dat,
(int)array_a[a].x, (int)array_a[a].y,
(int)array_b[b].x, (int)array_b[b].y)) {
@@ -1097,14 +1096,14 @@ void s_activate_sign(int game_over, double vy) {
// the player can enter his/hers name
void s_get_player_name(char *name) {
clear_to_color(s_buffer, 1);
- blit(s_data[BG1].dat, s_buffer, 0, 0, 0, 0, 160, 120);
+ blit((BITMAP*)s_data[BG1].dat, s_buffer, 0, 0, 0, 0, 160, 120);
textout_outline_center(s_buffer, "Congratulations,", 80, 8);
textout_outline_center(s_buffer, "You've got", 80, 19);
textout_outline_center(s_buffer, "a high score!", 80, 30);
textout_outline_center(s_buffer, "Enter your name:", 80, 55);
blit_to_screen(s_buffer);
fade_in_pal_black(100, s_dp);
- get_string(s_buffer, name, 10, s_data[SPACE_FONT].dat, 50, 80, 4, s_var.ctrl);
+ get_string(s_buffer, name, 10, (FONT*)s_data[SPACE_FONT].dat, 50, 80, 4, s_var.ctrl);
}
// runs the shooter
diff --git a/src/shooter.h b/src/shooter.h
index 41a07a6..b8025bf 100644
--- a/src/shooter.h
+++ b/src/shooter.h
@@ -118,4 +118,4 @@ typedef struct {
int start_shooter(Tcontrol *c, int with_sound);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/timer.c b/src/timer.c
index 8bade02..bad6514 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -23,6 +23,13 @@
#include "allegro.h"
#include "timer.h"
+volatile int frame_count;
+volatile int fps;
+volatile int logic_count;
+volatile int lps;
+volatile int cycle_count;
+volatile int game_count;
+
// keeps track of frames each second
void fps_counter(void) {
fps = frame_count;
@@ -60,4 +67,4 @@ int install_timers() {
game_count ++;
return TRUE;
-}
\ No newline at end of file
+}
diff --git a/src/timer.h b/src/timer.h
index 4fcc481..5bf7ab5 100644
--- a/src/timer.h
+++ b/src/timer.h
@@ -24,12 +24,12 @@
#define _TIMERS_H_
// the variables used by the timers
-volatile int frame_count;
-volatile int fps;
-volatile int logic_count;
-volatile int lps;
-volatile int cycle_count;
-volatile int game_count;
+extern volatile int frame_count;
+extern volatile int fps;
+extern volatile int logic_count;
+extern volatile int lps;
+extern volatile int cycle_count;
+extern volatile int game_count;
// functions
@@ -37,4 +37,4 @@ int install_timers();
void fps_counter(void);
void cycle_counter(void);
-#endif
\ No newline at end of file
+#endif
diff --git a/src/token.c b/src/token.c
index 1d95975..e2528d7 100644
--- a/src/token.c
+++ b/src/token.c
@@ -33,7 +33,7 @@
// creates a new token
Ttoken *create_token(char *word) {
- Ttoken *tok = malloc(sizeof(Ttoken));
+ Ttoken *tok = (Ttoken*)malloc(sizeof(Ttoken));
if (tok != NULL) {
tok->word = strdup(word);
tok->next = NULL;
diff --git a/src/token.h b/src/token.h
index d8634f1..707855e 100644
--- a/src/token.h
+++ b/src/token.h
@@ -25,7 +25,7 @@
// the struct for a token
-typedef struct {
+typedef struct Ttoken {
char *word;
struct Ttoken *next;
} Ttoken;
@@ -41,4 +41,4 @@ char *get_next_word(Ttoken *t);
Ttoken *tokenize(char *str);
-#endif
\ No newline at end of file
+#endif
--
2.21.0
From 773d561c9d3d89448631ae6f853bb67cc28c34e3 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sun, 12 May 2019 15:14:44 +0200
Subject: replace fsin,fmul,fcos with fixsin,fixmul,fixcos
diff --git a/src/main.c b/src/main.c
index cec8bc6..662f9d1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1161,9 +1161,9 @@ void draw_custom_ending(BITMAP *bmp) {
blit((BITMAP*)data[INTRO_BG].dat, bmp, 0, 0, 0, 0, 160, 120);
- r = 70 + fixtoi(20 * fcos(itofix(game_count >> 1)) + 20 * fsin(itofix((int)(game_count / 2.7))) );
+ r = 70 + fixtoi(20 * fixcos(itofix(game_count >> 1)) + 20 * fixsin(itofix((int)(game_count / 2.7))) );
for(i = 0; i < 256; i += 32)
- draw_sprite(bmp, head, 80 - head->w/2 + fixtoi(r * fcos(itofix(game_count + i))), 60 - head->h/2 + fixtoi(r * fsin(itofix(game_count + i))));
+ draw_sprite(bmp, head, 80 - head->w/2 + fixtoi(r * fixcos(itofix(game_count + i))), 60 - head->h/2 + fixtoi(r * fixsin(itofix(game_count + i))));
draw_sprite_h_flip(bmp, (BITMAP*)data[ALEX].dat, 60, 40);
draw_sprite(bmp, (BITMAP*)data[LOLA].dat, 84, 40);
@@ -2488,7 +2488,7 @@ void draw_title(BITMAP *bmp, int tick) {
textout(bmp, (FONT*)data[THE_FONT].dat, "QUIT", x+1, y+1, 1);
textout(bmp, (FONT*)data[THE_FONT].dat, "QUIT", x, y, 4);
- draw_sprite(bmp, (BITMAP*)data[POINTER].dat, x - 25 + fixtoi(3 * fcos(itofix(tick << 2))), 44 + menu_choice * step);
+ draw_sprite(bmp, (BITMAP*)data[POINTER].dat, x - 25 + fixtoi(3 * fixcos(itofix(tick << 2))), 44 + menu_choice * step);
}
diff --git a/src/shooter.c b/src/shooter.c
index e906823..6005406 100644
--- a/src/shooter.c
+++ b/src/shooter.c
@@ -499,12 +499,12 @@ void s_update_object(Tspace_object *o) {
break;
case SM_SIN_WAVE:
o->x += o->vx;
- o->y = o->d2 + fixtoi(fmul(ftofix(o->vy), fsin(itofix(o->t))));
+ o->y = o->d2 + fixtoi(fixmul(ftofix(o->vy), fixsin(itofix(o->t))));
o->t += o->d1;
break;
case SM_COS_WAVE:
o->x += o->vx;
- o->y = o->d2 + fixtoi(fmul(ftofix(o->vy), fcos(itofix(o->t))));
+ o->y = o->d2 + fixtoi(fixmul(ftofix(o->vy), fixcos(itofix(o->t))));
o->t += o->d1;
break;
case SM_BOSS_1:
@@ -515,8 +515,8 @@ void s_update_object(Tspace_object *o) {
o->tx = (int)o->x;
}
else {
- o->y = o->ty + fixtoi(fmul(ftofix(o->vy), fsin(itofix(o->t))));
- o->x = o->tx - fixtoi(10 * fsin(itofix(o->t >> 1)));
+ o->y = o->ty + fixtoi(fixmul(ftofix(o->vy), fixsin(itofix(o->t))));
+ o->x = o->tx - fixtoi(10 * fixsin(itofix(o->t >> 1)));
o->t ++;
}
break;
@@ -572,7 +572,7 @@ void s_update_object(Tspace_object *o) {
else if (o->image == ENEMY15) {
int i;
for(i = 0; i < 256; i += 32)
- s_make_enemy_bullet((int)o->x + o->bw / 2, (int)o->y + o->bh, fixtof(1 * fcos(itofix(i - 6))), fixtof(1 * fsin(itofix(i - 6))));
+ s_make_enemy_bullet((int)o->x + o->bw / 2, (int)o->y + o->bh, fixtof(1 * fixcos(itofix(i - 6))), fixtof(1 * fixsin(itofix(i - 6))));
o->fire_counter = 200 + rand()%50;
}
--
2.21.0