⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 psp上的reader 这个是以月光老大的cnreader为基础 增加了zip文件浏览功能
💻 C
字号:
#include "main.h"

#define STATE_TITLE 0
#define STATE_READER 1
#define STATE_GETFILE 2
#define STATE_SAVEPOINT 3

unsigned char gFunState;

unsigned char PbpPath[256];
unsigned char DirPath[256];
unsigned char BookMarkPath[256];
unsigned char readfilename[0x108];

bool isUnicode = false;
bool isChangeEncode = false;
int isautob=1;   

extern int selfile;

/* Define the module info section */PSP_MODULE_INFO("CNREADER", 0, 1, 1);/* Define the main thread's attribute value (optional) */PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
void powerControl(bool save)
{
	if(save)
	{
		//save power
		scePowerSetCpuClockFrequency(10);
		scePowerSetBusClockFrequency(5);
	}
	else
	{
		scePowerSetCpuClockFrequency(222);
		scePowerSetBusClockFrequency(111);
	}
	//debug 
	/*
	char power[256];
	sprintf(power,"Now CpuClock is %d,BusClock is %d",scePowerGetCpuClockFrequency(),scePowerGetBusClockFrequency());
	debug_disp(power);
	*/
}

void title() 
{	
	unsigned long fc;      
	unsigned long r,g,b,rgb;
	unsigned long key;
	
	pgWaitV();
	pgFillvram(rgb2col(0,0,0));	
	//chDrawString(32,32,0xffff,"PSP CN.READER",2,1);	
	fc=400;	
	while(1) 
	{
		key =Read_Key();
		if((key&PSP_CTRL_CIRCLE )|| (key&PSP_CTRL_START ))
			break;		
		fc+=10;		
		if (fc>=1536) fc=0;
		
		if (fc<256) {
			r=255;		g=0;		b=fc;
		} else if (fc<512) {
			r=511-fc;	g=0;		b=255;
		} else if (fc<768) {
			r=0;		g=fc-512;	b=255;
		} else if (fc<1024) {
			r=0;		g=255;		b=1023-fc;
		} else if (fc<1280) {
			r=fc-1024;	g=255;		b=0;
		} else {
			r=255;		g=1535-fc;	b=0;
		}
		r=r/8;
		g=g/8;
		b=b/8;
		rgb=(b<<10)+(g<<5)+(r<<0)+0x8000;
		
		pgFillvram(0);			
		//pgBitBlt(0,0,480,272,1,image_pspchina);
		pgPrint4(1,3,rgb,"PSP CN.READER");			
		pgPrint(51,20,subtitlecol,"Fix v4 ");
		
		chDrawRec(0,254,SCREEN_WIDTH,1, 0xffff,1);
		pgPrint(19,32,rgb,"BY www.PSPChina.net Moon");
		pgPrint(44,32,subtitlecol,"updated by ahtya");
		pgScreenFlipV();
	}
	gFunState = STATE_GETFILE;
}

void readbook()
{
	unsigned char tempcolinter;
	unsigned char tempmagnify;
	for(;;)
	{
	
	switch(Control())
	{
		case 1:
			//pgPrint(1,7,0xffff,"You pressed square!");
			BookmarkSav();
			moo_disp_page();
			break;
		case 2:
			//pgPrint(1,7,0xffff,"You pressed triangle!");			
			BookmarkLoad();
			moo_disp_page();
			break;
		case 3:
			//pgPrint(1,7,0xffff,"You pressed circle!");			
			break;
		case 4:
			//pgPrint(1,7,0xffff,"You pressed cross!");		
			powerControl(false);
			gFunState = STATE_GETFILE;	
			return;
		case 5:
			//pgPrint(1,7,0xffff,"You pressed up!");			
			moo_ctrl_prerow();
			break;
		case 6:
			//pgPrint(1,7,0xffff,"You pressed down!");			
			moo_ctrl_nextrow();			
			break;
		case 7:
			//pgPrint(1,7,0xffff,"You pressed left!");			
			//moo_ctrl_prepage();	
			moo_ctrl_premorepage();		
			break;
		case 8:
			//pgPrint(1,7,0xffff,"You pressed right!");			
			//moo_ctrl_nextpage();	
			moo_ctrl_nextmorepage();			
			break;
		case 9:
			//pgPrint(1,7,0xffff,"You pressed start!");		
			
			isautob=1;
			moo_ctrl_autonextpage();
			break;
		case 10:
			tempcolinter=bookconf.colinter;
			tempmagnify=bookconf.magnify;
			moo_conf();
			if(bookconf.colinter!=tempcolinter)
				moo_Init_Index();
			if(bookconf.magnify!=tempmagnify)
			    moo_Init_Index();
			if(isChangeEncode){
				powerControl(false);
				isChangeEncode = false;
				if(moo_open_book(readfilename))
					moo_Init_Index();
			}
			moo_disp_page();
			//pgPrint(1,7,0xffff,"You pressed select!");	
			break;
		case 11:
			//pgPrint(1,7,0xffff,"You pressed left trigger!");			
			moo_ctrl_prepage();		
			break;
		case 12:
			//pgPrint(1,7,0xffff,"You pressed right trigger!");			
			moo_ctrl_nextpage();		
			break;
	}
	}
}


/* Exit callback */int exit_callback(void){	powerControl(false);	sceKernelExitGame();	return 0;}/* Callback thread */void CallbackThread(void *arg){	int cbid;	//printf("\nCallback Thread Status:\n");	cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);	sceKernelRegisterExitCallback(cbid);	sceKernelSleepThreadCB();}

/* Sets up the callback thread and returns its thread id */ 
int SetupCallbacks(void) 
{ 
	int thid = 0;	thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);	if(thid >= 0)	{		sceKernelStartThread(thid, 0, 0);	}	return thid;} 

int main(int argc, char *argv[]) 
{
	int i,re;
	unsigned long key;	
	unsigned char *p;
		//pspDebugScreenInit();
	// Initialize	
	pgInit();
	SetupCallbacks();
	pgScreenFrame(2,0);

    sceCtrlSetSamplingCycle(0);
	sceCtrlSetSamplingMode(PSP_CTRL_MODE_DIGITAL);

	//printf("Bootpath: %s\n", g_elf_name);	memset(readfilename,0,256);
	if(argc>0)
	{
		strcpy(PbpPath,argv[0]);
		p = strrchr(PbpPath, '/');
		*++p = 0;
	}
	else
	{
		getcwd(PbpPath, sizeof PbpPath);
	}

	strcpy(DirPath,PbpPath);
	strcpy(BookMarkPath,PbpPath);
	strcat(BookMarkPath, "bookmark/");
		
	selfile=0;
	gFunState = STATE_TITLE;

	unsigned char fontfile[0x108];
	memset(fontfile,0,0x108);
	strcpy(fontfile, PbpPath);
	strcat(fontfile, "fonts/hz16.zip?hz16.fnt");	
	//load font
	moo_load_font(fontfile);

	moo_load_conf();
	
	while(1)
	{
		switch (gFunState)
		{
			case STATE_TITLE:
				title();						
				break;			
			case STATE_READER:
				readbook();
				break;
			case STATE_GETFILE:				
				if(getFile(readfilename)==0)
				{
					gFunState = STATE_TITLE;
					/*if(*readfilename==0)
						gFunState = STATE_TITLE;
					else
						gFunState = STATE_READER;
					moo_disp_page();
					*/
				}
				else 
				{
					if(moo_open_book(readfilename))
					{
						moo_Init_Index();
						moo_disp_page();
						gFunState = STATE_READER;
					}
					else
					{
						char tname[256];
						sprintf(tname,"读取文件%s时出错,或者文件大小为0,按任意键继续",readfilename);
						debug_disp(tname);
						gFunState = STATE_GETFILE;
					}
				}
				break;
			case STATE_SAVEPOINT:
			    break;
		}		
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -