Giter Site home page Giter Site logo

ac.rogue-patchfix's Introduction

AC: Rogue Patch

Known bugs

That's the list of known problems with that patch, feel free to contribute with the solutions

  • Targets on screen showing with some offset
    • Less noticable when HUD is stretched, but more noticable with really tall resolutions
    • Game uses a lot of function which have multiple usages, don't have time to track to origins to fix it
  • When exited to main menu from game, menu doesn't scale back down
    • Need to find better value to track, or function to hook, so we can always tell if we in the game

Description / Theory

tl;dr

Patch for the AC: Rogue to force change the language of the game, remove black bars on non 16:9 resolutions, changable FOV.

Theory

AC: Rogue has a region lock for the language. It means that you can't change the language of the game to the one that is not supported by your region.

Examples:

  • If you have a WorldWide version of the game, you can't change the language to Russian.
  • If you have a Russian version of the game, you can't change the language to English (only for UI).

localization.lang

Structure of the localization.lang was unknown (at least publicly), until now. So it wasn't easy to add missing languages to the game.

Simplified structure of the localization.lang:

struct LocalizationLang
{
  char    language[4];                // "LANG"
  byte    preffered_subtitle_index;   // 0x1
  int32_t subtitle_language_bitfield; // 0b...0110 Means English and French is supported
  int32_t audio_language_bitfield;    // 0b...0010 Means English is supported
  byte    preffered_audio_index;      // 0x1
};

Check tools\LocLangGenerator\localization.lang.struct.hexpat for the complete structure. (Use ImHex to view and use the file)

Inner Logic

Game utilizes the localization.lang file to determine the language of the game. But depends on inner logic, it can also change game id.

Here's that inner logic:

int GetGameId(void)
{  
  if (DoesHaveRussian()) {
    return 0x4a2 + IsSteam(); // 0x4a2 + 0x1 = 0x4a3
  }
  
  if (DoesHaveKorean()) {
    if (DoesHaveChinese()) {
      return 0x67d + IsSteam(); // 0x67d + 0x1 = 0x67e
    }
  }

  // WorldWide
  if (IsSteam()) {
    return 0x3a6;
  } else {
    return 0x37f;
  }
}

Conclusion

As we can see, game can report 6 different game ids, but probably you only own one version of the game, so, that's the problem. Patch allows to report the desired game id, so you can change the language to the desired one.

Usage / Installation

Just take ACRoguePatcher.dll, rename it to version.dll, then copy it and patch_config.ini to the game directory. Change Region field in the patch_config.ini to the desired region.

Also you can use loc-lang-gen.exe, to enable/disable particular localization. Just load localization.lang change stuff and save it.

Don't forget to download language files used by chosen language (audio and video files). You can find them in the internet.

Credits

ac.rogue-patchfix's People

Contributors

playday3008 avatar

Watchers

 avatar

ac.rogue-patchfix's Issues

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.