Skip to content

h4570/tyra

Repository files navigation

Codacy Badge Contributors MIT License Discord Discord


Logo

Tyra

Open source game engine for PlayStation 2™
Showcase video »   YouTube tutorials »  

Report Bug · Request Feature

Table of Contents

About the Project

Sample code Sample game


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 - 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)
  • 10 - Code - Sprite sheet (font)
  • 11 - Code - Texture repeating
  • 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
  • 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

Contributing

See the open issues for a list of proposed features (and known issues).

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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/amazing-feature)
  3. Commit your Changes (git commit -m 'Add some amazing-feature')
  4. Push to the Branch (git push origin feature/amazing-feature)
  5. 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:

Project Link: https://github.com/h4570/tyra
Sandro Sobczyński - sandro.sobczynski@gmail.com
LinkedIn


Logo