Well, I already introduced you a method of painting memoryeffective method
of drawing sprites, my hexnumber method. But there was missing a tool for effectively
painting them. So now I made a program for my calculator!
To be honest, it's pretty hacky, but it does what it should ![]()
If you want to have more features then just painting and there is enough
interest (casiocalc is almost down, but you never know), reply to this thread!
As soon as I know how to upload it onto the FileSharingArea, I will do it ![]()
How to use:
- Change Pixel
- Change Pixel until you press F2 again
CURSOR - Move
- Print as Hex-Code
Here's the code (pretty shit as i said):
#include "fxlib.h"
#include <stdlib.h>
#include <stdio.h>
int ipow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
if(exp = 0) result = 1;
return result;
}
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
char buffer[20];
short X = 0, Y = 0, xcounter, ycounter;
int binary = 0;
short picture[16][16] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
short paintPicture = 1;
short changePixel = 0;
short reverseColor = 0;
short instantDraw = 0;
locate(1,3);
Print((const unsigned char*)"SpritePainter [EXE]");
GetKey(&key);
key = 0;
while(0==0){
while(paintPicture){
Bdisp_AllClr_VRAM();
switch(key){
case KEY_CTRL_UP:
if(Y > 0) Y--;
break;
case KEY_CTRL_DOWN:
if(Y < 15) Y++;
break;
case KEY_CTRL_LEFT:
if(X > 0) X--;
break;
case KEY_CTRL_RIGHT:
if(X < 15) X++;
break;
case KEY_CTRL_EXE:
goto ending;
break;
case KEY_CTRL_F1:
changePixel = 1;
break;
case KEY_CTRL_F2:
instantDraw = !instantDraw;
changePixel = 1;
break;
}
if(changePixel) picture[X][Y] = !picture[X][Y];
if(!instantDraw) changePixel = 0;
for(xcounter = 0; xcounter < 64; xcounter++){
for(ycounter = 0; ycounter < 64; ycounter++){
Bdisp_SetPoint_VRAM(32+xcounter, ycounter, picture[xcounter/4][ycounter/4]);
}
}
if(picture[X][Y] == 0) reverseColor = 1;
if(picture[X][Y] == 1) reverseColor = 0;
Bdisp_SetPoint_VRAM(32+(X*4), (Y*4), reverseColor);
Bdisp_SetPoint_VRAM(33+(X*4), (Y*4), reverseColor);
Bdisp_SetPoint_VRAM(34+(X*4), (Y*4), reverseColor);
Bdisp_SetPoint_VRAM(35+(X*4), (Y*4), reverseColor);
Bdisp_SetPoint_VRAM(32+(X*4), (Y*4)+1, reverseColor);
Bdisp_SetPoint_VRAM(32+(X*4), (Y*4)+2, reverseColor);
Bdisp_SetPoint_VRAM(35+(X*4), (Y*4)+1, reverseColor);
Bdisp_SetPoint_VRAM(35+(X*4), (Y*4)+2, reverseColor);
Bdisp_SetPoint_VRAM(32+(X*4), (Y*4)+3, reverseColor);
Bdisp_SetPoint_VRAM(33+(X*4), (Y*4)+3, reverseColor);
Bdisp_SetPoint_VRAM(34+(X*4), (Y*4)+3, reverseColor);
Bdisp_SetPoint_VRAM(35+(X*4), (Y*4)+3, reverseColor);
Bdisp_DrawLineVRAM(31, 0, 31, 63);
Bdisp_DrawLineVRAM(96, 0, 96, 63);
locate(18,1);
sprintf(buffer, "X%d ",X);
Print((const unsigned char*)buffer);
locate(18,2);
sprintf(buffer, "Y%d ",Y);
Print((const unsigned char*)buffer);
Bdisp_PutDisp_DD();
GetKey(&key);
}
ending:
for(ycounter = 0; ycounter < 16; ycounter++){
for(xcounter = 0; xcounter < 16; xcounter++){
if(picture[xcounter][ycounter] == 1) binary += ipow(2,15-xcounter);
}
Bdisp_AllClr_DDVRAM();
locate(1,1);
sprintf(buffer, "0x%04X[%d]", binary, ycounter);
Print((const unsigned char*)buffer);
binary = 0;
GetKey(&key);
}
paintPicture = 1;
key = 0;
}
return 1;
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
PS: Maybe we can collect some sprites here?
Edited by raz0r, 15 November 2014 - 10:51 AM.


