summarylogtreecommitdiffstats
path: root/04-change-colors.patch
diff options
context:
space:
mode:
Diffstat (limited to '04-change-colors.patch')
-rw-r--r--04-change-colors.patch107
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;