Bloons Monkey City

Bloons Monkey City

29 ratings
Use any FPS [Bloons Monkey City]
By Walter
Tutorial and explanation on how to change the game's FPS to any value you want.
5
   
Award
Favorite
Favorited
Unfavorite
Change your FPS
Hello, yesterday i found out how to change the game's fps to any value you want, some common values you might want:
75 fps: 111111111111913F => 4F1BE8B4814E8B3F 90 fps: 111111111111913F => 176CC1166CC1863F 120 fps: 111111111111913F => 111111111111813F 144 fps: 111111111111913F => 1CC7711CC7717C3F 240 fps: 111111111111913F => 111111111111713F 1000 fps: 111111111111913F => FCA9F1D24D62503F
To apply these hex edits:
  • Download HxD or any other hex editor
  • Open MonkeyCity-Win.exe (or BMC-Steam on mac) in the hex editor
  • Do CTRL+R or find a replace button
  • Replace the first value: 111111111111913F with the second
Notes:

V-sync should be on, so any FPS higher than your monitor supports should default to your monitor's max refresh rate.

Also there is a bug in the game engine where the game's FPS is slightly higher than the set value.
Stock 60 fps value becomes 64 fps, 240 fps becomes 250.
Create your own values
You can now create your own FPS values easily.

I made a python tool and have posted it to Github.

The .exe file:
https://github.com/Walter-o/BTD-fps-tool/releases/tag/1.0

The source code:
https://github.com/Walter-o/BTD-fps-tool
How i found it
Now what is the story behind me finding out how this works?

I once asked in a forum how to mod BTD5's fps from 60 to 144 and i got this answer as response:
11 11 91 3F => C7 71 7C 3F
I thanked him and asked how he did it and he never responded.

Well a few days ago someone named Andrew added me and asked me if i knew how to mod the game to 240 fps.
And i didn't, i have tried reverse engineering the 144hz hex edit before but never managed to.
Andrew also told me the 144hz hex edit worked for Bloons Monkey City, so if i figured this out it would work for this game as well.

Yesterday i did another attempt and went to the location where the value was used in IDA disassembler, and i noticed tons of weird instructions happening, a lot of which that ended with `sd` and `ds`.

So i googled what those instructions mean and basically they are only used on "Double-precision floating point numbers".
And that was basically the answer, they are double-precision floating point numbers, they include an exponent and mantissa which goes way over my head for now but i at least know how to recreate the things in the Python programming language.
How it works
So the formula is basically this:

Take the fps you want, eg:
144
then divide 1 by it:
1 / 144 = 0.006944444444444444
then create a hexadecimal representation of the exponent and mantissa of that floating point number:
3F7C71C71C71C71C
then reverse the endianness of that hex string:
1CC7711CC7717C3F

And thats the entire process, i made python tool to automatically do this and it is now available in the "Create your own values" section.
Ending
To end this post i'd like to say ninjakiwi should add the option to change FPS ingame, it does not affect gameplay integrity whatsoever and would be a lot more user-friendly than opening a hex editor.

This post will be cross-posted across other BTD games that have the same engine and will be edited slightly if needed (most likely for BTD Battles since that one works a bit different)

Use any FPS [BTD5]
Use any FPS [Bloons TD Battles]

Good luck everyone.
12 Comments
Selena Gomez Apr 3 @ 12:29am 
So I might be missing something but when I search "111111111111913F" it says it can't find it. I am searching MonkeyCity-Win.exe in HxD
BlueJay Feb 23, 2023 @ 7:32pm 
Nice guide, thanks! :battlesgrin:
dereklorrell Feb 10, 2023 @ 1:24pm 
the fbi agents seeing this post: :btd6stunned:
FasterThanFast Dec 25, 2022 @ 8:54pm 
bread
0zrey Dec 14, 2022 @ 1:02pm 
im using notepad++ and i cant find MonkeyCity-Win.exe (im on windows)
Harvey Specter Jan 3, 2022 @ 2:58am 
add me lol :C
Walter  [author] Dec 20, 2021 @ 4:57am 
o, i recommend reinstalling tbe game and retracing your steps of changing the fps.

I tested it on 3 different pc's and it all worked fine.

There might be a chance that your graphics card software is interfering and i recommend finding some vsync option to turn on since BTD5/BMC should respect monitor hz. (only BTDB doesn't)
xbox live Dec 9, 2021 @ 4:58pm 
no, thats not what i meant. they didnt do that, the individual values when put in just leads to the fps being uncapped, not done officially. I cant specifically set the fps to 144 for example, as putting in that value just completely uncaps the fps.
Walter  [author] Nov 24, 2021 @ 11:17am 
woa yes that is the perfect solution. i am glad they did it.
xbox live Oct 9, 2021 @ 7:46pm 
Hey, all the values for specific FPS has lead to the fps just simply being uncapped.