/Spyro-Scope

A program that peers into the PS1 Spyro games' data that converts it to easier viewing for analysis

Primary LanguageHyPhyGNU General Public License v3.0GPL-3.0

Spyro-Scope

Latest Version GitHub All Releases Discord

A project that sparked when looking back at the program created to see the data of the the original trilogy's games as it is being ran in an emulator. The program, called Spyro Scope, was only an in-house made program never released, so I thought it would be cool to recreate it.

This project is an OpenGL-SDL program made with Beef that is used to draw the game's data that are not normally visualized. This program is also being built in hopes of aiding the modding community for Spyro's PS1 games. It can only support the following as of now:

Emulators
No$PSX 2.0
ePSXe 2.0.5 (No VRAM Support)
Bizhawk 2.4.2 (x64)
Mednafen 1.24.3
Games
Spyro the Dragon NTSC U
Spyro: Ripto's Rage NTSC
Spyro: Year of the Dragon NTSC v1.1

Note: The versions shown are only what I have tested so far myself, you can try to use it for other versions, however it may mess up the program or game. You have been warned!

For those new to Github or its new, layout here is the link to Releases

Features

World View

  • Externally play/pause and step the game's update loop
  • View the levels in sync with the current game's view or separated on its own
  • The ability to move and look around using the game's camera
  • Collision Mesh
    • Show each of the triangle's data in the collision mesh color coded of their "material"
    • Visualize deforming or pieces of the collision
  • Visual Mesh
    • Render both their far low-poly mesh and near high-poly mesh
    • See updating parts of the near mesh including
      • Deformation of the mesh
      • Scrolling & Swapping Textures
  • Show height levels where death occurs or the max free flight limit
  • Objects origins and their shapes (only static)
  • Teleport Spyro to the camera's current location
  • Move around Spyro and objects using an editor like tool

Usage

World View

  • Left Mouse - Select
  • Right Mouse Hold - Rotate View/Camera
  • Right Mouse Hold + WASD - Move Camera
  • Move mouse to top-left of window to show menu with toggles and actions with their shortcuts
  • Move mouse to right of window to show menu and inspector for the current object selected
  • Top middle button controls the game loop, left one Play/Pause while right one Steps (runs one frame)

VRAM View

Accessed by the V key. (Press again to return)

  • Left Mouse - Select
  • Right Mouse Hold - Pan View
  • Scroll Wheel - Zoom
  • 1 - Expand Working Area
  • 9 - Save VRAM
  • 0 - Reset Position
  • Ctrl + Left Mouse - Save Texture (Not CLUT)
  • Alt + Left Mouse - Load Texture/CLUT

Compiling

Beef IDE is used to compile the project as the language used is beeflang.

The only external library needed is FreeType in order for the program to fully compile. You can get a simple library integration from here where only the essential parts are used for this program. If you want to integrate a fully supported version, it should also work with minor changes.