Giter VIP home page Giter VIP logo

opentri's Introduction

openTri

openTRI is a game engine for the Playstation Portable (PSP)

Coded by Tomaz, Raphael, InsertWittyName

See http://forums.qj.net/psp-development-forum/128874-release-triengine-full-featured-game-engine.html for original release post.

NOTE

This repository is not actively maintained. If anyone feels like it and is interested, I will give commit rights. I will also occasionally take PRs into consideration and merge them.

See also https://github.com/SamRH/openTRI which seems to contain a few small fixes. I'd be happy to merge a PR containing the changes from there.

Homebrew built with triEngine

Geometry Wars - http://www.neoflash.com/forum/index.php/topic,5322.0.html

LuaPlayer HomeMister v2 (LPHMv2) - http://forums.qj.net/showpost.php?p=2102549&postcount=100

PDF reader application - https://web.archive.org/web/20111130000918/http://forums.ps2dev.org:80/viewtopic.php?t=10845

Mudkip Adventures - https://github.com/albe/mudkip-adventures

(see also https://web.archive.org/web/20111130041704/http://www.fx-world.org:80/wordpress/?p=55)

FEATURE LIST

triGraphics:

  • GU setup (all possible pixelformats)/Doublebuffering functionality
  • Primitive drawing (lines, outlined/solid/gradient rect, rotated solid rect, solid/outlined/gradient circle, filled/outlined/gradient triangle, solid/gradient star)
  • Image drawing (rotated and non-rotated)
  • Color ops (and/or/not etc. see pspgu.h for a full list ;P)
  • Image tinting (through the sceGuTexFunc functionality)
  • Constant alpha for images
  • Control blend modes
  • Colorkeying
  • Clipping windows
  • Image animation (concated images/spritesheets) drawing (normal and rotated)
  • Full render to image functionality
  • Basic render to texture functionality (more complete renderbuffer functionality in tri3d)

Images:

  • load PNG (all formats), TGA (all formats), own format (supports mipmaps, animation, palettes and different compressions like RLE and GZIP)
  • load and draw huge images (>512x512)
  • save PNG (with/without alpha), TGA (with/without RLE compression, with/without alpha), own format
  • supports paletted images as well as all other PSP formats (4444,5551,5650,DXT1/3/5)
  • swizzle/unswizzle images, upload images to VRAM/download to RAM
  • Image animation control (set loops, start, pause, reset, update)
  • Load images animations as spritesheets from any supported format
  • Capture framebuffer into image struct for saving (screenshots) or other use
  • all image loads are refcounted (no double images in RAM)

Fonts:

  • based on pgeFont, loads any TTF/OTF font and creates a bitmap font, useable for printing text very fast

tri3d:

  • Setup 3D mode (perspective/ortho) with depth buffer
  • Pseudo Fullscreen Anti-Aliasing
  • Smooth Dithering (for 16bit render modes)
  • Renderbuffer interface - create renderbuffers, set renderbuffer as rendertarget or texture
  • Set framebuffer as rendertarget or texture
  • Set depthbuffer as texture (with support for a color ramp [palette] to map depth values to colors)
  • A couple of high performance rendertarget convolution (blur) filters (up to 9x9)
  • A quaternion based camera object with keyframing support
  • An OpenGL style texture manager keeping most frequently used textures in VRAM with automatic mipmap generation and prioritizing textures to stay in VRAM
  • A highly flexible particle engine supporting billboards, real 3D particles and line particles. Support for different particle interactions (bind to emitter, global force function (all particles), local force function (per particle), vortices (turbulences)) as well as different blend modes for the particles and up to 8 color/alpha fades during lifetime, giving a simple non-linear control of particle looks, also supports growing particles, selfrotation, glitter, global gravity, wind, emitter burnout and animated particle textures, plus all that can be driven by simple scripts so you can change particle systems without having to recompile your code!
  • simple model management/rendering
  • custom model file format in native PSP GU structure with optional compression (See https://github.com/prochazkaml/openTriConverter by @prochazkaml for a convenient converter)

triAudio:

  • support for AT3 playback for background music (using ME)
  • support for WAV playback for sound effects

triNet:

  • support for connecting to sockets as client/server

generic libraries:

  • VRAM memory manager
  • generic fast memory manager for object heaps
  • stream interface with buffered streams layer and asynchronous buffered file reader for higher performance Memstick reading, as well as support for (zlib) compressed streams that are decompressed on the go
  • a high performance memcpy through VFPU usage (https://github.com/albe/openTri/blob/master/src/streams/streams.c#L22)
  • VMath, VFPU Vector/Matrix math library
  • pmplib for decoding videos (AVC+MP3/AAC/AT3) with support for fullscreen playback (intro videos) or giving control over how the video gets displayed (ingame videos that can be used as additional briefing incoming or be displayed on 3D objects as texture)

opentri's People

Contributors

albe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

psp-archive

opentri's Issues

.trim model format specification

Hi! I've stumbled upon your project, and after compiling the "models" test, it's quite impressive work!

I've read in some old forum post that this uses a custom model format tailored specifically for PSP hardware. Other than reading through the entire source code and trying to make the sense of it, is there at least a public specification of this file format? I'd have no problem writing a custom converter for it if it was available (STL is quite simple to parse, it's just ASCII text containing coordinates of vertices - texture mapping will be hell, but I'm not trying to focus on that right now, I'm just want to do something with the library).

I mean, if you already have some model converter, that would be ideal, but a bare file format spec would be enough. Without it, this project is not really of much use other than 2D stuff.

Build error on Ubuntu 18.04

Any way to fix this?

triTexman.c: In function ‘triNearestColorIndex’:
triTexman.c:820:1: error: unrecognizable insn:
}
^
(insn 237 236 238 37 (set (reg:SI 477)
(if_then_else:SI (ne:CC (reg:CC 67 $fcc0)
(const_int 0 [0]))
(reg/v:SI 281 [ minIndex ])
(reg/v:SI 265 [ minIndex ]))) -1
(nil))
triTexman.c:820:1: internal compiler error: in extract_insn, at recog.c:2202
0x55a60313223a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
../../gcc/rtl-error.c:109
0x55a60313226d _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
../../gcc/rtl-error.c:117
0x55a6030ffb83 extract_insn(rtx_def*)
../../gcc/recog.c:2202
0x55a602fca7e9 instantiate_virtual_regs_in_insn
../../gcc/function.c:1559
0x55a602fca7e9 instantiate_virtual_regs
../../gcc/function.c:1925
0x55a602fca7e9 execute
../../gcc/function.c:1975

PMP video hangs after finishing

Using SDL 1.2 (from the PSPSDK) and the PMP lib, copy and pasted the example and when the video is finished and pmp_close is called, the final frame of the video stays present and doesn't return.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.