TwlIPL_commit-99/add-ins/TwlSystem/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h

206 lines
6.7 KiB
C
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: NITRO-System - include - nnsys - gfd - VramTransferMan
File: gfd_VramTransferManager.h
Copyright 2004-2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Revision: 172 $
*---------------------------------------------------------------------------*/
#ifndef NNS_GFD_VRAM_TRANSFER_MANAGER_H_
#define NNS_GFD_VRAM_TRANSFER_MANAGER_H_
#include <nitro.h>
#include <nnsys/gfd/gfd_common.h>
#ifdef __cplusplus
extern "C" {
#endif
/*---------------------------------------------------------------------------*
Name: NNS_GFD_DST_TYPE
Description: “]<E28098>æÌŽí—Þ
*---------------------------------------------------------------------------*/
// see also DoTransfer_()
typedef enum NNS_GFD_DST_TYPE
{
NNS_GFD_DST_3D_TEX_VRAM = 0, // 3D texture
NNS_GFD_DST_3D_TEX_PLTT, // 3D texture palette
NNS_GFD_DST_3D_CLRIMG_COLOR, // 3D clear image color
NNS_GFD_DST_3D_CLRIMG_DEPTH, // 3D clear image depth
NNS_GFD_DST_2D_BG0_CHAR_MAIN, // 2D Main BG0 character
NNS_GFD_DST_2D_BG1_CHAR_MAIN, // 2D Main BG1 character
NNS_GFD_DST_2D_BG2_CHAR_MAIN, // 2D Main BG2 character
NNS_GFD_DST_2D_BG3_CHAR_MAIN, // 2D Main BG3 character
NNS_GFD_DST_2D_BG0_SCR_MAIN, // 2D Main BG0 screen
NNS_GFD_DST_2D_BG1_SCR_MAIN, // 2D Main BG1 screen
NNS_GFD_DST_2D_BG2_SCR_MAIN, // 2D Main BG2 screen
NNS_GFD_DST_2D_BG3_SCR_MAIN, // 2D Main BG3 screen
NNS_GFD_DST_2D_BG2_BMP_MAIN, // 2D Main BG2 bitmap
NNS_GFD_DST_2D_BG3_BMP_MAIN, // 2D Main BG3 bitmap
NNS_GFD_DST_2D_OBJ_PLTT_MAIN, // 2D Main OBJ palette
NNS_GFD_DST_2D_BG_PLTT_MAIN, // 2D Main BG palette
NNS_GFD_DST_2D_OBJ_EXTPLTT_MAIN, // 2D Main OBJ extended palette
NNS_GFD_DST_2D_BG_EXTPLTT_MAIN, // 2D Main BG extended palette
NNS_GFD_DST_2D_OBJ_OAM_MAIN, // 2D Main OBJ OAM
NNS_GFD_DST_2D_OBJ_CHAR_MAIN, // 2D Main OBJ character
NNS_GFD_DST_2D_BG0_CHAR_SUB, // 2D Sub BG0 character
NNS_GFD_DST_2D_BG1_CHAR_SUB, // 2D Sub BG1 character
NNS_GFD_DST_2D_BG2_CHAR_SUB, // 2D Sub BG2 character
NNS_GFD_DST_2D_BG3_CHAR_SUB, // 2D Sub BG3 character
NNS_GFD_DST_2D_BG0_SCR_SUB, // 2D Sub BG0 screen
NNS_GFD_DST_2D_BG1_SCR_SUB, // 2D Sub BG1 screen
NNS_GFD_DST_2D_BG2_SCR_SUB, // 2D Sub BG2 screen
NNS_GFD_DST_2D_BG3_SCR_SUB, // 2D Sub BG3 screen
NNS_GFD_DST_2D_BG2_BMP_SUB, // 2D Sub BG2 bitmap
NNS_GFD_DST_2D_BG3_BMP_SUB, // 2D Sub BG3 bitmap
NNS_GFD_DST_2D_OBJ_PLTT_SUB, // 2D Sub OBJ palette
NNS_GFD_DST_2D_BG_PLTT_SUB, // 2D Sub BG palette
NNS_GFD_DST_2D_OBJ_EXTPLTT_SUB, // 2D Sub OBJ extended palette
NNS_GFD_DST_2D_BG_EXTPLTT_SUB, // 2D Sub BG extended palette
NNS_GFD_DST_2D_OBJ_OAM_SUB, // 2D Sub OBJ OAM
NNS_GFD_DST_2D_OBJ_CHAR_SUB, // 2D Sub OBJ character
NNS_GFD_DST_MAX
}NNS_GFD_DST_TYPE;
/*---------------------------------------------------------------------------*
Name: NNSGfdVramTransferTask
Description: “]‘—ƒ^ƒXƒN
*---------------------------------------------------------------------------*/
typedef struct NNSGfdVramTransferTask
{
NNS_GFD_DST_TYPE type; // “]<E28098>æÌŽí—Þ
void* pSrc; // “]—Œ³Ìƒf<C692>[ƒ^ƒAƒhƒŒƒX in Main memory
u32 dstAddr; // “]<E28098>æƒAƒhƒŒƒX
u32 szByte; // “]—ƒTƒCƒY
}NNSGfdVramTransferTask;
/*---------------------------------------------------------------------------*
Name: NNSGfdVramTransferTaskQueue
Description: “]‘—ƒ^ƒXƒNƒLƒ…<C692>[
*---------------------------------------------------------------------------*/
typedef struct NNSGfdVramTransferTaskQueue
{
NNSGfdVramTransferTask* pTaskArray; // ƒ^ƒXƒN”z—ñ
u32 lengthOfArray; // ƒ^ƒXƒN”z—ñ·
u16 idxFront; // Žæè<E2809A>oµˆÊu
u16 idxRear; // ƒGƒ“ƒgƒŠˆÊu
u16 numTasks; // ƒ^ƒXƒN<C692>
u16 pad16_; // ƒpƒfƒBƒ“ƒO
u32 totalSize; // <>“]‘——Ê
}NNSGfdVramTransferTaskQueue;
/*---------------------------------------------------------------------------*
Name: NNSGfdVramTransferManager
Description: “]‘—ƒ^ƒXƒNƒ}ƒl<C692>[ƒWƒƒ
*---------------------------------------------------------------------------*/
typedef struct NNSGfdVramTransferManager
{
NNSGfdVramTransferTaskQueue taskQueue; // “]‘—ƒ^ƒXƒNƒLƒ…<C692>[
}NNSGfdVramTransferManager;
//------------------------------------------------------------------------------
// public ( internal )
//------------------------------------------------------------------------------
//
// ƒ^ƒXƒNƒLƒ…<C692>[ŠÖ˜A<E28098>ìŠÖŒW
//
BOOL
NNSi_GfdPushVramTransferTaskQueue
(
NNSGfdVramTransferTaskQueue* pQueue
);
NNSGfdVramTransferTask*
NNSi_GfdGetFrontVramTransferTaskQueue
(
NNSGfdVramTransferTaskQueue* pQueue
);
NNSGfdVramTransferTask*
NNSi_GfdGetEndVramTransferTaskQueue
(
NNSGfdVramTransferTaskQueue* pQueue
);
BOOL
NNSi_GfdPopVramTransferTaskQueue
(
NNSGfdVramTransferTaskQueue* pQueue
);
//------------------------------------------------------------------------------
// public
//------------------------------------------------------------------------------
//
// <20>‰Šú‰»
//
void
NNS_GfdInitVramTransferManager
(
NNSGfdVramTransferTask* pTaskArray,
u32 lengthOfArray
);
//
// “o˜^ƒ^ƒXƒÑNƒŠƒA
//
void
NNS_GfdClearVramTransferManagerTask( );
//
// “]—ŠJŽn
// “o˜^ƒ^ƒXƒNÌŽÀ<C5BD>s
//
void
NNS_GfdDoVramTransfer( void );
//
// ƒ^ƒXƒN“o˜^
//
BOOL
NNS_GfdRegisterNewVramTransferTask
(
NNS_GFD_DST_TYPE type,
u32 dstAddr,
void* pSrc,
u32 szByte
);
//
// <>“]‘——ʂ̎擾
//
u32
NNS_GfdGetVramTransferTaskTotalSize( void );
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif // NNS_GFD_VRAM_TRANSFER_MANAGER_H_