ntr_bootrom/trunk/IrisSubp/IrisSubpMon/IrisSubpMonSub.h

173 lines
6.3 KiB
C

//======================================================================
// IRISモニタプログラム サブルーチン
//======================================================================
#ifndef _IRIS_SUBP_MON_SUB_H
#define _IRIS_SUBP_MON_SUB_H
#include "IrisSubpMonTarget.h"
#include <IrisSubp.h>
#include "Blowfish.h"
#include "IrisSubpMonMacro.h"
#include "IrisMonSharedArea.h"
//--------------------- グローバル 変数 -------------------------------
extern SharedWork *sharedWorkp; // 共有ワークポインタ
extern SecureWork *secureWorkp; // セキュア情報ワークポインタ
extern IntrFuncp intrTable[4];
extern u32 CharTmpBuf[0x200/4];
extern u16 NinLogoBak[256/2];
//--------------------- 汎用サブルーチン -------------------------------
void NotifyMainpIntf(u32 param);
void WaitMainpIntf(u32 param);
void WaitVBlank(s32 count);
s32 IsMmem8MB(void);
s32 IsOnDebugger(void);
void CheckDebugger(void);
void InitRtc(void);
u8 ReadRtcStatus1(void);
u8 ReadRtcStatus2(void);
void SendRtcOp(u32 op);
void SendRtcDataBuf(u8 *srcp, s32 count);
void RecvRtcDataBuf(u8 *datap, s32 count);
void LoadFlashHeader(void);
void LoadFlashDemo(void);
u8 ReadFlashStatus(void);
void ReadFlash(const u8 *eepromp, u32 *ramp, s32 size);
void WriteFlash(u32 *ramp, u32 *eepromp, s32 size);
// 圧縮展開関数型宣言
typedef s32 (* UC_InitFuncp)(const u8 *devicep, void *ramp, const void *paramp);
typedef s32 (* UC_TerminateFuncp)(const u8 *devicep);
typedef u8 (* UC_ByteStreamFuncp)(const u8 *devicep);
typedef u16 (* UC_ShortStreamFuncp)(const u8 *devicep);
typedef u32 (* UC_WordStreamFuncp)(const u8 *devicep);
// 圧縮展開関数指定
typedef struct {
UC_InitFuncp InitFuncp; // 初期化関数
UC_TerminateFuncp TerminateFuncp; // 終了関数
UC_ByteStreamFuncp ByteStreamFuncp; // バイトストリーム読み込み関数
UC_ShortStreamFuncp ShortStreamFuncp; // ハーフワードストリーム読み込み関数
UC_WordStreamFuncp WordStreamFuncp; // ワードストリーム読み込み関数
} UC_InternalFuncp;
s32 InitReadFlash(const u8 *flashp, void *ramp, const void *paramp);
s32 TerminateReadFlash(const u8 *flashp);
u8 ReadByte4SucureFlash(const u8 *flashp);
u32 ReadWord4SucureFlash(const u8 *flashp);
#ifndef DISABLE_SECURE_CODE
void InitSecureParamFook(void);
void MakeBlowfishCardTable( BLOWFISH_CTX *tableBufp, const u32 *keyp, u32 *keyBufp);
void MakeBlowfishFlashTable(BLOWFISH_CTX *tableBufp, const u32 *keyp, u32 *keyBufp);
void DecryptObjectFileFook(void);
void ChangeObjectTableFook(void);
void CopyBiosAreaFook(const void *srcp, void *destp, s32 size);
void CpuSetFast32Fook(const void *srcp, void *destp, u32 dmaCntData);
#else
void InitSecureParam(void);
void MakeBlowfishTable(BLOWFISH_CTX *tableBufp, const u32 *keyp, u32 *keyBufp, u32 keyLen);
void DecryptObjectFile(void);
void ChangeObjectTable(u32 keyLen);
void CopyBiosArea(const void *srcp, void *destp, s32 size);
void CpuSetFast32(const void *srcp, void *destp, u32 dmaCntData);
#define InitSecureParamFook() InitSecureParam()
#define MakeBlowfishCardTable( tableBufp, keyp, keyBufp) MakeBlowfishTable( tableBufp, keyp, keyBufp, 8)
#define MakeBlowfishFlashTable(tableBufp, keyp, keyBufp) MakeBlowfishTable( tableBufp, keyp, keyBufp, 12)
#define DecryptObjectFileFook() DecryptObjectFile()
#define ChangeObjectTableFook() ChangeObjectTable(8)
#define CopyBiosAreaFook(srcp, destp, size) CopyBiosArea(srcp, destp, size)
#define CpuSetFast32Fook(srcp, destp, dmaCntData) CpuSetFast32(srcp, destp, dmaCntData)
#endif // DISABLE_SECURE_CODE
void InitCardParam4Secure(void);
void TerminateCardParam4Secure(void);
void InitCardOpBlowfish(void);
void InitCardPN_Intf(void);
void InitVA_VB_VD(void);
void LoadCardTable(void);
void ReadCardHeader(void);
void Encrypt2SetTimer4Secure(CardCtrlParam *paramp);
void TraceCardCnt(u32 cardCnt);
void SendCardPNG_ON(void);
void SendCardPNG_OFF(void);
void ReadCardAsync(void *romp, void *ramp, s32 size, CardCtrlParam *paramp);
void ReadCardAsync4Normal(void *romp, void *ramp, s32 size, CardCtrlParam *paramp);
void ReadCardAsync4Secure(void *romp, CardCtrlParam *paramp);
void ReadCardAsync4Game(void *romp, void *ramp, s32 size, CardCtrlParam *paramp);
void ReadCard4Game(void *romp, void *ramp, s32 size, u32 cntParam);
void SetCardIntr(void *romp, void *ramp, s32 size, CardIntrWork *ciwp);
void SetCardIntr4Normal(void *romp, void *ramp, s32 size);
void SetCardIntr4Secure(void *romp, void *ramp, s32 size);
void SetCardIntr4Game(void *romp, void *ramp, s32 size);
void CardTimerIntr4Secure(void);
void CardIntr(void);
void CardIntr4Secure(void);
void EnableCardIntr(void);
void TerminateCardIntr(void);
void WaitCardIntr(void);
u32 ReadCardID4Normal(void);
void ReadCardID4Secure(void);
void ChangeCardMode4Normal(void);
void ChangeCardMode4Secure(void);
s32 GetBlockSizeFromCardCnt(CardCnt *paramp);
void WaitCardDma(u32 dmaNo);
void SetVAE(CardCtrlParam *paramp);
void SetVBI(CardCtrlParam *paramp);
void SetVA(CardCtrlParam *paramp);
void SetVB(CardCtrlParam *paramp);
void OverWriteTestVB(CardCtrlParam *paramp);
void SetDummyVC(CardCtrlParam *paramp);
void SetVD(CardCtrlParam *paramp);
void PreInitRam(void);
void PostInitRam(void);
void ClearMmemSecureArea(void);
void InitReg(void);
void CopyBiosArea(const void *srcp, void *destp, s32 size);
u8 CheckAgbRomHeader(void *datap);
void ReadNintendoLogo4AGB(void);
u8 CheckNintendoLogo(u16 *datap);
void SetPauseCheckFlag(void);
u16 GetCRC16(u32 start, u16 *datap, u32 length);
void WaitIntr(u32 InitIfClear, u32 IfFlags);
void WaitVBlankIntr(void);
void TerminateIntr(u32 inrtFlags);
void WaitByLoop(s32 count);
void CpuSet16_32(const void *srcp, void *destp, u32 dmaCntData);
void CpuSetFast32(const void *srcp, void *destp, u32 dmaCntData);
void UnPackBits32(const u8 *srcp, u32 *destp, const UnPackBitsParam *UnPackBitsParamp);
void UnCompRLByte( u8 *srcp, u8 *destp);
s32 UnCompRLShort(const u8 *srcp, u16 *destp, const void *paramp, const UC_InternalFuncp *ifp);
void UnCompLZ77Byte( u8 *Srcp, u8 *Destp);
s32 UnCompLZ77Short(const u8 *srcp, u16 *destp, const void *paramp, const UC_InternalFuncp *ifp);
s32 UnCompHuffman32(const u8 *srcp, u32 *destp, u8 *tableBufp, const UC_InternalFuncp *ifp);
void ChangeSoundBias16(u32 UpDown, u32 stepLoops);
#endif // _IRIS_SUBP_MON_SUB_H