No Game Tick Delay
POKE 43973,24
Berk's per-frame update at Update_Berk_State_TickCounter returns early while GameTickCounter is non-zero. This changes the JR Z into an absolute JR, so the delay gate is skipped and Berk always continues into the rest of the update.
43968 LD HL,29426 If the tick counter is non-zero, decrease it and return; otherwise continue.
43971 LD A,(HL)
43972 OR A
43973 JR Z,43977
43975 DEC (HL)
43973 JR 43977
Never Fired On Task Timeout
POKE 44161,0
POKE 44162,0
POKE 44163,0
When the task frame counter runs out in Super Berk mode, 44157 jumps to Update_Berk_State_PrintStatusAndRestart, which prints the ratings (including "YOU'RE FIRED") and restarts. These POKEs remove that jump, so a timed-out Super Berk game continues instead of ending.
44157 LD A,(Flag_LearnerBerkMode) If Learner Berk mode is clear (Super Berk), jump to the fired / ratings restart at Update_Berk_State_PrintStatusAndRestart.
44160 OR A
44161 JP Z,Update_Berk_State_PrintStatusAndRestart
44161 NOP
44162 NOP
44163 NOP
Freeze Task Three Timer
POKE 50057,0
While the task-three timer at TaskThreeTimer is non-zero, Update_Task_Three_Entities counts it down with DEC A at 50057. This NOPs that decrease, so the timer value stops falling and the countdown side-effects no longer advance.
50043 LD A,(TaskThreeTimer) Load the task-three timer and, when it is non-zero, decrease it.
50046 OR A
50047 JR Z,Update_Task_Three_Entities_RunStateMachine
50057 DEC A
50057 NOP
Learner Or Super Berk
POKE Flag_LearnerBerkMode,0
POKE Flag_LearnerBerkMode,1
Flag_LearnerBerkMode is the Learner Berk mode flag written by the main menu at MainMenu_ChooseLearnerOrSuper. 0 selects Super Berk; 1 selects Learner Berk. Apply after the menu choice (or it will be overwritten). Learner mode softens timing and skips the Super-only timeout jump at 44161.
Start On Task
POKE CurrentTaskIndex,nn
CurrentTaskIndex is the current task index. After a game has started, set it to one of:
The briefing printer at Print_MessageByIndex reads this index through the table at Messaging_BerkGetMeACanOfWorms. You will usually also want CurrentTaskPhase non-zero so the task phase is treated as active (see Update_Berk_State).
Infinite Time
POKE 44139,24
When the task frame counter at FrameCounter hits zero, 44137 compares the task timer at TaskTimer with 160. The original JR C at 44139 only skips ahead to the attribute-strip path at Update_Berk_State_AttrStripFromSeed when the timer is below that threshold; otherwise control falls into the fanfare / timeout path at 44141 (and can reach the "YOU'RE FIRED" restart at Update_Berk_State_PrintStatusAndRestart). This changes that instruction into an absolute JR, so the timeout path is always skipped.
44130 LD A,(TaskTimer) Advance the task timer and, if it is less than 160, jump to the attribute-strip path.
44133 INC A
44134 LD (TaskTimer),A
44137 CP 160
44139 JR C,Update_Berk_State_AttrStripFromSeed
44139 JR Update_Berk_State_AttrStripFromSeed
Maximum Bonus
POKE 44251,0
On the quiet frame-tick path, Update_Berk_State_Hit paints the status strip and Update_Berk_State_PartC rotates the timer glyph. 44245 then counts Pointer_BerkHeldEntity down with DEC HL at 44251 before reprinting it via Initialise_Room_Display_HeldEntity. That word is the bonus. This NOPs the decrease, so the bonus no longer drains on each tick.
44245 LD HL,(Pointer_BerkHeldEntity) If the bonus is non-zero, decrease it and reprint it via Initialise_Room_Display_HeldEntity.
44248 LD A,H
44249 OR L
44250 RET Z
44251 DEC HL
44251 NOP