diff options
Diffstat (limited to '04-change-colors.patch')
-rw-r--r-- | 04-change-colors.patch | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/04-change-colors.patch b/04-change-colors.patch new file mode 100644 index 000000000000..19e54809a2bf --- /dev/null +++ b/04-change-colors.patch @@ -0,0 +1,107 @@ +Author: Fabian Greffrath <fabian+debian@greffrath.com> +Description: Use PgUp and PgDown to toggle through the color palette + and use a secret key to toggle "psychedelic mode". ;) + +--- invaders-1.0.0.orig/game.c ++++ invaders-1.0.0/game.c +@@ -10,6 +10,8 @@ struct shot_t { + #define NUMSHOTS 5 + static struct shot_t shots[NUMSHOTS]; + static int8 ship,shipmove; ++static int8 shotcolor=4,shipcolor=5,aliencolor=3; ++static bool psychedelic=false; + + struct alien_t { + int8 x,y; // x==-1 -> dead alien +@@ -27,6 +29,19 @@ inline void reboot() + outb(0xfe,0x64); + }; + ++void changecolors(int c) ++{ ++ shotcolor+=c; ++ if (shotcolor>15) shotcolor=1; ++ else if (shotcolor<1) shotcolor=15; ++ shipcolor+=c; ++ if (shipcolor>15) shipcolor=1; ++ else if (shipcolor<1) shipcolor=15; ++ aliencolor+=c; ++ if (aliencolor>15) aliencolor=1; ++ else if (aliencolor<1) aliencolor=15; ++} ++ + void resetgame() + { + gameover=false; +@@ -59,7 +74,7 @@ void display() + // display shots + { + uint8 i; +- video_usecolor(4,0); ++ video_usecolor(shotcolor,0); + for (i=0;i<NUMSHOTS;++i) { + if (shots[i].x!=-1) { + video_putchar(shots[i].x,shots[i].y,'|'); +@@ -69,7 +84,7 @@ void display() + + // display ship + { +- video_usecolor(5,0); ++ video_usecolor(shipcolor,0); + video_putchar(ship-1,24,'/'); + video_putchar(ship,23,'_'); + video_putchar(ship+1,24,'\\'); +@@ -78,7 +93,7 @@ void display() + // display aliens + { + uint8 i; +- video_usecolor(3,0); ++ video_usecolor(aliencolor,0); + for (i=0;i<NUMALIENS;++i) { + if (aliens[i].x!=-1) { + video_putchar(aliens[i].x-1,aliens[i].y,'-'); +@@ -133,6 +148,25 @@ void keywork() + reboot(); + } + break; ++ case 'u': ++ if (pressed) { ++ changecolors(+1); ++ } ++ break; ++ case 'd': ++ if (pressed) { ++ changecolors(-1); ++ } ++ break; ++ case '0': ++ if (pressed) { ++ if (psychedelic==false) psychedelic=true; ++ else { ++ psychedelic=false; ++ shotcolor=4,shipcolor=5,aliencolor=3; ++ } ++ } ++ break; + }; + }; + }; +@@ -233,6 +267,7 @@ void game() + sounder(); + keywork(); + calculate(); ++ if (psychedelic==true) changecolors(+1); + }; + + displaygameover(); +--- invaders-1.0.0.orig/keyboard.c ++++ invaders-1.0.0/keyboard.c +@@ -31,6 +31,8 @@ void key_decode(uint8 *key, bool *presse + if (c==0x4b) *key='<'; + if (c==0x48) *key='^'; + if (c==0x50) *key='v'; ++ if (c==0x49) *key='u'; ++ if (c==0x51) *key='d'; + }else{ + *pressed = ((c&0x80) == 0) ? true : false; + c &= ~0x80; |