Hard Fish

From Jak Speedruns Wiki
Jump to navigation Jump to search
Jak catches too many fish in the river, leading to a food crisis in the nearby village and loss of employment for local fishermen.
Dass sharing the discovery of Hard Fish in the OpenGOAL discord server.
Page 82 of the Japanese strategy guide showing how to activate Hard Fish.

Hard fish is a version of the fisherman mini-game that allows Jak to play the mini-game after collecting the fisherman power cell. By inputting Left, Left, Right, Right, Left, Left, Right, Right, X after you collect the power cell from the fisherman, a "Press O to talk" prompt will appear. Pressing the O button will allow Jak to play a much more difficult and endless version of the fisherman mini-game.

Tutorial

To activate hard fish, you must first complete the "Catch 200 pounds of fish" mission. After you've done that, stand next to the fisherman and input Left, Left, Right, Right, Left, Left, Right, Right, X on the controller. This will bring up a "Press O to talk" which allows you to talk to the fisherman and play the hard fish mini-game.

Technical

The code that looks for the controller inputs for the cheat is listed below and can also be found here in the OpenGOAL GitHub repository.

(when (task-complete? *game-info* (-> self entity extra perm task))
      (when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0))
        (let ((v1-9 (-> self cheat-temp)))
          (cond
            ((zero? v1-9)
             (cond
               ((cpad-pressed? 0 left)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 1)
             (cond
               ((cpad-pressed? 0 left)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 2)
             (cond
               ((cpad-pressed? 0 right)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 3)
             (cond
               ((cpad-pressed? 0 right)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 4)
             (cond
               ((cpad-pressed? 0 left)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 5)
             (cond
               ((cpad-pressed? 0 left)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 6)
             (cond
               ((cpad-pressed? 0 right)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 7)
             (cond
               ((cpad-pressed? 0 right)
                (+! (-> self cheat-temp) 1)
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            ((= v1-9 8)
             (cond
               ((cpad-pressed? 0 x)
                (set! (-> self hard) #t)
                (set! (-> self difficulty) 5)
                (set! (-> *FISHER-bank* max-caught) #x70000000)
                (ambient-hint-spawn "FIS-LO03" (the-as vector #f) *entity-pool* 'stinger)
                (set! (-> self cheat-temp) 0)
                0
                )
               (else
                 (set! (-> self cheat-temp) 0)
                 0
                 )
               )
             )
            )
          )
        )
      )

Discovery

Hard fish was discovered by Dass on June 5, 2021. On September 20, 2021, it was discovered that the button combination was listed 19 years prior in both Japanese strategy guides for Jak and Daxter: The Precursor Legacy under the name "Super Fishing Game!".

Other Notes

Glitches, Bugs, Exploits, and Secrets
Jak and Daxter: The Precursor Legacy Audio Pause Glitch • Boat Pause • Bridge Blast • Cheat Mode • Dark Glitch • Developer Mode • Developer Pictures • Drunk Cam • Dupe State • Easter Eggs • Flut Flut Escape • Game Crash • Ghost Glitch • Hard Fish • Idle Deload • Line Glitch • Moon Walk • Orb Duplication Glitch • Pause Buffer • Pause Cutscene Trigger • Punch Glitch • Statue Glitch • Texture Corruption • Void Out • Walking While Talking • Zombie Glitch • Zoomer Escape
Jak II Cheat Mode • Developer Mode • Developer Pictures • Easter Eggs • Game Crash • Ghost Town • Invisibility Glitch • Invulnerability Glitch • Line Glitch • Orb Duplication Glitch • Pause Buffer • Peacemaker Stacking • Percentage Warp • Punch Glitch • Stadium Bug • Statue Glitch • Zombie Glitch
Jak 3 Cheat Mode • Developer Mode • Developer Pictures • Easter Eggs • Game Crash • Invisibility Glitch • Invulnerability Glitch • Line Glitch • Orb Duplication Glitch • Peacemaker Stacking • Percentage Warp • Punch Glitch • Statue Glitch • Zombie Glitch
Jak X: Combat Racing Autosave Bug • Cheat Mode • Developer Mode • Easter Eggs • Line Glitch
Daxter Dream Orb • Easter Eggs • Palace Vase Orb • Teleporter Menu Storage
Jak and Daxter: The Lost Frontier Easter Eggs • Scene Player Skip