Join Us and become a Member for a Verified Badge to access private areas with the latest PS4 PKGs.
Status
Not open for further replies.
On this Christmas Day 2023 PS4 Scene homebrew developer @marcussacana aka DdtankAndr on Twitter released a FridayNightFunkin PS4 PKG game port alongside an OrbisGL GUI Framework (Graphical User Interface) for PlayStation 4 including an OrbisGL Homebrew Template for those interested in creating PS4 homebrew with Visual Studio. :geek:

Download: IV0000-BREW01859_00-MARCUSSACANA0000.pkg (1.11 GB) / assets.zip (1008.84 MB) / FridayNightFunkin GIT / OrbisGL.Homebrew.Template.7z (63.2 MB) / OrbisGL GUI Framework GIT

This release comes following the PS4 Skeleton Base PKG Homebrew, PSTools PS4 Unity Base to Create Homebrew, his DirectPackageInstaller Tool to Preview & Send PS4 PKGs and PS4 OpenOrbis Mono Entrypoint for Homebrew with SDL2 & OrbisGL Library that doesn't require Unity nor the previous PlayStation DevKit leaks.

From the FridayNightFunkin README.md: Friday Night Funkin PS4

This is the repository for Friday Night Funkin PS4 Port, a game originally made for Ludum Dare 47 "Stuck In a Loop".
Credits / Shoutouts
This game was made with love to Newgrounds and its community. Extra love to Tom Fulp.

Installation
Build instructions
  • Install the Visual Studio
  • Install the OpenOrbis ***
  • Setup the OpenOrbis *** Environment variable "OO_PS4_TOOLCHAIN"
  • Clone this repo with those commands:
Code:
git clone https://github.com/marcussacana/FridayNightFunkin
git submodule init
git submodule update --init --recursive
  • Download the game assets here: assets.zip
  • Place the assets (without extract) at "assets\misc"
  • Open the "Developer Command Prompt for VS 2022"
  • Run in this project root directory the command
Code:
build-windows release
Initial Public Build

Pre-release
  • Currently up week 6 implemented
  • this is an pre-release, expect some minor bugs
  • the next update it will take a while since I spent the entire year in this game already.
And from the OrbisGL README.md: OrbisGL

OrbisGL is an Open Source graphical user interface framework that facilitates the development of PS4 Homebrews using solely the C# and OpenGL.This framework encompasses functionalities for rendering fundamental geometric shapes, text, audio playback, and input processing (keyboard, mouse, and DualShock).

Folders
  • GLTest: Contains an functional project intended for testing and debugging the library directly on Windows, albeit without support for DualShock input and audio output.
  • ImageSharp: Dependency responsible for image decoding.
  • OrbisGL: Contains the framework itself
  • SharpGLES: Dependency adapted to enable compatibility with the PS4, integrating OrbisGL with OpenGL.
Cloning

To download this project and build it, you will need to initialize the submodules as well, this can be done like this:
Code:
git clone https://github.com/marcussacana/OrbisGL
git submodule init
git submodule update --init --recursive
Building
  • Clone the repository as shown in Cloning
  • Open the OrbisGL.sln project with Visual Studio or JetBrains Rider (Recommended)
  • Restore the Nuget Packages
  • Build it!
Getting Started
  • Build the OrbisGL as show in Building
  • Create a new empty C# Project
  • Add ObisGL as Reference into your project
  • Create an new class that derivates the OrbisGL.GL.Application class
Code:
using OrbisGL;
using OrbisGL.GL;
public namespace MyHomebrew {
public class Entrypoint : Application {
//Initialize the OrbisGL with resolution of 1920x1080p60
public Entrypoint() : base(1920, 1080, 60) {
}
}
}
  • The input methods are all disabled by default, you should initialize it early before create any object in your application
Code:
public Entrypoint() : base(1920, 1080, 60)
{
//Enable keyboard input
EnableKeyboard();

//Enable mouse Input
//EnableMouse();

//Enable Dualshock 4 Input
EnableDualshock(new DualshockSettings()
{
//When true, Left Analog moves are mapped to pad buttons
LeftAnalogAsPad = true,
//When true, the pad buttons will act as a focus selector
PadAsSelector = true,
///When set, the Touchpad may be used as an Virtual Mouse
Mouse = VirtualMouse.Touchpad
});
}
  • Now the OpenGL and Input are ready, you may start creating the controllers
Code:
public Entrypoint() : base(1920, 1080, 60)
{
//... Initialize Environment
InitializeComponents();
}

private void InitializeComponents(){
//Creates an Panel with the screen size
var BG = new Panel(1920, 1080);
//This panel will be our root controller
//and will act as an Background as well.
 
//This will create a button:
var BtnHW = new Button(200, 20, 28);
BtnHW.Text = "Hello World";
//The constructor parameters of the button specify that
//the button will have a length of 200px, a height of 20px,
//and a font size of 28.
 
//Assign an event for this button,
BtnHW.OnClicked += (s, a) => { /* BUTTON CLICKED */ };
//There are three analogous events: OnKeyDown, OnMouseClick, and
//OnButtonPressed. The distinction lies in the fact that each of these events is
//triggered exclusively by a specific input method – keyboard, mouse, or DualShock,
//respectively. This stands in contrast to OnClicked, which can be activated by any
//input method.
 
//This will set the button's position coordinates
//to X=20 and Y=30. These coordinates are always
//relative to the parent control.
BtnHW.Position = new System.Numerics.Vector2(20, 30);


//This command will cause the previously created
//button to become a child of the "BG" control.
BG.AddChild(BtnHW);

//The AddObject is a method inherent to the Application class
//from which we previously derived. It can be invoked to append
//controls or graphical objects to the list of items intended for rendering.
AddObject(BG);
//Objects derived from the "Control" class automatically receive
//input events when activated. On the other hand, "GLObject2D"
//objects are treated as non-interactive visual items and do
//not inherently receive any input events.
}
  • Once everything is configured, you need to invoke the Run method, which initializes the main application event loop. You can call this method by simply creating an instance of the class you derived from Application and then invoking the Run(); method at the entry point of your project.
Code:
//Program.cs

//If you are using the PS4-OpenOrbis-Mono project
//currently the program entrypoint is allways the
//Orbis.Program.Main method, and not the executable
//entrypoint, So your entrypoint code should look
//exactly like this:
namespace Orbis
{
public static class Program
{
public static void Main(string[] args)
{
var Display = new Entrypoint();
Display.Run();
}
 
}
}
OrbisGL Execution Workflow
Credits
Initial Release

Merry Christmas! 🎅

It is with great enthusiasm that I am today releasing OrbisGL in its initial version. This "Homebrew Template" is a simplified version that includes the necessary binaries for compilation on Windows, excluding Visual Studio. This means that all you need to create your PS4 homebrew now is to have Visual Studio installed and this file extracted to a location of your preference.

To make it work, you need to launch the "Developer Command Prompt for VS 2022" and within the extracted template folder, execute one of the following commands:
  • Build-Windows debug
    • Compiles a pkg build for debugging. When launching the application, it will freeze until the debugger is connected to port 2222.
  • Build-Windows release
    • Compiles a pkg build for publication.
  • Build-Windows remote_debug
    • Compiles a project build for remote debugging through itemzflow. An NFSv3 server will be initiated, and you need to configure itemzflow to connect. Upon launching the application, it will also wait for a debugger connection on the same port 2222.
  • Build-Windows clear
    • Clears compilation residues from the folder.
PS: The commands are case-sensitive so take care!
FridayNightFunkin PS4 PKG, OrbisGL GUI Framework & Homebrew Template.jpg
 

Comments

Very interesting. There were even people trying to port Friday Night Funkin to the original PSX (don't know the game, so have no idea why it is such a popular target to port).
 
Status
Not open for further replies.
Back
Top