Skip to content

Commit

Permalink
OSNandbootInfo and some more lyt
Browse files Browse the repository at this point in the history
  • Loading branch information
shibbo committed Feb 12, 2025
1 parent 014a9a5 commit 064ff91
Show file tree
Hide file tree
Showing 7 changed files with 179 additions and 2 deletions.
6 changes: 5 additions & 1 deletion libs/RVL_SDK/include/revolution/nand.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,12 @@ void nandGetRelativeName(char *, const char *);
const char* nandGetHomeDir();
void nandCallback(ISFSError, void *);

s32 NANDPrivateGetStatus(const char *, NANDStatus *);
s32 NANDPrivateDelete(const char *);
s32 NANDPrivateCreate (const char *, u8, u8);

#ifdef __cplusplus
}
#endif

#endif // NAND_H
#endif // NAND_H
26 changes: 25 additions & 1 deletion libs/RVL_SDK/include/revolution/os/OSFastCast.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,32 @@ extern "C" {
#define OSf32tou16(in,out) asm volatile ("psq_st %1, 0(%0), 1, 3 " : : "b" (out) , "f" (*(in)) : "memory")
#define OSu16tof32(in,out) asm volatile ("psq_l %0, 0(%1), 1, 3 " : "=f" (*(out)) : "b" (in) )

static inline void OSInitFastCast(void)
{
#ifdef __MWERKS__
asm
{
li r3, 4
oris r3, r3, 4
mtspr 0x392, r3

li r3, 5
oris r3, r3, 5
mtspr 0x393, r3

li r3, 6
oris r3, r3, 6
mtspr 0x394, r3

li r3, 7
oris r3, r3, 7
mtspr 0x395, r3
}
#endif
}

#ifdef __cplusplus
}
#endif

#endif // OSFASTCAST_H
#endif // OSFASTCAST_H
41 changes: 41 additions & 0 deletions libs/RVL_SDK/include/revolution/os/OSNandbootinfo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#ifndef OSNANDBOOTINFO_H
#define OSNANDBOOTINFO_H

#include "revolution/types.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
u32 CheckSum;
u32 ArgOffset;
u8 reserved[2];
u8 LastAppType;
u8 ReturnType;
u32 ArgValue;
u8 padding[8];
u64 LastTitleId;
u8 args[0x1000];
} OSNandbootInfo;

typedef struct {
u32 CheckSum;
u32 ArgOffset;
u8 reserved[2];
u8 LastAppType;
u8 ReturnType;
u32 ArgValue;
u8 padding[8];
u64 LastTitleId;

} OSNandbootInfoHeader;

BOOL __OSCreateNandbootInfo(void);
BOOL __OSWriteNandbootInfo(OSNandbootInfo *);

#ifdef __cplusplus
}
#endif

#endif // OSNANDBOOTINFO_H
2 changes: 2 additions & 0 deletions libs/nw4r/include/nw4r/lyt/resourceAccessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ namespace nw4r {

class ResourceAccessor {
public:
ResourceAccessor();

virtual ~ResourceAccessor();
virtual void* GetResource(ResType, const char *, u32* ) = 0;
virtual ut::Font* GetFont(const char *);
Expand Down
73 changes: 73 additions & 0 deletions src/RVL_SDK/os/OSNandbootInfo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#include "revolution/os/OSNandbootinfo.h"
#include "revolution/nand.h"

static u32 CheckSum(OSNandbootInfo* info) {
u32 *ptr, i, sum;

ptr = (u32*)&(info->ArgOffset);
sum = 0;
for (i = 0; i < (sizeof(OSNandbootInfo) - 4) / 4; i++)
{
sum = sum + *ptr;
ptr++;
}

return sum;
}

BOOL __OSCreateNandbootInfo(void) {
NANDStatus status;
s32 result;

result = NANDPrivateGetStatus("/shared2/sys/NANDBOOTINFO", &status);
if (result == 0 && status.permission == 0x3F) {
return TRUE;
}
else if (result == 0 && status.permission != 0x3F) {
result = NANDPrivateDelete("/shared2/sys/NANDBOOTINFO");

if (result != 0) {
return FALSE;
}
}
else if (result == -12) {

}
else {
return FALSE;
}

result = NANDPrivateCreate("/shared2/sys/NANDBOOTINFO", 63, 0);

if (result != 0) {
return FALSE;
}

return TRUE;
}

BOOL __OSWriteNandbootInfo(OSNandbootInfo *info) {
NANDFileInfo fileInfo;
s32 result;
info->CheckSum = CheckSum(info);
result = NANDPrivateOpen("/shared2/sys/NANDBOOTINFO", &fileInfo, 2);

if (result == 0) {
result = NANDWrite(&fileInfo, info, sizeof(OSNandbootInfo));

if (result != sizeof(OSNandbootInfo)) {
NANDClose(&fileInfo);
return FALSE;
}

result = NANDClose(&fileInfo);
if (result != 0) {
return FALSE;
}
}
else {
return FALSE;
}

return TRUE;
}
16 changes: 16 additions & 0 deletions src/nw4r/lyt/lyt_init.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#include "nw4r/lyt/init.h"
#include "revolution/os.h"
#include "revolution/os/OSFastCast.h"

namespace {
const char* NW4R_LYT_Version_ = "<< NW4R - LYT \tfinal build: Jul 17 2007 12:25:23 (0x4199_60831) >>";
};

namespace nw4r {
namespace lyt {
void LytInit() {
OSRegisterVersion(NW4R_LYT_Version_);
OSInitFastCast();
}
};
};
17 changes: 17 additions & 0 deletions src/nw4r/lyt/lyt_resourceAccessor.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include "nw4r/lyt/resourceAccessor.h"

namespace nw4r {
namespace lyt {
ResourceAccessor::~ResourceAccessor() {

}

ResourceAccessor::ResourceAccessor() {

}

ut::Font* ResourceAccessor::GetFont(const char*) {
return nullptr;
}
};
};

0 comments on commit 064ff91

Please sign in to comment.