Commit Graph
74 Commits
Author SHA1 Message Date
wuxu c1632590c6 Localize Joker descriptions in Chinese
Translate every registered Joker description while preserving names and gameplay effects. Encode the text through the extended TTE font and center explicit UTF-8 lines without counting formatting tags.
2026-07-19 11:36:01 +08:00
MeirGavishandCopilot Autofix powered by AI 7a5a4a1276 Updated all static variables to have the s_ prefix and constants to upper case (#591)
* Updated all static variables to have the s_ prefix and constants to upper case

* Renamed missed sneaky functions in round.c (+ clang-format...)

* Renamed a few more missed constants

* Updated rng_update() documentation

* Apply suggestions from Copilot's code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Added missed suggestion

* Updated rng_update() comment

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-16 20:21:18 +03:00
GeraltandMathisMartin31 45eac259a5 [Refactor] Separate Round logic into its own file (#570)
* Everything works, need to clean up

* cleanup

* fix rebase issue

* clang format

* docs

* clang format

* clang format

* address part of review

* Protect against edge case when discarding at end of hand

* Protect undiscard against popping a discarded card that doesn't exist

* Protect against out of bounds access to the `played` cards stack

* fix condition in `select_four_of_a_kind_cards_in_played_hand`

* change `get_played_top() + 1` to `get_played_size()`

* move `can_play/discard_hand` functions to round.c

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2026-06-27 16:57:37 -07:00
GeraltandMathisMartin31 022535c1e7 swap bleuprint and brainstorm's descriptions (#545)
Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2026-06-09 19:08:11 -07:00
GeraltandMathisMartin31 e26558e1a5 [Feature] Implement Joker descriptions in the Shop when holding B (#530)
* WIP

* WIP

* WIP

* WIP

* Tags are bugged but it's looking good

* Centering is bugged, almost there

* WIP

* Fixed centeriiiing, yaaaay

* good progress

* add proper '\n' support

* WIP descriptions

* All descriptions are there ^^

* missing 9-patch for pretty display

* WIP

* fix rebase issues

* Fix minor Run Setup screen issues

* Almost done, only one fix to go

* Aaaalmooost doooneeeee

* make desc frame size adaptative

* add rarity color and text

* final cleanup

* clang format

* clang format

* clang format

* clang format

* clang format

* Fix Joker update loop index

* Fix const and Bull description

* Fix unwanted button SFX

* fix tte colors

* Add misprint description

* Fix justified line length computation

* Add safeguards to tag parsing loop

* clang format

* Fix Ante bugged display at boss blind end

* Tweak suit colors

* Final fixes

* Simplified the way we print descriptions

* simplify further

* get rid of weird macro

* Fix Onwed joker price when holding A after showing its description

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2026-06-08 18:16:37 -07:00
2329c4c681 Refactor/hand (#490)
* move all hand funcs to their new file. now to clean up

* WIP

* Cleanup + doc hand.h

* clang format

* Refactor loose variables in hand.c into a proper Hand struct

* Fix some more issues

* Apply *some* suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* remove outdated comment

* fix rebase issue

* fix rng_info missing from g_game_vars init

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-22 17:51:39 -07:00
c2844a5d32 Refactor/RNG system (#476)
* Extract rng manipulation to its own file

* clang format

* Get CPU cycles since game start to use for RNG

* change a few things

* clang format

* Implement suggestions from @ricfehr3

* clang format

* Fix rebase issue

* clang format

* Create RngInfo struct to hold seed and step

* clang format

* Make a note about rng_restore system not having been tested properly yet

* Apply suggestions from @ricfehr3

Co-authored-by: Rickey <ric@rf3.xyz>

* clang format

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
Co-authored-by: Rickey <ric@rf3.xyz>
2026-05-21 19:47:48 -07:00
d01b1ba12d Refactor/blind select screen (#461)
Refactor Blind Select Screen.

Based on #363
---------

Co-authored-by: emiyl <me@emiyl.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-06 00:56:59 -07:00
GeraltandMathisMartin31 e7f550ce22 [Feature] Implement options menu and reading/writing values from/to the SRAM (#449)
* background

* Implement Options button

* Update main menu artwork

* add options menu tiles

* prepare options menu handling

* incorporate main menu refactor

* toto

* add all menu interactions

* do not reset selection_x in main_menu

* options struct

* fix rebase from ricfehr3's repo

* Implement high contrast cards

* Save/Load options values to SRAM

* load options on game_init and validate data within the load_options function

* Get changes from ricfehr3's PR

* recover fix for glitched ace

* clang format

* clang format

* clang format

* Save 500B of image data by using only minimal set of tiles instead of keeping final window in source file

* clang format

* clang format

* Implement Options button

* Update main menu artwork

* progress, leaving it alone for now until discussion

* make game_vars an extern

* Move options vars into their own struct

* rollback previous commit

* Implement save validation. Version check to come

* implement data validity + version check for game saves

* clang format

* Save position in rng sequence for consistent run after load

* fix rebase issues

* fix rebase issue

* remove unused/duplicate define

* Oops, made a mistake when testing PR #424

* encode high contrast palette into an image, and load it at game_start

* document save.c/h and correct typos

* correct alignment

* game speed and high contrast buttons working

* small cleanup

* sliders also work again now

* clang format

* Moved balatro_version extern declaration to version.h file

* removed unsused variable

* make showing ROM version a toggle

* move ante, round and money to the GameVariables struct

* Rename SaveCheckInfo struct to SaveHeader for clarity

* Add SaveHeader struct explanation

* clang format

* Revert unnecessary tileset optimization

* SFX now follows the sound volume slider

* clang format

* Music now follows volume slider

* Changed volume slider increment from 5 to 20 to avoid having the music sound too rough under 20% volume

* refactor main_menu.c to use SelectionGrid and Button structs

* clang format

* make a "new" save button so we don't save during the state transition

* clang format

* Reduced state transition flicker by only changing affine background to a different one

* Fix loading game too late in game init sequence

* First batch of suggestions from @MeirGavish

* Remove unnecessary intermediary buffers for high contrast palette swapping

* comment row warp hack for button input

* Add some of Copilot's suggestions

* rename balatro_version into gbalatro_version for rebranding reasons + version display erase screen fix

* remove unnecessary NULL check on `on_selection_changed` method

* implement small game speed arrow buttons animation

* factorize some code

* remove unnecessary data validation in load_game(), since we already checked the header

* Implement @MeirGavish 's suggestion regarding splitting the huge `on_update` function

* clang format

* implement @ricfehr3 's suggestion about keeping last selected button instead of using an obscure `on_boot` boolean

* Apply @ricfehr3's suggestions

* fix clang-format flags

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2026-05-02 14:28:52 -07:00
Elliot Tester ff2c792a3b Corrected Sprite Indices for Droll and Crafty Jokers (#413) 2026-03-29 15:09:35 -07:00
5cf9e2674d Implement arbitrary-sized joker spritesheets (#285)
* Convert static joker sprites indexes to maps for dynamic spritesheets size

* tmp commit

* reorder Joker spritesheets

* more reordering

* Joker maps, will test later

* More reorders and palette optimizations. Sprites now work

* Fix Joker gfx

* Format joker.c

* Fix rebase error

* Integrate Shoot the Moon art

* format

* format

* removing useless GBAL_UNUSED from photograph Joker effect func

* Tidy up joker.c variables formatting

* Fix magic number

* Add context for map in joker.c

Co-authored-by: Rickey <ric@rf3.xyz>

* Update source/joker.c

Co-authored-by: Rickey <ric@rf3.xyz>

* Apply suggestion from @ricfehr3

Co-authored-by: Rickey <ric@rf3.xyz>

* format

* reduce clutter in joker_effects.c file by defining a macro for forward static declarations of joker effect funcs

* refactored some maps in joker.c to make it more concise

* clang format

* adding back how to mark functions as unused when Jokers don't have a sprite yet

* format

* Remove comment about unused functions for Jokers without art

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
Co-authored-by: Rickey <ric@rf3.xyz>
2026-03-28 17:58:05 -07:00
GeraltandMathisMartin31 02799ddc54 Optimize "whole hand" conditions checks for Joker effects (#213)
* Introduce a ContainedHandTypes type

* Separate computing of hand_type and _contained_hand_types variables

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2026-01-22 14:22:48 +02:00
MeirGavish d96bc9b1c2 Renamed GBLA_UNUSED -> GBAL_UNUSED and updated RowOnKeyTransitFunc documentation (#292) 2025-12-10 17:17:28 -08:00
RickeyandMeirGavish 2fb9e6d633 Clang format joker files and def files (#257)
* Clang format joker files and def files

* Fix blind usage of GBLA_UNUSED macro

* Add final files for clang-format (main.c and selection_grid.h)

---------

Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-12-10 09:41:24 +02:00
GeraltandMathisMartin31 10e75f18ae remove triboulet from code (#266)
Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2025-11-30 18:11:48 +02:00
GeraltandMathisMartin31 0953a430c4 Implement Seltzer and Joker Expiration effect (#252)
* Add Seltzer art

* Implement Joker expiration

* Add exception to copying Jokers + Seltzer message fix

* Move all scoring logic to joker_object_score away from check_and_score_joker_for_event

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2025-11-30 08:52:42 +02:00
435a9a0a1d Refactor JokerEffect scoring (#245)
* Remove usage of memcmp for JokerEffect null check

* Added suggestions from @ricfehr3

* Add suggestions from @MeirGavish


---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-11-28 19:03:47 +02:00
Rickey 09dd996181 Clang Format Blinds (#253)
* Quick cleanup on bitset docs

* Clang format blind.h/c

* Replace `_` with `s_` for functions

* Fix newline size for macros.

* Fix format for ci

* Add macro for "unused" attribute
2025-11-25 13:47:44 -08:00
GeraltandMathisMartin31 408c264e85 Modify blueprint and brainstorm implementation to fix retrigger bug (#244)
---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2025-11-21 20:09:07 +02:00
GeraltandMathisMartin31 2fb41e533c Make Chips, Mult and Score unsigned and protect against overflow (#212)
---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2025-11-20 12:39:15 +02:00
MeirGavish 28043bd7ca Integrated Photograph joker art by @MathisMartin31 2025-11-12 14:11:16 +02:00
GeraltandMathisMartin31 4183f563ab Implement cards held in hand effects (#205)
* Adapt existing Jokers to the Held Card mechanic + effect display location

* Add suggestions from @ricfehr3

* Add suggestions from @MeirGavish

---------

Co-authored-by: MathisMartin31 <mathis.martin31@gmail.com>
2025-11-12 13:18:53 +02:00
Rickeyandrfehr-idexx e0cffab768 Update list implementation to work with memory pools (#168)
* Introduce indexed list implementation

* Fix CI tests for pool

* Take bitset out of pool

* Replace joker bitset interactions with wrappers

* Add bitset tests

* Add test to gitignore

---------

Co-authored-by: rfehr-idexx <ric-fehr@idexx.com>
2025-11-11 17:56:21 +02:00
03273de829 Adds Shortcut and Four Fingers (#95)
* adds shortcut joker

* adds Four Fingers joker, and combination support for Four Fingers + Shortcut

---------

Co-authored-by: MeirGavish <meir.gavish@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-01 16:28:40 +02:00
eb815b7820 Refactor of scoring flow, Joker Callbacks and Card Retriggers (#160)
* Remove Baseball Card for now, will have to wait a future PR

* Removed cards held in hand joker scoring stage - should be in another PR

---------

Co-authored-by: MonteCrysto <mathis.martin31@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-11-01 15:50:52 +02:00
MeirGavish 9d1a51884f Added art for Jokers Bootstraps by @MathisMartin31 and @noctowlhoot and Pareidolia by @NoWhammies10 and @MeirGavish (jokers rearranged for palette optimization) 2025-10-09 23:42:07 +03:00
Geralt ce5150bffb Update joker_effects.c
Temporarily remove Pareidolia from shop until @MeirGavish can add the artwork for it
2025-10-09 18:57:10 +02:00
Geralt f14f200cb0 Update joker_effects.c
Remove the "unused" attribute from joker effect functions that was added by mistake during merge
2025-10-09 14:50:18 +02:00
Geralt 6787fab0c2 Merge branch 'main' into main 2025-10-08 23:25:24 +02:00
MeirGavish 4b35b2f7d8 Added art for jokers Blueprint and Brainstorm by @NoWhammies10 and @GreenNinja2525 2025-10-08 22:40:15 +03:00
NanandMeirGavish 23a14cb76e Update source/joker_effects.c
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-10-08 20:41:09 +02:00
Nan 8ae4968539 Remove duplicated entries 2025-10-08 18:52:10 +02:00
Nan 9ae53bddb8 Fix errors introduced by latest commits 2025-10-08 18:39:49 +02:00
Nan af72fe5749 Fix conflicts
Attempt 1
2025-10-08 18:21:55 +02:00
Nan 7e17419811 Merge branch 'main' into pr-fix 2025-10-08 18:11:20 +02:00
NanandCopilot fec243b482 Update source/joker_effects.c
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-08 17:59:27 +02:00
NanandMeirGavish 324478845d Update source/joker_effects.c
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-10-08 17:58:11 +02:00
NanandMeirGavish 0dbde481d5 Update source/joker_effects.c
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-10-08 17:57:50 +02:00
MonteCrysto aa5ebd13fc Add suggestions from @MeirGavish 2025-10-08 08:14:54 +02:00
MeirGavish 77f76bd4ef Removed "unused" attribute from integrated jokers 2025-10-08 00:05:37 +03:00
MeirGavish a0f1ef7780 Added art for xmult hand jokers The Duo The Trio, The Family, The Order, and The Tribe by @MathisMartin31 2025-10-07 23:52:49 +03:00
MeirGavish c529c4be69 Added art for jokers Abstract Joker by @MathisMartin31 and Bull by @NoWhammies10 and @GreenNinja2525 2025-10-07 21:26:43 +03:00
MonteCrysto 8cd86f1640 Merge remote-tracking branch 'upstream/main'
And add NULL Acrobat Joker effect
2025-10-07 20:18:41 +02:00
MeirGavish 46936c1878 Added art for jokers Raised Fist by @MathisMartin31 and Reserved Parking by @NoWhammies10 2025-10-07 21:13:31 +03:00
noctowlhootandMeirGavish 0187b5f78e Update source/joker_effects.c
Co-authored-by: MeirGavish <meir.gavish@gmail.com>
2025-10-07 20:24:00 +10:30
MonteCrysto 0cfe0e5126 Added forgotten base price for the Acrobat Joker 2025-09-30 23:51:46 +02:00
MonteCrysto b7a94fa085 Fix some issues (I actually forgot to compile) 2025-09-30 23:34:11 +02:00
MonteCrysto de7c9d4d60 Add a "get_num_hands_remaining" function and implement the Acrobat Joker 2025-09-30 23:06:13 +02:00
MonteCrysto c781ee9666 Add a "is_card_face" function to take into account if Pareidolia is present 2025-09-30 22:47:00 +02:00
noctowlhoot b8a441f971 Update joker_effects.c
updated jokers into joker registry
2025-09-24 22:53:54 +09:30