//====================================================================== // IRISモニタプログラム サブルーチン //====================================================================== #ifndef _IRIS_SUBP_MON_SUB_H #define _IRIS_SUBP_MON_SUB_H #include "IrisSubpMonTarget.h" #include #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