Giter Site home page Giter Site logo

bit.trip-fate-reversing's Introduction

Background

BIT.TRIP FATE is the fifth of the main six installations of the BIT.TRIP series developed by Choice Provisions ( formerly Gaijin games ). It is available on both PC and Wii and runs on their proprietary Atrophy engine. The PC port of the engine internally uses DirectX 9.

Progress

Very much work in progress. I will probably upload some additional scripts along the way.

Internal stuff I have found

  • Each level is loaded in two separate parts. The level model itself is loaded from an aescn file ( which is basically a 3D model file used by the atrophy engine afaik ), which I speculate has the actual 3D background as well as the "thread" that Commander Video can move in. However the entity spawning positions such as enemies, bosses etc and positioning of certain effects like floating in game text, music transition etc are entirely hardcoded. For this purpose, there are six massive functions each for six respective levels. I will consider these functions to be related to entity data of each level. Entities appear to spawn at set time lapses which is also why using breakpoints can cause the game to skip a portion of the level on resuming depending on how long the process has been paused.
  • Bunch of mundane stuff related to config loading and saving. Nothing too remarkable here.
  • Though the Steam API is present, there doesn't appear to be any anti debug mechanism. There is a single isDebuggerCheck() check in the main function but I don't think that does anything particularly interesting.

Unused stuff

  • Lots of leftover resources from the Wii BIT.TRIP collection. You can find a bunch of leftover text related to disc errors, NAND errors etc which aren't used in the PC version for obvious reasons.
  • There is in fact an unused level which is not accessible by normal means. I found this when I found a function not associated with any of the six main levels. Moreover, it does not appear to have any associated aescn files of its own. The level goes by the name "Rise up". If you have played BIT.TRIP complete, you would know each installation had a bunch of mini challenges alongside the main levels which was not present in the original standalone Wii versions. So essentially, what we have is an inaccessible mini challenge. With a debugger, you can shift the control flow so that the entity data of this unused level gets loaded on top of whatever level you select in the menu. I ended up playing Rise up on top of the "DETERMINATION" map which is a somewhat fun sight. You even get to see the somewhat iconic exiting challenge graphic which is again not accessible by normal means. This may have been used as a test level I suppose.

You can load entity data of another level on top of a selected level, say you want to play the FRUSTRATION enemy layout on top of the DETERMINATION map by making a breakpoint at 0xC7857A in IDA and changing the eax register to a value between 0-6. 0-5 are the entity loading functions of the main levels in order and 6 is for the unused level. Note that this method I am suggesting will not change the level map, only the entities aka where and what enemies spawn, what text appears etc etc so expect to see some crazy stuff! You can actually load the unused level data on any selected level and just cheese a perfect on all 6 levels really.

File Formats

aeshader

aeshader files are just vanilla HLSL shaders on PC with both vertex and pixel shader logic. Nothing special if you know a bit of shader programming.

aemenu

I have not looked into the exact file structure of this yet. aemenu files seem to be used for certain screen transitions and menus. aemenufiles appear to store references to other aetex and aefnt files.

In essence, aemenu acts like an index of some resource files to let the game know what to load.

aetex

Used to store textures used in game.

aefnt

Used to store fonts.

What have I got?

patch_executable.py is a basic patcher script to patch the main game executable.

  • Start player off in GIGA mode.
  • Disable mode down and ensure invincibility
  • Apply GIGA HUD by patching internal GigaControl
  • Load original unused Aksys Games logo

TODO

  • Reverse AETEX, AESCN, AEMENU, AESHADER files

bit.trip-fate-reversing's People

Contributors

skryptonyte avatar

Watchers

 avatar

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.