Browse Source

Add vita tcp network support

pull/3184/head
Ivan Epifanov 4 years ago committed by Anders Jenbo
parent
commit
8e6f511d6c
  1. 2
      CMake/vita_defs.cmake
  2. 4
      CMakeLists.txt
  3. 8
      Source/main.cpp
  4. 32
      Source/platform/vita/network.cpp
  5. 3
      Source/platform/vita/network.h
  6. 34
      Source/platform/vita/random.cpp
  7. 2
      Source/platform/vita/random.hpp

2
CMake/vita_defs.cmake

@ -1,5 +1,5 @@
set(ASAN OFF)
set(UBSAN OFF)
set(NONET ON)
set(DISABLE_ZERO_TIER ON)
set(PREFILL_PLAYER_NAME ON)
add_definitions("-DMO_LANG_DIR=\"app0:/\"")

4
CMakeLists.txt

@ -533,6 +533,8 @@ endif()
if(VITA)
list(APPEND libdevilutionx_SRCS
Source/platform/vita/random.cpp
Source/platform/vita/network.cpp
Source/platform/vita/keyboard.cpp
Source/platform/vita/touch.cpp)
endif()
@ -937,6 +939,8 @@ if (VITA)
target_link_libraries(libdevilutionx PUBLIC
ScePower_stub
SceAppUtil_stub
SceNet_stub
SceNetCtl_stub
)
target_compile_definitions(libdevilutionx PUBLIC VITA)
endif()

8
Source/main.cpp

@ -6,6 +6,10 @@
#ifdef __3DS__
#include "platform/ctr/system.h"
#endif
#ifdef __vita__
#include "platform/vita/network.h"
#include "platform/vita/random.hpp"
#endif
#ifdef GPERF_HEAP_MAIN
#include <gperftools/heap-profiler.h>
#endif
@ -32,6 +36,10 @@ int main(int argc, char **argv)
#ifdef __3DS__
ctr_sys_init();
#endif
#ifdef __vita__
vita_enable_network();
randombytes_vitarandom_init();
#endif
#ifdef GPERF_HEAP_MAIN
HeapProfilerStart("main");
#endif

32
Source/platform/vita/network.cpp

@ -0,0 +1,32 @@
#include <cstdlib>
#include <cstdio>
#include <unistd.h>
#include "platform/vita/network.h"
#include <psp2/sysmodule.h>
#include <psp2/net/net.h>
#include <psp2/net/netctl.h>
void vita_enable_network()
{
SceNetInitParam param;
static char memory[64 * 1024];
int ret;
ret = sceSysmoduleLoadModule(SCE_SYSMODULE_NET);
if (ret < 0) {
return;
}
param.memory = memory;
param.size = sizeof(memory);
param.flags = 0;
ret = sceNetInit(&param);
if (ret < 0) {
return;
}
ret = sceNetCtlInit();
if (ret < 0) {
return;
}
}

3
Source/platform/vita/network.h

@ -0,0 +1,3 @@
#pragma once
void vita_enable_network();

34
Source/platform/vita/random.cpp

@ -0,0 +1,34 @@
#include <sys/types.h>
#include <sodium.h>
#include <psp2/kernel/rng.h>
static const char *randombytes_vitarandom_implementation_name()
{
return "vitarandom";
}
static uint32_t randombytes_vitarandom()
{
uint32_t num;
sceKernelGetRandomNumber(&num, sizeof(uint32_t));
return num;
}
static void randombytes_vitarandom_buf(void *const buf, const size_t size)
{
sceKernelGetRandomNumber(buf, size);
}
struct randombytes_implementation randombytes_vitarandom_implementation = {
randombytes_vitarandom_implementation_name,
randombytes_vitarandom,
nullptr,
nullptr,
randombytes_vitarandom_buf,
nullptr
};
void randombytes_vitarandom_init()
{
randombytes_set_implementation(&randombytes_vitarandom_implementation);
}

2
Source/platform/vita/random.hpp

@ -0,0 +1,2 @@
#pragma once
void randombytes_vitarandom_init();
Loading…
Cancel
Save