mythroad直接支持的数据结构,函数调用,以及入口函数。
uint64            #ifndef SIM_MOD typedef unsigned long long uint64 #else typedef unsigned _int64 uint64; #endif
int64          #ifndef SIM_MOD typedef typedef long long int64 #else typedef _int64 int64; #endif
no_check_stack  #ifdef MR_SPREADTRUM_MOD #pragma no_check_stack #endif
uint16    typedef    unsigned short uint16; //有符号16bit整型
uint32    typedef    unsigned long int uint32; //无符号32bit整型
int32  typedef    long int int32; //有符号32bit整型
uint8  typedef    unsigned char uint8; //无符号8bit整型
int8    typedef    signed char int8; //有符号8bit整型
int16    typedef    signed short int16; //有符号16bit整型
FALSE        #define FALSE 0
TRUE          #define TRUE 1
NULL          #define NULL (void*)0
MR_SUCCESS          #define MR_SUCCESS 0 //成功
MR_FAILED            #define MR_FAILED -1 //失败
MR_IGNORE            #define MR_IGNORE 1 //不关心
MR_WAITING            #define MR_WAITING 2 //异步(非阻塞)模式
头文件
Header:mrc_base.h
Mythroad常用库函数
Syntax
mrc_malloc  #define malloc mrc_malloc
mrc_free    #define free mrc_free
memcpy  #define memcpy mrc_memcpy
memcmp  #define memcmp mrc_memcmp
memchr  #define memchr mrc_memchr
memset  #define memset mrc_memset
memmove  #define memmove mrc_memmove
strchr  #define strchr mrc_strchr
strcpy  #define strcpy mrc_strcpy
strncpy  #define strncpy mrc_strncpy
strcat  #define strcat mrc_strcat
strncat  #define strncat mrc_strncat
strcmp  #define strcmp mrc_strcmp
strncmp  #define strncmp mrc_strncmp
strcoll  #define strcoll mrc_strcoll
strlen  #define strlen mrc_strlen
strstr  #define strstr mrc_strstr
strtoul  #define strtoul mrc_strtoul
MR_ATOI  extern int (*MR_ATOI)(const char * nptr);
sprintf  #define sprintf mrc_sprintf
MR_SPRINTF  extern int (*MR_SPRINTF)(char * s, const char * format, ...);
atoi  #define atoi mrc_atoi
MR_MEMCHR  extern void *(*MR_MEMCHR)(const void * s, int c, int n);
MR_MEMSET  extern void *(*MR_MEMSET)(void * s, int c, int n);
MR_MEMCPY  extern void *(*MR_MEMCPY)(void * s1, const void * s2, int n);
MR_MEMCMP  extern int (*MR_MEMCMP)(const void * s1, const void * s2, int n);
MR_MEMMOVE  extern void *(*MR_MEMMOVE)(void * s1, const void * s2, int n);
mrc_strchr  extern const char *mrc_strchr(const char *src,int c);
mrc_wstrlen  extern int32 mrc_wstrlen(char * txt);
MR_STRCPY  extern char *(*MR_STRCPY)(char * s1, const char * s2);
MR_STRNCPY  extern char *(*MR_STRNCPY)(char * s1, const char * s2, int n);
MR_STRCAT  extern char *(*MR_STRCAT)(char * s1, const char * s2);
MR_STRNCAT  extern char *(*MR_STRNCAT)(char * s1, const char * s2, int n);
MR_STRCMP  extern int (*MR_STRCMP)(const char * s1, const char * s2);
MR_STRNCMP  extern int (*MR_STRNCMP)(const char * s1, const char * s2, int n);
MR_STRCOLL 
extern int (*MR_STRCOLL)(const char * s1, const char * s2);
MR_STRLEN  extern int (*MR_STRLEN)(const char * s);
MR_STRSTR  extern char *(*MR_STRSTR)(const char * s1, const char * s2);
MR_STRTOUL  extern unsigned long int (*MR_STRTOUL)(const char * nptr, char ** endptr, int base);
mrc_malloc  extern void* mrc_malloc(int size);
mrc_free  extern void mrc_free(void *address);
mrc_memcmp  #define mrc_memcmp(s1, s2, n) MR_MEMCMP(s1, s2, n)
mrc_memcpy  #define mrc_memcpy(s1, s2, n) MR_MEMCPY(s1, s2, n)
mrc_memmove  #define mrc_memmove(s1, s2, n) MR_MEMMOVE(s1, s2, n)
mrc_memchr  #define mrc_memchr(s1, c, n) MR_MEMCHR(s1, c, n)
mrc_memset  #define mrc_memset(s1, c, n) MR_MEMSET(s1, c, n)
mrc_strcpy  #define mrc_strcpy(s1, s2) MR_STRCPY(s1, s2)
mrc_strncpy  #define mrc_strncpy(s1, s2, n) MR_STRNCPY(s1, s2, n)
mrc_strcat  #define mrc_strcat(s1, s2) MR_STRCAT(s1, s2)
mrc_strncat  #define mrc_strncat(s1, s2, n) MR_STRNCAT(s1, s2, n)
mrc_strcmp  #define mrc_strcmp(s1, s2) MR_STRCMP(s1, s2)
mrc_strncmp  #define mrc_strncmp(s1, s2, n) MR_STRNCMP(s1, s2, n)
mrc_strlen  #define mrc_strlen(s) MR_STRLEN(s)
mrc_strstr  #define mrc_strstr(s1, s2) MR_STRSTR(s1, s2)
mrc_strcoll  #define mrc_strcoll(s1, s2) MR_STRCOLL(s1, s2)
mrc_sprintf  #define mrc_sprintf MR_SPRINTF
mrc_atoi  #define mrc_atoi(s1) MR_ATOI(s1)
mrc_strtoul  #define mrc_strtoul(s1, s2, n) MR_STRTOUL(s1, s2, n)
MR_MALLOC  #define MR_MALLOC(size) mrc_malloc(size)
MR_FREE  #define MR_FREE(p, size) m rc_free(p)
Remarks
一般不推荐在mythroad代码中使用C标准的库函数,一些C标准的库函数会导致mythroad代码的链接失败。
虽然使用C标准库函数是不推荐的,但在许多情况下使用C标准库函数的应用也是可以运行的,但使用未经
验证的C标准库函数,可能会由于不被手机支持而引发死机等问题。mythroad平台提供一些最为常用的C库函数,
请尽量使用这些函数。
Requirements
Header:mrc_base.h
Mythroad图片显示:
图片处理是游戏及应用开发的一个重要部分,现Mythroad支持16位、24位及256的BMP图片。为了避免内存消耗,请尽量将大图分割成多个小图来处理。
BM图片处理模式
Syntax
typedef enum {
BM_OR,
BM_XOR,
BM_COPY,
BM_NOT,
BM_MERGENOT,
BM_ANDNOT,
BM_TRANSPARENT,
BM_AND,
BM_GRAY,
BM_REVERSE
};
Members
BM_OR,  SRC .OR. DST* 半透明效果
BM_XOR  SRC .XOR. DST*
BM_COPY,  DST = SRC* 覆盖
BM_NOT  DST = (!SRC)*
BM_MERGENOT,  DST .OR. (!SRC)
BM_ANDNOT  DST .AND. (!SRC)
BM_TRANSPARENT,  透明不显示,图片的第一个象素(左上角的象素)是透明
BM_GRAY  灰化显示
BM_REVERSE  保留
Requirements
Header:mrc_base.h
用增强的方式将bmp图片绘制于指定图片中。将序号si 的bmp缓冲中的图片,从缓冲中的图片的(sx, sy)开始的宽高为w, h的区域,绘制到序号di 的
从(dx,dy)开始的bmp缓冲中。与mrc_bitmapNew配合使用。
Syntax
int mrc_bitmapDraw(
uint16 di,
int16 dx,
int16 dy,
uint16 si,
int16 sx,
int16 sy,
uint16 w,
uint16 h,
int16 A,
int16 B,
int16 C,
int16 D,
uint16 rop
);
Parameters
di
[IN]目标图片缓冲序号
dx
[IN]目标的X坐标
dy
[IN]目标的X坐标
si
[IN]源图片缓冲序号
sx
[IN]源的X坐标
sy
[IN]源的Y坐标
w
[IN]图片的宽
h
[IN]图片的高
A
[IN]见Remark部分
B
[IN]见Remark部分
C
[IN]见Remark部分
D
[IN]见Remark部分
Rop
[IN]有如下两种选择BM_COPY, BM_TRANSPARENT
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
A、B、C、D用于图像变化,用于该变化的变换矩阵为:
x = A0*x0 + B0*y0
y = C0*x0 + D0*y0
这里为了表示小数,A, B, C, D均被乘以了256,即:
A = A0*256
B = B0*256
C = C0*256
D = D0*256
根据变换公式,可以绘出不同效果的图像,比如:
旋转图像:
A = 256 * cos(角度)
B = 256 * sin(角度)
C = 256 * -sin(角度)
D = 256 * cos(角度)
放大、缩小图像:
A = 256 * 放大倍数
B = 0
C = 0
D = 256 * 放大倍数
Requirements
Header:mrc_base.h
将屏幕缓冲载入序号为i的bmp缓冲中。
Syntax
int mrc_bitmapGetScreen(
uint16 i
);
Parameters
i
[IN] 图片缓冲序号
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Requirements
Header:mrc_base.h
将mrp中名为filename的图片,从(x, y)开始的宽高为w, h的区域,加载到序号为i的bmp缓冲中。max_w为名为filename的图片的图片宽度。
Syntax
int32 mrc_bitmapLoad(
uint16 i,
char* filename,
int16 x,
int16 y,
uint16 w,
uint16 h,
uint16 max_w
);
Parameters
i
[IN]图片缓冲序号
filename
[IN]文件名,当文件名为"*"时,释放该缓存
x
[IN]源图片的起始位置X坐标
y
[IN]源图片的起始位置Y坐标
w
[IN]欲加载图片的宽
h
[IN]欲加载图片的高
max_w
[IN]欲加载图片的原始宽度
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Requirements
Header:mrc_base.h
兴建一个序号为i的bmp缓冲,缓冲图片的宽高为w, h。与mrc_bitmapShow配合使用
Syntax
int mrc_bitmapNew(
uint16 i,
uint16 w,
uint16 h
);
Parameters
i
[IN]图片缓冲序号
w
[IN]图片的宽
h
[IN]图片的高
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Requirements
Header:mrc_base.h
将序号为i的bmp缓冲中的图片,从缓冲中的图片的(sx, sy)开始的宽高为w, h的区域,绘制到(x, y)开始的屏幕缓冲中。与mrc_bitmapNew配合使用
Syntax
int32 mrc_bitmapShow(
uint16 i,
int16 x,
int16 y,
uint16 rop,
int16 sx,
int16 sy,
int16 w,
int16 h
);
Parameters
i
[IN]图片缓冲序号
x
[IN]源图片的起始位置X坐标
y
[IN]源图片的起始位置Y坐标
rop
[IN]取值为BM_OR、BM_XOR、BM_COPY、BM_NOT、BM_MERGENOT、BM_ANDNOT、BM_TRANSPARENT、BM_AND、BM_GRAY、BM_REVERSE
sx
[IN]源图片的起始位置X
sy
[IN]源图片的起始位置Y
w
[IN]欲加载图片的宽
h
[IN]欲加载图片的高
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Requirements
Header:mrc_base.h
功能同mrc_bitmapShow,唯一不同点是:源图片不是位于图片缓冲区内,而是由参数给出。
Syntax
int mrc_bitmapShowEx( uint16* p, int16 x, int16 y, int16 mw, int16 w, int16 h, uint16 rop, int16 sx, int16 sy );
Parameters
p
[IN]源图片指针
x
[IN]源图片的起始位置X坐标
y
[IN]源图片的起始位置Y坐标
mw
[IN]
w
[IN]欲加载图片的宽
h
[IN]欲加载图片的高
rop
[IN]取值为BM_OR、BM_XOR、BM_COPY、BM_NOT、BM_MERGENOT、BM_ANDNOT、BM_TRANSPARENT、BM_AND、BM_GRAY、BM_REVERSE
sx
[IN]源图片的起始位置X
sy
[IN]源图片的起始位置Y
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Requirements
Header:mrc_base.h
图片描述结构体
Syntax
typedef struct{
uint16 w;
uint16 h;
uint32 buflen;
uint32 type;
uint16* p;
}mr_bitmapSt;
Members
w
图片宽度
h
图片高度
buflen
图片缓冲长度
type
图片类型
p
图片缓冲指钟
Requirements
Header:mrc_base.h
判断碰撞的画精灵函数,返回值是画精灵时精灵所在位置 非r,g,b的象素点数目。
Syntax
int32 mrc_spriteCheck(
uint16 i,
uint16 spriteindex,
int16 x,
int16 y,
uint8 r,
uint8 g,
uint8 b
);
Parameters
di
[IN]目标图片缓冲序号
spriteindex
[IN]精灵编号
x
[IN]屏幕X坐标
y
[IN]屏幕X坐标
r
[IN]RGB R值
g
[IN]RGB G值
b
[IN]RGB B值
Return Value
>=0 非r,g,b的象素点数目
MR_FAILED 失败
Requirements
Header:mrc_base.h
绘制精灵
Syntax
int32 mrc_spriteDraw(
uint16 i,
uint16 spriteindex,
int16 x,
int16 y,
uint16 mod
)
;
Parameters
i
[IN] 图片缓冲序号
spriteindex
[IN] 精灵编号
x
[IN] 屏幕X坐标
y
[IN] 屏幕Y坐标
mod
[IN] 取值为BM_OR、BM_XOR、BM_COPY、BM_NOT、BM_MERGENOT、BM_ANDNOT、BM_TRANSPARENT、BM_AND、BM_GRAY、BM_REVERSE
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
精灵简介:精灵是游戏运动的主体,支持碰撞检测,同时可以加载10个序列,处理方便灵活。精灵序列图片左上角的象素是透明。
Requirements
Header:mrc_base.h
绘制精灵(增强)
Syntax
int32 mrc_spriteDraw(
uint16 i,
uint16 spriteindex,
int16 x,
int16 y,
int16 A,
int16 B,
int16 C,
int16
D
);
Parameters
i
[IN] 图片缓冲序号
spriteindex
[IN] 精灵编号
x
[IN] 屏幕X坐标
y
[IN] 屏幕Y坐标
A
[IN]见Remark部分
B
[IN]见Remark部分
C
[IN]见Remark部分
D
[IN]见Remark部分
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
精灵简介:精灵是游戏运动的主体,支持碰撞检测,同时可以加载10个序列,处理方便灵活。精灵序列图片左上角的象素是透明。
A、B、C、D用于图像变化,用于该变化的变换矩阵为:
x = A0*x0 + B0*y0
y = C0*x0 + D0*y0
这里为了表示小数,A, B, C, D均被乘以了256,即:
A = A0*256
B = B0*256
C = C0*256
D = D0*256
根据变换公式,可以绘出不同效果的图像,比如:
旋转图像:
A = 256 * cos(角度)
B = 256 * sin(角度)
C = 256 * -sin(角度)
D = 256 * cos(角度)
放大、缩小图像:
A = 256 * 放大倍数
B = 0
C = 0
D = 256 * 放大倍数
Requirements
Header:mrc_base.h
设置精灵高度
Syntax
int32 mrc_spriteSet(
uint16 i,
uint16 h
);
Parameters
i
[IN] 图片缓冲序号
h
[IN] 精灵高度
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
精灵简介:精灵是游戏运动的主体,支持碰撞检测,同时可以加载10个序列,处理方便灵活。精灵序列图片左上角的象素是透明。
Requirements
Header:mrc_base.h
未知 enum函数
Syntax
typedef struct{
uint16 h;
}mr_spriteSt;
Members
h
未知
Requirements
Header:mrc_base.h
画地砖
Syntax
int32 mrc_tileDraw(
uint16 i
);
Parameters
i
[IN]图片缓冲序号(地砖号)
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
地砖简介:地砖,背景和关卡设计的基石。图片序号与mrc_bitmapLoad中的图片序号对应,同时可以有3个地砖,图片序号0~2。
Requirements
Header:mrc_base.h
读取地砖值
Syntax
int32 mrc_tileGetTile(
uint16 i,
uint16 x,
uint16 y
);
Parameters
i
[IN]图片缓冲序号(地砖号),由mrc_bitmapNew创建
x
[IN]地砖列
y
[IN]地砖行
Return Value
>=0 地砖值
MR_FAILED 失败
Remarks
地砖简介:地砖,背景和关卡设计的基石。图片序号与mrc_bitmapLoad中的图片序号对应,同时可以有3个地砖,图片序号0~2。
Requirements
Header:mrc_base.h
设置地砖。
Syntax
int32 mrc_tileInit(
uint16 i,
int16 x,
int16 y,
uint16 w,
uint16 h,
uint16 tileh
);
Parameters
i
[IN]目标图片缓冲序号(地砖号)
x
[IN]屏幕位置X
y
[IN]屏幕位置Y
w
[IN]地砖列数
h
[IN]地砖行数
tileh
[IN]地砖图片高
Return Value
MR_SUCCESS 成功
MR_FAILED 失败
Remarks
地砖简介:地砖,背景和关卡设计