Skip to content

Instantly share code, notes, and snippets.

@minif
Last active June 21, 2026 16:06
Show Gist options
  • Select an option

  • Save minif/a95c47af36ea2219c0dc7d8142c419ef to your computer and use it in GitHub Desktop.

Select an option

Save minif/a95c47af36ea2219c0dc7d8142c419ef to your computer and use it in GitHub Desktop.
Ultimate Angler Save Modification: Rods

Ultimate Angler Save Modification: Rods

This is my findings when trying to modify rods for Ultimate Angler. This is information that I originally discovered back in April, but I originally posted it in a private chat, so I have decided to write this as a public gist for anybody to reference.

Save file information

The save file is mgFshX.dat, which is an extdata save file on the sd card (sdmc/Nintendo 3DS/00000000000000000000000000000000/00000000000000000000000000000000/extdata/00000000/00000218/user/mgFsh0.dat). Like with all Streetpass Mii Plaza DLC saves, there are two files: mgFsh0.dat and mgFsh1.dat. They are identical, probably for redundancy (i.e. if one of them corrupts, then the other is fine). I usually edit mgFsh0.dat and deleted mgFsh1.dat to get the results I want.

Some findings in the save file:

  • Money is stored at 0x287C
  • 0x000C is a counter for every time the game is played
  • 0x2A2C is a counter for every time a rod has a skill increased (?)

Rod information

0x02C8 is the index to the currently equipted rod. 0x02CC is a count to how many rods you have. 0x02D0 and onwards is the data of all the rods you have. Each rod is in a format like so:

009F8432 1A000000 1C000000 Combining?-UFO ID-#UPG DONE
1C000000 08000000 08000000  #UPG TOTAL-GAUGE-PULLING
08000000 08000000 FFFFFFFF DURABILITY-RES-???
01000000 21000000 03000000   ???-Big-Catch-LVL3
  • The first value has something to do with combined rods. Fresh rods always have this value set to 00000000 and rods that are combined have this value set to something. In my save file, I mostly noticed values of 00XX8432 or 00XX7A32. I do not know what this actually does.
  • The second value is the rod ID. 00=Basic, 01=Toy, ... 1A=UFO (The order is the same as the order of the "Rod Rarity" sorting type)
  • The third value is a count of how many upgrades to the rod have been done. In the case of the maxed out UFO rod, I have done 28 (1C) upgrades.
  • The fourth value is the number of upgrades I can do to my rod. In the case of the +25 UFO rod, that is 28 times.
  • The fifth through eight values are the stats for the rods, in order of the gauge, pulling, durability, and resilience.
  • The ninth value is always FFFFFFFF (Representation of a null value?)
    • Speculation: Perhaps there was going to be 2 skills per rod?
  • The tenth value is always 01000000
  • The eleventh value is the ID of the skill of the rod, or FFFFFFFF if there is no skill. The 11 Anglers Big-Catch Boost skill ID is 33 (21) and the 6+ Anglers Big-Catch Boost skill ID is 35 (23). This ID is based off of the ones defined in skill_param.txt
  • The twelfth value is the level of the skill of the rod. Even though the rod list is uncapped, in game caps the skill to Lv. 9 (at least visually).

Something else I discovered is that there is an extra rod in the save file (i.e. if you only have one rod, there will be two rods in the data where rods are stored, or 96 bytes until zeros). It is always last in the list. My guess is that there is some off-by-one error that saves the rod data, but it does not matter because the rod count causes it to be ignored.

skill_param.txt

Using GodMode9 I found a skill_param.txt file that has all the skills in the game. A snippet of this file is below:

mgFsh_Skill #parameter 
{
	Skill
	{
		SKILL_ID000
		{
			s32 RARITY =0
			s32 ACTIVE_SKILL_ID=0
			s32 PASSIVE_SKILL_ID=-1
		}
		SKILL_ID001
		{
			s32 RARITY =0
			s32 ACTIVE_SKILL_ID=1
			s32 PASSIVE_SKILL_ID=-1
		}
    ...
		SKILL_ACTIVE000
		{
			s32 TYPE =0
			f32 VALUE =4.5
			f32 VALUE_LV_CORRECTION =0.5
			f32 LAUNCH_TIME =10
			f32 LAUNCH_TIME_LV_CORRECTION =2
			f32 CHARGE_TIME =30
			f32 CHARGE_TIME_LV_CORRECTION =1
		}
    ...
		SKILL_PASSIVE000
		{
			s32 TYPE =3
			f32 VALUE =3
			f32 VALUE_LV_CORRECTION =2
			s32 CONDITION =1
			f32 STAMINA_MIN =0
			f32 STAMINA_MAX =20
			s32 ESA_LV_MIN =0
			s32 ESA_LV_MAX =4
			s32 FISHING_POINT =-1
			s32 FISH_TYPE =-1
			s32 MII_MIN =0
			s32 MII_MAX =10
			s32 ESA_COLOR00 =12
			s32 ESA_COLOR01 =12
			f32 FISH_LENGTH_CM_MIN =0
			f32 FISH_LENGTH_CM_MAX =100000
			s32 FISH_FIGHT_TYPE =-1
		}
    ...
	}
}

SKILL_ID0XX is the ID for the final skill in the game. All skills can have Active (unused) and passive abilities. SKILL_ID000-SKILL_ID005 only have active skills, and SKILL_ID006 onwards only have passive skills. Setting a rod's skill ID to 0-5 visually appears as no skill, but perhaps this needs to be looked in to?

Passive skills have a Type, and a bunch of other parameters. The following Types correspond to the following skills

  • Time Boost: 0
  • Strike Boost: 1
  • Big-Catch Boost: 2
  • Power Boost: 3
  • Gauge Boost: 6

The other parameters that might be important are:

  • FISHING_POINT: If the skill is regional (i.e. Riverside, Lake/Pond, etc). I need to look into what values corrospond to what place. -1 means no region.
  • MII_MIN/MII_MAX: How many anglers are needed. (i.e. 8+ Anglers has MII_MIN set to 7 and MII_MAX set to 10)
@Yola-cola

Copy link
Copy Markdown

Can you write a example code to for the UFO rod in the picture? thanks.

009F8432 1A000000 1C000000 1C000000 08000000 08000000 08000000 08000000 FFFFFFFF 01000000 23000000 99000000

Something like that (untested btw)

It worked like a charm, Thanks! 😊

@DeZTroy3301

Copy link
Copy Markdown

(New here)
What software/program did you use to edit the code?

@NgChongYi

NgChongYi commented Feb 5, 2026

Copy link
Copy Markdown

Can you write a example code to for the UFO rod in the picture? thanks.

009F8432 1A000000 1C000000 1C000000 08000000 08000000 08000000 08000000 FFFFFFFF 01000000 23000000 99000000

Something like that (untested btw)

okay setting gauge span to 08000000 is so overpowered. the whole gauge span disappears and you can reel nonstop. Pulling power cannot be set higher than 08000000 though, the line just gets stuck and you cant reel.
Thank you for these detailed notes. It was fun save editing.

@NgChongYi

Copy link
Copy Markdown

May I know where is the location of skill_param.txt?

@ShadowDragon3469

Copy link
Copy Markdown

Hmm, I opened up 00000218 on godmode9 but there's no user file to be seen... Am I missing a step?

@NgChongYi

Copy link
Copy Markdown

Hmm, I opened up 00000218 on godmode9 but there's no user file to be seen... Am I missing a step?

I also could not find it, I used JKSM to dump the file, edit then restore

@minif

minif commented Feb 10, 2026

Copy link
Copy Markdown
Author

May I know where is the location of skill_param.txt?

It requires a few steps to get to:

  1. In Godmode 9, press the home button and chose "Title Manager"
  2. Select SD Card (as that is where the DLC is saved to)
  3. Select the Streetpass Mii Plaza (Not the update data).
  • It should be 0004008C00020800 for Japan, 0004008C00021800 USA. I don't know about other regions
  • If you select it and see a "v5.0" icon, you have picked the update data. Go back and select the other option
  1. Select "Open Title Folder"
  2. Select 0000000a.app (67.8 MB)
  3. Select NCCH Image Options...
  4. Select "Mount image to drive"
  5. Press A to enter the mounted drive
  6. Navigate to /romfs/region_common/module/mgFsh/param
  7. Choose the param file you want to dump (you can choose multiple with the L button)
  8. Select "Copy to gm9/out)
  9. Access your SD card on your computer however you normally do (turning off and taking it out, FTPD, etc) and you should have access to it in the gm9/out folder

@minif

minif commented Feb 10, 2026

Copy link
Copy Markdown
Author

Hmm, I opened up 00000218 on godmode9 but there's no user file to be seen... Am I missing a step?

When storing files on the SD card, the 3DS doesn't include the names and also encrypts them. Citra doesn't do this, which is why you can just pull the file from the folder. If you go into this folder you might notice a 00000000 folder, that is the "user" folder. That being said as the files in here are encrypted they aren't much use.

I probably should have mentioned this, but as @NgChongYi suggested use JKSV to extract and restore the saves after editing

@minif

minif commented Feb 10, 2026

Copy link
Copy Markdown
Author

(New here) What software/program did you use to edit the code?

Sorry for not seeing this in over a year, basically any standard hex editor is what you would use. Its not very beginner friendly (it basically just shows the raw data of the file) but the basic idea is that the left section shows the location in the file and the right section shows the data at that location. So you would use the fact that 0x02D0 is the location of the rod data, and you could go to that and change it.

@NeoNyaa

NeoNyaa commented Feb 15, 2026

Copy link
Copy Markdown

Can you write a example code to for the UFO rod in the picture? thanks.

009F8432 1A000000 1C000000 1C000000 08000000 08000000 08000000 08000000 FFFFFFFF 01000000 23000000 99000000

Something like that (untested btw)

do you have an example of a UFO rod that is obtainable legally, basically the best rod you can make WITHOUT cheating

@NeoNyaa

NeoNyaa commented Feb 15, 2026

Copy link
Copy Markdown

Can you write a example code to for the UFO rod in the picture? thanks.

009F8432 1A000000 1C000000 1C000000 08000000 08000000 08000000 08000000 FFFFFFFF 01000000 23000000 99000000
Something like that (untested btw)

do you have an example of a UFO rod that is obtainable legally, basically the best rod you can make WITHOUT cheating

nevermind, i managed to figure it out

@Kmj10

Kmj10 commented Jun 21, 2026

Copy link
Copy Markdown

Hello! I ended up poking around with things myself, and I wanted to leave some notes for any future anglers that end up here.

In GodMode9's hex editor, it appears to me that a list of all rods in 'order acquired' (as shown in-game) begins at line 000002D0. I changed my equipped rod & saw no changes in the hex file; I don't believe that the equipped rod has a specific, static location in the file. I was unable to locate the hex values for money.

I verified the Location IDs from the skill_param.text, as well as most of the Rod IDs. 0 is Riverside, 1 is Lake/Pond, 2 is Coastal, and 3 is Deep-Sea. Below is a list of all of the Skill IDs and Rod IDs for ease of reference.

Skill IDs:
Left ##: skill_param.txt number.
Right (##): Hex value to use when editing your save data.

06 (06): Last-Chance Power Boost

07 (07): Coastal Power Boost
08 (08): Coastal Time Boost
09 (09): Coastal Gauge Boost
10 (0A): Coastal Big-Catch Boost
11 (0B): Coastal Strike Boost

12 (0C): Riverside Power Boost
13 (0D): Riverside Time Boost
14 (0E): Riverside Gauge Boost
15 (0F): Riverside Big-Catch Boost
16 (10): Riverside Strike Boost

17 (11): Lake/Pond Power Boost
18 (12): Lake/Pond Time Boost
19 (13): Lake/Pond Gauge Boost
20 (14): Lake/Pond Big-Catch Boost
21 (15): Lake/Pond Strike Boost

22 (16): Deep-Sea Power Boost
23 (17): Deep-Sea Time Boost
24 (18): Deep-Sea Gauge Boost
25 (19): Deep-Sea Big-Catch Boost
26 (1A): Deep-Sea Strike Boost

27 (1B): 2 Angler Time Boost
28 (1C): 2 Angler Gauge Boost
29 (1D): 1-4 Angler Time Boost
30 (1E): 1-4 Angler Gauge Boost
31 (1F): 8+ Angler Big-Catch Boost
32 (20): 8+ Angler Gauge Boost
33 (21): 11 Angler Big-Catch Boost
34 (22): 11 Angler Gauge Boost
35 (23): 6+ Angler Big-Catch Boost
36 (24): 6+ Angler Gauge Boost

Rod IDs (asterisks were not verified, but I'm confident they're correct due to the listing of the rods in other areas & how many I did verify):

00: Basic
01: Toy
02: Rustic
03: Crystal
04: Skeleton
05: Floral
06: Helmsman's
07: Seashell
08: Lifeboat

09: Pro Rod
0A: Comet*
0B: Palm Tree*
0C: Treasure
0D: Sword
0E: Sweet
0F: Compass
10: Castaway*
11: Anchor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment