/*---------------------------------------------------------------------------* Project: DARCH Test File: darchtest.c Copyright (C) 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. $Log: darchdemo.c,v $ Revision 1.1.2.1 2009/01/15 07:32:15 nakano_yoshinobu Fixed darchD.exe to darch.exe. Revision 1.1 2008/05/12 07:42:27 nakano_yoshinobu Moved from tests. Revision 1.6 2007/10/12 00:47:58 nakano_yoshinobu (none) Revision 1.3.4.1 2007/10/10 02:58:28 nakano_yoshinobu Added comments. Revision 1.5 2007/10/03 05:14:38 nakano_yoshinobu Fixed DARCHTEST_ARC_FILE_NAME and fileInfo. Revision 1.4 2007/08/29 12:12:35 nakano_yoshinobu Added GetFileInfo() and CompTest(). Revision 1.3 2007/06/04 00:56:15 ooizumi Added comments. Revision 1.2 2007/05/31 11:11:42 ooizumi Fixed. $NoKeywords: $ *---------------------------------------------------------------------------*/ #include #include #include // for DARCH TEST #define DARCH_COMP_TEST #define DARCHTEST_ARC_FILE_NAME "darchdemo/darchdemo.arc" /*---------------------------------------------------------------------------* Name: fileInfo Description: file information list to archive *---------------------------------------------------------------------------*/ DARCHFileInfo fileInfo[] = { { "darchdemo/test1/wii.tpl", NULL, 0 }, { "darchdemo/test1/yoshi.tpl", NULL, 0 }, { "darchdemo/test2/clrbars7.BMP", NULL, 0 }, { "darchdemo/test2/dump.bmp", NULL, 0 }, { "darchdemo/test2/gray256b.BMP", NULL, 0 }, { "darchdemo/test2/gray3.BMP", NULL, 0 }, { "darchdemo/test2/marina2.BMP", NULL, 0 }, { "darchdemo/test2/rainbow.BMP", NULL, 0 }, { "darchdemo/test2/venice3.BMP", NULL, 0 }, { NULL, NULL, 0 }, }; /*---------------------------------------------------------------------------* Name: GetFileInfo Description: Get file infomation to archive Arguments: fileInfo : file information list to archive Returns: fileInfoNum : file number to archive *---------------------------------------------------------------------------*/ static void GetFileInfo(u32* fileInfoNum, DARCHFileInfo *fileInfo) { DVDFileInfo dvdFileInfo; DARCHFileInfo *darchFileInfo; u32 darchFileInfoNum ; // Load files to archive and set informations darchFileInfo = fileInfo; darchFileInfoNum = 0; while(darchFileInfo->pathName) { if(!DVDOpen(darchFileInfo->pathName, &dvdFileInfo)) { OSReport("Failed to open %s\n", darchFileInfo->pathName); OSHalt("error!"); } darchFileInfo->length = DVDGetLength(&dvdFileInfo); darchFileInfo->fileStart = OSAllocFromMEM2ArenaLo(OSRoundUp32B(DVDGetLength(&dvdFileInfo)), 32); if(!DVDRead(&dvdFileInfo, darchFileInfo->fileStart, (s32)OSRoundUp32B(darchFileInfo->length), 0)) { OSReport("Failed to read %s\n", darchFileInfo->pathName); OSHalt("error!"); } darchFileInfo++; darchFileInfoNum++; } OSReport(" Arc File Number : %d\n", darchFileInfoNum); *fileInfoNum = darchFileInfoNum; } /*---------------------------------------------------------------------------* Name: CompTest Description: Compare Test for darch lib. This test compares ARC file by darch.exe to ARC file image by darch lib. Arguments: size : size of ARC file image dstBuffer : address to store data Returns: BOOL *---------------------------------------------------------------------------*/ static BOOL CompTest(u32 size, void* dstBuffer) { DVDFileInfo dvdFileInfo; void* cmpBuffer; u32 cmpSize; u32 i = 1; // Load ARC file image creaated by darch.exe if(!DVDOpen(DARCHTEST_ARC_FILE_NAME, &dvdFileInfo)) { OSReport(" Failed to open %s\n", DARCHTEST_ARC_FILE_NAME); OSHalt(" error! "); return FALSE; } cmpSize = DVDGetLength(&dvdFileInfo); cmpBuffer = OSAllocFromMEM2ArenaLo(OSRoundUp32B(cmpSize), 32); if(!DVDRead(&dvdFileInfo, cmpBuffer, (s32)OSRoundUp32B(cmpSize), 0)) { OSReport(" Failed to read %s\n", DARCHTEST_ARC_FILE_NAME); OSHalt(" error! "); return FALSE; } // Compare sizes if(size != cmpSize) { OSReport(" Failed to compare image size\n"); OSReport("cmp Buffer Size : %d Bytes\n", cmpSize); OSHalt(" error! "); return FALSE; } // Compare data while(i <= size) { if(*((u8*)dstBuffer + i - 1) != *((u8*)cmpBuffer + i - 1)) { OSReport(" Failed to compare %dth data %x %02X!=%02X\n", i - 1, ((u8*)dstBuffer+ i - 1), *((u8*)dstBuffer + i - 1), *((u8*)cmpBuffer + i - 1)); return FALSE; break; } else { // OSReport(" Compare %dth data %x %02X==%02X\n", // i - 1, ((u8*)dstBuffer+ i - 1), *((u8*)dstBuffer + i - 1), *((u8*)cmpBuffer + i - 1)); } i++; } return TRUE; } /*---------------------------------------------------------------------------* Name: main Description: Demo for darch lib *---------------------------------------------------------------------------*/ void main( void ) { u32 fileInfoNum; u32 size; void* dstBuffer; OSTime start, end; // Get file infomation GetFileInfo(&fileInfoNum, fileInfo); start = OSGetTime(); // Get dst Buffer Size size = DARCHGetArcSize(fileInfo, fileInfoNum); OSReport(" dstBuffer Size : %d Bytes\n", size); // Get dst Buffer Address dstBuffer = OSAllocFromMEM2ArenaLo(size,32); OSReport(" dstBuffer Address : 0x%08X - 0x%08X\n", dstBuffer, (void*)((u32)dstBuffer + size)); // Create ARC File if(!DARCHCreate(dstBuffer, size, fileInfo, fileInfoNum)) { OSReport("failed to create\n"); OSHalt("\nDARCHCreate() >> error!\n"); } end = OSGetTime(); // Time of creation OSReport(" DARCHCreate()Time : %d us\n", OSTicksToMicroseconds(end - start)); #ifdef DARCH_COMP_TEST OSReport(" \n# Compare Test >> \n" ); if(CompTest(size, dstBuffer)) OSReport(" clear! \n"); else OSHalt(" error! "); #endif OSReport("End of Demo\n"); }