Tyra - alpha 1.36.3
Open source game engine for PlayStation 2™
Dolphin sample »
Floors sample »
Report Bug
·
Request Feature
Table of Contents
About the Project
Samples
Description
Tyra is a project that aims to facilitate the development of PlayStation 2 games. The goal is simple API which will allow you to develop some nice small homebrew games in a short period of time. Finally, (thanks to PS2DEV team) Tyra supports C++20, so we are free from the 2003's GCC which only supported C++98.
Project is on alpha stage, so keep in mind that there are many things to be done and to fix.
Unfortunately there are not many people, which want's to help with this project. If you want to be a volunteer, but don't have too much knowledge in this field, write to me on Discord, I will be happy to help.
When project will be on beta stage, we plan to create some YouTube tutorials :)
Why was this project created?
PS2 development can be a big challenge.
PS2 it's pretty low-level and there are a lot of stuff that you must do from scratch.
For example, if you want to render something using only PS2DEV you must:
- Create VU1 micro-program
- Load micro-program and send it to VU1
- Create parser for your 3D file
- Create parser for texture file
- Calculate lights, shadows, MVP matrices (3D->2D)..
- Clip triangles (sic!)
- Prepare DMA packets for coprocessors communication
- Setup rasterizer (GS)
- Send texture to GS
- Send packets
- Synchronize all
but with Tyra you can do it with methods like loadObj()
and draw()
😁.
Features
- 3D support - VU1 "Path 1 rendering"
- 2D support - PNG & BMP
- Frustum culling, backface culling
- OpenGL adaptions: Perspective projection, lookAt camera
- Texture support - .bmp and png
- Mesh loaders: ".obj", ".dff" (RenderWare, GTA:SA) and ".md2" (Quake II)
- Threading support
- Animation support for obj and md2
- Audio support - .wav and .adpcm
- Pad support
Branches
- Master - monthly releases - tested on PS2 & PCSX2.
- Develop - daily builds - can be unstable.
Getting Started
Installation
Step by step tutorial here
If you need any support, feel free to ask questions on discord:
Prerequisites
- PS2 DEV environment - PS2DEV
- At least #58ffb33 PS2SDK (28.05.2021) - PS2SDK
- PS2 Emulator. For example PCSX2
Extra info
- If you want to use your own .obj file, please check "triangulate faces" in blender.
PS2 is supporting only triangle primitive type.
Roadmap
Roadmap for next master release:
See the open issues for a list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/amazing-feature
) - Commit your Changes (
git commit -m 'Add some amazing-feature'
) - Push to the Branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
Distributed under the Apache License 2.0 License. See LICENSE
for more information.
Built With
Acronyms
- EE (Emotion Engine) - whole set of processors and subsystems that make up the PlayStation 2
- GS (Graphic synthesizer) - configurable rasterizer and texture mapper. Has only 2MB~ memory for textures, but for the opposite have very high transfer rate, so you can switch textures in the blink
- VU0 - programmable (ASM) vector processor that is accessed by inline assembly code injected into C program.
- VU1 - programmable (ASM) vector processor, which is similar to vertex shader. Accessed via DMA.
- IOP - I/O processor which enables access to peripheral devices, such the game controller
Thanks
Without these guys, everything would be harder:
- Dr Henry Fortuna - for code sources
- Rick Gaiser, fjtrujy - for help and new GCC!
- Lukasz D.K. - for huge archive of PS2 stuff
- Guilherme Lampert - for code sources
- Jesper Svennevid, Daniel Collin - for openvcl's code samples
- Whole PS2DEV team
- Manieq - for nice splash screens!
- And so many other guys. Thanks!
Project Link: https://github.com/h4570/tyra
Sandro Sobczyński - sandro.sobczynski@gmail.com