mirror of
https://github.com/rvtr/ntr_bootrom.git
synced 2025-10-31 07:11:11 -04:00
173 lines
6.3 KiB
C
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
|