{"id":13747838,"url":"https://github.com/h4570/tyra","last_synced_at":"2025-05-09T10:32:09.496Z","repository":{"id":40456722,"uuid":"307948209","full_name":"h4570/tyra","owner":"h4570","description":"Game engine for PlayStation 2™","archived":false,"fork":false,"pushed_at":"2024-10-01T17:33:18.000Z","size":5016,"stargazers_count":589,"open_issues_count":23,"forks_count":43,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-05-06T13:57:37.268Z","etag":null,"topics":["engine","framework","game","game-development","game-engine","gamedev","lib","library","playstation","playstation-2","playstation2","ps2","psx","renderer","retro"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/h4570.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-28T08:14:49.000Z","updated_at":"2025-05-01T23:57:12.000Z","dependencies_parsed_at":"2023-11-25T14:25:06.569Z","dependency_job_id":"57a2a5be-fc02-4e52-8ea1-395294bec871","html_url":"https://github.com/h4570/tyra","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h4570%2Ftyra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h4570%2Ftyra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h4570%2Ftyra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/h4570%2Ftyra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/h4570","download_url":"https://codeload.github.com/h4570/tyra/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253234178,"owners_count":21875561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["engine","framework","game","game-development","game-engine","gamedev","lib","library","playstation","playstation-2","playstation2","ps2","psx","renderer","retro"],"created_at":"2024-08-03T07:00:25.514Z","updated_at":"2025-05-09T10:32:07.120Z","avatar_url":"https://github.com/h4570.png","language":"C++","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b81ab27f1c774f839729829c9f772b1a)](https://www.codacy.com/gh/h4570/tyra/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=h4570/tyra\u0026amp;utm_campaign=Badge_Grade)\r\n[![Contributors][contributors-shield]][contributors-url]\r\n[![MIT License][license-shield]][license-url]\r\n[![Discord](https://img.shields.io/badge/discord-Tyra-brightgreen?logo=discord)](https://discord.gg/NhhTmg3Gm5)\r\n[![Discord](https://img.shields.io/badge/discord-PS2--Scene-brightgreen?logo=discord)](https://discord.gg/7dCr6ThSN5)\r\n\r\n\u003cbr /\u003e\r\n\u003cp align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/h4570/tyra\"\u003e\r\n    \u003cimg src=\"https://raw.githubusercontent.com/h4570/tyra/master/assets/github-splash.png\" alt=\"Logo\" width=\"100%\" height=\"auto\"\u003e\r\n  \u003c/a\u003e\r\n\r\n  \u003ch3 align=\"center\"\u003eTyra\u003c/h3\u003e\r\n\r\n  \u003cp align=\"center\"\u003e\r\n    Open source game engine for PlayStation 2™\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://www.youtube.com/watch?v=DGR4vWDjkmc\"\u003e\u003cstrong\u003eShowcase video »\u003c/strong\u003e\u003c/a\u003e\r\n    \u0026nbsp;\r\n    \u003ca href=\"https://youtube.com/playlist?list=PLdQVLBcXRRWvtMi-OqccDWLTEFEisD5RH\"\u003e\u003cstrong\u003eYouTube tutorials »\u003c/strong\u003e\u003c/a\u003e\r\n    \u0026nbsp;\r\n    \u003cbr /\u003e\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://github.com/h4570/tyra/issues\"\u003eReport Bug\u003c/a\u003e\r\n    ·\r\n    \u003ca href=\"https://github.com/h4570/tyra/issues\"\u003eRequest Feature\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/p\u003e  \r\n\r\n## Table of Contents  \r\n\r\n* [About the project](#about-the-project) \r\n  * [Description](#description) \r\n  * [Tutorials](#tutorials) \r\n  * [Features](#features) \r\n* [Contributing](#contributing) \r\n* [Games](#games) \r\n* [License](#license) \r\n* [Built With](#built-with) \r\n* [Acronyms](#acronyms) \r\n* [Credits](#credits) \r\n\r\n## About the Project  \r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/h4570/tyra/master/assets/tyra_code.gif\" alt=\"Sample code\" width=\"500\" height=\"auto\"\u003e  \r\n  \u003cimg src=\"https://raw.githubusercontent.com/h4570/tyra/master/assets/showcase.gif \" alt=\"Sample game\" width=\"500\" height=\"auto\"\u003e \r\n\u003c/p\u003e \r\n\r\n---\r\n### Description\r\nTyra is a project that allows you to easily create games for the PlayStation 2 console.  \r\nWhen 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.\r\nDecision 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.  \r\n**And that's what Tyra is all about.**  \r\n\r\n### Tutorials\r\n* 01 - Setup environment - [Text tutorial](https://github.com/h4570/tyra/tree/master/docs/install) or [Video](https://www.youtube.com/watch?v=9IXOU1SPdzc)\r\n* 02 - Cooking game assets - [Video](https://www.youtube.com/watch?v=hpVDeTTLyjI)\r\n* 03 - Create a game repository - [Video](https://www.youtube.com/watch?v=DKfIKar3GUM)\r\n* 04 - Run game from USB in PS2 - [Video](https://www.youtube.com/watch?v=ZX8fTQqiNho)\r\n---\r\n* 01 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/01-hello) - Hello world\r\n* 02 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/02-sprite) - 2D rendering\r\n* 03 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/03-minecraft) - 3D minecraft blocks\r\n* 04 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/04-de_dust2) - `de_dust2.obj` rendering\r\n* 05 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/05-animation) - 3D animation\r\n* 06 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/06-audio) - Background music and sound effects\r\n* 07 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/07-lighting) - Static lightmap and dynamic directional lights\r\n* 08 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/08-skybox-debug) - Skybox and debug rendering\r\n* 09 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/09-manual-mode) - Manual rendering (a'la OpenGL)\r\n* 10 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/10-sprite-sheet) - Sprite sheet (font)\r\n* 11 - [Code](https://github.com/h4570/tyra/tree/master/tutorials/11-texture-region-repeat) - Texture repeating\r\n* Demo game - [Code](https://github.com/h4570/tyra/tree/master/demo)\r\n---\r\n\r\n### Features\r\n* Docker image with Tyra, all tools and `PS2DEV` C++20 compiler\r\n* 3D rendering via `VU1` coprocessor:\r\n  * Static rendering  \r\n  * Morph animation rendering  \r\n  * Super optimized, custom minecraft block renderer  \r\n  * Debug rendering (lines, boxes, bboxes)\r\n  * Manual rendering (a'la `OpenGL`)\r\n* 2D rendering\r\n* Frustum culling:\r\n  * Simple - culling whole mesh\r\n  * Precise - culling only visible parts of mesh\r\n* Clipping:\r\n  * Standard \"fake\", but fast PS2 clipping done in `VU1`\r\n  * Software clipping done in `EE Core`\r\n* Optimized math functions via `VU0` coprocessor   \r\n* Background music and sound effects support \r\n* Pad support\r\n* USB support\r\n* Memory card support\r\n* `.wav` Audio file support\r\n* `.obj` 3D file support\r\n* `.md2` 3D file support\r\n* `.png` Texture file support\r\n\r\n## Contributing \r\n\r\nSee the [open issues](https://github.com/h4570/tyra/issues) for a list of proposed features (and known issues). \r\n\r\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. \r\n\r\n1. Fork the Project \r\n2. Create your Feature Branch (`git checkout -b feature/amazing-feature`)  \r\n3. Commit your Changes (`git commit -m 'Add some amazing-feature'`)  \r\n4. Push to the Branch (`git push origin feature/amazing-feature`)  \r\n5. Open a Pull Request  \r\n\r\n## Games\r\n\r\nList of games developed with Tyra.  \r\nIf you created one, please contact me - I will add it to the list :)\r\n\r\n* [Tyracraft](https://github.com/Wellinator/tyracraft) by [Wellinator](https://github.com/Wellinator)\r\n* [Game with car](https://github.com/freebytego/gwc-ps2) by [freebytego](https://github.com/freebytego)\r\n* [Rock, paper, scissors](https://github.com/GuidoDQR/my-ps2-game) by [GuidoDQR](https://github.com/GuidoDQR)\r\n* [TyraTale](https://github.com/Br4k2n/TyraTale) by [Br4k2n](https://github.com/Br4k2n)\r\n\r\n## License  \r\n\r\nDistributed under the Apache License 2.0 License. See `LICENSE` for more information. \r\n\r\n## Built With  \r\n\r\n* [PS2DEV](https://github.com/ps2dev/ps2dev)  \r\n* [VCLPP](https://github.com/glampert/vclpp)  \r\n* Sony VCL\r\n\r\n## Acronyms \r\n* EE (Emotion Engine) - whole set of processors and subsystems that make up the PlayStation 2 \r\n* EE Core - main PS2 CPU (c++ done here) \r\n* 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 \r\n* VU0 - programmable (ASM) vector processor that is accessed by inline assembly code injected into C program.  \r\n* VU1 - programmable (ASM) vector processor, which is similar to vertex shader. Accessed via DMA.  \r\n* IOP - I/O processor which enables access to peripheral devices, such the game controller  \r\n\r\n## Credits\r\n\r\nWithout these guys, Tyra would not happen:\r\n* [Dr Henry Fortuna](http://ps2-edu.tensioncore.com/index.html) - for code sources, PS2 academy tutorials\r\n* Whole [PS2DEV](https://github.com/ps2dev) team, and specially to [Rick Gaiser](https://github.com/rickgaiser), [fjtrujy](https://github.com/fjtrujy) - for a lot of good tips!\r\n* [Wellington Carvalho](https://github.com/Wellinator), [André Guilheme](https://github.com/Wolf3s), [Matías Israelson](https://github.com/israpps), [Guido Diego Quispe Robles](https://github.com/israpps) - for testing, contributing to Tyra and sharing cool ideas!\r\n* [Leonardo Ono](https://github.com/leonardo-ono) - for software renderer example (with clipping!)\r\n* [Lukasz D.K.](https://github.com/lukaszdk) - for huge archive of PS2 stuff\r\n* [Guilherme Lampert](https://github.com/glampert) - for code sources\r\n* [Jesper Svennevid](https://github.com/jsvennevid), [Daniel Collin](https://github.com/emoon) - for openvcl's code samples\r\n* [Manieq](https://www.facebook.com/mvnieq) - for nice splash screens!\r\n* And so many other guys. Thanks!\r\n\r\nProject Link: [https://github.com/h4570/tyra](https://github.com/h4570/tyra)  \r\nSandro Sobczyński - sandro.sobczynski@gmail.com  \r\n[![LinkedIn][linkedin-shield]](https://linkedin.com/in/sandro-sobczyński-28820b15a)  \r\n  \r\n\u003cbr /\u003e\r\n\u003ca href=\"https://github.com/h4570/tyra\"\u003e\r\n  \u003cimg src=\"https://raw.githubusercontent.com/h4570/tyra/master/assets/github-splash2.png\" alt=\"Logo\" width=\"100%\" height=\"auto\"\u003e\r\n\u003c/a\u003e\r\n\r\n[contributors-shield]: https://img.shields.io/github/contributors/h4570/tyra.svg?style=flat-square  \r\n[contributors-url]: https://github.com/h4570/tyra/graphs/contributors \r\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square\u0026logo=linkedin\u0026colorB=555  \r\n[license-shield]: https://img.shields.io/github/license/h4570/tyra.svg?style=flat-square  \r\n[license-url]: https://github.com/h4570/tyra/blob/master/LICENSE  \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh4570%2Ftyra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fh4570%2Ftyra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fh4570%2Ftyra/lists"}