From fee7deb13808b25432bf6138105d4773efe21af1 Mon Sep 17 00:00:00 2001 From: antipatico Date: Thu, 18 Apr 2024 20:52:16 +0200 Subject: [PATCH] v0.2.0 --- README.md | 26 ++++++---- balatromobile/__version__.py | 2 +- balatromobile/artifacts/nunito-font.tty | Bin 0 -> 132032 bytes balatromobile/patcher.py | 33 ++++++------ .../patches/portmaster-no-background.toml | 22 ++++++++ .../patches/portmaster-nunito-font.toml | 11 ++++ .../patches/portmaster-simple-fx.toml | 45 ++++++++++++++++ .../patches/portmaster-square-display.toml | 49 ++++++++++++++++++ balatromobile/resources.py | 2 +- 9 files changed, 162 insertions(+), 28 deletions(-) create mode 100644 balatromobile/artifacts/nunito-font.tty create mode 100644 balatromobile/patches/portmaster-no-background.toml create mode 100644 balatromobile/patches/portmaster-nunito-font.toml create mode 100644 balatromobile/patches/portmaster-simple-fx.toml create mode 100644 balatromobile/patches/portmaster-square-display.toml diff --git a/README.md b/README.md index fb74144..9ba7485 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Create a mobile version of Balatro from the Windows base version of the game. -Python fork of [balatro-apk-maker](https://github.com/blake502/balatro-apk-maker) by [blake502](https://github.com/blake502) and friends. Compared to the original one, it is *NIX friendly, more modular, has patch versioning and does not need to download tools from the internet. +Python rewrite of [balatro-apk-maker](https://github.com/blake502/balatro-apk-maker) by [blake502](https://github.com/blake502) and friends. Compared to the original one, it is *NIX friendly, more modular, has patch versioning and does not try to download and install tools from the internet. As of today, it only supports Android, but estending it to iOS should be trivial. @@ -46,14 +46,18 @@ A refactor is needed to make the version system make sense. You can list the available patches using the `list-patches` command: ``` $ balatromobile list-patches -Name Description Platforms ----------------- ----------------------------------------------------------------------------------------------- ----------- -basic Basic set of patches needed to make the game run on mobile android -landscape Forces the game to always stay in landscape mode, ignoring the screeen orentation of the device android,ios -landscape-hidpi Forces the game to always stay in landscape mode and apply hidpi fix for iOS ios -crt Disable CRT effect [Fixes blackscreen bug on Pixels and other devices] android,ios -fps Cap the FPS limit to the FPS limit of the screen android,ios -external-storage Save game files under /sdcard/Android [Works well for Android < 13] android +Name Description Platforms +------------------------- ----------------------------------------------------------------------------------------------- ----------- +basic Basic set of patches needed to make the game run on mobile android +landscape Forces the game to always stay in landscape mode, ignoring the screeen orentation of the device android,ios +landscape-hidpi Forces the game to always stay in landscape mode and apply hidpi fix for iOS ios +crt Disable CRT effect [Fixes blackscreen bug on Pixels and other devices] android,ios +fps Cap the FPS limit to the FPS limit of the screen android,ios +external-storage Save game files under /sdcard/Android [Works well for Android < 13] android +portmaster-simple-fx Disable gameplay visible behind menu background, shadows, and bloom effects. From PortMaster android,ios +portmaster-no-background Disable background animations and effects. From PortMaster android,ios +portmaster-square-display Optimize for square and square-like displays. From PortMaster android,ios +portmaster-nunito-font Replace the main font used with nunito, optimized for smaller displays. From PortMaster android,ios ``` It is possible to specify the list of patches you want to apply by supplying a comma-separated list of patches, for example: ```bash @@ -93,4 +97,6 @@ I worked on a [patch of GameActivity.java](https://gist.github.com/antipatico/73 Do you have any suggestion? Open an issue / PR! ## Credits -This software is a rewrite of [balatro-apk-maker](https://github.com/blake502/balatro-apk-maker). It uses [APKEditor](https://github.com/REAndroid/APKEditor), [Uber Apk Signer](https://github.com/patrickfav/uber-apk-signer) and [Love Android](https://github.com/love2d/love-android). \ No newline at end of file +This software is a rewrite of [balatro-apk-maker](https://github.com/blake502/balatro-apk-maker). It uses [APKEditor](https://github.com/REAndroid/APKEditor), [Uber Apk Signer](https://github.com/patrickfav/uber-apk-signer), [Love Android](https://github.com/love2d/love-android) and [Nunito Font](https://fonts.google.com/specimen/Nunito). Moreover, some patches were ported from [nkaHong's fork of PortMaster](https://github.com/nkahoang/PortMaster-nkaHoang). + +Thanks for everybody contributing to this project. \ No newline at end of file diff --git a/balatromobile/__version__.py b/balatromobile/__version__.py index 5608731..0590644 100644 --- a/balatromobile/__version__.py +++ b/balatromobile/__version__.py @@ -1 +1 @@ -__version__="0.1.1" \ No newline at end of file +__version__="0.2.0" \ No newline at end of file diff --git a/balatromobile/artifacts/nunito-font.tty b/balatromobile/artifacts/nunito-font.tty new file mode 100644 index 0000000000000000000000000000000000000000..81d557c5b26d7ddbfe53a6b275685e264a01b496 GIT binary patch literal 132032 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 list[PatchFile]: PatchFile("crt.toml"), PatchFile("fps.toml"), PatchFile("external-storage.toml"), - PatchFile("simple-fx.toml"), - PatchFile("no-background.toml"), - PatchFile("square-display.toml"), - PatchFile("nunito-font.toml"), + PatchFile("portmaster-simple-fx.toml"), + PatchFile("portmaster-no-background.toml"), + PatchFile("portmaster-square-display.toml"), + PatchFile("portmaster-nunito-font.toml"), ] def select_patches(patches: str) -> list[PatchFile]: - patches = patches.split(",") - return list(filter(lambda p: p.name in patches, all_patches())) + desired_patches = patches.split(",") + patch_files : list[PatchFile] = list(filter(lambda p: p.name in desired_patches, all_patches())) + if len(desired_patches) != len(patch_files): + missing_patches = [p for p in desired_patches if p not in [P.name for P in patch_files]] + raise ValueError(f'One or more patches not found: {",".join(missing_patches)}') + return patch_files diff --git a/balatromobile/patches/portmaster-no-background.toml b/balatromobile/patches/portmaster-no-background.toml new file mode 100644 index 0000000..ba43238 --- /dev/null +++ b/balatromobile/patches/portmaster-no-background.toml @@ -0,0 +1,22 @@ +name = "portmaster-no-background" +description = "Disable background animations and effects. From PortMaster" +authors = ["nkahoang","rancossack"] +supported_platforms = ["android", "ios"] + + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "self.DEBUG = false" +patch_content = """ + self.DEBUG = false + self.debug_background_toggle = true +""" + +[[versions.v0]] +target_file = "game.lua" +supported_hashes = ["skip"] +search_string = "love.graphics.clear({0,1,0,1})" +patch_content = """ + love.graphics.clear(mix_colours(G.C.DYN_UI.DARK, {0.17,0.35,0.26,1}, 0.4)) +""" diff --git a/balatromobile/patches/portmaster-nunito-font.toml b/balatromobile/patches/portmaster-nunito-font.toml new file mode 100644 index 0000000..02d0b33 --- /dev/null +++ b/balatromobile/patches/portmaster-nunito-font.toml @@ -0,0 +1,11 @@ +name = "portmaster-nunito-font" +description = "Replace the main font used with nunito, optimized for smaller displays. From PortMaster" +authors = ["nkahoang", "rancossack"] +supported_platforms = ["android", "ios"] + +[[versions.v0]] +target_file = "resources/fonts/m6x11plus.ttf" +supported_hashes = ["skip"] +search_string = "skip" +patch_content = "skip" +artifact = "nunito-font.tty" \ No newline at end of file diff --git a/balatromobile/patches/portmaster-simple-fx.toml b/balatromobile/patches/portmaster-simple-fx.toml new file mode 100644 index 0000000..2d2ef3a --- /dev/null +++ b/balatromobile/patches/portmaster-simple-fx.toml @@ -0,0 +1,45 @@ +name = "portmaster-simple-fx" +description = "Disable gameplay visible behind menu background, shadows, and bloom effects. From PortMaster" +authors = ["nkahoang","rancossack"] +supported_platforms = ["android", "ios"] + + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "bloom = 1" +patch_content = """ + bloom = 0, +""" + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "shadows = 'On'" +patch_content = """ + shadows = 'Off', +""" + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "self.F_HIDE_BG = false" +patch_content = """ + self.F_HIDE_BG = true +""" + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "self.TILE_W = self.F_MOBILE_UI and 11.5 or 20" +patch_content = """ + self.TILE_W = 20 +""" + +[[versions.v0]] +target_file = "globals.lua" +supported_hashes = ["skip"] +search_string = "self.TILE_H = self.F_MOBILE_UI and 20 or 11.5" +patch_content = """ + self.TILE_H = 11.5 +""" diff --git a/balatromobile/patches/portmaster-square-display.toml b/balatromobile/patches/portmaster-square-display.toml new file mode 100644 index 0000000..16ad5ec --- /dev/null +++ b/balatromobile/patches/portmaster-square-display.toml @@ -0,0 +1,49 @@ +name = "portmaster-square-display" +description = "Optimize for square and square-like displays. From PortMaster" +authors = ["nkahoang", "rancossack"] +supported_platforms = ["android", "ios"] + + +[[versions.v0]] +target_file = "functions/common_events.lua" +supported_hashes = ["skip"] +search_string = "bloom = 1" +patch_content = """" + bloom = 0 +""" + +# move the hands a bit to the right +[[versions.v0]] +target_file = "functions/common_events.lua" +supported_hashes = ["skip"] +search_string = "G.hand.T.x = G.TILE_W - G.hand.T.w - 2.85" +patch_content = """ + G.hand.T.x = G.TILE_W - G.hand.T.w - 1 +""" + +# then move the playing area up +[[versions.v0]] +target_file = "functions/common_events.lua" +supported_hashes = ["skip"] +search_string = "G.play.T.y = G.hand.T.y - 3.6" +patch_content = """ + G.play.T.y = G.hand.T.y - 4.5 +""" + +# move the decks to the right +[[versions.v0]] +target_file = "functions/common_events.lua" +supported_hashes = ["skip"] +search_string = "G.deck.T.x = G.TILE_W - G.deck.T.w - 0.5" +patch_content = """ + G.deck.T.x = G.TILE_W - G.deck.T.w + 0.85 +""" + +# move the jokers to the left +[[versions.v0]] +target_file = "functions/common_events.lua" +supported_hashes = ["skip"] +search_string = "G.jokers.T.x = G.hand.T.x - 0.1" +patch_content = """ + G.jokers.T.x = G.hand.T.x - 0.2 +""" diff --git a/balatromobile/resources.py b/balatromobile/resources.py index 1e86f14..bb5a01f 100644 --- a/balatromobile/resources.py +++ b/balatromobile/resources.py @@ -6,7 +6,7 @@ def get_resorce(basepath: str | Path, name: str | Path): with importlib.resources.as_file(importlib.resources.files(__package__)) as f: res = f / basepath / name - if not res.exists(): + if name is None or not res.exists(): raise Exception(f'Missing resource: "{name}" in "{res.absolute()}"') return res