Pigs In A Blanket Vita

From GameBrew
Pigs in a Blanket
Pigsinablanketvita2.png
General
AuthorSonicMastr
TypeDevelopments
Version2.0
LicenseLGPL-3.0
Last Updated2020/12/09
Links
Download
Website
Source

A Piglet/ShaccCg Wrapper Library for OpenGL ES 2.0 Support on the Vita. Now with System App and Experimental MSAAx4 Support.

This library is a developer focused wrapper which provides easy initialization and expandability, with some quality of life features, including supporting resolutions up to 1920x1080 native on the Playstion TV, and on the Vita with Sharpscale. Developers can choose make their applications with one resolution in mind, as all long as the code is made to scale by dimension, PIB will handle the rest with it's companion app, the PIB Configuration Tool Pigs in a Blanket Configuration Tool], which allows the user to specify their own preference of resultion that will automatically override the original settings. For more information about Piglet, you can check out our information about it on the forum post.

Note: Development Halted - Superceded by PVR_PSP2.

Compiling

With VDSuite

  • Install VDSuite
  • Install Taihen
  • Run cmake . -Bbuild -G Ninja (Recommend Ninja)
  • cd build and ninja install
  • Link libpib.a in your projects

With VitaSDK

  • Install VitaSDK
  • Run vdpm taihen to install libtaihen_stub
  • Run make -j4 install USE_VITASDK=1
  • Link libpib.a in your projects

Note when building your projects:

Always compile your project with unsafe. Doing otherwise will result in PIB failing.

With VitaSDK you can specify the SceLibc heap size by defining sceLibcHeapSize in your code:

unsigned int sceLibcHeapSize = 2 * 1024 * 1024;

Piglet needs an SceLibc heap size of at least 2MB to intialize. Without it, the module will fail to start. This heap needs to be larger if using -nostdlib as this becomes your main heap. More info on -nostdlib support in the headers.

You'll need to link your program with:

  • libpib.a
  • liblibScePiglet_stub.a
  • libSceShaccCg_stub.a
  • libtaihen_stub.a
  • libSceAppMgr_stub.a

For DolceSDK, you'll also need:

  • libSceSharedFb_stub.a
  • libSceGxmInternalForVsh_stub.a
  • libSceGxmInternal_stub.a

Check the "Samples" folder for examples of how to use PIB to initialize OpenGLES 2.0 with EGL or GLFW (GLFW3 port for the vita).

Note: Button mapping is perfect and there's full touchscreen support.

To install Piglet on your Vita, just use the Pigs in a Blanket Configuration Tool.

User guide

Supported Extensions

GL EGL
GL_EXT_draw_instanced EGL_SCE_piglet_sync
GL_EXT_instanced_arrays EGL_SCE_piglet_vita_pre_swap_callback
GL_SCE_piglet_shader_binary EGL_SCE_piglet_vita_vsync_callback
GL_SCE_texture_resource
GL_OES_texture_npot
GL_OES_rgb8_rgba8
GL_OES_depth_texture
GL_EXT_texture_format_BGRA8888
GL_EXT_read_format_bgra
GL_OES_texture_half_float
GL_OES_texture_half_float_linear
GL_OES_vertex_half_float
GL_OES_element_index_uint
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_dxt3
GL_EXT_texture_compression_dxt5
GL_EXT_texture_compression_s3tc
GL_EXT_texture_storage
GL_IMG_texture_compression_pvrtc

Screenshots

Piglet
pigsinablanketvita3.png

PSM
pigsinablanketvita4.png

Credits

Special Thanks:

  • GrapheneCt - Finding the Piglet Module and being a main part of the Project in reverse engineering and testing.
  • dots-tb - Initial idea of using PSM and efforts in getting all of the names for Piglet, as well as being a main part of the Project in reverse engineering and testing.
  • cuevavirus - Help with debugging and sense of direction.
  • CreepNT - Help with debugging.
  • Princess-of-Sleeping - Dump tool and PrincessLog.
  • xyzz - Initial deep dive into how ShaccCg works.
  • Zer0xFF and masterzorag - Their amazing work on the PS4 Piglet reverse engineering.

GLSL to CG Conversion Resources:

This requires both libshacccg.suprx and libScePiglet.suprx to be located in ur0:data/external

Changelog

v2.0

What's new?

  • System Application Support.
  • Fully Enabled Sony EGL Extensions (Common Dialog Support).
  • MSAA x4 Support.

Bugfixes:

  • Fixed incorrect usage of EGL 1.5's eglGetProcAddresss. Using EGL 1.5 features now has to be manually enabled using the PIB_GET_PROC_ADDR_CORE flag.
  • Fixed glGetBooleanv always returning GL_FALSE when using GL_SHADER_COMPILER as the symbolic constant and ShaccCg is enabled.
  • Fixed eglSwapInterval would always be locked to 1 no matter what value was entered.
  • Fixed Libc and FIOS2 always attempting to be started no matter what.
  • Fixed ability to double initialize/terminate.

v1.1

  • First Release.

External links

Advertising: