TwlSDK Rev 7743対応

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2103 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-08-05 06:09:40 +00:00
parent bccaea448b
commit 5462e3b702
4 changed files with 162 additions and 2 deletions

View File

@ -32,8 +32,9 @@ LINCLUDES = \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include \
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7
SRCS = fs_firm.c fs_firm_ex.c fs_loader.c
SRCS = fs_firm.c fs_firm_ex.c fs_loader.c fs_unicode.c
SRCDIR = ./src ../common/src
TARGET_LIB = libfs_sp$(FIRM_LIBSUFFIX).a

View File

@ -24,8 +24,9 @@ SUBMAKES =
LINCLUDES = $(ES_ROOT)/twl/include
SRCS = fs_firm.c fs_loader.c
SRCS = fs_firm.c fs_loader.c fs_unicode.c
SRCDIR = ./src ../common/src
TARGET_LIB = libfs$(FIRM_LIBSUFFIX).a

View File

@ -208,6 +208,8 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId)
/*---------------------------------------------------------------------------*
Name: SEA_Decrypt
SEA_GetCryptoBufferAddr
SEA_GetCryptoBufferSize
Description: stub function
@ -224,6 +226,11 @@ SDK_WEAK_SYMBOL AESResult SEA_Decrypt(const void* src, u32 srcSize, void* dst)
(void)dst;
return AES_RESULT_SUCCESS;
}
#define SEA_ADDR_WRAM_1 ((u32)0x03004000u)
u32 SEA_GetCryptoBufferAddr(void);
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferAddr(void) __attribute__((never_inline)) { return SEA_ADDR_WRAM_1; }
u32 SEA_GetCryptoBufferSize(void);
SDK_WEAK_SYMBOL u32 SEA_GetCryptoBufferSize(void) __attribute__((never_inline)) { return HW_WRAM_1_SIZE; }
/*---------------------------------------------------------------------------*
Name: FS_ResolveSrl

View File

@ -0,0 +1,151 @@
/*---------------------------------------------------------------------------*
Project: TwlIPL - libraries - fs
File: fs_unicode.c
Copyright 2007 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.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <firm.h>
/*---------------------------------------------------------------------------*
Name: FSi_ConvertStringSjisToUnicode
Description: ShiftJIS文字列をUnicode文字列に変換
ASCIIのみである場合など
UnicodeとShiftJISの相互変換を簡略化できる場合は
STDライブラリの標準処理がリンクされるのを防ぐことができる
Arguments: dst .
NULL .
dst_len ,
.
NULL .
src .
src_len ,
.
.
NULL
.
callback .
NULLを指定した場合,
.
Returns: .
*---------------------------------------------------------------------------*/
STDResult FSi_ConvertStringSjisToUnicode(u16 *dst, int *dst_len,
const char *src, int *src_len,
STDConvertUnicodeCallback callback)
{
#pragma unused(callback)
STDResult result = STD_RESULT_SUCCESS;
int i;
int max = 0x7FFFFFFF;
if (src_len && (*src_len >= 0))
{
max = *src_len;
}
if (dst && dst_len && (*dst_len >= 0) && (*dst_len < max))
{
max = *dst_len;
}
for (i = 0; i < max; ++i)
{
int c = ((const u8 *)src)[i];
if (c == 0)
{
break;
}
else if (c >= 0x80)
{
result = STD_RESULT_ERROR;
break;
}
dst[i] = (u16)c;
}
if (src_len)
{
*src_len = i;
}
if (dst_len)
{
*dst_len = i;
}
return result;
}
/*---------------------------------------------------------------------------*
Name: FSi_ConvertStringUnicodeToSjis
Description: Unicode文字列をShiftJIS文字列に変換
ASCIIのみである場合など
UnicodeとShiftJISの相互変換を簡略化できる場合は
STDライブラリの標準処理がリンクされるのを防ぐことができる
Arguments: dst .
NULL .
dst_len ,
.
NULL .
src .
src_len ,
.
.
NULL
.
callback .
NULLを指定した場合,
.
Returns: .
*---------------------------------------------------------------------------*/
STDResult FSi_ConvertStringUnicodeToSjis(char *dst, int *dst_len,
const u16 *src, int *src_len,
STDConvertSjisCallback callback)
{
#pragma unused(callback)
STDResult result = STD_RESULT_SUCCESS;
int i;
int max = 0x7FFFFFFF;
if (src_len && (*src_len >= 0))
{
max = *src_len;
}
if (dst && dst_len && (*dst_len >= 0) && (*dst_len < max))
{
max = *dst_len;
}
for (i = 0; i < max; ++i)
{
int c = ((const u16 *)src)[i];
if (c == 0)
{
break;
}
else if (c >= 0x80)
{
result = STD_RESULT_ERROR;
break;
}
dst[i] = (char)c;
}
if (src_len)
{
*src_len = i;
}
if (dst_len)
{
*dst_len = i;
}
return result;
}