[1101] | 1 | #include <tamtypes.h>
|
---|
| 2 | #include <kernel.h>
|
---|
| 3 | #include <sifrpc.h>
|
---|
| 4 | #include <stdarg.h>
|
---|
| 5 | #include <string.h>
|
---|
| 6 | #include <stdio.h>
|
---|
| 7 |
|
---|
| 8 | #include "launchelf.h"
|
---|
| 9 |
|
---|
| 10 | static SifRpcClientData_t client __attribute__((aligned(64)));
|
---|
| 11 | static int Rpc_Buffer[1024] __attribute__((aligned(64)));
|
---|
| 12 |
|
---|
| 13 | typedef struct {
|
---|
| 14 | char Partition_Name [32 + 1];
|
---|
| 15 | } Rpc_Packet_Send_GetInfo;
|
---|
| 16 |
|
---|
| 17 | typedef struct {
|
---|
| 18 | char OldName[64];
|
---|
| 19 | char NewName[64];
|
---|
| 20 | } Rpc_Packet_Send_Rename;
|
---|
| 21 |
|
---|
| 22 | int Hdl_Inited = 0;
|
---|
| 23 |
|
---|
| 24 | int Hdl_Info_BindRpc() {
|
---|
| 25 | int ret;
|
---|
| 26 | int retryCount = 0x1000;
|
---|
| 27 |
|
---|
| 28 | while(retryCount--) {
|
---|
| 29 | ret = SifBindRpc( &client, HDL_IRX, 0);
|
---|
| 30 | if ( ret < 0) {
|
---|
| 31 | printf("Hdl Info: EE Bind RPC Error.\n");
|
---|
| 32 | return -1;
|
---|
| 33 | }
|
---|
| 34 | if (client.server != 0){
|
---|
| 35 | printf("Hdl Info: EE Bind RPC Set.\n");
|
---|
| 36 | break;
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | // short delay
|
---|
| 40 | ret = 0x10000;
|
---|
| 41 | while(ret--) asm("nop\nnop\nnop\nnop");
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | Hdl_Inited = 1;
|
---|
| 45 | return retryCount;
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | int HdlGetGameInfo(char *PartName, GameInfo *Game){
|
---|
| 49 |
|
---|
| 50 | Rpc_Packet_Send_GetInfo *Packet = (Rpc_Packet_Send_GetInfo *)Rpc_Buffer;
|
---|
| 51 |
|
---|
| 52 | if(!Hdl_Inited) return -1;
|
---|
| 53 |
|
---|
| 54 | strcpy(Packet->Partition_Name, PartName);
|
---|
| 55 |
|
---|
| 56 | SifCallRpc(&client, HDL_GETINFO, 0, (void*)Rpc_Buffer, sizeof(Rpc_Packet_Send_GetInfo), (void*)Rpc_Buffer, sizeof(GameInfo)+4,0,0);
|
---|
| 57 |
|
---|
| 58 | memcpy(Game, ((void *)Rpc_Buffer)+4, sizeof(GameInfo));
|
---|
| 59 |
|
---|
| 60 | return Rpc_Buffer[0];
|
---|
| 61 | }
|
---|
| 62 |
|
---|
| 63 | int HdlRenameGame(char* OldName, char* NewName){
|
---|
| 64 |
|
---|
| 65 | Rpc_Packet_Send_Rename *Packet = (Rpc_Packet_Send_Rename *)Rpc_Buffer;
|
---|
| 66 |
|
---|
| 67 | if(!Hdl_Inited) return -1;
|
---|
| 68 |
|
---|
| 69 | strcpy(Packet->OldName, OldName);
|
---|
| 70 | strcpy(Packet->NewName, NewName);
|
---|
| 71 |
|
---|
| 72 | SifCallRpc(&client, HDL_RENAME, 0, (void*)(Rpc_Buffer), sizeof(Rpc_Packet_Send_Rename), (void*)Rpc_Buffer, 4,0,0);
|
---|
| 73 |
|
---|
| 74 | return Rpc_Buffer[0];
|
---|
| 75 | }
|
---|