mirror of
https://github.com/rvtr/ntr_bootrom.git
synced 2025-10-31 07:11:11 -04:00
263 lines
8.0 KiB
C
263 lines
8.0 KiB
C
//====================================================================
|
||
// IrisGXB_Primitive.h
|
||
// IRISプリミティブ描画ディスプレイリストをバッファへ生成
|
||
//
|
||
// Copyright (C) 2003 NINTENDO Co.,Ltd.
|
||
//====================================================================
|
||
#ifndef _IRIS_GXB_PRIMITIVE_H
|
||
#define _IRIS_GXB_PRIMITIVE_H
|
||
|
||
|
||
#include <IrisTarget.h>
|
||
#include <IrisTypes.h>
|
||
#include <IrisGX_Primitive.h>
|
||
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 立方体の描画
|
||
//
|
||
//・立方体を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// width 一辺の長さ
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値: なし
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawCube(bufp, width, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawCube(bufp, width, texParamp))
|
||
|
||
u32 *_GXB_DrawCube(u32 *bufp, u16 width, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 直方体の描画
|
||
//
|
||
//・直方体を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// width 幅
|
||
// height 高さ
|
||
// depth 奥行き
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値: なし
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawBox(bufp, width, height, depth, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawBox(bufp, width, height, depth, texParamp))
|
||
|
||
u32 *_GXB_DrawBox(u32 *bufp, u16 width, u16 height, u16 depth, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 球の描画
|
||
//
|
||
//・球を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
// numMajor 緯度(latitude)の分割数
|
||
// numMinor 経度(longitude)の分割数
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値: なし
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawSphere(bufp, radius, numMajor, numMinor, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawSphere(bufp, radius, numMajor, numMinor, texParamp))
|
||
|
||
u32 *_GXB_DrawSphere(u32 *bufp, s16 radius, s16 numMajor, s16 numMinor, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 正二十面体を再帰的に分割した球の描画
|
||
//
|
||
//・正二十面体を再帰的に分割した球を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
// numLevel 細分のレベル数
|
||
//
|
||
//・戻り値: なし
|
||
//
|
||
//※平方根演算器と除算器を使用するため、TCM上で実行したとしても
|
||
// DMA転送とシステムバス上で衝突した場合には
|
||
// CPUのストールが発生してしまいます。
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawSphereHedron(bufp, radius, numLevel) \
|
||
\
|
||
((bufp) = _GXB_DrawSphereHedron(bufp, radius, numLevel))
|
||
|
||
u32 *_GXB_DrawSphereHedron(u32 *bufp, s16 radius, s16 numLevel);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 円柱の描画
|
||
//
|
||
//・円柱を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
// height 高さ
|
||
// numEdges 円周の分割数
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値: なし
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawCylinder(bufp, radius, height, numEdges, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawCylinder(bufp, radius, height, numEdges, texParamp))
|
||
|
||
u32 *_GXB_DrawCylinder(u32 *bufp, s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 円錐の描画
|
||
//
|
||
//・円錐を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 底面の半径
|
||
// height 高さ
|
||
// numEdges 円周の分割数
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値: なし
|
||
//
|
||
//※平方根演算器と除算器を使用するため、TCM上で実行したとしても
|
||
// DMA転送とシステムバス上で衝突した場合には
|
||
// CPUのストールが発生してしまいます。
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawCone(bufp, radius, height, numEdges, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawCone(bufp, radius, height, numEdges, texParamp))
|
||
|
||
u32 *_GXB_DrawCone(u32 *bufp, s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// トーラス(円環)の描画
|
||
//
|
||
//・トーラス(円環)を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// size トーラスの中心から回転される円の中心までの距離
|
||
// rc sizeと回転される円の半径の比率
|
||
// numc 回転される円の分割数
|
||
// numt 軸回転による円の分割数
|
||
// texParamp テクスチャパラメータへのポインタ
|
||
// (フォーマットはPrimTexParam構造体を参照して下さい)
|
||
//
|
||
//・戻り値:なし
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_DrawTorus(bufp, size, rc, numc, numt, texParamp) \
|
||
\
|
||
((bufp) = _GXB_DrawTorus(bufp, size, rc, numc, numt, texParamp))
|
||
|
||
u32 *_GXB_DrawTorus(u32 *bufp, s16 size, s16 rc, s16 numc, s16 numt, const u32 (* texParamp)[4]);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 正八面体の描画
|
||
//
|
||
//・正八面体を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
//
|
||
//・戻り値:なし
|
||
//
|
||
//※平方根演算器と除算器を使用するため、TCM上で実行したとしても
|
||
// DMA転送とシステムバス上で衝突した場合には
|
||
// CPUのストールが発生してしまいます。
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_Draw8Hedron(bufp, radius) \
|
||
\
|
||
((bufp) = _GXB_Draw8Hedron(bufp, radius))
|
||
|
||
u32 *_GXB_Draw8Hedron(u32 *bufp, s16 radius);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 正十二面体の描画
|
||
//
|
||
//・正十二面体を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
//
|
||
//・戻り値:なし
|
||
//
|
||
//※平方根演算器と除算器を使用するため、TCM上で実行したとしても
|
||
// DMA転送とシステムバス上で衝突した場合には
|
||
// CPUのストールが発生してしまいます。
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_Draw12Hedron(bufp, radius) \
|
||
\
|
||
((bufp) = _GXB_Draw12Hedron(bufp, radius))
|
||
|
||
u32 *_GXB_Draw12Hedron(u32 *bufp, s16 radius);
|
||
|
||
|
||
//----------------------------------------------------------------------
|
||
// 正二十面体の描画
|
||
//
|
||
//・正二十面体を描画します。
|
||
//
|
||
//・引数:
|
||
// bufp ディスプレイリストバッファのポインタ
|
||
// radius 半径
|
||
//
|
||
//・戻り値:なし
|
||
//
|
||
//※平方根演算器と除算器を使用するため、TCM上で実行したとしても
|
||
// DMA転送とシステムバス上で衝突した場合には
|
||
// CPUのストールが発生してしまいます。
|
||
//----------------------------------------------------------------------
|
||
|
||
#define GXB_Draw20Hedron(bufp, radius) \
|
||
\
|
||
((bufp) = _GXB_Draw20Hedron(bufp, radius))
|
||
|
||
u32 *_GXB_Draw20Hedron(u32 *bufp, s16 radius);
|
||
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // _IRIS_GXB_PRIMITIVE_H
|
||
|