Rime: Mesh Viewer Preview

This project hasn’t been touched in quite awhile. I last left off with figuring out mesh data and with help from dani we got it all done.

This is a very rough preview, that we can load models and load them into a model viewer all using engine files.

Whats to come is proper lighting, faces, texturing etc automatically from the new backend that Rime has been coded on. Instead of forcing data into a million different formats, why not live edit?

tl;dr; This video was showing Frostbite 2 model data being loaded natively and being displayed using WPF.

Battlefield 3 File Signature Checker

Due to the developments of Rime and Venice Unleashed, I have decided to release this after a few days of work. It does nothing but validate the signature with the DICE public key (not provided). It will spit out the output if the signature is valid or not. Source code included but not recommended to use. Just use it for educational purposes. This may seem useless to the 99.9% of you guys who are waiting for Venice Unleashed and Rime, which is true but it helps people reversing the file format and Frostbite(tm) engine.

VeniceCryptTest ScreenshotVenice Crypt Testing Project with Source

30GB Of What?

Well after a 2 second question with Sir. NoFaTe, I started adding a very interesting part to Rime. This is mainly in-case due to the announcement of Venice Unleashed’s Client-as-Server methods. As most server admins know, moving around 30GB of data for a server install is just too painful. This is due to the engine ignoring a TON of file formats when it is running as a dedicated server. Therefore one thing leads to another and there will be a standalone version of Rime just for re-building all of the maps in a minimal state. aka we go in, throw out all of the garbage that 1. Gets Ignored, or 2. Not used anymore and then run the game again. I haven’t started any testing but it should reduce the file sizes drastically.

Ignored File Types: (Thanks NoFaTe)

  • SwfMovie
  • MeshSet
  • MovieTexture
  • RenderTexture
  • ITexture
  • DxTexture
  • SwfTexture
  • RenderTexture (again?)
  • OccluderMesh
  • EnlightenDatabase
  • EnlightenShaderDatabase
  • EnlightenSystem
  • EnlightenProbeSet
  • StaticEnlightenDatabase
  • VisualTerrian
  • TerrainDecals
  • ImpulseResource
  • (Certain) Sound Files

Frostbite 2 Model Mesh Data

As seen in Battlefield 3, 4. Special thanks to dainiuxx-uk for assisting me through the slow reverse engineering progress of staring at files and doing guesswork. I will update this with a proper blog post, but for now here is the application and source code. Requires .NET Framework 4.5.

Can anyone say 3d map viewer built into Rime (previously IceEditor)?

BFMeshInfo ScreenshotDownload Frostbite 2 Mesh Viewer (Alpha)

Carl On Duty: Ghostbusters and x64 Calling Conventions

Well its that time, Carl on Duty: Ghostbusters has released! Long story short, still looks like poop, what they showed in the trailers is “meh” by any means. Not to say that Battlefield 4 was any better (the campaign was horrible, but who gets the Fish or Battlefield for SP?). I got a copy of the game to take a look at the security inside, well its the same lax-bro security that they have used in every other game that can be easily bypassed. But whats this? x64 (or 64-bit) processor is required with DirectX 11? First off, I noticed this during Blops 2. Why in the hell does the IW engine need any of that? It still runs like crap and rant, rant, rant. Moving on from that, I have taken closer look at x64 calling conventions for IceEditor (Battlefield 4 x64) and a possible new version of kiwicon for Ghostbusters singleplayer.

Continue reading “Carl On Duty: Ghostbusters and x64 Calling Conventions”

The state of Warsaw

Well with Battlefield 4 by one of my most favorite studio’s Digital Illusions CE (better known as DICE) releasing within 24 hours has released.. I think I should share some information here, just to be nice to everyone involved.

Before we begin, I’d like to say that this will sound very similar to Halo’s format (Blam Engine) way of explaining things. From content like images and sounds being called raw, metadata being called meta, and Ebx, and other “describing” formats being called tags. From my observations they have seemed to take a more centralized approach to storing all of their information. They have moved all of the raw data, and certain central ebx files into the cascat format. The cascat format had been used in Battlefield 3 base, but it seems like it was neglected after release. Cas stands for Content Addressable Storage and how it pretty much looks is, you have a catalog file which contains offsets, file sizes, and a SHA1 hash of all of the data inside. (And by all of the data, I mean each file that is within a cas file has a SHA1) The way that I have reversed it, it appears that you contact for certain things a CAS handler class which will then look up the file, raw, whatever that is in it based on SHA1. In Battlefield 3, these SHA’s were not in any kind of order and that caused the game to take forever to load on original maps even if you had an SSD because it was re-computing SHA1’s or looking them up in a unorganized manner. This problem most likely still exists in Battlefield4, unless the cas building tool sorted the hashes before hand. I have not actually looked into if hashes have been sorted.

In the BF4 Alpha Trial, Frankelstner noticed there was a different ebx header for the ebx data. Ebx data is Binary XML in a nutshell. I took a look into the matter and a quick IDA review showed that some of the information in the header had changed sizes, by that I mean it went from a 32bit integer, to a 16bit integer in certain locations. Quick modification to previous source code got us pass that. Even better yet, upon analyzing the dumped Alpha Trial executable, I noticed that certain things that I could rely on for finding the ebx process function had changed, the most notable is the string “Bad EBX Partition Header” or something similar to that. So that got me a bit interested. After a few hours up comparing functions to the previous ebx reading code I was able to find and update most of the functions. DICE still uses a giant switch statement (Thanks Hex-Rays 🙂 ) as a partition reader, which whoever wrote that should be spanked (not really, but its frustrating to reverse). But there was something different about it all.

In Venice (Battlefield 3) and Medal of Honor Warfighter and previous Frostbite 2 based games, the ebx reading code (binary xml) is called StreamingPartition blank, where blank would be Reader, Array, etc. In Warsaw (Battlefield 4) its just called EbxPartition blank, where blank means the same as before. There are minor changes throughout but it caused me to separate some of the code into 2 different sections within “IceEditor”. There is a reason I put IceEditor in quotes for now. Along with ebx code changing certain things in the header, having a 64-bit alignment also became an issue. Its not a major issue because well screw alignment.

tl;dr; IceEditor is now called Project Rime and will probably be a open source project near its completion. Since once all of the base framework is finished it won’t be that hard to properly add support for new games using the Frostbite engine. There will also be backward compatible support eventually if someone wants to step up for the project. (BC2, BC1 support) There has been many many hours lost in reformatting without backing up the project, source control servers deciding to go poop and losing all data. lada lada.

Server and domain migration.

Hello everyone, I just wanted to say I have moved blog.allenthinks.com to kiwidog.me. All of the links on the website have been replaced and should still exist and work as planned. If there are any mistakes with downloads etc not working or any issues at all please let me know through the contact me page, or on Facebook page. Please if there is ANYTHING at all wrong let me know.

All current projects process.

Here we go again! This is pretty much an update on what I have been doing over the last few months. Long story short, “real life” sucks. There is nothing but a bunch of work and school keeping me busy. I currently don’t have internet, television, or phone in my current apartment due to it being temporary for the next few weeks. Then I’m moving into a more “permanent” residence.

VeniceFX Progress:

  • All players now sync correctly (less/no jumpiness via spectating at a distance)
  • All sounds work properly when in free-cam mode
  • Spectator mode re-implemented
  • Xbox 360 controller support should work…(untested, no controller)
  • Fixed bug preventing spectating a player
  • Commands can be saved in a text document in BF3’s root directory for tweaking VeniceFX colors/plugins/commands
  • Fixed click breaking everything
  • Removal of the need of the Alt-Tab “fix”
  • Ray-casting added to “jump” to a player
  • First person spectating is experimental and may not work/crash
  • Updated to work with the latest release.
  • v4 uses 100% engine functions (using 100% engine functions means the code base shrank a great deal)
  • Spectator text is now pretty 🙂

VeniceUnleashed:

  • Soon “TM”
  • Closer to completion than not
  • Still being worked on
  • Sorry for not more information

IceEditor:

  • Backend code base has been re-designed to be closer to official DICE
  • Will probably be re-done one more time to support BC2 and BF4
  • Light BF4 support added
  • More ITexture/Data->Raw formats added (Now supports DXT1,2,3,5, ARGB8)
  • Decompiling original map support added
  • Decompiling some patch’s support added
  • Delta patching experimental code first success.
  • Decompiling a map broke once more
  • UI re-design. (Thanks to rukqoa)
  • SHADOW implementation
A very early build of the metro style IceEditor
A very early build of the metro style IceEditor

Any other questions or concerns, just leave a comment below.

VeniceFX Public Beta v3.3b Is Released for End Game Patch!

Update for VeniceFX v4.0:Hello everyone, I just have a status update about VeniceFX. Everything should be 100% working with most bugs fixed for the 4.x release of VeniceFX which will probably be the last build to be created. In theory VeniceFX 4.x+ should be backwards and forward compatible with any update. But only tested and developed for the latest patch. (End Game 1.0)

  • Alt-Tab Fix Required – Fixed
  • Clicking the mouse breaks freecam – Fixed
  • Random loss of keyboard device – Fixed
  • Xbox 360 Controller Crash – Fixed
  • DirectX 11 Tweaks (Wireframe + Shaders) Re-Implemented
  • Proxy Module is auto-loaded, or injected with the VeniceFXLoader tool
  • Non-Structural Auto-Updater Created

Welcome everyone again, if you are viewing this page you have seen/been told about the previous version of VeniceFX or the great boost in support for Spectator Mode or Free Flying Camera. Well thanks to all who donated to the project, here is a beta release! Most all of the features have been implemented or planned to be implemented. I want to get this build out there for the people who have been waiting for a long time. Thanks to the people who did intermediate beta testing when new builds were created. Please if there are any issues/bugs that are not already noted, leave me a comment on the post and I will take a look at it. If you crash (which you shouldn’t I haven’t had crashes at all) please let me know what you were doing at the time of the crash.

VeniceFX v3

Please I ask, just read the readme. But if you don’t want to do that, here are some highlights from it.

Changelog for V3.3b:
* Updated for End Game Patch
	- No New Features

VeniceFX v3.3b Beta (March 5-2013 Patch)

Continue reading “VeniceFX Public Beta v3.3b Is Released for End Game Patch!”

Unlocking Brink’s Console on Xbox 360

Xbox 360 Brink Unlocked Console

Brink, one of the newer id Tech games running under the engine idTech4 still keeps to the original roots of the idTech engine. I had a hunch that the console would be easily unlocked with just a keyboard. Well they did better than that to leave a console fully enabled in the game…or did they?

I started to mess around with Brink, reversing the engine and comparing it to the previous idTech games. They are very similar with huge improvements and very good work done by the guys at id software. Just for personal use I wanted to be able to run my console commands just like on the PC version.

The console command that gets pushed through the engine to “show” the console is “com_allowConsole” or “com_allowFullConsole”. With experimenting with this engine, I found out that the button binds are re-loaded from a .cfg file within the files inside of the games archives. I did not to very much research into the game archives, BUT all hope is not lost. If you were to search for the string “com_allowFullConsole” you can find where a cvar list is generated with defaults and pointers to game code to execute similar to Call of Duty (Quake 3 Engine). The engines are similar in the way that they handle cvars.

Continue reading “Unlocking Brink’s Console on Xbox 360”