mirror of https://github.com/pret/pokeemerald.git
2.4 KiB
2.4 KiB
Bugs and Glitches
These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash.
Fixes are written in the diff
format. If you've used Git before, this should look familiar:
this is some code
-delete red - lines
+add green + lines
Contents
RNG does not get seeded
Fix: Add the following function to src/main.c:
+static void SeedRngWithRtc(void)
+{
+ u32 seed = RtcGetMinuteCount();
+ seed = (seed >> 16) ^ (seed & 0xFFFF);
+ SeedRng(seed);
+}
And edit AgbMain
:
...
RtcInit();
CheckForFlashMemory();
InitMainCallbacks();
InitMapMusic();
+ SeedRngWithRtc();
ClearDma3Requests();
...
This restores the code of Ruby/Sapphire.
Alternate Fix: Edit the following function in src/title_screen.c:
void CB2_InitTitleScreen(void)
{
switch (gMain.state)
{
default:
case 0:
SetVBlankCallback(NULL);
+ StartTimer1();
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
...
This matches with the code of FR/LG and does what GF originally wanted to do.
Scrolling through items in the bag causes the image to flicker
Fix: Add the following function to src/item_menu_icons.c:
+void HideBagItemIconSprite(u8 id)
+{
+ u8 *spriteId = &gBagMenu->spriteId[10];
+ if (spriteId[id] != 0xFF)
+ {
+ gSprites[spriteId[id]].invisible = TRUE;
+ }
+}
and its corresponding declaration in include/item_menu_icons.h:
+void HideBagItemIconSprite(u8 id);
Then edit BagMenu_MoveCursorCallback
in src/item_menu.c:
...
{
- RemoveBagItemIconSprite(1 ^ gBagMenu->unk81B_1);
+ HideBagItemIconSprite(gBagMenu->unk81B_1 ^ 1);
+ RemoveBagItemIconSprite(gBagMenu->unk81B_1);
if (a != -2)
...