X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fbakapee.c;h=1626fd1dc6fcd1e92d5421e7b3f576ff5d88ff24;hb=58c3294cab6ec248ea3d0115a80a311772c6c6da;hp=90ff502d6882e8c17a2cb95db5cae7be0f7e268a;hpb=6b585194480dbbfb1ca8ae9d4564418b24e79d48;p=16.git
diff --git a/src/lib/bakapee.c b/src/lib/bakapee.c
old mode 100644
new mode 100755
index 90ff502d..1626fd1d
--- a/src/lib/bakapee.c
+++ b/src/lib/bakapee.c
@@ -1,10 +1,10 @@
/* Project 16 Source Code~
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
+ * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123
*
* This file is part of Project 16.
*
* Project 16 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as publiSCREEN_HEIGHTed by
+ * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
@@ -13,7 +13,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You SCREEN_HEIGHTould have received a copy of the GNU General Public License
+ * You should have received a copy of the GNU General Public License
* along with this program. If not, see , or
* write to the Free Software Foundation, Inc., 51 Franklin Street,
* Fifth Floor, Boston, MA 02110-1301 USA.
@@ -22,130 +22,115 @@
#include "src/lib/bakapee.h"
-void pdump(page_t *pee)
+/* clrstdin() clear any leftover chars tha may be in stdin stream */
+void clrstdin()
{
- int mult=(QUADWH);
- int palq=(mult)*TILEWH;
- int palcol=0;
- int palx, paly;
- for(paly=0; palywidth, page->height, color);
- _fmemset(Where, color, page->width*(page->height*2));
+ int ch = 0;
+ while( ( ch = getchar() ) != '\n' && ch != EOF );
}
//color Ä·Æ
void colortest(page_t *page, bakapee_t *pee)
{
- if(pee->gq < 256)
- {
- cls(page, pee->gq, VGA);
- pee->gq++;
- }else pee->gq = 0;
+ //if(pee->coor < 256)
+ //{
+ cls(page, pee->coor, VGA);
+ pee->coor++;
+ //}else pee->coor = 0;
}
//color Ä·Æ
void colorz(page_t *page, bakapee_t *pee)
{
- if(pee->gq <= HGQ)
+ if(pee->coor <= HGQ)
{
- cls(page, pee->gq, VGA);
- pee->gq++;
- }else pee->gq = LGQ;
+ cls(page, pee->coor, VGA);
+ pee->coor++;
+ }else pee->coor = LGQ;
}
//slow spectrum down
void ssd(page_t *page, bakapee_t *pee, word svq)
{
- if(pee->sy < SCREEN_HEIGHT+1)
+ if(pee->sy < page->sh+1)
{
- if(pee->sx < SCREEN_WIDTH+1)
+ if(pee->sx < page->sw+1)
{
//mxPutPixel(sx, sy, coor);
- printf("%d %d %d %d\n", pee->sx, pee->sy, svq, pee->coor);
+ //printf("%d %d %d %d\n", pee->sx, pee->sy, svq, pee->coor);
+ dingpp(page, pee);
pee->sx++;
}else pee->sx = 0;
- if(pee->sx == SCREEN_WIDTH)
+ if(pee->sx == page->sw)
{
pee->sy++;
if(svq == 7) pee->coor++;
- if(pee->sy == SCREEN_HEIGHT && svq == 8) pee->coor = rand()%256;
+ if(pee->sy == page->sh && svq == 8) pee->coor = rand()%256;
}
}else pee->sy = 0;
}
+//plot pixel or plot tile
void dingpp(page_t *page, bakapee_t *pee)
{
-#ifdef TILE
- modexClearRegion(page, pee->xx, pee->yy, TILEWH, TILEWH, pee->coor);
+ if(pee->tile)
+ {
+#ifndef MXLIB
+ //fill_block(pee->xx, pee->yy, pee->xx+TILEWH, pee->yy+TILEWH, pee->coor);
+ mxFillBox(pee->xx, pee->yy, TILEWH, TILEWH, pee->coor, OP_SET);
#else
- modexputPixel(page, pee->xx, pee->yy, pee->coor);
+ modexClearRegion(page, pee->xx, pee->yy, TILEWH, TILEWH, pee->coor);
#endif
+ }
+ else
+ modexputPixel(page, pee->xx, pee->yy, pee->coor);
}
-void dingo(bakapee_t *pee)
+void dingo(page_t *page, bakapee_t *pee)
{
- #ifdef TILE
- if(pee->xx<0) pee->xx=(SCREEN_WIDTH-TILEWH);
- if(pee->yy<0) pee->yy=(SCREEN_HEIGHT-TILEWH);
- if(pee->xx>(SCREEN_WIDTH-TILEWH)) pee->xx=0;
- if(pee->yy>(SCREEN_HEIGHT-TILEWH)/*+(TILEWH*BUFFMX)*/) pee->yy=0;
- #else
- if(pee->xx<0) pee->xx=SCREEN_WIDTH;
- if(pee->yy<0) pee->yy=SCREEN_HEIGHT;
- if(pee->xx>SCREEN_WIDTH) pee->xx=0;
- if(pee->yy>SCREEN_HEIGHT) pee->yy=0;
- #endif
+ if(pee->tile)
+ {
+ if(pee->xx<0) pee->xx=(page->sw-TILEWH);
+ if(pee->yy<0) pee->yy=(page->sh-TILEWH);
+ if(pee->xx>(page->sw-TILEWH)) pee->xx=0;
+ if(pee->yy>(page->sh-TILEWH)/*+(TILEWH*BUFFMX)*/) pee->yy=0;
+ }
+ else
+ {
+ if(pee->xx<0) pee->xx=page->sw;
+ if(pee->yy<0) pee->yy=page->sh;
+ if(pee->xx>page->sw) pee->xx=0;
+ if(pee->yy>page->sh) pee->yy=0;
+ }
}
+//assigning values from randomizer
void dingas(bakapee_t *pee)
{
- if(pee->qq == BONK) dingu(pee);
+ if(pee->gq == BONK) dingu(pee);
if(!pee->bakax)
{
- #ifdef TILE
+ if(pee->tile)
pee->xx-=TILEWH;
- #else
- pee->xx--;
- #endif
+ else pee->xx--;
}
else if(pee->bakax>1)
{
- #ifdef TILE
+ if(pee->tile)
pee->xx+=TILEWH;
- #else
- pee->xx++;
- #endif
+ else pee->xx++;
}
if(!pee->bakay)
{
- #ifdef TILE
+ if(pee->tile)
pee->yy-=TILEWH;
- #else
- pee->yy--;
- #endif
+ else pee->yy--;
}
else if(pee->bakay>1)
{
- #ifdef TILE
+ if(pee->tile)
pee->yy+=TILEWH;
- #else
- pee->yy++;
- #endif
+ else pee->yy++;
}
}
@@ -154,14 +139,27 @@ void dingu(bakapee_t *pee)
if(pee->coor < HGQ && pee->coor < LGQ) pee->coor = LGQ;
if(pee->coor < HGQ)
{
- pee->qq++;
pee->coor++;
- }else{ pee->coor = LGQ;
- pee->qq = 0;
- pee->bakax = rand()%3; pee->bakay = rand()%3;
+ }else{
+ pee->coor = LGQ;
}
}
+//randomizer
+void dingq(bakapee_t *pee)
+{
+ if(pee->gqgq++;
+ }
+ else
+ {
+ dingu(pee);
+ pee->gq = 0;
+ }
+ pee->bakax = rand()%3; pee->bakay = rand()%3;
+}
+
/*-----------ding-------------*/
void ding(page_t *page, bakapee_t *pee, word q)
{
@@ -171,75 +169,59 @@ void ding(page_t *page, bakapee_t *pee, word q)
switch(q)
{
case 1:
- if(pee->qqxx==SCREEN_WIDTH){pee->bakax=0;}
- if(pee->xx==0){pee->bakax=1;}
- if(pee->yy==SCREEN_HEIGHT){pee->bakay=0;}
- if(pee->yy==0){pee->bakay=1;}
- pee->qq++;
- }else pee->qq = 0;
+ dingq(pee);
+ if(pee->xx==page->sw){pee->bakax=0;}
+ if(pee->xx==0){pee->bakax=1;}
+ if(pee->yy==page->sh){pee->bakay=0;}
+ if(pee->yy==0){pee->bakay=1;}
break;
case 2:
- if(pee->qqwidth, (rand()*TILEWH)%(page->height), TILEWH, TILEWH, 0);
-#else
- modexputPixel(page, rand()%page->width, rand()%page->height, 0);
-#endif
- pee->bakax = rand()%3; pee->bakay = rand()%3;
- pee->qq++;
- }else pee->qq = 0;
+ dingq(pee);
+ dingas(pee);
+ dingo(page, pee);
+ dingpp(page, pee); //plot the pixel/tile
+ if(pee->tile)
+ modexClearRegion(page, (rand()*TILEWH)%page->width, (rand()*TILEWH)%(page->height), TILEWH, TILEWH, 0);
+ else
+ modexputPixel(page, rand()%page->width, rand()%page->height, 0);
break;
case 3:
- if(pee->qqxx!=page->sw||pee->yy!=page->sh)
{
- if(pee->xx!=SCREEN_WIDTH||pee->yy!=SCREEN_HEIGHT)
- {
- if(pee->xx==0){pee->bakax=1;pee->bakay=-1;d3y=1;}
- if(pee->yy==0){pee->bakax=1;pee->bakay=0;d3y=1;}
- if(pee->xx==SCREEN_WIDTH){pee->bakax=-1;pee->bakay=-1;d3y=1;}
- if(pee->yy==SCREEN_HEIGHT){pee->bakax=1;pee->bakay=0;d3y=1;}
- }else if(pee->xx==SCREEN_WIDTH&&pee->yy==SCREEN_HEIGHT) pee->xx=pee->yy=0;
- if(d3y)
- {
- if(pee->bakay<0)
- {
- pee->yy--;
- d3y--;
- }else
- if(pee->bakay>0)
- {
- pee->yy++;
- d3y--;
- }
- }
- if(pee->bakax<0)
+ if(pee->xx==0){pee->bakax=1;pee->bakay=-1;d3y=1;}
+ if(pee->yy==0){pee->bakax=1;pee->bakay=0;d3y=1;}
+ if(pee->xx==page->sw){pee->bakax=-1;pee->bakay=-1;d3y=1;}
+ if(pee->yy==page->sh){pee->bakax=1;pee->bakay=0;d3y=1;}
+ }else if(pee->xx==page->sw&&pee->yy==page->sh) pee->xx=pee->yy=0;
+ if(d3y)
+ {
+ if(pee->bakay<0)
{
- pee->xx--;
+ pee->yy--;
+ d3y--;
}else
- if(pee->bakax>0)
+ if(pee->bakay>0)
{
- pee->xx++;
+ pee->yy++;
+ d3y--;
}
- pee->qq++;
- }else pee->qq = 0;
+ }
+ if(pee->bakax<0)
+ {
+ pee->xx--;
+ }else
+ if(pee->bakax>0)
+ {
+ pee->xx++;
+ }
+ dingpp(page, pee); //plot the pixel/tile
break;
case 4:
- if(pee->qqbakax = rand()%3; pee->bakay = rand()%3;
- pee->qq++;
- }else pee->qq = 0;
+ dingq(pee);
+ dingas(pee);
+ dingo(page, pee);
+ dingpp(page, pee); //plot the pixel/tile
break;
case 5:
colortest(page, pee);
@@ -249,22 +231,22 @@ void ding(page_t *page, bakapee_t *pee, word q)
cls(page, pee->coor, VGA);
break;
case 7:
- if(pee->gq <= HGQ)
+ if(pee->coor <= HGQ)
{
ssd(page, pee, q);
- pee->gq++;
- }else pee->gq = LGQ;
+ pee->coor++;
+ }else pee->coor = LGQ;
break;
case 8:
colorz(page, pee);
- modexprint(page, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, 1, 47, 0, "bakapi");
+ modexprint(page, page->sw/2, page->sh/2, 1, 47, 0, "bakapi", 1);
break;
case 9:
- if(pee->gq <= HGQ)
+ if(pee->coor <= HGQ)
{
- ssd(page, pee, q); pee->coor++;
- pee->gq++;
- }else pee->gq = LGQ;
+ ssd(page, pee, q);
+ pee->coor++;
+ }else pee->coor = LGQ;
break;
case 10:
ssd(page, pee, q); /*printf("%d\n", pee->coor);*/
@@ -274,26 +256,20 @@ void ding(page_t *page, bakapee_t *pee, word q)
break;
case 16: //interesting effects
- if(pee->qqbakax){ pee->xx--;}
- else if(pee->bakax>0){ pee->xx++; }
- if(!pee->bakay){ pee->yy--;}
- else if(pee->bakay>0){ pee->yy++; }
- dingu(pee);
- dingas(pee);
- tx+=pee->xx+TILEWH+4;
- ty+=pee->yy+TILEWH+4;
- modexClearRegion(page, tx, ty, 4, 4, pee->coor);
-#ifdef TILE
- modexClearRegion(page, (rand()*TILEWH)%page->width, (rand()*TILEWH)%(page->height), TILEWH, TILEWH, 0);
-#else
- modexputPixel(page, rand()%page->width, rand()%(page->height), 0);
-#endif
- pee->bakax = rand()%3; pee->bakay = rand()%3;
- //printf("%d %d %d %d %d %d\n", pee->xx, pee->yy, tx, ty, TILEWH);
- pee->qq++;
- }else pee->qq = 0;
+ dingq(pee);
+ if(!pee->bakax){ pee->xx--;}
+ else if(pee->bakax>0){ pee->xx++; }
+ if(!pee->bakay){ pee->yy--;}
+ else if(pee->bakay>0){ pee->yy++; }
+ dingas(pee);
+ tx+=pee->xx+TILEWH+4;
+ ty+=pee->yy+TILEWH+4;
+ modexClearRegion(page, tx, ty, 4, 4, pee->coor);
+ if(pee->tile)
+ modexClearRegion(page, (rand()*TILEWH)%page->width, (rand()*TILEWH)%(page->height), TILEWH, TILEWH, 0);
+ else
+ modexputPixel(page, rand()%page->width, rand()%(page->height), 0);
+ //printf("%d %d %d %d %d %d\n", pee->xx, pee->yy, tx, ty, TILEWH);
break;
default:
break;