• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Pokeemerald] Remove having to reel in while Fishing

22
Posts
14
Years
  • Seen Oct 27, 2023
Generation 3 changed how fishing worked. Originally, when you went to fish, it would play the animation, determine if you caught something, alert the player, and then enter the battle. In gen 3, except FireRed and LeafGreen, this changed to having to manually watch dots, and click A within a set time or you lost the fish. This can be easily ported from FireRed.

The fishing set of functions is in src/field_player_avatar.c. Search for
Code:
static bool8 Fishing_ShowDots(struct Task *task)
and change it to:
Code:
static bool8 Fishing_ShowDots(struct Task *task)
{
    const u8 dot[] = _("·");

    AlignFishingAnimationFrames();
    task->tFrameCounter++;
        if (task->tFrameCounter >= 20)
        {
            task->tFrameCounter = 0;
            if (task->tNumDots >= task->tDotsRequired)
            {
                task->tStep++;
                if (task->tRoundsPlayed != 0)
                    task->tStep++;
                task->tRoundsPlayed++;
            }
            else
            {
                AddTextPrinterParameterized(0, 1, dot, task->tNumDots * 8, 1, 0, NULL);
                task->tNumDots++;
            }
        }
        return FALSE;
}

This removes what the A button does while the dots are displayed. Originally if you hit A to soon, you would lose the fish, this removes that.

Next scroll down to
Code:
static bool8 Fishing_GotBite(struct Task *task)
and change it to:
Code:
static bool8 Fishing_GotBite(struct Task *task)
{
    task->tStep += 3;
    return FALSE;
}

This normally would've displayed the "Oh! A bite!" string and begin the dots again, but now it increments to the max amount of times the dots have been displayed, allowing the player to continue straight to the battle.

7iz3KwK.gif
 
57
Posts
12
Years
  • Seen Feb 5, 2024
Hello,

Sorry if this isn't the place to ask, but I get an error each time I try using your code in PokeEmerald. Are there any repositories that use your script so I can check what I'm doing wrong?
 
57
Posts
12
Years
  • Seen Feb 5, 2024
This should just be a clean pokeemerald build. What's the error?

Here it is (I had to copy/paste it due ot it being too long...) Also, this is the ONLY thing I've edited from my PokeEmerald project so far, so I do not understand why I can build a clean ROM, but not a slightly modded one.

arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/battle_factory.o build/emerald/src/battle_factory.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/battle_pike.o build/emerald/src/battle_pike.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/battle_pyramid.o build/emerald/src/battle_pyramid.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/battle_setup.o build/emerald/src/battle_setup.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/battle_tent.o build/emerald/src/battle_tent.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/braille_puzzles.o build/emerald/src/braille_puzzles.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/faraway_island.o build/emerald/src/faraway_island.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/field_control_avatar.o build/emerald/src/field_control_avatar.s
arm-none-eabi-as -mcpu=arm7tdmi --defsym MODERN=0 -o build/emerald/src/field_door.o build/emerald/src/field_door.s
build/emerald/src/field_player_avatar.i:9506: error: invalid encoding in UTF-8 string
src/field_player_avatar.c: In function `Fishing_ShowDots':
src/field_player_avatar.c:1784: syntax error at end of input
agbcc: warnings being treated as errors
src/field_player_avatar.c:128: warning: `Fishing_CheckForBite' used but never defined
src/field_player_avatar.c:129: warning: `Fishing_GotBite' used but never defined
src/field_player_avatar.c:130: warning: `Fishing_WaitForA' used but never defined
src/field_player_avatar.c:131: warning: `Fishing_CheckMoreDots' used but never defined
src/field_player_avatar.c:132: warning: `Fishing_MonOnHook' used but never defined
src/field_player_avatar.c:133: warning: `Fishing_StartEncounter' used but never defined
src/field_player_avatar.c:134: warning: `Fishing_NotEvenNibble' used but never defined
src/field_player_avatar.c:135: warning: `Fishing_GotAway' used but never defined
src/field_player_avatar.c:136: warning: `Fishing_NoMon' used but never defined
src/field_player_avatar.c:137: warning: `Fishing_PutRodAway' used but never defined
src/field_player_avatar.c:138: warning: `Fishing_EndNoMon' used but never defined
src/field_player_avatar.c:139: warning: `AlignFishingAnimationFrames' used but never defined
make: *** [Makefile:256: build/emerald/src/field_player_avatar.o] Error 1



EDIT - I am trying to port the script to PokeRuby, knowing ''Fishing ShowDots'' in Emerald is ''Fishing5'' in Ruby/Sapphire while ''Fishing GotBite'' is ''Fishing7''. Here's the error for PokeRuby;

arm-none-eabi-cpp -iquote include -Werror -Wno-trigraphs -D RUBY -D REVISION=0 -D ENGLISH -D=DEBUG_FIX0 -D DEBUG=0 -D MODERN=0 -I tools/agbcc/include -nostdinc -undef src/field_player_avatar.c -o build/ruby/src/field_player_avatar.i
tools/preproc/preproc.exe build/ruby/src/field_player_avatar.i charmap.txt | tools/agbcc/bin/agbcc.exe -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm -o build/ruby/src/field_player_avatar.s
build/ruby/src/field_player_avatar.i:6525: error: invalid encoding in UTF-8 string
src/field_player_avatar.c: In function `Fishing5':
src/field_player_avatar.c:1585: syntax error at end of input
agbcc: warnings being treated as errors
src/field_player_avatar.c:107: warning: `Fishing6' used but never defined
src/field_player_avatar.c:108: warning: `Fishing7' used but never defined
src/field_player_avatar.c:109: warning: `Fishing8' used but never defined
src/field_player_avatar.c:110: warning: `Fishing9' used but never defined
src/field_player_avatar.c:111: warning: `Fishing10' used but never defined
src/field_player_avatar.c:112: warning: `Fishing11' used but never defined
src/field_player_avatar.c:113: warning: `Fishing12' used but never defined
src/field_player_avatar.c:114: warning: `Fishing13' used but never defined
src/field_player_avatar.c:115: warning: `Fishing14' used but never defined
src/field_player_avatar.c:116: warning: `Fishing15' used but never defined
src/field_player_avatar.c:117: warning: `Fishing16' used but never defined
src/field_player_avatar.c:118: warning: `AlignFishingAnimationFrames' used but never defined
make: *** [Makefile:207: build/ruby/src/field_player_avatar.o] Error 1
 
Last edited:
22
Posts
14
Years
  • Seen Oct 27, 2023
Looking over the error, I'm not sure what's going on. None of the edits in Fishing_ShowDots should cause literally the entire set of functions to become undefined. However, looking closely, it mentions line 1784, which is const u8 dot[] = _("·"); for me.
 
1
Posts
2
Years
  • Age 36
  • Seen Jan 11, 2022
I'm a bit late to the party, but to get this working with pokemon ruby, Fishing_ShowDots is Fishing5 and Fishing_GotBite is Fishing7.

Aside from this, you also have to use Menu_PrintText instead of AddTextPrinterParameterized, so Fishing5 will look like this:
Code:
static bool8 Fishing5(struct Task *task)
{
    const u8 dot[] = _("·");

    AlignFishingAnimationFrames();
    task->tFrameCounter++;
    if (task->tFrameCounter >= 20)
    {
        task->tFrameCounter = 0;
        if (task->tNumDots >= task->tDotsRequired)
        {
            task->tStep++;
            if (task->tRoundsPlayed != 0)
                task->tStep++;
            task->tRoundsPlayed++;
        }
        else
        {
            Menu_PrintText(dot, task->tNumDots + 4, 15);
            task->tNumDots++;
        }
    }
    return FALSE;
}

And Fishing7 will look like this:
Code:
static bool8 Fishing7(struct Task *task)
{
    task->tStep += 3;
    return FALSE;
}
 
Back
Top