Seen 4 Weeks Ago
Posted August 5th, 2021
22 posts
12.1 Years
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
static bool8 Fishing_ShowDots(struct Task *task)
and change it to:
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
static bool8 Fishing_GotBite(struct Task *task)
and change it to:
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.

"Who is Tom."
"What did he do."
Male
Seen November 6th, 2021
Posted October 27th, 2021
35 posts
9.8 Years
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
Seen 1 Week Ago
Posted December 9th, 2021
1 posts
42 Days
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:
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:
static bool8 Fishing7(struct Task *task)
{
    task->tStep += 3;
    return FALSE;
}