diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index b9559d5..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: alex4 -# $Id$ -NAME := alex4 -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) diff --git a/alex4-allegro-4.2.patch b/alex4-allegro-4.2.patch new file mode 100644 index 0000000..146aaa8 --- /dev/null +++ b/alex4-allegro-4.2.patch @@ -0,0 +1,406 @@ +Index: alex4-1.1/src/edit.c +=================================================================== +--- alex4-1.1.orig/src/edit.c 2008-01-23 00:01:05.000000000 +0100 ++++ alex4-1.1/src/edit.c 2008-01-23 00:48:53.000000000 +0100 +@@ -69,8 +69,8 @@ + } + + // 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_ex(bmp, data[THE_FONT].dat, 1, 1, 0, -1, "TILE: %d,%d", tx, ty); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, 11, 0, -1, "SIZE: %d,%d", map->width, map->height); + + // show start pos + x = (ABS(map->start_x) << 4) - map->offset_x; +@@ -80,7 +80,7 @@ + + // 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_ex(bmp, data[THE_FONT].dat, 1, 111, 4, -1, "EDITING: %s", get_filename(edit_path_and_file)); + } + else if (edit_mode == EDIT_MODE_SELECT) { // draw tile palette + // calculate offset depending on mouse pointer +@@ -104,16 +104,16 @@ + 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_ex(bmp, data[THE_FONT].dat, 1, 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_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, "Win by:"); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, " 1) reach exit (%s)", (map->win_conditions & MAP_WIN_EXIT ? "X" : " ")); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, " 2) kill boss (%s)", (map->win_conditions & MAP_WIN_KILL_GUARDIAN ? "X" : " ")); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, " 3) kill all (%s)", (map->win_conditions & MAP_WIN_KILL_ALL ? "X" : " ")); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, "4) Boss level: (%s)", (map->boss_level ? "X" : " ")); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, ty+=10, 1, -1, "5) Name: %s", map->name); + +- textprintf(bmp, data[THE_FONT].dat, 1, 110, 1, "F1: back to editor"); ++ textprintf_ex(bmp, data[THE_FONT].dat, 1, 110, 1, -1, "F1: back to editor"); + } + + if (edit_mode != EDIT_MODE_STATS) { +Index: alex4-1.1/src/hisc.c +=================================================================== +--- alex4-1.1.orig/src/hisc.c 2008-01-23 00:48:53.000000000 +0100 ++++ alex4-1.1/src/hisc.c 2008-01-23 00:48:53.000000000 +0100 +@@ -153,9 +153,9 @@ + + // draws a single hisc post + void draw_hisc_post(Thisc *table, BITMAP *bmp, FONT *fnt, int x, int y, int color, int show_level) { +- textprintf(bmp, fnt, x, y, color, "%s", table->name); +- if (show_level) textprintf_right(bmp, fnt, x+80, y, color, "%2d", table->level); +- textprintf_right(bmp, fnt, x+140, y, color, "%d", table->score); ++ textprintf_ex(bmp, fnt, x, y, color, -1, "%s", table->name); ++ if (show_level) textprintf_right_ex(bmp, fnt, x+80, y, color, -1, "%2d", table->level); ++ textprintf_right_ex(bmp, fnt, x+140, y, color, -1, "%d", table->score); + } + + // draws the entire table +Index: alex4-1.1/src/main.c +=================================================================== +--- alex4-1.1.orig/src/main.c 2008-01-23 00:48:53.000000000 +0100 ++++ alex4-1.1/src/main.c 2008-01-23 00:48:53.000000000 +0100 +@@ -322,7 +322,7 @@ + cycle_count = 0; + if (got_sound && duh_player != NULL) al_poll_duh(duh_player); + i ++; +- while(!cycle_count) yield_timeslice(); ++ while(!cycle_count) rest(0); + } + } + +@@ -496,15 +496,15 @@ + + 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); ++ textprintf_ex(bmp, data[THE_FONT].dat, 9, y+1, 4, -1, " :%d", player.lives); + + for(i = 0; i < player.health; i ++) + draw_sprite(bmp, 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); ++ textprintf_ex(bmp, data[THE_FONT].dat, 85, y+1, 4, -1, " :%d", player.ammo); + +- textprintf_right(bmp, data[THE_FONT].dat, 158, y+1, 4, "%d", player.score); ++ textprintf_right_ex(bmp, data[THE_FONT].dat, 158, y+1, 4, -1, "%d", player.score); + } + + +@@ -626,7 +626,6 @@ + + // various allegro things + log2file(" initializing allegro"); +- text_mode(-1); + garble_string(init_string, 53); + #ifdef __unix__ + snprintf(filename, sizeof(filename), "%s/.alex4/alex4.ini", +@@ -635,7 +634,6 @@ + #else + set_config_file("alex4.ini"); + #endif +- set_window_close_button(FALSE); + + // install timers + log2file(" installing timers"); +@@ -701,7 +699,7 @@ + + // show initial loading screen + clear(swap_screen); +- textout_centre(swap_screen, font, "loading...", 320, 200, 1); ++ textout_centre_ex(swap_screen, font, "loading...", 320, 200, 1, -1); + blit_to_screen(swap_screen); + + #ifndef __unix__ +@@ -788,8 +786,8 @@ + clear_to_color(swap_screen, 3); + + bmp = 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); ++ draw_character_ex(swap_screen, bmp, 80 - bmp->w / 2 + 0, 50 + 1, 1, -1); ++ draw_character_ex(swap_screen, bmp, 80 - bmp->w / 2, 50, 4, -1); + + blit_to_screen(swap_screen); + +@@ -1100,11 +1098,11 @@ + + // 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_ex(bmp, data[THE_FONT].dat, txt, x+1, y, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, txt, x-1, y, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, txt, x, y+1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, txt, x, y-1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, txt, x, y, 4, -1); + } + + +@@ -1153,7 +1151,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw stuff + draw_frame(swap_screen, 1); +@@ -1195,7 +1193,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw stuff + draw_frame(swap_screen, 1); +@@ -1257,7 +1255,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw stuff + draw_custom_ending(swap_screen); +@@ -1373,7 +1371,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw stuff + blit(swap2, swap_screen, 0, 0, 0, 0, 160, 120); +@@ -1447,12 +1445,12 @@ + + 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_ex(stuff, data[THE_FONT].dat, buf, stuff->w/2 + 1, 1, 2, -1); ++ textout_centre_ex(stuff, data[THE_FONT].dat, buf, stuff->w/2, 0, 1, -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_ex(bmp, data[THE_FONT].dat, "SELECT START LEVEL", 80, 90, 1, -1); ++ textout_centre_ex(bmp, data[THE_FONT].dat, "SELECT START LEVEL", 79, 89, 4, -1); + + if (options.one_hundred) { + if (game_count & 32 || game_count & 16) draw_sprite(bmp, data[SHIP100].dat, xpos, 2); +@@ -2343,7 +2341,7 @@ + if (is_fire(&ctrl) || is_jump(&ctrl)) done = 1; + if (keypressed()) done = 1; + if (key[KEY_ESC]) done = -1; +- yield_timeslice(); ++ rest(0); + } + + if (done == -1) { +@@ -2493,7 +2491,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw + frame_count ++; +@@ -2524,20 +2522,20 @@ + + 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_ex(bmp, data[THE_FONT].dat, start_string, x+1, y+1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, start_string, x, y, 4, -1); + + 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_ex(bmp, data[THE_FONT].dat, "HIGH SCORES", x+1, y+1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, "HIGH SCORES", x, y, 4, -1); + + 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_ex(bmp, data[THE_FONT].dat, "EDITOR", x+1, y+1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, "EDITOR", x, y, 4, -1); + + 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_ex(bmp, data[THE_FONT].dat, "QUIT", x+1, y+1, 1, -1); ++ textout_ex(bmp, data[THE_FONT].dat, "QUIT", x, y, 4, -1); + + draw_sprite(bmp, data[POINTER].dat, x - 25 + fixtoi(3 * fcos(itofix(tick << 2))), 44 + menu_choice * step); + } +@@ -2589,7 +2587,7 @@ + string[i] = letters[current_letter]; + string[i + 1] = '\0'; + blit(block, bmp, 0, 0, pos_x - 1, pos_y - 1, block->w, block->h); +- textout(bmp, f, string, pos_x, pos_y, colour); ++ textout_ex(bmp, f, string, pos_x, pos_y, colour, -1); + blit_to_screen(bmp); + + if (pad != NULL) { +@@ -2775,7 +2773,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw + frame_count ++; +Index: alex4-1.1/src/map.c +=================================================================== +--- alex4-1.1.orig/src/map.c 2008-01-23 00:48:53.000000000 +0100 ++++ alex4-1.1/src/map.c 2008-01-23 00:49:56.000000000 +0100 +@@ -280,7 +280,7 @@ + + if (sm == NULL) return; + +- set_clip(bmp, dx, dy, dx+w-1, dy+h-1); ++ set_clip_rect(bmp, dx, dy, dx+w-1, dy+h-1); + + for(y=0;y<7;y++) { + for(x=0;x<11;x++) { +@@ -330,13 +330,13 @@ + + if (edit) { + if (sm->dat[pos].type == MAP_DEAD) { +- textout(bmp, font, "D", dx + x*16 + ax, dy + y*16 + ay, 0); ++ textout_ex(bmp, font, "D", dx + x*16 + ax, dy + y*16 + ay, 0, -1); + } + if (sm->dat[pos].type == MAP_EXIT) { +- textout(bmp, font, "XT", dx + x*16 + ax, dy + y*16 + ay, 255); ++ textout_ex(bmp, font, "XT", dx + x*16 + ax, dy + y*16 + ay, 255, -1); + } + if (sm->dat[pos].type == MAP_BRK) { +- textout(bmp, font, "GL", dx + x*16 + ax, dy + y*16 + ay, 255); ++ textout_ex(bmp, font, "GL", dx + x*16 + ax, dy + y*16 + ay, 255, -1); + } + 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); +@@ -367,7 +367,7 @@ + } + } + +- set_clip(bmp, 0, 0, SCREEN_W - 1, SCREEN_H - 1); ++ set_clip_rect(bmp, 0, 0, SCREEN_W - 1, SCREEN_H - 1); + + } + +Index: alex4-1.1/src/script.c +=================================================================== +--- alex4-1.1.orig/src/script.c 2008-01-23 00:01:05.000000000 +0100 ++++ alex4-1.1/src/script.c 2008-01-23 00:48:53.000000000 +0100 +@@ -89,7 +89,7 @@ + + // draw text + for(i = 0; i < lines; i ++) { +- textout(bmp, d[THE_FONT].dat, rows[i], x1 + 4, y1 + 5 + i * 9, 1); ++ textout_ex(bmp, d[THE_FONT].dat, rows[i], x1 + 4, y1 + 5 + i * 9, 1, -1); + } + } + +@@ -103,7 +103,7 @@ + poll_music(); + count ++; + while(!cycle_count); +- yield_timeslice(); ++ rest(0); + } + if (key[KEY_ESC]) script_done = -1; + } +@@ -521,7 +521,7 @@ + } + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // blit buffer to swap buffer + blit(buffer, swap_buffer, 0, 0, 0, 0, 160, 120); +Index: alex4-1.1/src/scroller.c +=================================================================== +--- alex4-1.1.orig/src/scroller.c 2008-01-23 00:01:05.000000000 +0100 ++++ alex4-1.1/src/scroller.c 2008-01-23 00:50:53.000000000 +0100 +@@ -65,22 +65,22 @@ + if (sc->horizontal) { + if (sc->offset < -sc->length) return; + if (sc->offset > sc->width) return; +- set_clip(bmp, x, y, x + sc->width, y + sc->height); +- textout(bmp, sc->fnt, sc->text, x + sc->offset + 1, y + 1, 1); +- textout(bmp, sc->fnt, sc->text, x + sc->offset, y, 3); +- set_clip(bmp, 0, 0, bmp->w-1, bmp->h-1); ++ set_clip_rect(bmp, x, y, x + sc->width, y + sc->height); ++ textout_ex(bmp, sc->fnt, sc->text, x + sc->offset + 1, y + 1, 1, -1); ++ textout_ex(bmp, sc->fnt, sc->text, x + sc->offset, y, 3, -1); ++ set_clip_rect(bmp, 0, 0, bmp->w-1, bmp->h-1); + } + else { + int i; + if (sc->offset < -sc->rows * sc->font_height) return; + if (sc->offset > sc->height) return; +- set_clip(bmp, x, y, x + sc->width, y + sc->height); ++ set_clip_rect(bmp, x, y, x + sc->width, y + sc->height); + for(i=0;irows;i++) { + if (i * sc->font_height + sc->offset <= sc->height) + if ((i+1) * sc->font_height + sc->offset >= 0) +- textout_centre(bmp, sc->fnt, sc->lines[i], x+(sc->width>>1) , i * sc->font_height + y + sc->offset, -1); ++ textout_centre_ex(bmp, sc->fnt, sc->lines[i], x+(sc->width>>1) , i * sc->font_height + y + sc->offset, -1, -1); + } +- set_clip(bmp, 0, 0, bmp->w-1, bmp->h-1); ++ set_clip_rect(bmp, 0, 0, bmp->w-1, bmp->h-1); + } + } + +Index: alex4-1.1/src/shooter.c +=================================================================== +--- alex4-1.1.orig/src/shooter.c 2008-01-23 00:48:53.000000000 +0100 ++++ alex4-1.1/src/shooter.c 2008-01-23 00:48:53.000000000 +0100 +@@ -341,7 +341,7 @@ + if (!o->hit || o->type == SO_PLAYER_BULLET) + draw_sprite(bmp, 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_ex(bmp, s_data[o->image].dat, (int)o->x, (int)o->y, 4, -1); + } + else { + int c = (o->energy + 8) >> 3; +@@ -379,8 +379,8 @@ + 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_ex(bmp, s_data[SPACE_FONT].dat, x + 160, y + 2, 3, -1, "%s", padding_str); ++ if (s_var.score) textprintf_right_ex(bmp, s_data[SPACE_FONT].dat, x + 160, y + 2, 4, -1, "%s", score_str); + } + + +@@ -1268,7 +1268,7 @@ + + + // let other processes play +- yield_timeslice(); ++ rest(0); + + // draw + frame_count ++; diff --git a/alex4-dot-files-endian-clean.patch b/alex4-dot-files-endian-clean.patch new file mode 100644 index 0000000..02bfdda --- /dev/null +++ b/alex4-dot-files-endian-clean.patch @@ -0,0 +1,100 @@ +Index: alex4src/src/control.c +=================================================================== +--- alex4src.orig/src/control.c 2008-01-17 00:20:33.000000000 +0100 ++++ alex4src/src/control.c 2008-01-17 00:29:35.000000000 +0100 +@@ -93,10 +93,24 @@ + + // saves the control config to disk using FP + void save_control(Tcontrol *c, PACKFILE *fp) { +- pack_fwrite(c, sizeof(Tcontrol), fp); ++ pack_iputl(c->use_joy, fp); ++ pack_iputl(c->key_left, fp); ++ pack_iputl(c->key_right, fp); ++ pack_iputl(c->key_up, fp); ++ pack_iputl(c->key_down, fp); ++ pack_iputl(c->key_fire, fp); ++ pack_iputl(c->key_jump, fp); ++ pack_putc(c->flags, fp); + } + + // loads the control config from disk using FP + void load_control(Tcontrol *c, PACKFILE *fp) { +- pack_fread(c, sizeof(Tcontrol), fp); ++ c->use_joy = pack_igetl(fp); ++ c->key_left = pack_igetl(fp); ++ c->key_right = pack_igetl(fp); ++ c->key_up = pack_igetl(fp); ++ c->key_down = pack_igetl(fp); ++ c->key_fire = pack_igetl(fp); ++ c->key_jump = pack_igetl(fp); ++ c->flags = pack_getc(fp); + } +Index: alex4src/src/hisc.c +=================================================================== +--- alex4src.orig/src/hisc.c 2008-01-17 00:29:45.000000000 +0100 ++++ alex4src/src/hisc.c 2008-01-17 00:42:13.000000000 +0100 +@@ -117,9 +117,12 @@ + for(i=0; imax_levels, fp); ++ for (i = 0; i < MAX_LEVELS; ++i) ++ pack_iputl(o->cherries[i], fp); ++ for (i = 0; i < MAX_LEVELS; ++i) ++ pack_iputl(o->stars[i], fp); ++ pack_iputl(o->use_vsync, fp); ++ pack_iputl(o->one_hundred, fp); + } + + // loads the data structure from disk + void load_options(Toptions *o, PACKFILE *fp) { +- pack_fread(o, sizeof(Toptions), fp); ++ int i; ++ o->max_levels = pack_igetl(fp); ++ for (i = 0; i < MAX_LEVELS; ++i) ++ o->cherries[i] = pack_igetl(fp); ++ for (i = 0; i < MAX_LEVELS; ++i) ++ o->stars[i] = pack_igetl(fp); ++ o->use_vsync = pack_igetl(fp); ++ o->one_hundred = pack_igetl(fp); + } + + // resets all data diff --git a/alex4-fcommon-fix.patch b/alex4-fcommon-fix.patch new file mode 100644 index 0000000..5ef36b0 --- /dev/null +++ b/alex4-fcommon-fix.patch @@ -0,0 +1,177 @@ +diff -ur alex4src/src/bullet.c alex4src.nre/src/bullet.c +--- alex4src/src/bullet.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/bullet.c 2020-02-14 16:55:54.227165835 +0100 +@@ -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) { +diff -ur alex4src/src/bullet.h alex4src.nre/src/bullet.h +--- alex4src/src/bullet.h 2020-02-14 20:21:00.557446660 +0100 ++++ alex4src.nre/src/bullet.h 2020-02-14 16:55:54.227165835 +0100 +@@ -42,7 +42,7 @@ + #define MAX_BULLETS 64 + + // the bullets themselves +-Tbullet bullet[MAX_BULLETS]; ++extern Tbullet bullet[MAX_BULLETS]; + + // functions + void reset_bullets(Tbullet *b, int max); +diff -ur alex4src/src/edit.c alex4src.nre/src/edit.c +--- alex4src/src/edit.c 2020-02-14 20:21:00.559446658 +0100 ++++ alex4src.nre/src/edit.c 2020-02-14 20:14:07.160857305 +0100 +@@ -33,8 +33,6 @@ + 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; + +diff -ur alex4src/src/main.h alex4src.nre/src/main.h +--- alex4src/src/main.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/main.h 2020-02-14 20:13:57.681842152 +0100 +@@ -59,6 +59,7 @@ + #define SMPL_TALK 24 + #define SMPL_BEAM 25 + ++extern DATAFILE *data; + + // functions + char *get_init_string(); +diff -ur alex4src/src/particle.c alex4src.nre/src/particle.c +--- alex4src/src/particle.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/particle.c 2020-02-14 20:17:53.166697996 +0100 +@@ -21,16 +21,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 +diff -ur alex4src/src/particle.h alex4src.nre/src/particle.h +--- alex4src/src/particle.h 2020-02-14 20:21:00.555446663 +0100 ++++ alex4src.nre/src/particle.h 2020-02-14 20:15:57.210817230 +0100 +@@ -42,10 +42,9 @@ + + + // 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); +diff -ur alex4src/src/player.c alex4src.nre/src/player.c +--- alex4src/src/player.c 2003-07-26 12:53:52.000000000 +0200 ++++ alex4src.nre/src/player.c 2020-02-14 16:55:54.229165835 +0100 +@@ -25,6 +25,9 @@ + #include "timer.h" + #include "../data/data.h" + ++// the player ++Tplayer player; ++ + // draws the player depending on his state + void draw_player(BITMAP *bmp, Tplayer *p, int x, int y) { + BITMAP *head, *body; +diff -ur alex4src/src/player.h alex4src.nre/src/player.h +--- alex4src/src/player.h 2020-02-14 20:21:00.554446664 +0100 ++++ alex4src.nre/src/player.h 2020-02-14 16:55:54.229165835 +0100 +@@ -53,7 +53,7 @@ + + + // the player +-Tplayer player; ++extern Tplayer player; + + // functions + void draw_player(BITMAP *bmp, Tplayer *p, int x, int y); +diff -ur alex4src/src/script.c alex4src.nre/src/script.c +--- alex4src/src/script.c 2020-02-14 20:21:00.560446657 +0100 ++++ alex4src.nre/src/script.c 2020-02-14 20:14:25.441886527 +0100 +@@ -33,9 +33,8 @@ + // silly value + #define NO_CHANGE -3249587 + +- +-// datafile to use +-DATAFILE *data; ++// array holding the sounds ids ++int active_sounds[MAX_SCRIPT_SOUNDS]; + // internal buffers + BITMAP *buffer; + BITMAP *swap_buffer; +diff -ur alex4src/src/script.h alex4src.nre/src/script.h +--- alex4src/src/script.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/script.h 2020-02-14 16:55:54.230165835 +0100 +@@ -42,7 +42,7 @@ + // 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 +diff -ur alex4src/src/timer.c alex4src.nre/src/timer.c +--- alex4src/src/timer.c 2020-02-14 20:21:00.557446660 +0100 ++++ alex4src.nre/src/timer.c 2020-02-14 16:55:54.226165836 +0100 +@@ -23,6 +23,14 @@ + #include "allegro.h" + #include "timer.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; ++ + // keeps track of frames each second + void fps_counter(void) { + fps = frame_count; +diff -ur alex4src/src/timer.h alex4src.nre/src/timer.h +--- alex4src/src/timer.h 2020-02-14 20:21:00.556446662 +0100 ++++ alex4src.nre/src/timer.h 2020-02-14 16:55:54.227165835 +0100 +@@ -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 diff --git a/alex4-fsf-address.patch b/alex4-fsf-address.patch new file mode 100644 index 0000000..4d6300b --- /dev/null +++ b/alex4-fsf-address.patch @@ -0,0 +1,15 @@ +Index: alex4-1.1/readme.txt +=================================================================== +--- alex4-1.1.orig/readme.txt 2008-01-22 00:10:21.000000000 +0100 ++++ alex4-1.1/readme.txt 2008-01-22 00:10:51.000000000 +0100 +@@ -49,8 +49,8 @@ + 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 ++this program; if not, write to the Free Software Foundation, Inc., 51 Franklin ++St, Fifth Floor, Boston, MA 02110-1301, USA. + + + COMPILING diff --git a/alex4-ini-comment.patch b/alex4-ini-comment.patch new file mode 100644 index 0000000..fe29d03 --- /dev/null +++ b/alex4-ini-comment.patch @@ -0,0 +1,19 @@ +diff -up alex4src/alex4.ini~ alex4src/alex4.ini +--- alex4src/alex4.ini~ 2003-07-26 12:55:26.000000000 +0200 ++++ alex4src/alex4.ini 2017-09-08 11:50:17.095282921 +0200 +@@ -1,12 +1,11 @@ + ############################################################## + # +-# Configuration file for Alex 4 (v1.1) ++# Example configuration file for Alex 4 (v1.1) + # + ############################################################## + # +-# If you lose control of the contents of this file +-# and wants to restore to the defaults, you will have +-# to reinstall the game. Conclusion: Handle with care! ++# To make cchanges to alex4's configuration copy this file to ++# ~/.alex4/alex4.ini and edit it. + # + ############################################################## + diff --git a/alex4-unix.patch b/alex4-unix.patch index 0de8031..b0b3b70 100644 --- a/alex4-unix.patch +++ b/alex4-unix.patch @@ -83,7 +83,7 @@ w = get_config_int("graphics", "f_width", 640); h = get_config_int("graphics", "f_height", 480); } -@@ -672,10 +681,10 @@ +@@ -672,7 +681,7 @@ h = get_config_int("graphics", "w_height", 480); } @@ -91,11 +91,7 @@ + log2file(" entering gfx mode set in alex4.ini (%dx%d %s)", w, h, (get_config_int("graphics", "fullscreen", 1) ? "full" : "win")); if (set_gfx_mode( -- (get_config_int("graphics", "fullscreen", 0) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), -+ (get_config_int("graphics", "fullscreen", 1) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), - w, h, 0, 0)) { - log2file(" *** failed"); - log2file(" entering gfx mode (640x480 windowed)"); + (get_config_int("graphics", "fullscreen", 0) ? GFX_AUTODETECT_FULLSCREEN : GFX_AUTODETECT_WINDOWED), @@ -695,6 +704,7 @@ textout_centre(swap_screen, font, "loading...", 320, 200, 1); blit_to_screen(swap_screen); diff --git a/alex4.appdata.xml b/alex4.appdata.xml new file mode 100644 index 0000000..8d19c63 --- /dev/null +++ b/alex4.appdata.xml @@ -0,0 +1,28 @@ + + + alex4.desktop + CC0-1.0 + GPL+ + Alex the Allegator 4 + Old school platform game + +

+ Alex the Allegator 4 is a true jump'n'run, just like the old classic ones. + Guide Alex through the jungle in order to save his girlfriend Lola from + evil humans who want to make a bag of her. +

+

+ Alex 4 is a very small game. It runs in a very low resolution with only + four colors and will not provide you with any real time video or 3D + effects. Nor will it snare you with a compelling storyline. It's only a + short platform game with a few tricks up it's sleeve. We're sure you'll + like it. +

+
+ https://obiot.github.io/Alex4-WE/readme.html + https://obiot.github.io/Alex4-WE/readme.html#play + + https://obiot.github.io/Alex4-WE/images/overview.gif + + jwrdegoede_at_fedoraproject.org +
diff --git a/alex4.desktop b/alex4.desktop index 549aa7b..392e3f8 100644 --- a/alex4.desktop +++ b/alex4.desktop @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 Name=Alex the Allegator 4 Comment=Old school platform game Exec=alex4 @@ -8,3 +7,4 @@ Terminal=false StartupNotify=false Type=Application Categories=Game;ArcadeGame;ActionGame; +Keywords=Game;Arcade;Platform;Retro; diff --git a/alex4.png b/alex4.png index 2c8807a..07a7ace 100644 Binary files a/alex4.png and b/alex4.png differ diff --git a/alex4.spec b/alex4.spec index e9dcfee..872a0d3 100644 --- a/alex4.spec +++ b/alex4.spec @@ -1,16 +1,23 @@ Name: alex4 Version: 1.0 -Release: 3%{?dist} +Release: 47%{?dist} Summary: Alex the Allegator 4 - Platform game -Group: Amusements/Games -License: GPL -URL: http://allegator.sourceforge.net/ -Source0: http://dl.sf.net/sourceforge/allegator/alex4src_data.zip +License: GPL-1.0-or-later +URL: https://obiot.github.io/Alex4-WE/readme.html +Source0: http://downloads.sf.net/allegator/Alex4/source%20and%20data/alex4src_data.zip Source1: alex4.desktop Source2: alex4.png +Source3: alex4.appdata.xml Patch0: alex4-unix.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: allegro-devel dumb-devel desktop-file-utils ImageMagick +Patch1: alex4-allegro-4.2.patch +Patch2: alex4-dot-files-endian-clean.patch +Patch3: alex4-fsf-address.patch +Patch4: alex4-ini-comment.patch +Patch5: alex4src-warnings.patch +Patch6: alex4-fcommon-fix.patch +BuildRequires: gcc +BuildRequires: allegro-devel dumb-devel desktop-file-utils libappstream-glib +BuildRequires: make Requires: hicolor-icon-theme %description @@ -20,57 +27,184 @@ nice colors guaranteed! %prep -%setup -q -n alex4src -%patch0 -p1 -z .unix -sed -i 's/\r//' *.txt +%autosetup -p1 -n alex4src +sed -i 's/\r//' *.txt *.ini %build pushd src make %{?_smp_mflags} PREFIX=%{_prefix} \ - CFLAGS="$RPM_OPT_FLAGS -Wno-deprecated-declarations" + CFLAGS="$RPM_OPT_FLAGS -Wno-deprecated-declarations -Wno-unused-result -DALLEGRO_FIX_ALIASES" popd %install -rm -rf $RPM_BUILD_ROOT pushd src make install PREFIX=$RPM_BUILD_ROOT%{_prefix} popd # below is the desktop file and icon stuff. mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications -desktop-file-install --vendor fedora \ - --dir $RPM_BUILD_ROOT%{_datadir}/applications \ +desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications \ %{SOURCE1} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps +mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps install -p -m 644 %{SOURCE2} \ - $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps - - -%clean -rm -rf $RPM_BUILD_ROOT - - -%post -touch --no-create %{_datadir}/icons/hicolor || : -%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : - -%postun -touch --no-create %{_datadir}/icons/hicolor || : -%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : + $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/64x64/apps +mkdir -p $RPM_BUILD_ROOT%{_datadir}/appdata +install -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_datadir}/appdata +appstream-util validate-relax --nonet \ + $RPM_BUILD_ROOT%{_datadir}/appdata/%{name}.appdata.xml %files -%defattr(-,root,root,-) -%doc license.txt readme.txt +%doc license.txt readme.txt alex4.ini %{_bindir}/%{name} %{_datadir}/%{name} -%{_datadir}/applications/fedora-%{name}.desktop -%{_datadir}/icons/hicolor/32x32/apps/%{name}.png +%{_datadir}/appdata/%{name}.appdata.xml +%{_datadir}/applications/%{name}.desktop +%{_datadir}/icons/hicolor/64x64/apps/%{name}.png %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 1.0-47 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 1.0-46 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 1.0-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 1.0-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jun 17 2024 Miroslav Suchý - 1.0-43 +- convert license to SPDX + +* Mon Jan 22 2024 Fedora Release Engineering - 1.0-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 1.0-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 1.0-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 1.0-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 1.0-38 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 1.0-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 1.0-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 1.0-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jul 31 2020 Fedora Release Engineering - 1.0-34 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 1.0-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Feb 14 2020 Hans de Goede - 1.0-32 +- Fix FTBFS (rhbz#1799146) + +* Tue Jan 28 2020 Fedora Release Engineering - 1.0-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 1.0-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 1.0-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jul 31 2018 Florian Weimer - 1.0-28 +- Rebuild with fixed binutils + +* Sun Jul 29 2018 Hans de Goede - 1.0-27 +- Fix FTBFS (rhbz#1603365) + +* Thu Jul 12 2018 Fedora Release Engineering - 1.0-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sun Jan 07 2018 Igor Gnatenko - 1.0-24 +- Remove obsolete scriptlets + +* Fri Sep 08 2017 Hans de Goede - 1.0-23 +- Run windowed rather then fullscreen by default +- Add example alex4.ini to the documentation (for e.g. setting fullscreen mode) +- Add appdata + +* Wed Aug 02 2017 Fedora Release Engineering - 1.0-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.0-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.0-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 1.0-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 16 2015 Fedora Release Engineering - 1.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Aug 15 2014 Fedora Release Engineering - 1.0-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 1.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sat Feb 09 2013 Rahul Sundaram - 1.0-14 +- remove vendor tag from desktop file. https://fedorahosted.org/fpc/ticket/247 +- clean up spec to follow current guidelines + +* Wed Jul 18 2012 Fedora Release Engineering - 1.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 1.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Jul 15 2011 Hans de Goede - 1.0-11 +- Rebuild for new allegro-4.4 + +* Mon Feb 07 2011 Fedora Release Engineering - 1.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jul 24 2009 Fedora Release Engineering - 1.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 1.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Sep 7 2008 Hans de Goede 1.0-7 +- Fix patch fuzz build failure + +* Tue Feb 19 2008 Fedora Release Engineering - 1.0-6 +- Autorebuild for GCC 4.3 + +* Wed Jan 30 2008 Hans de Goede 1.0-5 +- Several patches from Debian (Thanks Peter De Wachter) + - endian clean dot-files code + - fsf address corrected + - no longer use deprecated allegro functions + +* Thu Aug 2 2007 Hans de Goede 1.0-4 +- Update License tag for new Licensing Guidelines compliance + * Sat Mar 10 2007 Hans de Goede 1.0-3 - Fixup .desktop file categories for games-menus usage diff --git a/alex4src-warnings.patch b/alex4src-warnings.patch new file mode 100644 index 0000000..66bf30d --- /dev/null +++ b/alex4src-warnings.patch @@ -0,0 +1,33 @@ +diff -up alex4src/src/main.c~ alex4src/src/main.c +--- alex4src/src/main.c~ 2017-09-08 12:11:48.000000000 +0200 ++++ alex4src/src/main.c 2017-09-08 12:15:45.784592931 +0200 +@@ -452,7 +452,7 @@ void load_level_files(const char *filena + mode = 2; + } + else { +- char full_path_to_map[1024]; ++ char full_path_to_map[2048]; + + clear_trailing_whitespace(buf); + sprintf(full_path_to_map, "%s%s", path, buf); +@@ -2579,7 +2579,7 @@ int get_string(BITMAP *bmp, char *string + if (block == NULL) + return 1; + +- blit(bmp, block, pos_x - 1, pos_y - 1, 0, 0, block->w, block->h); ++ blit(bmp, block, pos_x - 1, pos_y - 1, 0, 0, block->w, block->h); + + clear_keybuf(); + while(1) { +diff -up alex4src/src/shooter.c~ alex4src/src/shooter.c +--- alex4src/src/shooter.c~ 2017-09-08 12:11:48.000000000 +0200 ++++ alex4src/src/shooter.c 2017-09-08 12:14:27.389952486 +0200 +@@ -903,7 +903,7 @@ void s_check_collision(Tspace_object *ar + s_var.score += 1000000; + } + else { // increase power +- s_var.power_level = MIN(s_var.power_level ++, 7); ++ s_var.power_level++; + } + play_sound_id(SMPL_HEART); +