mirror of
https://github.com/rvtr/TDT.git
synced 2025-10-31 13:51:07 -04:00
Delete app.c
This commit is contained in:
parent
c05199c59a
commit
0efa89e6b8
267
arm9/src/app.c
267
arm9/src/app.c
@ -1,267 +0,0 @@
|
|||||||
#include "app.h"
|
|
||||||
#include "main.h"
|
|
||||||
#include "storage.h"
|
|
||||||
#include <nds.h>
|
|
||||||
#include <malloc.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
static void _getTitle(tNDSBanner* b, char* out, bool full)
|
|
||||||
{
|
|
||||||
int lang = PersonalData->language;
|
|
||||||
|
|
||||||
//not japanese or chinese
|
|
||||||
if (lang == 0 || lang == 6)
|
|
||||||
lang = 1;
|
|
||||||
|
|
||||||
for (int i = 0; i < 128; i++)
|
|
||||||
{
|
|
||||||
u16 c = b->titles[lang][i];
|
|
||||||
|
|
||||||
//remove accents
|
|
||||||
if (c == 0x00F3)
|
|
||||||
c = 'o';
|
|
||||||
|
|
||||||
if (c == 0x00E1)
|
|
||||||
c = 'a';
|
|
||||||
|
|
||||||
out[i] = (char)c;
|
|
||||||
|
|
||||||
if (!full && out[i] == '\n')
|
|
||||||
{
|
|
||||||
out[i] = '\0';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out[128] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getAppTitle(char* fpath, char* out)
|
|
||||||
{
|
|
||||||
FILE* f = fopen(fpath, "rb");
|
|
||||||
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tNDSHeader* header = (tNDSHeader*)malloc(sizeof(tNDSHeader));
|
|
||||||
tNDSBanner* banner = (tNDSBanner*)malloc(sizeof(tNDSBanner));
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(header, sizeof(tNDSHeader), 1, f);
|
|
||||||
fseek(f, header->bannerOffset, SEEK_SET);
|
|
||||||
fread(banner, sizeof(tNDSBanner), 1, f);
|
|
||||||
|
|
||||||
_getTitle(banner, out, false);
|
|
||||||
|
|
||||||
free(banner);
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getAppFullTitle(char* fpath, char* out)
|
|
||||||
{
|
|
||||||
FILE* f = fopen(fpath, "rb");
|
|
||||||
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tNDSHeader* header = (tNDSHeader*)malloc(sizeof(tNDSHeader));
|
|
||||||
tNDSBanner* banner = (tNDSBanner*)malloc(sizeof(tNDSBanner));
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(header, sizeof(tNDSHeader), 1, f);
|
|
||||||
fseek(f, header->bannerOffset, SEEK_SET);
|
|
||||||
fread(banner, sizeof(tNDSBanner), 1, f);
|
|
||||||
|
|
||||||
_getTitle(banner, out, true);
|
|
||||||
|
|
||||||
free(banner);
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getAppLabel(char* fpath, char* out)
|
|
||||||
{
|
|
||||||
FILE* f = fopen(fpath, "rb");
|
|
||||||
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tNDSHeader* header = (tNDSHeader*)malloc(sizeof(tNDSHeader));
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(header, sizeof(tNDSHeader), 1, f);
|
|
||||||
|
|
||||||
sprintf(out, "%.12s", header->gameTitle);
|
|
||||||
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getGameCode(char* fpath, char* out)
|
|
||||||
{
|
|
||||||
FILE* f = fopen(fpath, "rb");
|
|
||||||
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tNDSHeader* header = (tNDSHeader*)malloc(sizeof(tNDSHeader));
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(header, sizeof(tNDSHeader), 1, f);
|
|
||||||
|
|
||||||
sprintf(out, "%.4s", header->gameCode);
|
|
||||||
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool getTid(char* fpath, u32* low, u32* high)
|
|
||||||
{
|
|
||||||
FILE* f = fopen(fpath, "rb");
|
|
||||||
|
|
||||||
if (!f)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tDSiHeader* header = (tDSiHeader*)malloc(sizeof(tDSiHeader));
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_SET);
|
|
||||||
fread(header, sizeof(tDSiHeader), 1, f);
|
|
||||||
|
|
||||||
if (low != NULL)
|
|
||||||
*low = header->tid_low;
|
|
||||||
|
|
||||||
if (high != NULL)
|
|
||||||
*high = header->tid_high;
|
|
||||||
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void printAppInfo(char const* path)
|
|
||||||
{
|
|
||||||
clearScreen(&topScreen);
|
|
||||||
|
|
||||||
if (!path) return;
|
|
||||||
|
|
||||||
tDSiHeader* header = (tDSiHeader*)malloc(sizeof(tDSiHeader));
|
|
||||||
tNDSBanner* banner = (tNDSBanner*)malloc(sizeof(tNDSBanner));
|
|
||||||
|
|
||||||
FILE* f = fopen(path, "rb");
|
|
||||||
|
|
||||||
if (f)
|
|
||||||
{
|
|
||||||
if (fread(header, sizeof(tDSiHeader), 1, f) != 1)
|
|
||||||
{
|
|
||||||
iprintf("Could not read dsi header.\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fseek(f, header->ndshdr.bannerOffset, SEEK_SET);
|
|
||||||
|
|
||||||
if (fread(banner, sizeof(tNDSBanner), 1, f) != 1)
|
|
||||||
{
|
|
||||||
iprintf("Could not read banner.\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//proper title
|
|
||||||
{
|
|
||||||
char gameTitle[128+1];
|
|
||||||
_getTitle(banner, gameTitle, true);
|
|
||||||
|
|
||||||
iprintf("%s\n\n", gameTitle);
|
|
||||||
}
|
|
||||||
|
|
||||||
//file size
|
|
||||||
{
|
|
||||||
iprintf("Size: ");
|
|
||||||
printBytes(getFileSize(f));
|
|
||||||
iprintf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
iprintf("Label: %.12s\n", header->ndshdr.gameTitle);
|
|
||||||
iprintf("Game Code: %.4s\n", header->ndshdr.gameCode);
|
|
||||||
|
|
||||||
//system type
|
|
||||||
{
|
|
||||||
iprintf("Unit Code: ");
|
|
||||||
|
|
||||||
switch (header->ndshdr.unitCode)
|
|
||||||
{
|
|
||||||
case 0: iprintf("NDS"); break;
|
|
||||||
case 2: iprintf("NDS+DSi"); break;
|
|
||||||
case 3: iprintf("DSi"); break;
|
|
||||||
default: iprintf("unknown");
|
|
||||||
}
|
|
||||||
|
|
||||||
iprintf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
//application type
|
|
||||||
{
|
|
||||||
iprintf("Program Type: ");
|
|
||||||
|
|
||||||
switch (header->ndshdr.reserved1[7])
|
|
||||||
{
|
|
||||||
case 0x3: iprintf("Normal"); break;
|
|
||||||
case 0xB: iprintf("Sys"); break;
|
|
||||||
case 0xF: iprintf("Debug/Sys"); break;
|
|
||||||
default: iprintf("unknown");
|
|
||||||
}
|
|
||||||
|
|
||||||
iprintf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
//DSi title ids
|
|
||||||
{
|
|
||||||
if (header->tid_high == 0x00030004 ||
|
|
||||||
header->tid_high == 0x00030005 ||
|
|
||||||
header->tid_high == 0x00030015 ||
|
|
||||||
header->tid_high == 0x00030017 ||
|
|
||||||
header->tid_high == 0x00030000)
|
|
||||||
{
|
|
||||||
iprintf("Title ID: %08x %08x\n", (unsigned int)header->tid_high, (unsigned int)header->tid_low);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//print full file path
|
|
||||||
iprintf("\n%s\n", path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
free(banner);
|
|
||||||
free(header);
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user