-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
32195db
commit b5c3322
Showing
27 changed files
with
14,692 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
cmake_minimum_required(VERSION 2.8) | ||
|
||
if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) | ||
if(DEFINED ENV{VITASDK}) | ||
set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE PATH "toolchain file") | ||
else() | ||
message(FATAL_ERROR "Please define VITASDK to point to your SDK path!") | ||
endif() | ||
endif() | ||
|
||
project(PoppyKart C CXX) | ||
include("${VITASDK}/share/vita.cmake" REQUIRED) | ||
set(VITA_APP_NAME "Poppy Kart Collection") | ||
set(VITA_TITLEID "POPPYKART") | ||
set(VITA_MKSFOEX_FLAGS "-d ATTRIBUTE2=12") | ||
|
||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wl,-q,--wrap,memcpy,--wrap,memmove,--wrap,memset,--allow-multiple-definition -Wall -O3 -fdiagnostics-color=always -fno-optimize-sibling-calls -mfloat-abi=softfp") | ||
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=c++11 -Wno-write-strings") | ||
|
||
add_executable(PoppyKart | ||
loader/main.c | ||
loader/dialog.c | ||
loader/so_util.c | ||
loader/sha1.c | ||
loader/ctype_patch.c | ||
) | ||
|
||
target_link_libraries(PoppyKart | ||
-Wl,--whole-archive pthread -Wl,--no-whole-archive | ||
SDL2_mixer | ||
SDL2_image | ||
SDL2_ttf | ||
SDL2_net | ||
freetype | ||
SDL2 | ||
png | ||
webp | ||
jpeg | ||
mikmod | ||
z | ||
m | ||
stdc++ | ||
opensles | ||
sndfile | ||
vorbis | ||
vorbisenc | ||
vorbisfile | ||
ogg | ||
FLAC | ||
openal | ||
imgui | ||
vitaGL | ||
vitashark | ||
SceShaccCgExt | ||
mathneon | ||
mpg123 | ||
taihen_stub | ||
kubridge_stub | ||
SceNet_stub | ||
SceNetCtl_stub | ||
SceAppMgr_stub | ||
SceAppUtil_stub | ||
SceAudio_stub | ||
SceAudioIn_stub | ||
SceCtrl_stub | ||
SceCommonDialog_stub | ||
SceDisplay_stub | ||
SceFios2_stub | ||
SceGxm_stub | ||
SceIme_stub | ||
SceLibcBridge_stub | ||
SceShaccCg_stub | ||
SceSysmodule_stub | ||
ScePower_stub | ||
SceTouch_stub | ||
SceMotion_stub | ||
SceHid_stub | ||
SceVshBridge_stub | ||
SceKernelDmacmgr_stub | ||
) | ||
|
||
|
||
add_executable(companion | ||
selector/main.c | ||
loader/dialog.c | ||
) | ||
|
||
target_link_libraries(companion | ||
-Wl,--whole-archive pthread -Wl,--no-whole-archive | ||
SDL2_mixer | ||
SDL2_image | ||
SDL2 | ||
png | ||
webp | ||
jpeg | ||
mikmod | ||
z | ||
m | ||
stdc++ | ||
opensles | ||
sndfile | ||
vorbis | ||
vorbisenc | ||
vorbisfile | ||
ogg | ||
FLAC | ||
openal | ||
imgui | ||
vitaGL | ||
vitashark | ||
SceShaccCgExt | ||
mathneon | ||
mpg123 | ||
taihen_stub | ||
kubridge_stub | ||
SceAppMgr_stub | ||
SceAppUtil_stub | ||
SceAudio_stub | ||
SceAudioIn_stub | ||
SceCtrl_stub | ||
SceCommonDialog_stub | ||
SceDisplay_stub | ||
SceFios2_stub | ||
SceGxm_stub | ||
SceLibcBridge_stub | ||
SceShaccCg_stub | ||
SceSysmodule_stub | ||
ScePower_stub | ||
SceTouch_stub | ||
SceMotion_stub | ||
SceHid_stub | ||
SceVshBridge_stub | ||
SceKernelDmacmgr_stub | ||
) | ||
|
||
vita_create_self(eboot.bin companion UNSAFE) | ||
|
||
vita_create_self(game.bin PoppyKart UNSAFE) | ||
vita_create_vpk(PoppyKart.vpk ${VITA_TITLEID} eboot.bin | ||
VERSION ${VITA_VERSION} | ||
NAME ${VITA_APP_NAME} | ||
FILE ${CMAKE_SOURCE_DIR}/sce_sys/icon0.png sce_sys/icon0.png | ||
${CMAKE_SOURCE_DIR}/sce_sys/livearea/contents/bg0.png sce_sys/livearea/contents/bg0.png | ||
${CMAKE_SOURCE_DIR}/sce_sys/livearea/contents/die.png sce_sys/livearea/contents/die.png | ||
${CMAKE_SOURCE_DIR}/sce_sys/livearea/contents/template.xml sce_sys/livearea/contents/template.xml | ||
${CMAKE_SOURCE_DIR}/images/game1.png images/game1.png | ||
${CMAKE_SOURCE_DIR}/images/game2.png images/game2.png | ||
${CMAKE_SOURCE_DIR}/settings.cfg settings.cfg | ||
${CMAKE_BINARY_DIR}/game.bin game.bin | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
# Poppy Kart Collection | ||
|
||
<p align="center"><img src="./screenshots/game.png"></p> | ||
|
||
This is a wrapper/port of <b>Poppy Kart</b> and <b>Poppy Kart 2</b> for the *PS Vita*. | ||
|
||
The port works by loading the official Android ARMv7 executables in memory, resolving their imports with native functions and patching them in order to properly run. | ||
By doing so, it's basically as if we emulate a minimalist Android environment in which we run natively the executables as they are. | ||
|
||
## Changelog | ||
|
||
### v1.0 | ||
|
||
- Initial Release. | ||
|
||
## Disclaimer | ||
|
||
The game has a memleak in music freeing. Playing the game for extensive periods may cause a crash. | ||
|
||
## Setup Instructions (For End Users) | ||
|
||
This port supports Poppy Kart and Poppy Kart 2. <b>The instructions reported here will follow how to install Poppy Kart</b>. | ||
|
||
In order to install Poppy Kart 2, just follow the same instructions but, when in the guide the folder `game1` is referred, change it to `game2`. | ||
|
||
- Install [kubridge](https://github.com/TheOfficialFloW/kubridge/releases/) and [FdFix](https://github.com/TheOfficialFloW/FdFix/releases/) by copying `kubridge.skprx` and `fd_fix.skprx` to your taiHEN plugins folder (usually `ux0:tai`) and adding two entries to your `config.txt` under `*KERNEL`: | ||
|
||
``` | ||
*KERNEL | ||
ux0:tai/kubridge.skprx | ||
ux0:tai/fd_fix.skprx | ||
``` | ||
|
||
**Note** Don't install fd_fix.skprx if you're using rePatch plugin | ||
|
||
- **Optional**: Install [PSVshell](https://github.com/Electry/PSVshell/releases) to overclock your device to 500Mhz. | ||
- Install `libshacccg.suprx`, if you don't have it already, by following [this guide](https://samilops2.gitbook.io/vita-troubleshooting-guide/shader-compiler/extract-libshacccg.suprx). | ||
- Obtain your copy of *Poppy Kart* legally for Android in form of an `.apk` file. [You can get all the required files directly from your phone](https://stackoverflow.com/questions/11012976/how-do-i-get-the-apk-of-an-installed-app-without-root-access) or by using an apk extractor you can find in the play store. The apk can be extracted with whatever Zip extractor you prefer (eg: WinZip, WinRar, etc...) since apk is basically a zip file. You can rename `.apk` to `.zip` to open them with your default zip extractor. | ||
- Open the apk with your zip explorer and extract the file `libmain.so` from the `lib/armeabi-v7a` folder to `ux0:data/poppykart/game1`. | ||
- Extract the `assets` folder inside `ux0:data/poppykart/game1`. | ||
|
||
## Full game support | ||
|
||
Full game mode for both games can be enabled by editing a config file named `settings.cfg` located inside `ux0:app/POPPYKART`. | ||
We strongly encourage to enable support for these contents solely if you purchased them on your Android device. | ||
Sadly, we have no way to propose a license check on Vita against your purchased in-game contents on Android, so show respect and support *webrox* first before proceeding. | ||
Open the file `ux0:app/POPPYKART/settings.cfg` and change `enable_dlcs=0` to `enable_dlcs=1`. | ||
|
||
## Build Instructions (For Developers) | ||
|
||
In order to build the loader, you'll need a [vitasdk](https://github.com/vitasdk) build fully compiled with softfp usage. | ||
You can find a precompiled version here: https://github.com/vitasdk/buildscripts/actions/runs/1102643776. | ||
Additionally, you'll need these libraries to be compiled as well with `-mfloat-abi=softfp` added to their CFLAGS: | ||
|
||
- [SDL2_vitagl](https://github.com/Northfear/SDL/tree/vitagl) | ||
|
||
- [libmathneon](https://github.com/Rinnegatamante/math-neon) | ||
|
||
- ```bash | ||
make install | ||
``` | ||
|
||
- [vitaShaRK](https://github.com/Rinnegatamante/vitaShaRK) | ||
|
||
- ```bash | ||
make install | ||
``` | ||
|
||
- [kubridge](https://github.com/TheOfficialFloW/kubridge) | ||
|
||
- ```bash | ||
mkdir build && cd build | ||
cmake .. && make install | ||
``` | ||
|
||
- [vitaGL](https://github.com/Rinnegatamante/vitaGL) | ||
|
||
- ````bash | ||
make SOFTFP_ABI=1 NO_DEBUG=1 install | ||
```` | ||
|
||
After all these requirements are met, you can compile the loader with the following commands: | ||
|
||
```bash | ||
mkdir build && cd build | ||
cmake .. && make | ||
``` | ||
|
||
## Credits | ||
|
||
- TheFloW for the original .so loader. | ||
- CatoTheYounger for the screenshots and for testing the homebrew. | ||
- Northfear for the SDL2 fork with vitaGL as backend. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#ifndef __CONFIG_H__ | ||
#define __CONFIG_H__ | ||
|
||
//#define DEBUG | ||
|
||
#define LOAD_ADDRESS 0x98000000 | ||
|
||
#define MEMORY_NEWLIB_MB 256 | ||
#define MEMORY_VITAGL_THRESHOLD_MB 8 | ||
|
||
#define SCREEN_W 960 | ||
#define SCREEN_H 544 | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
#include <stdio.h> | ||
#include <ctype.h> | ||
|
||
const char __BIONIC_ctype_[257] = {0, | ||
_C, _C, _C, _C, _C, _C, _C, _C, | ||
_C, _C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, | ||
_C, _C, _C, _C, _C, _C, _C, _C, | ||
_C, _C, _C, _C, _C, _C, _C, _C, | ||
_S|_B, _P, _P, _P, _P, _P, _P, _P, | ||
_P, _P, _P, _P, _P, _P, _P, _P, | ||
_N, _N, _N, _N, _N, _N, _N, _N, | ||
_N, _N, _P, _P, _P, _P, _P, _P, | ||
_P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, | ||
_U, _U, _U, _U, _U, _U, _U, _U, | ||
_U, _U, _U, _U, _U, _U, _U, _U, | ||
_U, _U, _U, _P, _P, _P, _P, _P, | ||
_P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, | ||
_L, _L, _L, _L, _L, _L, _L, _L, | ||
_L, _L, _L, _L, _L, _L, _L, _L, | ||
_L, _L, _L, _P, _P, _P, _P, _C, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0, | ||
0, 0, 0, 0, 0, 0, 0, 0 | ||
}; | ||
|
||
const short __BIONIC_tolower_tab_[257] = {EOF, | ||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | ||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | ||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, | ||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, | ||
0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', | ||
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, | ||
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, | ||
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, | ||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, | ||
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, | ||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, | ||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, | ||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, | ||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, | ||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, | ||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff | ||
}; | ||
|
||
const short __BIONIC_toupper_tab_[257] = {EOF, | ||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, | ||
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, | ||
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, | ||
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, | ||
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, | ||
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, | ||
0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', | ||
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, | ||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, | ||
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, | ||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, | ||
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, | ||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, | ||
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, | ||
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, | ||
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff | ||
}; | ||
|
||
const char *BIONIC_ctype_ = &__BIONIC_ctype_[0]; | ||
const short *BIONIC_tolower_tab_ = &__BIONIC_tolower_tab_[0]; | ||
const short *BIONIC_toupper_tab_ = &__BIONIC_toupper_tab_[0]; |
Oops, something went wrong.