Tyra
Open source game engine for PlayStation 2™
Showcase video »
YouTube tutorials »
Report Bug
·
Request Feature
Table of Contents
About the Project
Description
Tyra is a project that allows you to easily create games for the PlayStation 2 console.
When I tried to make a game for PS2 a few years ago, I realized how many things had to be done to tame this exotic console architecture.
Decision was simple - I need to create an engine which will handle 3D file loading, 2D/3D rendering, animation, audio, handling between PS2 CPUs, synchronization.. It should be simple as possible - so people with no experience can create a simple game in a few hours.
And that's what Tyra is all about.
Tutorials
- 01 - Setup environment - Text tutorial or Video
- 02 - Cooking game assets - Video
- 03 - Create a game repository - Video
- 04 - Run game from USB in PS2 - Video
- 01 - Code - Hello world
- 02 - Code - 2D rendering
- 03 - Code - 3D minecraft blocks
- 04 - Code -
de_dust2.obj
rendering - 05 - Code - 3D animation
- 06 - Code - Background music and sound effects
- 07 - Code - Static lightmap and dynamic directional lights
- 08 - Code - Skybox and debug rendering
- 09 - Code - Manual rendering (a'la OpenGL)
- Demo game - Code
Features
- Docker image with Tyra, all tools and
PS2DEV
C++20 compiler - 3D rendering via
VU1
coprocessor:- Static rendering
- Morph animation rendering
- Super optimized, custom minecraft block renderer
- Debug rendering (lines, boxes, bboxes)
- Manual rendering (a'la
OpenGL
)
- 2D rendering
- Frustum culling:
- Simple - culling whole mesh
- Precise - culling only visible parts of mesh
- Clipping:
- Standard "fake", but fast PS2 clipping done in
VU1
- Software clipping done in
EE Core
- Standard "fake", but fast PS2 clipping done in
- Optimized math functions via
VU0
coprocessor - Background music and sound effects support
- Pad support
- USB support
- Memory card support
.wav
Audio file support.obj
3D file support.md2
3D file support.png
Texture file support
Branches
master
- stable releases - tested on PS2 & PCSX2.develop
- daily builds.
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
Games
List of games developed with Tyra.
If you created one, please contact me - I will add it to the list :)
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
- EE Core - main PS2 CPU (c++ done here)
- 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
Credits
Without these guys, Tyra would not happen:
- Dr Henry Fortuna - for code sources, PS2 academy tutorials
- Whole PS2DEV team, and specially to Rick Gaiser, fjtrujy - for a lot of good tips!
- Wellington Carvalho, André Guilheme - for testing, contributing to Tyra and sharing cool ideas!
- Leonardo Ono - for software renderer example (with clipping!)
- Lukasz D.K. - for huge archive of PS2 stuff
- Guilherme Lampert - for code sources
- Jesper Svennevid, Daniel Collin - for openvcl's code samples
- Manieq - for nice splash screens!
- And so many other guys. Thanks!
Project Link: https://github.com/h4570/tyra
Sandro Sobczyński - [email protected]