/*
 * $Id: bg_object1x.h,v 1.1 2003/02/07 18:15:44 wheeler Exp $
 *
 * obj1x型定義
 *
 * $Log: bg_object1x.h,v $
 * Revision 1.1  2003/02/07 18:15:44  wheeler
 * Fox's version of libultra and friends.
 *
 * Revision 1.6  1996/11/26  10:30:06  hayakawa
 * メンバ変更
 *
 * Revision 1.5  1996/11/21  05:51:02  hayakawa
 * メンバ関数（マクロ）の共通化
 *
 * Revision 1.4  1996/11/07  02:28:50  hayakawa
 * 型定義ヘッダファイルの変更に伴う修正
 *
 * Revision 1.3  1996/10/29  12:39:35  hayakawa
 * 環境カラー追加
 *
 * Revision 1.2  1996/10/24  05:57:10  hayakawa
 * rendmode 追加
 *
 * Revision 1.1  1996/10/20  08:59:48  hayakawa
 * Initial revision
 *
 */

#ifndef __BG_OBJECT1X_H_
#define __BG_OBJECT1X_H_

#include "bg_bitmap1x.h"
#include "zpos_t.h"		/* zpos_t */
#include "u64types.h"		/* rgba8888_u_t */
#include "bg_oam.h"

/*
 * ＯＢＪ属性の定義
 * bm1
 * 8Bytes
 */

typedef struct BG_Object1x_s {
    u8		oam_type;
    zpos_t 	zPos;		/* 優先度(Z座標) */
    u8		attr;		/* 1bit目:非表示 */
    u8		name;	/* キャラクタ番号 0 - 1023 */
    signed int 	xPos:16;	/* Ｘ座標 -32768 - 32767 */
    signed int 	yPos:16;	/* Ｙ座標 -32768 - 32767 */
    signed int 	zdepth:16;	/* Ｚ座標 0-0x3fff(ＺバッファＯＮの時) */
    float 	xScale;		/* 横拡大率 */
    float 	yScale;		/* 縦拡大率 */
    BG_Bitmap1x *bitmap;	/* ビットマップへのポインタ */
    Gfx		*gfx;		/* ディスプレイリストへのポインタ  */
    unsigned int rendmode:8;	/* 0:normal,1xlu_surf,2point */
    rgba8888_u_t primcolor;	/* プリミティブカラー */
    rgba8888_u_t envcolor;	/* 環境カラー */
} BG_Object1x;

#define obj1x_disable 			oam_disable                   
#define obj1x_enable 			oam_enable                    
#define obj1x_getBitmap     		oam_getBitmap                 
#define obj1x_getGfx 			oam_getGfx                    
#define obj1x_getName 			oam_getName                   
#define obj1x_getPositionX   		oam_getPositionX              
#define obj1x_getPositionY   		oam_getPositionY              
#define obj1x_getRenderMode 		oam_getRenderMode             
#define obj1x_getZdepth   		oam_getZdepth                 
#define obj1x_hFlip 			oam_hFlip                     
#define obj1x_isenable 			oam_isenable                  
#define obj1x_moveXY 			oam_moveXY                    
#define obj1x_moveXYZ 			oam_moveXYZ                   
#define obj1x_setBitmap 		oam_setBitmap                 
#define obj1x_setEnvColor 		oam_setEnvColor               
#define obj1x_setEnvColor_rgba8888 	oam_setEnvColor_rgba8888      
#define obj1x_setGfx			oam_setGfx                    
#define obj1x_setName 			oam_setName                   
#define obj1x_setPosition 		oam_setPosition               
#define obj1x_setPosition3		oam_setPosition3              
#define obj1x_setPositionX 		oam_setPositionX              
#define obj1x_setPositionY 		oam_setPositionY              
#define obj1x_setPrimColor 		oam_setPrimColor              
#define obj1x_setPrimColor_rgba8888 	oam_setPrimColor_rgba8888     
#define obj1x_setRenderMode 		oam_setRenderMode             
#define obj1x_setScale 			oam_setScale                  
#define obj1x_setZpos 			oam_setZpos                   
#define obj1x_vFlip 			oam_vFlip                     

#ifdef __cplusplus
extern "C" {
#endif

/*
 * obj1x_init()
 *
 *   ＯＢＪ1xを初期化する。
 */

void
obj1x_init(
    BG_Object1x *const obj1x,
    BG_Bitmap1x *bm1,
    const int name,		/* 0 - 1023 */
    const int z
);

/*
 * テクスチャレクトアングルによるオブジェ表示
 */
void
obj1x_draw(
    const BG_Object1x *const obj1,
    Gfx **glistpp		/* ディスプレイリストへのポインタのポインタ */
);

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* __BG_OBJECT1X_H_ */
