All pastes #15670 Raw Edit

Unnamed

public text v1 · immutable
#15670 ·published 2005-06-23 19:39 UTC
rendered paste body
int frame;
void *g_vram_base, *g_vram_base_2;

unsigned char* getVramAddr() {
	if (frame == 0)
		return g_vram_base;
	return g_vram_base_2;
}

void swapBuffer() {
	
	if (frame == 0) {
		sceDisplaySetFrameBuf(g_vram_base, 512, 3, 1);
		frame = 1;
	} else {
		sceDisplaySetFrameBuf(g_vram_base_2, 512, 3, 1);
		frame = 0;
	}
}

void fillvram(unsigned long color)
{
	unsigned long *vptr0;		//pointer to vram
	unsigned long i,j;
	
	vptr0=getVramAddr();
	for (i=0; i<272; i++) {
		for (j=0; j<480; j++) {
			*vptr0=color;
			vptr0+=1;
		}
		vptr0+=512-480; //skip offscreen buffer
		vptr0+=512; //skip a line
	}
}

/* main routine */
int main(int argc, char *argv[])
{
#if 1
	g_vram_base = (void *) (0x40000000 | sceGeEdramGetAddr());
	g_vram_base_2 = (void *) (g_vram_base + 512*272*4);
	int i;
	frame = 0;
	
	sceDisplaySetMode(0, 480, 272);
	sceDisplaySetFrameBuf(g_vram_base, 512, 3, 1);
	SetupCallbacks();
	
	for(;;) {
		if (frame == 0)
			fillvram(0xFF000000);
		else
			fillvram(0x00FF0000);
		//for (i = 0; i < 272; i+=1)
		//	memset(frame?g_vram_base:g_vram_base_2, i%2==0?0x7F:0x00, 720);
		sceKernelDelayThread(50000);
		swapBuffer();
	}
	sceKernelExitGame();
#endif
}