Coder Social home page Coder Social logo

wipeout's Introduction

WipEout (PSX) Model Viewer

Source code for the WipEout Model Viewer.

This repository does not contain the actual WipEout data files. You have to copy the WIPEOUT/ directory from the original CD.

More info in my blog: http://phoboslab.org/log/2015/04/reverse-engineering-wipeout-psx

MIT License

Known Problems

  • Two unknown polygon types that are currently ignored: 0x00 (possibly padding?) and 0x0A which might be sprite-like - alpha texture, non rotated. The squiggly lights in the jump pits on Karbonis are missing; could be 0x0A?!.

  • The underside of the ships for WipEout have the wrong textures or UV coordinates

  • Fly-through Camera spline doesn't handle jumps nicely

  • Some faces from PRM models seem to be backwards. This only is a problem for some WOXL models. E.g. the cannopy on Spilskinake or some rocks on Vostock Island are backwards. Maybe this just didn't matter, because the original game didn't cull back faces? Or is there a flag or face normal for some polygon types?

wipeout's People

Contributors

phoboslab avatar tigrouind 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  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  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  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  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

wipeout's Issues

Higher resolution textures from other platforms?

Hello,

in the comments over there:

http://phoboslab.org/log/2015/04/reverse-engineering-wipeout-psx

someone seems to have mentioned that some other platforms apparently might have some higher resolution textures, see for example:

http://phoboslab.org/log/2015/04/reverse-engineering-wipeout-psx#comment48
http://phoboslab.org/log/2015/04/reverse-engineering-wipeout-psx#comment50
http://phoboslab.org/log/2015/04/reverse-engineering-wipeout-psx#comment51

So, if that should really be the case, would there be any chance you could use those higher resolution textures in the viewer instead?

Regards

WipEout 64?

Hello,

since you have now added WipEout 2097/XL to the viewer:

44ca999

would there be any chance you could also add WipEout 64 to the viewer?

Regards

Cannot Load /TRACK02/SCENE.CMP

XMLHttpRequest cannot load file:///Users/josh/workspace/wipeout/WIPEOUT/TRACK02/SCENE.CMP. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.     wipeout.js:342
Wipeout.loadBinary     wipeout.js:342
Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///Users/josh/workspace/wipeout/WIPEOUT/TRACK02/SCENE.CMP'.     wipeout.js:342

I have copied the entire contents of the /(CD)/WIPEOUT folder to /wipeout/WIPEOUT. I have verified that the SCENE.CMP file exists in the /wipeout/WIPEOUT/TRACK02/SCENE.CMP directory.

➜  TRACK02 git:(master) pwd
/Users/josh/workspace/wipeout/WIPEOUT/TRACK02
➜  TRACK02 git:(master) ls -FGlAhp
total 1736
-rwxr-xr-x  1 josh  staff    76K Jul 11  1995 LIBRARY.CMP
-rwxr-xr-x  1 josh  staff   134B Sep  4  1995 LIBRARY.INF
-rwxr-xr-x  1 josh  staff   924B Jul 11  1995 LIBRARY.TTF
-rwxr-xr-x  1 josh  staff    85K Aug 21  1995 SCENE.CMP
-rwxr-xr-x  1 josh  staff   264B Aug 28  1995 SCENE.INF
-rwxr-xr-x  1 josh  staff   406K Aug 21  1995 SCENE.PRM
-rwxr-xr-x  1 josh  staff    11K Jul 15  1995 SKY.CMP
-rwxr-xr-x  1 josh  staff   261B Aug 28  1995 SKY.INF
-rwxr-xr-x  1 josh  staff   9.0K Jul 15  1995 SKY.PRM
-rwxr-xr-x  1 josh  staff   336B Sep  4  1995 TRACK.INF
-rwxr-xr-x  1 josh  staff    52K Jul 23  1995 TRACK.TRF
-rwxr-xr-x  1 josh  staff    90K Jul 23  1995 TRACK.TRS
-rwxr-xr-x  1 josh  staff    51K Jul 23  1995 TRACK.TRV
-rwxr-xr-x  1 josh  staff    53K Jul 23  1995 TRACK.VEW

Checksum and CRC32 of SCENE.CMP

➜  TRACK02 git:(master) crc32 SCENE.CMP
0ba66255
➜  TRACK02 git:(master) cksum SCENE.CMP
2047228351 87087 SCENE.CMP

What am I doing wrong? Thanks!

Option to slow down fly-through?

Hello,

would there be any chance you could add an option to the viwer which would allow to slow down the fly-through?

The fly-through currently is quite fast.

It would be nice to have an option to configure it's speed.

Regards

New polygon form found !

I guess I've found something 💃

HEAD.PRM (Wipeout 1)

For those polygons:

        FlatTriangle = 0x05,
        FlatQuad = 0x07,

Basically the SubType in the polygon header is misleading, when there are more than 255 vertices, the SubType actually becomes an index as you can see below, and the length of polygons change:

2015-11-11 04_25_54-calculator
(SHLD is a small object with less than 0xFF vertices, HEAD exceeds 0xFF)

They are bigger than usual:

                case PrmPolygonType.FlatTriangle:
                    var flatTriangle = new FlatTriangle
                    {
                        Header = header,
                        Indices = reader.ReadUInt16BEs(3),
                        Unknown1 = reader.ReadUInt16BE(),
                        Colors = reader.ReadUInt32BEs(3)
                    };
                    if (prmObjectHeader.PolygonCount > 0xff)
                    {
                        reader.ReadBytes(52);
                    }
                case PrmPolygonType.FlatQuad:
                    var flatQuad = new FlatQuad
                    {
                        Header = header,
                        Indices = reader.ReadUInt16BEs(4),
                        Colors = reader.ReadUInt32BEs(4)
                    };
                    if (prmObjectHeader.PolygonCount > 0xff)
                    {
                        reader.ReadBytes(72);
                    }

The if are the code I've added to my working base and you can see the result below,

2015-11-11 04_20_07-unity personal 64bit - modelscene unity - wxx-rebirth - pc mac linux standa
2015-11-11 04_20_20-start
2015-11-11 04_20_38-cortana
2015-11-11 04_21_24-plotly
2015-11-11 04_21_39-start

It seems to be the trophy championship or something but I can't remember where it's in the game ...

By the way I did somehow try to understand the logic in IDA, there were nearly 20+ cases in switch blocks which makes me believe there are way more forms of polygons that one can think of ... but there must be some logic after all !

Any clue/hints are welcome !

Thanks :D

Full-screen button?

Hello,

would there be any chance you could add a full-screen button to the viewer?

Regards

Gamepad support for free camera mode

Would it possible that you offer gamepad support for free camera mode ?

A 6DOF scheme like the following would be great:

  • left thumbstick : strafe left/right, move forward/backward
  • right thumbstick : look up/down/left/right
  • A/B/X/Y buttons : move up/down, roll left/right

Thank you 👍

More music?

Hello,

currently the viewer has only one music track.

Would there be any chance you could add some more?

Regards

Pit-lane as well as speed-up and power-up textures do not light up

Hello,

the pit-lanes of the WipEout 2097/XL tracks do not light up in the viewer.

Usually they should light up in red color.

Also, the speed-up textures do not light up in the viewer.

They usually should light up in blue color.

And the power-up textures also do not light up.

Any chance you could fix that?

Regards

Fly-through camera path still buggy on some devices

Hello,

as far as I can see, @tigrouind apparently has provided some improvements for the fly-through camera:

https://github.com/phoboslab/wipeout/commits/master

But the fly-through camera path is still buggy.

The camera still goes out of the track or under the track and so on...

The funny thing though is:

On some devices it seems to work better than on others.

For example:

The camera path seems to be better on an Android smartphone running Mozilla Firefox for Android 37.0.2 than on a desktop PC running Mozilla Firefox for Windows 37.0.2.

I don't know why there is a difference, even though both are using up-to-date versions of Firefox. But the camera path definitely seems to be better on the Android smartphone.

Would there be any chance you could improve it?

PS:

Tested using: http://phoboslab.org/wipeout/

Regards

Free camera controls are not explained and don't seem to allow full freedom on tracks

Hello,

the free camera controls in the viewer are not explained.

Any chance you could add a control scheme for the free camera to the viewer?

And the free camera also apparently does not seem to allow full freedom on tracks.

It looks like the mouse scroll wheel is assigned to zooming in and out.

However, when viewing a track, it is not possible to fully zoom in. At some point the zoom stops, even though it's still far away from the track.

Any chance you could fix that?

Regards

Finally decoded CLASS.PRM !

It's been a while I was looking for it 💃 !!!

2015-11-11 19_35_48-unity personal 64bit - modelscene unity - wxx-rebirth - pc mac linux standa

2015-11-11 19_36_23-unity personal 64bit - modelscene unity - wxx-rebirth - pc mac linux standa

Will post details once it's a bit more refined but basically I found that there are command lists that should be ignored and that there are new Gouraud-shaded polygons (tri/quad).

GFX settings?

Hello,

would there be any chance you could add some GFX setting to the viewer?

Currently the viewer seems to have anti-aliasing turned on by default for example.

It would be nice if there would be options to turn that off for example.

Regards

Track tiles textures in "Gare d'europa" and "Spliskinanke" are incorrect (default texture is shown)

In "Gare d'europa" and "Spliskinanke" tracks, incorrect texture (a checker pattern) is used for the whole track. It seems the texture index read from game files is always "0" for these two ones . Because of this there is also no power ups (weapons or boost tiles). Why these two tracks seems to use a different way to store texture track than other tracks and where that information is stored is actually unknown.

Stuttering (bad performance)

Hello,

I have tested:

http://phoboslab.org/wipeout/

on an Intel Bay Trail system (with integrated GPU) and on a Qualcomm Snapdragon 800 powered smartphone using various browsers.

But the performance is quite bad.

There are a lot of stutters.

It's definitely worse than one would expect when considering that the graphics which are being rendered are already around twenty years old.

Shouldn't the performance be better?

Would there be any chance you could improve the performance of the viewer?

Regards

New discoveries in the game's data files

Just found a new type of polygon: 0x14

These are found on COMMON\CAM?S.PRM files, the following length is of 52 bytes (vectors + something ?), still trying to figure out what these are 😅

Could these relate to the replay post each race ?

EDIT:

I am running a PRM validator against files in WIPEOUT\COMMON, for what it's worth, I am trying to make it pass the test, unless we know the real content I am simply skipping bytes to try achieve 100% success rate.

With the code from your experiment rate was 41%, now it is 76% 😄

I think that'll be a significant milestone once we reach 100% as at least we'll be able to read files from end to end ... until we understand them.

Here's the excerpt of the above test, suggesting it's replay-related as there are no vertices:

snap0831

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.