Показать сообщение отдельно
Старый 27.04.2013, 22:38   #88
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 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);

...
Сама логика программы делается простейшим быдлокодом, даже стыдно показывать.

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Program23 (01.05.2013)