This is a game where you connect the letters in a board to form english words.
There are apparently 151381 legal words in this game:
https://gamefaqs.gamespot.com/gba/919765-bookworm/faqs/79805
Most common swear words are not in the game, with some exceptions. Longest words are 12-letters long. There are 11350 such words in the game's dictionary. I've made a 12-letter word using savestates, but the game didn't acknowledge this feat in any way, except for spawning 1 silver block that seems to give a x10 score multi for the word you create.
Creating long words will spawn a multiplier block on the board. I've seen them in 4 colors. From weakest multiplier to strongest: green, yellow, blue, silver. Longer words net you more points. Within the same word length, some words are worth more points than others. Not sure how the game calculates the score. The score scales with levels. Levels also increase the difficulty (more red blocks spawn).
Red blocks will travel downwards every turn, eating away the blocks. The game ends if a red block remains at the bottom of the board for 1 turn. The colored blocks take multiple turns until they get eaten. Green take 2 turns, Yellow take 3 turns. Assuming that Blue take 4 turns and Silver take 5 turns. Stacking colored blocks near the bottom of the board can be a good strategy for players to prolong their game, but it wouldn't matter for a tool-assisted game since you can manipulate RNG to get the letters you want.
If you create a bonus word, displayed below the worm, you get some bonus points. Those points increase every time you make a bonus word, up to a maximum of 50.000 points per bonus word.
In terms of RNG manipulation:
- RNG determines: the starting board, the letters that fall from the top, sometimes the number of red blocks that spawn, sometimes the number of colored blocks that spawn, and rarely a random flip of non-colored block to a yellow block.
- The only thing that determines the starting RNG is the moment when you press Start button on the title screen. The starting RNG doesn't change in the main menu. Your name choice or the file choice don't affect the starting RNG.
- RNG is recalculated every frame, presumably based on the previous values of the RNG addresses and some internal counter.
- When you press Select, you can choose to shuffle the board. The new board you get is also determined by RNG.
I found 2 addresses that when freezed, result in a static RNG:
0x5290 and 0x5294. Both are 4-byte unsigned.
Those 2 addresses change every frame during gameplay. Both need to be freezed for static RNG.
On the title screen, they are equal to 1 and 0 respectively. The 1st address changes to a static value (initial seed) when you press Start on the title screen. The initial seed you get is different for each frame, depending on when you press the Start button. I'm guessing the game is reading some internal counter to determine the static seed. I wasn't able to find what counter that is.
TAS trick:
When a red block is consuming a block below, you can usually form a word that becomes "disconnected" after the block below the red block gets consumed. Sometimes the game won't allow you to do it. Sometimes the game will softlock after you do it (lol).
The game has no ending - it goes on forever. The level counter goes from 1 to 65536, and then rolls over back to 1 again. The points needed to level up increase every level, up to a maximum of 500.000 points needed to reach the next level. The ranks stop changing at level 33 - at 1.5mil points you reach the rank of Bookworm Supreme. The score goes all the way up to 4.294.967.296, then overflows back to 0. The score display gets buggy when it reaches 10 digits, but it's not like anyone would have the patience to get there legitimately without an automated script to play the game for you. In theory, with enough patience with RNG manipulation, the game can go on forever. At very high levels (100+), almost all of the new blocks that fall from the top will be red blocks. This will normally overwhelm a player eventually because of bad RNG. But a TAS could get favorable RNG and go on forever.
Creating a somewhat optimized TAS of this game seems like an incredibly complicated task. I don't even want to attempt it. The number of possibilities is overwhelmingly huge, and for starters I don't even understand the relation between RNG values and what blocks are generated.