0
This commit is contained in:
BIN
MemCheck【死机调查】死机调查的利器-内存泄露和溢出检测.rar
Normal file
BIN
MemCheck【死机调查】死机调查的利器-内存泄露和溢出检测.rar
Normal file
Binary file not shown.
BIN
mrp解压渐变版.zip
Normal file
BIN
mrp解压渐变版.zip
Normal file
Binary file not shown.
BIN
screen_buf.rar
Normal file
BIN
screen_buf.rar
Normal file
Binary file not shown.
84
screenshot.c
Normal file
84
screenshot.c
Normal file
@@ -0,0 +1,84 @@
|
||||
//<2F><><EFBFBD><EFBFBD> space - <20><>
|
||||
//<2F><>Դ<EFBFBD>빫<EFBFBD><EBB9AB><EFBFBD><EFBFBD><EFBFBD>κθ<CEBA><CEB8>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><CDBE>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>http://ourmrp.ys168.com
|
||||
//<2F><><EFBFBD><EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTK<54>ֻ<EFBFBD><D6BB><EFBFBD>SPR<50>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// space <20><> 2011-9-9
|
||||
|
||||
#include "mrc_base.h"
|
||||
|
||||
#define BMP_HEAD "\x42\x4D\x42\xC8\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x38\x00\x00\x00\xA0\x00\x00\x00\xA0\x00\x00\x00\x01\x00\x10\x00\x03\x00\x00\x00\x00\xC8\x00\x00\xA0\x0F\x00\x00\xA0\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" //54<35>ֽ<EFBFBD>
|
||||
#define BMP_HEAD_MTK "\x00\xF8\x00\x00\xE0\x07\x00\x00\x1F\x00\x00\x00\x00\x00\x00\x00" //16<31>ֽ<EFBFBD>
|
||||
#define BMP_HEAD_SPR "\xF8\x00\x00\x00\x07\xE0\x00\x00\x00\x1F\x00\x00\x00\x00\x00\x00"
|
||||
|
||||
int32 picShot(char *pBmp,char *SaveDir,int16 x,int16 y,int16 w,int16 h,int16 max_w,int8 isSPR)
|
||||
{
|
||||
mr_datetime datetime;
|
||||
char saveShotPath[24]={0};
|
||||
int32 dirlen=mrc_strlen(SaveDir);
|
||||
int8 elseNum=w%2;
|
||||
char *pTempBmp=NULL;
|
||||
int32 fileH=0,i=0;
|
||||
|
||||
mrc_getDatetime(&datetime);
|
||||
mrc_sprintf(saveShotPath,"%s%02d%02d_%02d%02d_%02d.bmp",SaveDir,datetime.month ,datetime.day ,datetime.hour ,datetime.minute ,i);
|
||||
for (i=1;i<100;i++)
|
||||
{
|
||||
if(MR_IS_FILE==mrc_fileState(saveShotPath))
|
||||
{
|
||||
mrc_sprintf(saveShotPath+dirlen+10,"%02d.bmp",i);
|
||||
}else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
fileH=mrc_open(saveShotPath,MR_FILE_RDWR|MR_FILE_CREATE);
|
||||
if(fileH)
|
||||
{
|
||||
int32 fileLen=(w+elseNum)*h*2+54+16+2;
|
||||
int32 addPos=0;
|
||||
pTempBmp=mrc_malloc(fileLen);
|
||||
mrc_memset(pTempBmp,0,fileLen);
|
||||
mrc_memcpy(pTempBmp,BMP_HEAD,54);
|
||||
if (isSPR==TRUE)
|
||||
{
|
||||
for (i=0;i<4;i++)
|
||||
{
|
||||
mrc_memcpy(pTempBmp+2+i,(char*)&fileLen+3-i,1);
|
||||
}
|
||||
for (i=0;i<4;i++)
|
||||
{
|
||||
mrc_memcpy(pTempBmp+18+i,(char*)&w+3-i,1);
|
||||
}
|
||||
for (i=0;i<4;i++)
|
||||
{
|
||||
mrc_memcpy(pTempBmp+22+i,(char*)&h+3-i,1);
|
||||
}
|
||||
mrc_memcpy(pTempBmp+54,BMP_HEAD_SPR,16);
|
||||
//mrc_write(fileH,BMP_HEAD_SPR,16);
|
||||
}else
|
||||
{
|
||||
mrc_memcpy(pTempBmp+2,&fileLen,4);
|
||||
mrc_memcpy(pTempBmp+18,&w,4);
|
||||
mrc_memcpy(pTempBmp+22,&h,4);
|
||||
mrc_memcpy(pTempBmp+54,BMP_HEAD_MTK,16);
|
||||
//mrc_write(fileH,BMP_HEAD_MTK,16);
|
||||
}
|
||||
addPos=54+16;
|
||||
for (i=h+y -1;i>=y;i--)
|
||||
{
|
||||
mrc_memcpy(pTempBmp+addPos,pBmp+(x+i*max_w )*2,w*2);
|
||||
addPos+=(w+elseNum)*2;
|
||||
//mrc_write(fileH,(uint8 *)pBmp+x*2 +i*max_w *2,w*2 );
|
||||
//mrc_write(fileH,"\00\00",2*elseNum);
|
||||
}
|
||||
mrc_seek(fileH,0,MR_SEEK_SET);
|
||||
mrc_write(fileH,pTempBmp,fileLen);
|
||||
mrc_close(fileH);
|
||||
fileH=0;
|
||||
mrc_free(pTempBmp),pTempBmp=NULL;
|
||||
return MR_SUCCESS;
|
||||
}else
|
||||
{
|
||||
return MR_FAILED;
|
||||
}
|
||||
}
|
||||
29
screenshot.h
Normal file
29
screenshot.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef _SCREENSHOT_H_
|
||||
#define _SCREENSHOT_H_
|
||||
|
||||
//mrperʹ<72>õĽ<C3B5>16λbmpͼ<70><CDBC><EFBFBD><EFBFBD>
|
||||
|
||||
/*ע<><D7A2> ֻ<>ʺ<EFBFBD><CABA><EFBFBD>16bit<69><74>Ļ
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
||||
|
||||
pBmp <09><>ͼ<EFBFBD><CDBC>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>char * ָ<><D6B8>
|
||||
|
||||
SaveDir <09><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>(<28><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SaveDir+4λ<34><CEBB><EFBFBD><EFBFBD>+4λʱ<CEBB><CAB1>+2λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.bmp)
|
||||
|
||||
x,y,w,h <09>ǽ<EFBFBD>ͼλ<CDBC><CEBB>
|
||||
|
||||
max_h <09><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
|
||||
|
||||
isSPR <09><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>SPRչѶƽ̨,ȡֵ0/1 <20><>Ӧ MTK/SPR
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
||||
MR_SUCCESS <09><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
MR_FAILED <09><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>
|
||||
|
||||
ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTK<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>
|
||||
picShot( (char *)w_getScreenBuffer,0,0,240,320,240,0);
|
||||
*/
|
||||
int32 picShot(char *pBmp,char *SaveDir,int16 x,int16 y,int16 w,int16 h,int16 max_w,int8 isSPR);
|
||||
|
||||
#endif
|
||||
BIN
十六进制编辑器SGL.rar
Normal file
BIN
十六进制编辑器SGL.rar
Normal file
Binary file not shown.
BIN
十六进制编辑器base.rar
Normal file
BIN
十六进制编辑器base.rar
Normal file
Binary file not shown.
BIN
商城版SGL记事本110826.rar
Normal file
BIN
商城版SGL记事本110826.rar
Normal file
Binary file not shown.
85
屏幕旋转.c
Normal file
85
屏幕旋转.c
Normal file
@@ -0,0 +1,85 @@
|
||||
#include "mrc_base.h"
|
||||
#include "mrc_bmp.h"
|
||||
#include "debug.h"
|
||||
|
||||
|
||||
|
||||
uint16 *OldScreen;//<2F><>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
uint16 *NewScreen;//<2F><>̨<EFBFBD><CCA8>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
int32 Scr_w,Scr_h;//<2F><>Ļ<EFBFBD><C4BB>Ϣ
|
||||
|
||||
/******** <20>ṩһ<E1B9A9><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ĺ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD> ********/
|
||||
/* void RotateScreen(void) */
|
||||
/* <20><><EFBFBD><EFBFBD> RotateRefresh ʹ<><CAB9> */
|
||||
/******** <20>ṩһ<E1B9A9><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ĺ<EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD> ********/
|
||||
void RotateScreen(void)
|
||||
{
|
||||
mrc_getScreenSize(&Scr_w,&Scr_h);//<2F><>ȡ<EFBFBD><C8A1>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
NewScreen=mrc_malloc(Scr_w*Scr_h*2);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ƶ<EFBFBD><C6B5>,<2C><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>1<EFBFBD><31>
|
||||
mrc_memset(NewScreen,0,Scr_w*Scr_h*2);
|
||||
w_setScreenBuffer(NewScreen);//<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
mrc_setScreenSize(Scr_h,Scr_w);//<2F>˴<EFBFBD>ʵ<EFBFBD>ֿ<EFBFBD><D6BF>ߵ<EFBFBD>ת
|
||||
}
|
||||
/******** <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת90<39>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB>ˢ<EFBFBD><CBA2> ********/
|
||||
/* void RotateRefresh(void) */
|
||||
/* <20><><EFBFBD><EFBFBD> RotateScreen ʹ<><CAB9> */
|
||||
/******** <20><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת90<39>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB>ˢ<EFBFBD><CBA2> ********/
|
||||
void RotateRefresh(void)
|
||||
{
|
||||
w_setScreenBuffer(OldScreen); //<2F>˴<EFBFBD><CBB4><EFBFBD>ԭ<EFBFBD><D4AD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
mrc_setScreenSize(Scr_w,Scr_h);//<2F>˴<EFBFBD><CBB4><EFBFBD>ԭ<EFBFBD><D4AD>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
|
||||
mrc_bitmapShowFlip(NewScreen,0,0,(int16)Scr_h,(int16)Scr_h,(int16)Scr_w,BM_COPY|TRANS_ROT90,0,0,0);//<2F>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת90<39>Ⱥ<EFBFBD>,<2C><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʼ<EFBFBD><CABC>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
|
||||
mrc_refreshScreen(0,0,(int16)Scr_w,(int16)Scr_h);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>µ<EFBFBD><C2B5><EFBFBD>Ļ
|
||||
|
||||
mrc_free(&NewScreen);//<2F>ͷź<CDB7>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ƶ<EFBFBD><C6B5>,<2C><><EFBFBD>鵽<EFBFBD><E9B5BD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͷ<EFBFBD>
|
||||
NewScreen=NULL;
|
||||
}
|
||||
|
||||
void HorizontalScreenTest()
|
||||
{
|
||||
int32 f;
|
||||
|
||||
OldScreen = w_getScreenBuffer();//<2F><>ȡ<EFBFBD><C8A1>ʵ<EFBFBD><CAB5>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
|
||||
RotateScreen();//<2F><><EFBFBD><EFBFBD>RotateRefreshʹ<68><CAB9>
|
||||
|
||||
mrc_bitmapNew(0, 41, 26);
|
||||
mrc_bitmapLoad(0, "plane.bmp", 0, 0, 41, 26,41);
|
||||
mrc_bitmapShow(0, 240,50,BM_COPY,0, 0, 41, 26);
|
||||
mrc_drawText("ԭʼͼ",0,0,255,0,0,0,1);
|
||||
mrc_drawLine(0,0,320,0,255,0,0);
|
||||
|
||||
mrc_refreshScreen(0,0,240,320);
|
||||
f=mrc_open("data.bmp",12);
|
||||
mrc_write(f,NewScreen,Scr_w*Scr_h*2);
|
||||
mrc_close(f);
|
||||
// return;
|
||||
RotateRefresh();//<2F><><EFBFBD><EFBFBD>RotateScreenʹ<6E><CAB9>
|
||||
}
|
||||
|
||||
int32 MRC_EXT_INIT(void)
|
||||
{
|
||||
HorizontalScreenTest();
|
||||
|
||||
return MR_SUCCESS;
|
||||
}
|
||||
|
||||
int32 MRC_EXT_EXIT(void)
|
||||
{
|
||||
return MR_SUCCESS;
|
||||
}
|
||||
|
||||
int32 mrc_appEvent(int32 code, int32 param0, int32 param1)
|
||||
{
|
||||
return MR_SUCCESS;
|
||||
}
|
||||
|
||||
int32 mrc_appPause()
|
||||
{
|
||||
return MR_SUCCESS;
|
||||
}
|
||||
|
||||
int32 mrc_appResume()
|
||||
{
|
||||
return MR_SUCCESS;
|
||||
}
|
||||
388
整理的ext重要函数.c
Normal file
388
整理的ext重要函数.c
Normal file
@@ -0,0 +1,388 @@
|
||||
|
||||
typedef struct _mrc_extChunk_st mrc_extChunk_st;
|
||||
|
||||
typedef struct _mr_c_function_st // <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>RW<52><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
uint8* start_of_ER_RW; // RW<52><57>ָ<EFBFBD><D6B8>
|
||||
uint32 ER_RW_Length; // RW<52><57><EFBFBD><EFBFBD>
|
||||
int32 ext_type; // ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>Ϊ1ʱ<31><CAB1>ʾext<78><74><EFBFBD><EFBFBD>
|
||||
mrc_extChunk_st * mrc_extChunk; // extģ<74><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD>塣
|
||||
int32 stack; //stack shell 2008-2-28
|
||||
} mr_c_function_st;
|
||||
|
||||
typedef struct _mrc_extChunk_st // <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>extģ<74><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
int32 check; //0x7FD854EB <20><>־
|
||||
MR_LOAD_C_FUNCTION init_func; // mr_c_function_load<61><64><EFBFBD>ڵ<EFBFBD>
|
||||
MR_C_FUNCTION event; // <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪
|
||||
uint8* code_buf; // extģ<74><C4A3><EFBFBD><EFBFBD>ַ
|
||||
int32 code_len; // extģ<74>鳤<EFBFBD><E9B3A4>
|
||||
uint8* var_buf; // ȫ<>ֱ<EFBFBD><D6B1><EFBFBD>RW<52>ε<EFBFBD>ַ
|
||||
int32 var_len; // RW<52><57><EFBFBD><EFBFBD>
|
||||
mr_c_function_st* global_p_buf; // RW<52><57><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD>塣
|
||||
int32 global_p_len; // <20><><EFBFBD><EFBFBD>
|
||||
int32 timer; // <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mrc_extLoad<61><64><EFBFBD><EFBFBD>mrc_timerCreate<74><65><EFBFBD><EFBFBD>
|
||||
mrc_extMainSendAppMsg_t sendAppEvent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext<78><74>Ϣ<EFBFBD><CFA2><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
mr_table *extMrTable; // mr_table<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#ifdef MRC_PLUGIN // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>û<EFBFBD><C3BB>ʹ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x30<33><30>С<EFBFBD><D0A1><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9>
|
||||
MR_C_FUNCTION_EX eventEx;
|
||||
#endif
|
||||
int32 isPause;/*1: pause ״̬0:<3A><><EFBFBD><EFBFBD>״̬*/
|
||||
#ifdef SDK_MOD
|
||||
mrc_init_t init_f;
|
||||
mrc_event_t event_f;
|
||||
mrc_pause_t pause_f;
|
||||
mrc_resume_t resume_f;
|
||||
mrc_exitApp_t exitApp_f;
|
||||
#endif
|
||||
} mrc_extChunk_st;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32* pMrTable = *(uint32**)(mr_c_function_load - 8);
|
||||
|
||||
/************************************
|
||||
mrc_extLoad
|
||||
չʾ<D5B9><CABE>ext<78><74><EFBFBD>ص<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
|
||||
************************************/
|
||||
int32 mrc_extLoad (int32* extAddr, int32 len)
|
||||
{
|
||||
mr_table* ext_table; // <20><>ext<78><74>MrTable
|
||||
mr_extChunk_st* ext_handle; // <20><>extģ<74><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mr_c_function_st* pSt; // RW<52><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
if(mrc_extInitMainModule() != MR_SUCCESS )
|
||||
return -1;//ʧ<><CAA7>
|
||||
|
||||
// Ϊ<>µ<EFBFBD>ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
ext_table = mrc_malloc(0x248); //mr_table<6C><65>
|
||||
if(ext_table == NULL)
|
||||
return -1;
|
||||
mrc_memcpy(ext_table, pTable, 0x248);//<2F><><EFBFBD><EFBFBD>mr_table
|
||||
|
||||
ext_table[25] = mrc_extFunction_new; //<2F>ñ<EFBFBD><C3B1>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
ext_handle = mrc_malloc(0x30); // <20><><EFBFBD>䡰ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if(ext_handle == NULL)
|
||||
{
|
||||
mrc_free(ext_table);
|
||||
return -1;
|
||||
}
|
||||
|
||||
mrc_memset(ext_handle, 0, 30);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ext_handle->extMrTable = ext_table; //<2F><><EFBFBD>ñ<EFBFBD>
|
||||
ext_handle->check = 0x7FD854EB; // EXT<58><54>־
|
||||
ext_handle->timer = mrc_timerCreate();
|
||||
ext_handle->sendAppEvent = mrc_extMainSendAppEventShell;
|
||||
//<2F><><EFBFBD><EFBFBD>RW<52>ṹ<EFBFBD><E1B9B9>
|
||||
ext_handle->global_p_buf = pSt = mrc_malloc(20);
|
||||
|
||||
if(pSt == NULL)
|
||||
{
|
||||
mrc_free(ext_table);
|
||||
mrc_free(ext_handle);
|
||||
return -1;//ʧ<><CAA7>
|
||||
}
|
||||
mrc_memset(pSt, 0, 20);
|
||||
//
|
||||
ext_handle->global_p_len = 20; //<2F>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>С
|
||||
ext_handle->init_func = extAddr + 8;//<2F><><EFBFBD>ڣ<EFBFBD>mr_c_function_load
|
||||
ext_handle->code_buf = extAddr;// <20><EFBFBD>ַ
|
||||
ext_handle->code_len = len; //ext<78><74>С
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>extͷ
|
||||
extAddr[0] = ext_table; //<2F><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>
|
||||
extAddr[1] = pSt; // <20><><EFBFBD><EFBFBD>RW<52>ṹ<EFBFBD><E1B9B9>
|
||||
pSt->mrc_extChunk = ext_handle; //<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mrc_event(5001, )
|
||||
_mr_testCom1(0, 9, extAddr, len); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>㺯<EFBFBD><E3BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ֪
|
||||
|
||||
mr_c_function_load(1); //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>mr_c_function_load<61><64><EFBFBD><EFBFBD>RW<52>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
// <20>ٶ<EFBFBD><RW><3E><>RW<52>λ<EFBFBD>ַ<EFBFBD><D6B7>
|
||||
ext_handle->event = *(<RW> + 0x14);
|
||||
ext_handle->var_buf = pSt->pRW;
|
||||
ext_handle->var_len = pSt->len;
|
||||
|
||||
(ext_handle->event)(pSt, 6, 0, *(<RW>+0xC), 0, 0);//δ֪
|
||||
(ext_handle->event)(pSt, 8, *(<RW>+0x10), 0, 0, 0);
|
||||
|
||||
|
||||
return ext_handle; // <20><><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
}
|
||||
|
||||
/******************************
|
||||
<09><> EXT<58>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
mr_c_function_load
|
||||
<09><><EFBFBD>ֳ<F0B2BFB7>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************/
|
||||
int32 mr_c_function_load (int32 code)
|
||||
{
|
||||
mr_c_function_st* pSt = *((uint32)mr_c_function_load - 0x4); // ȡRW<52><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD><D6B8>
|
||||
void* p; int32 len;
|
||||
|
||||
typedef int (*PFUNC_2) (void*,int);
|
||||
if( code == 1 ) // ext<78><74><EFBFBD><EFBFBD>
|
||||
{
|
||||
int32 a = _mr_c_function_new(mrc_extHelper, 20); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>㡣
|
||||
if( a == -2 ) return -1;
|
||||
pSt->ext_type = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊext<78><74><EFBFBD><EFBFBD>
|
||||
pMrTable->g_mr_timerStart = mrc_extTimerStart; // mr_table -> g_mr_timerStart
|
||||
pMrTable->g_mr_timerStop = mrc_extTimerStop; // mr_table -> g_mr_timerStop
|
||||
}
|
||||
else // <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
||||
{
|
||||
int32 a = _mr_c_function_new(mr_helper, 20); // <20><>ֲ<EFBFBD>㺯<EFBFBD><E3BAAF>
|
||||
if( a == -2 ) return -1; //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
pSt->ext_type = 0;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
len = mr_helper_get_rw_len(); //ȡ<><C8A1>RW<52><57><EFBFBD>ȣ<EFBFBD>ext<78>ڲ<EFBFBD><DAB2>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ext<78><74>ͬ
|
||||
pSt->ER_RW_Length = len;
|
||||
|
||||
p = mrc_malloc( len );
|
||||
pST->Start_of_ER_RW = p;
|
||||
if( p == NULL ) return -1;
|
||||
mrc_memset( p, 0, len); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>0x38<33><38><EFBFBD><EFBFBD>memset<65><74>
|
||||
|
||||
return 0; //<2F>ɹ<EFBFBD>
|
||||
}
|
||||
|
||||
/**************************************
|
||||
<09><>EXT<58>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mr_helper
|
||||
<09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
***************************************/
|
||||
/**
|
||||
* (void* P, int32 code, uint8* input, int32 input_len, uint8** output, int32* output_len);
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣺
|
||||
* input<75><74>Ϊһint32<33><32><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD>ڴ<EFBFBD><DAB4>ݲ<EFBFBD><DDB2><EFBFBD>
|
||||
* input_len<65><6E>input<75>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||
* p<><70>global_p_buf ָ<><D6B8>
|
||||
* code <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
|
||||
* 0<><30>mrc_init input null
|
||||
* 1<><31>mrc_event input<75><74><EFBFBD><EFBFBD>ǰ3<C7B0><33>Ϊmrc_event<6E><74><EFBFBD><EFBFBD> input_len=20
|
||||
* <09><><EFBFBD><EFBFBD> input[0] == 8 ʱΪext<78>˳<EFBFBD><CBB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mrc_exitApp
|
||||
* 4<><34>mrc_pause input=null input_len=0
|
||||
* 5<><35>mrc_resume input=null input_len=0
|
||||
*/
|
||||
int32 mr_helper (void** pRW, int32 msg, int32 c[], int32 d)
|
||||
{
|
||||
uint32* RWAddr = *(uint32*)pRW + 4; // ȡRW<52><57>
|
||||
int32 ret = 0; //<2F><><EFBFBD><EFBFBD>ֵ
|
||||
|
||||
if(msg >= 9) return 0;
|
||||
switch(msg) //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||||
{
|
||||
case 0: // mrc_init
|
||||
_mr_init_c_helper_function(); // <20><>ʼ<EFBFBD><CABC>RW<52><57>
|
||||
ret = mrc_init();
|
||||
mrc_refreshScreenReal();
|
||||
pMrTable->mr_internal_table->mr_timer_p = "dealtimer";
|
||||
break;
|
||||
case 1: // mrc_event
|
||||
ret = mrc_event(c[0], c[1], c[2]);
|
||||
if(c[0] == 0x8) // 0x8 <20><>ƽ̨<C6BD>˳<EFBFBD><CBB3><EFBFBD>Ϣ
|
||||
ret = mrc_exitApp();
|
||||
mrc_refreshScreenReal();
|
||||
break;
|
||||
case 2:
|
||||
mrc_timerTimeout(); //δ֪
|
||||
mrc_refreshScreenReal();
|
||||
break;
|
||||
case 4:
|
||||
mrc_pause();
|
||||
mrc_refreshScreenReal();
|
||||
break;
|
||||
case 5:
|
||||
mrc_resume();
|
||||
mrc_refreshScreenReal();
|
||||
break;
|
||||
case 6:
|
||||
*(RWAddr + 0xC) = d; // λ<><CEBB>RW
|
||||
break;
|
||||
case 8:
|
||||
*(RWAddr + 0x10) = c; // λ<><CEBB>RW
|
||||
break;
|
||||
case 9:
|
||||
typedef int (*PFUNC_6) (int,int,int,int,int,int);
|
||||
{
|
||||
PFUNC_6* pfunc = (PFUNC) c[0];
|
||||
if(pfunc)
|
||||
ret = (*pfunc)(c[1],c[2],c[3],c[4],c[5],c[6]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __cdecl _mr_intra_start(char *Str1, char *Source)
|
||||
{
|
||||
char v3; // [sp+Ch] [bp-4Ch]@1
|
||||
int v4; // [sp+4Ch] [bp-Ch]@2
|
||||
int v5; // [sp+50h] [bp-8h]@15
|
||||
int i; // [sp+54h] [bp-4h]@10
|
||||
|
||||
memset(&v3, -858993460, 0x4Cu);
|
||||
getAppInfo();
|
||||
Origin_LG_mem_len = _mr_getMetaMemLimit();
|
||||
if ( !_mr_mem_init_ex(*((_DWORD *)&mrc_appInfo_st + 3)) )
|
||||
{
|
||||
mr_event_function = 0;
|
||||
mr_timer_function = 0;
|
||||
mr_stop_function = 0;
|
||||
mr_pauseApp_function = 0;
|
||||
mr_resumeApp_function = 0;
|
||||
mr_ram_file = 0;
|
||||
mr_c_function_P = 0;
|
||||
mr_c_function_P_len = 0;
|
||||
mr_c_function_fix_p = 0;
|
||||
mr_exception_str = 0;
|
||||
mr_printf("Total memory:%d", LG_mem_len);
|
||||
v4 = 0;
|
||||
mr_screenBuf = 0;
|
||||
if ( !mr_platEx(1001, 0, 0, &mr_screenBuf, &v4, 0) )
|
||||
{
|
||||
if ( mr_screenBuf && v4 >= 2 * mr_screen_h * mr_screen_w )
|
||||
{
|
||||
dword_18D0 = 1;
|
||||
dword_18CC = v4;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mr_screenBuf )
|
||||
{
|
||||
mr_platEx(1002, mr_screenBuf, v4, 0, 0, 0);
|
||||
mr_screenBuf = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( !mr_screenBuf )
|
||||
{
|
||||
mr_screenBuf = mr_malloc(2 * mr_screen_h * mr_screen_w);
|
||||
dword_18D0 = 0;
|
||||
dword_18CC = 2 * mr_screen_h * mr_screen_w;
|
||||
}
|
||||
|
||||
dword_18D4 = mr_screenBuf;
|
||||
word_18CA = mr_screen_h;
|
||||
word_18C8 = mr_screen_w;
|
||||
vm_state = 0;
|
||||
mr_timer_state = 0;
|
||||
mr_timer_run_without_pause = 0;
|
||||
bi &= 2u;
|
||||
memset(&mr_bitmap, 0, 0x1E0u);
|
||||
memset(&mr_sound, 0, 0x3Cu);
|
||||
memset(&mr_sprite, 0, 0x14u);
|
||||
memset(&mr_tile, 0, 0x3Cu);
|
||||
memset(&mr_map, 0, 0xCu);
|
||||
|
||||
for ( i = 0; i < 3; ++i )
|
||||
{
|
||||
word_1610[10 * i] = 0;
|
||||
word_1612[10 * i] = 0;
|
||||
word_1614[10 * i] = mr_screen_w;
|
||||
word_1616[10 * i] = mr_screen_h;
|
||||
}
|
||||
|
||||
if ( !Source )
|
||||
Source = "_dsm";
|
||||
|
||||
mr_strncpy(mr_entry, Source, 0x7Fu);
|
||||
mr_printf("Used by VM(include screen buffer):%d bytes", LG_mem_len - LG_mem_left);
|
||||
mr_state = 1;
|
||||
v5 = mr_doExt(Str1);
|
||||
|
||||
if ( v5 )
|
||||
{
|
||||
mr_state = 5;
|
||||
mr_stop();
|
||||
mr_printf("init failed");
|
||||
mr_connectWAP("http://wap.skmeg.com/dsmWap/error.jsp");
|
||||
}
|
||||
}
|
||||
return _chkesp();
|
||||
}
|
||||
|
||||
int __cdecl mr_timer()
|
||||
{
|
||||
char v1; // [sp+Ch] [bp-44h]@1
|
||||
int v2; // [sp+4Ch] [bp-4h]@11
|
||||
|
||||
memset(&v1, -858993460, 0x44u);
|
||||
if ( mr_timer_state == 1 )
|
||||
{
|
||||
mr_timer_state = 0;
|
||||
if ( mr_state == 1 || mr_timer_run_without_pause && mr_state == 2 )
|
||||
{
|
||||
if ( !mr_timer_function || (mr_timer_function(), v2 = _chkesp(), v2 == 1) )
|
||||
_mr_TestComC(801, 0, 1, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mr_state == 3 )
|
||||
{
|
||||
mr_stop();
|
||||
_mr_intra_start(start_filename, &_pad__1__mr_md5_finish__9_9);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mr_printf("warning:mr_timer event unexpected!");
|
||||
}
|
||||
return _chkesp();
|
||||
}
|
||||
|
||||
int __cdecl mr_start_dsm(char *Source)
|
||||
{
|
||||
char v2; // [sp+Ch] [bp-4Ch]@1
|
||||
int v3; // [sp+4Ch] [bp-Ch]@1
|
||||
int v4; // [sp+50h] [bp-8h]@2
|
||||
int v5; // [sp+54h] [bp-4h]@2
|
||||
|
||||
memset(&v2, -858993460, 0x4Cu);
|
||||
if ( !mr_getScreenInfo(&v3) )
|
||||
{
|
||||
mr_screen_w = v3;
|
||||
mr_screen_h = v4;
|
||||
mr_screen_bit = v5;
|
||||
|
||||
memset(&pack_filename, 0, 0x80u);
|
||||
|
||||
if ( Source && *Source == 42 )
|
||||
{
|
||||
strcpy(&pack_filename, Source);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( Source && *Source == 37 )
|
||||
{
|
||||
strcpy(&pack_filename, Source + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( Source && *Source == 35 && Source[1] == 60 )
|
||||
strcpy(&pack_filename, Source + 2);
|
||||
else
|
||||
strcpy(&pack_filename, "*A");
|
||||
}
|
||||
}
|
||||
|
||||
mr_printf(&pack_filename);
|
||||
memset(old_pack_filename, 0, 0x80u);
|
||||
memset(old_start_filename, 0, 0x80u);
|
||||
memset(start_fileparameter, 0, 0x80u);
|
||||
*((_DWORD *)&mrc_appInfo_st + 3) = 0;
|
||||
_mr_intra_start("cfunction.ext", Source);
|
||||
|
||||
}
|
||||
return _chkesp();
|
||||
}
|
||||
Reference in New Issue
Block a user