📄 main.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 + -