
//**************************************************************
//
//		Save_define.h
//
//**************************************************************

//-------------------------------------------------------------
//	変数(1BYTE)
//-------------------------------------------------------------
#define	SAVE_CHAR_1a_WRITE(name)	\
	*(u8*)ptr = name;				\
	*((u8*)ptr)++;
#define	SAVE_CHAR_1a_READ(name)		\
	name = *(u8*)ptr;				\
	*((u8*)ptr)++;

//-------------------------------------------------------------
#define	SAVE_CHAR_1b_WRITE(name)	\
	*(u8*)ptr = name;				\
	*((u8*)ptr)++;					\
	n = (int)ptr;					\
	while(n&0x3) {					\
		*(u8*)ptr = 0;				\
		*((u8*)ptr)++;				\
		n++;						\
	}
#define	SAVE_CHAR_1b_READ(name)		\
	name = *(u8*)ptr;				\
	*((u8*)ptr)++;					\
	n = (int)ptr;					\
	while(n&0x3) {					\
		*((u8*)ptr)++;				\
		n++;						\
	}
//-------------------------------------------------------------
#define	SAVE_CHAR_2_WRITE(name,kosu)	\
	for(n=0;n<(kosu);n++){				\
		*(u8*)ptr = name[n];			\
		*((u8*)ptr)++;					\
	}									\
	while(n&0x3) {						\
		*(u8*)ptr = 0;					\
		*((u8*)ptr)++;					\
		n++;							\
	}
#define	SAVE_CHAR_2_READ(name,kosu)		\
	for(n=0;n<(kosu);n++){				\
		name[n] = *(u8*)ptr;			\
		*((u8*)ptr)++;					\
	}									\
	while(n&0x3) {						\
		*((u8*)ptr)++;					\
		n++;							\
	}

//-------------------------------------------------------------
#define	SAVE_CHAR_3_WRITE(name,kosu1,kosu2)		\
	for(i=0;i<kosu1;i++){						\
		for(n=0;n<kosu2;n++){					\
			*(u8*)ptr = name[i][n];				\
			*((u8*)ptr)++;						\
		}										\
	}											\
	while(n&0x3) {								\
		*(u8*)ptr = 0;							\
		*((u8*)ptr)++;							\
		n++;									\
	}
#define	SAVE_CHAR_3_READ(name,kosu1,kosu2)		\
	for(i=0;i<kosu1;i++){						\
		for(n=0;n<kosu2;n++){					\
			name[i][n] = *(u8*)ptr;				\
			*((u8*)ptr)++;						\
		}										\
	}											\
	while(n&0x3) {								\
		*((u8*)ptr)++;							\
		n++;									\
	}



//-------------------------------------------------------------
//	変数(2BYTE)
//-------------------------------------------------------------
#define	SAVE_SHORT_1a_WRITE(name)	\
	*(u16*)ptr = name;				\
	*((u16*)ptr)++;
#define	SAVE_SHORT_1a_READ(name)	\
	name = *(u16*)ptr;				\
	*((u16*)ptr)++;
//-------------------------------------------------------------
#define	SAVE_SHORT_1b_WRITE(name)	\
	*(u16*)ptr = name;				\
	*((u16*)ptr)++;					\
	n=(int)ptr;						\
	while(n&0x3) {					\
		*(u8*)ptr = 0;				\
		*((u8*)ptr)++;				\
		n++;						\
	}

#define	SAVE_SHORT_1b_READ(name)	\
	name = *(u16*)ptr;				\
	*((u16*)ptr)++;					\
	n=(int)ptr;						\
	while(n&0x3) {					\
		*((u8*)ptr)++;				\
		n++;						\
	}


//-------------------------------------------------------------
#define	SAVE_SHORT_2_WRITE(name,kosu)	\
	for(n=0;n<(kosu);n++){				\
		*(u16*)ptr = name[n];			\
		*((u16*)ptr)++;					\
	}									\
	while(n&0x3) {						\
		*(u8*)ptr = 0;					\
		*((u8*)ptr)++;					\
		n++;							\
	}
#define	SAVE_SHORT_2_READ(name,kosu)	\
	for(n=0;n<(kosu);n++){				\
		name[n] = *(u16*)ptr;			\
		*((u16*)ptr)++;					\
	}									\
	while(n&0x3) {						\
		*((u8*)ptr)++;					\
		n++;							\
	}

//-------------------------------------------------------------
//	変数(4BYTE)
//-------------------------------------------------------------
#define	SAVE_INT_1_WRITE(name)		\
	*ptr++ = name;
#define	SAVE_INT_1_READ(name)		\
	name = *ptr++;
//-------------------------------------------------------------
#define	SAVE_INT_3_WRITE(name,kosu1,kosu2)		\
	for(i=0;i<kosu1;i++){						\
		for(n=0;n<kosu2;n++){					\
			*ptr = name[i][n];					\
			*ptr++;								\
		}										\
	}
#define	SAVE_INT_3_READ(name,kosu1,kosu2)		\
	for(i=0;i<kosu1;i++){						\
		for(n=0;n<kosu2;n++){					\
			name[i][n] = *ptr;					\
			*ptr++;								\
		}										\
	}

//-------------------------------------------------------------
//	構造体
//-------------------------------------------------------------
#define	SAVE_STRUCT_1_WRITE(type,name)	\
	*(type*)ptr = name;					\
	*((type*)ptr)++;
#define	SAVE_STRUCT_1_READ(type,name)	\
	name = *(type*)ptr;					\
	*((type*)ptr)++;

//-------------------------------------------------------------
//	構造体（配列）
//-------------------------------------------------------------
#define	SAVE_STRUCT_2_WRITE(type,name,kosu)	\
	for(n=0;n<kosu;n++) {					\
		*((type*)ptr) = name[n];			\
		*((type*)ptr)++;					\
	}
#define	SAVE_STRUCT_2_READ(type,name,kosu)	\
	for(n=0;n<kosu;n++) {					\
		name[n] = *((type*)ptr);			\
		*((type*)ptr)++;					\
	}
//-------------------------------------------------------------

#define	SAVE_STRUCT_3_WRITE(type,name,kosu1,kosu2)	\
	for(i=0;i<kosu1;i++){							\
		for(n=0;n<kosu2;n++){						\
			*(type*)ptr = name[i][n];				\
			*((type*)ptr)++;						\
		}											\
	}
#define	SAVE_STRUCT_3_READ(type,name,kosu1,kosu2)	\
	for(i=0;i<kosu1;i++){							\
		for(n=0;n<kosu2;n++){						\
			name[i][n] = *(type*)ptr;				\
			*((type*)ptr)++;						\
		}											\
	}												\

