Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Назревание нового конкурса/джема/флешмоба/утренника/пьянки
Сообщение от Nuprahtor
Покажи код, интересно, как он там на NES выглядит
|
Вот так выглядит работа с графикой:
static char i,i2,j,j2;
static char a,b,c,d,e,f; //variables for functions
...
#define gfx_list_c 50
static char gfx_list[gfx_list_c*3];
static char gfx_list_i;
...
#define NTADR(x,y,table) (((0x2000+0x400*table)|((y)<<5)|x))
static char table_cur;
#define MSB(x) (((x)>>8))
#define LSB(x) (((x)&0xff))
void draw_string(char x,char y,const char *str, char table)
{
for(i2=0;;i2++)
{
if(!*str) break;
a = gfx_list_i*3;
gfx_list[a] = MSB(NTADR2(x+i2,y,table));
gfx_list[a+1] = LSB(NTADR2(x+i2,y,table));
gfx_list[a+2] = ((*str++)-0x20);
gfx_list_i++;
}
}
void draw_img(char *img,char img_len,char x,char y)
{
for(i2=0;i2<img_len;i2++)
{
a = gfx_list_i*3;
b = i2*3;
gfx_list[a] = MSB(NTADR(x+img[b+1],y+img[b+2],table_cur));
gfx_list[a+1] = LSB(NTADR(x+img[b+1],y+img[b+2],table_cur));
gfx_list[a+2] = img[b];
gfx_list_i++;
}
}
...
#define menu_logo_1_l 7
static char menu_logo_1[menu_logo_1_l*3]={
0x70,0,0,
0x80,0,1,
0x71,1,1,
0x81,2,1,
0x90,3,1,
0x91,4,1,
0xA0,5,1
};
...
const unsigned char palSprites[16]={
0x0f,0x1D,0x2D,0x3D,
0x0f,0x11,0x21,0x31,
0x0f,0x15,0x25,0x35,
0x0f,0x19,0x29,0x39
};
void main(void)
{
pal_col(1,0x30);
pal_col(2,0x2D);
pal_col(3,0x06);
pal_spr(palSprites);
ppu_on_all();
set_vram_update(gfx_list_c,gfx_list);
...
Сама логика программы делается простейшим быдлокодом, даже стыдно показывать.
|