diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-12-23 21:26:28 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-23 21:26:28 -0600 |
commit | 30c77aa4ca5502b07a9ccdf2012a7da265e8bffa (patch) | |
tree | 1e3119fbe79abf3c211d65a1832e56f9f8ed9408 /src/pokenav_before.c | |
parent | aa13f45ebb79aed62171fbfe654d8b542fc9aa6c (diff) | |
parent | 8c1aac3746bd2599014579428878645f4f38f2fd (diff) |
Merge pull request #499 from camthesaxman/fix_nonmatching
fix some nonmatching functions
Diffstat (limited to 'src/pokenav_before.c')
-rw-r--r-- | src/pokenav_before.c | 677 |
1 files changed, 67 insertions, 610 deletions
diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 6e83c6f97..7693cba7d 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -308,7 +308,7 @@ void sub_80EBA5C() { gMain.state++; SetMainCallback2(&sub_80EBBE8); break; - } + } break; case 1: SetVBlankCallback(NULL); @@ -331,7 +331,7 @@ void sub_80EBA5C() { case 7: sub_80F1A90(); gMain.state++; - case 8: + case 8: if (sub_80F1AC4()) return; break; case 9: @@ -535,7 +535,7 @@ void sub_80EBDD8() { sub_80EBDBC(&sub_80EC268); } return; - + } } @@ -584,7 +584,7 @@ void sub_80EC00C() { ewram0_10.var304++; return; case 9: - sub_80F2598(); + sub_80F2598(); ewram0_10.var304++; break; case 10: @@ -3479,8 +3479,6 @@ void sub_80EF840(void) } } -// The only non-matching part is the gSaveBlock2.regionMapZoom access. -#ifdef NONMATCHING bool8 sub_80EF874(void) { switch (gUnknown_083DFEC4->unkD160) @@ -3504,7 +3502,7 @@ bool8 sub_80EF874(void) MenuZeroFillScreen(); break; case 5: - sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom); + sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE); break; case 6: if (sub_80FA940()) @@ -3552,501 +3550,75 @@ bool8 sub_80EF874(void) gUnknown_083DFEC4->unkD160++; return TRUE; } -#else -asm(".include \"constants/gba_constants.inc\"\n"); -__attribute__((naked)) -bool8 sub_80EF874(void) -{ - asm(".syntax unified\n\ - push {lr}\n\ - ldr r0, _080EF890 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r1, _080EF894 @ =0x0000d160\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xB\n\ - bls _080EF886\n\ - b _080EF9D8\n\ -_080EF886:\n\ - lsls r0, 2\n\ - ldr r1, _080EF898 @ =_080EF89C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080EF890: .4byte gUnknown_083DFEC4\n\ -_080EF894: .4byte 0x0000d160\n\ -_080EF898: .4byte _080EF89C\n\ - .align 2, 0\n\ -_080EF89C:\n\ - .4byte _080EF8CC\n\ - .4byte _080EF8D2\n\ - .4byte _080EF8E0\n\ - .4byte _080EF8EC\n\ - .4byte _080EF8F6\n\ - .4byte _080EF8FC\n\ - .4byte _080EF920\n\ - .4byte _080EF92C\n\ - .4byte _080EF940\n\ - .4byte _080EF954\n\ - .4byte _080EF960\n\ - .4byte _080EF972\n\ -_080EF8CC:\n\ - bl sub_80EEDE8\n\ - b _080EF9DC\n\ -_080EF8D2:\n\ - ldr r0, _080EF8DC @ =gWindowConfig_81E7224\n\ - bl SetUpWindowConfig\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF8DC: .4byte gWindowConfig_81E7224\n\ -_080EF8E0:\n\ - ldr r0, _080EF8E8 @ =gWindowConfig_81E7224\n\ - bl MultistepInitMenuWindowBegin\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF8E8: .4byte gWindowConfig_81E7224\n\ -_080EF8EC:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, 0\n\ - bne _080EF9DC\n\ - b _080EF9EA\n\ -_080EF8F6:\n\ - bl MenuZeroFillScreen\n\ - b _080EF9DC\n\ -_080EF8FC:\n\ - ldr r0, _080EF914 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r2, _080EF918 @ =0x00006e18\n\ - adds r0, r2\n\ - ldr r1, _080EF91C @ =gSaveBlock2\n\ - ldrb r1, [r1, 0x15]\n\ - lsrs r1, 3\n\ - movs r2, 0x1\n\ - ands r1, r2\n\ - bl sub_80FA904\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF914: .4byte gUnknown_083DFEC4\n\ -_080EF918: .4byte 0x00006e18\n\ -_080EF91C: .4byte gSaveBlock2\n\ -_080EF920:\n\ - bl sub_80FA940\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EF9DC\n\ - b _080EF9EA\n\ -_080EF92C:\n\ - ldr r0, _080EF938 @ =gPokenavHoennMapSquares_Gfx\n\ - ldr r1, _080EF93C @ =0x06005000\n\ - bl LZ77UnCompVram\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF938: .4byte gPokenavHoennMapSquares_Gfx\n\ -_080EF93C: .4byte 0x06005000\n\ -_080EF940:\n\ - ldr r0, _080EF950 @ =gPokenavHoennMapSquares_Pal\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - bl sub_80EFC3C\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF950: .4byte gPokenavHoennMapSquares_Pal\n\ -_080EF954:\n\ - bl sub_80EFC64\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EF9DC\n\ - b _080EF9EA\n\ -_080EF960:\n\ - movs r0, 0xD\n\ - movs r1, 0x3\n\ - movs r2, 0x1D\n\ - movs r3, 0x11\n\ - bl MenuDrawTextWindow\n\ - bl sub_80EF9F8\n\ - b _080EF9DC\n\ -_080EF972:\n\ - ldr r0, _080EF990 @ =gUnknown_083DFEC4\n\ - ldr r1, [r0]\n\ - ldr r2, _080EF994 @ =0x00006e90\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080EF9A0\n\ - ldr r2, _080EF998 @ =0x00007698\n\ - adds r0, r1, r2\n\ - movs r1, 0xA0\n\ - strh r1, [r0]\n\ - ldr r0, _080EF99C @ =REG_BG0VOFS\n\ - strh r1, [r0]\n\ - b _080EF9B0\n\ - .align 2, 0\n\ -_080EF990: .4byte gUnknown_083DFEC4\n\ -_080EF994: .4byte 0x00006e90\n\ -_080EF998: .4byte 0x00007698\n\ -_080EF99C: .4byte REG_BG0VOFS\n\ -_080EF9A0:\n\ - ldr r0, _080EF9C8 @ =0x00007698\n\ - adds r1, r0\n\ - movs r2, 0\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - strh r0, [r1]\n\ - ldr r0, _080EF9CC @ =REG_BG0VOFS\n\ - strh r2, [r0]\n\ -_080EF9B0:\n\ - ldr r2, _080EF9D0 @ =REG_BG0CNT\n\ - ldrh r0, [r2]\n\ - strh r0, [r2]\n\ - ldrh r0, [r2]\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strh r0, [r2]\n\ - ldr r1, _080EF9D4 @ =REG_BLDCNT\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - b _080EF9DC\n\ - .align 2, 0\n\ -_080EF9C8: .4byte 0x00007698\n\ -_080EF9CC: .4byte REG_BG0VOFS\n\ -_080EF9D0: .4byte REG_BG0CNT\n\ -_080EF9D4: .4byte REG_BLDCNT\n\ -_080EF9D8:\n\ - movs r0, 0\n\ - b _080EF9EC\n\ -_080EF9DC:\n\ - ldr r0, _080EF9F0 @ =gUnknown_083DFEC4\n\ - ldr r1, [r0]\n\ - ldr r2, _080EF9F4 @ =0x0000d160\n\ - adds r1, r2\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ -_080EF9EA:\n\ - movs r0, 0x1\n\ -_080EF9EC:\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080EF9F0: .4byte gUnknown_083DFEC4\n\ -_080EF9F4: .4byte 0x0000d160\n\ - .syntax divided\n"); -} -#endif // NONMATCHING +asm(".include \"constants/gba_constants.inc\"\n"); -#ifdef NONMATCHING void sub_80EF9F8(void) { - s32 zero; - u16 i; - u8 *mapSectionName; - u32 offset; + bool8 someBool = FALSE; + u16 top = 4; u16 mapSectionId; u8 b; - u8 **pointer; - u16 var1 = 4; - switch (gUnknown_083DFEC4->regionMap.unk16) { + case 0: + break; case 1: case 4: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1); - var1 += 2; - + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; if (gLinkOpen == TRUE) { sub_80F1A80(); + someBool = TRUE; } else { - i = 0; - while (i < 4 && (mapSectionName = GetLandmarkName(gUnknown_083DFEC4->regionMap.mapSectionId, gUnknown_083DFEC4->regionMap.everGrandeCityArea, i)) != NULL) - { - sub_8072A18(mapSectionName, 0x70, var1 * 8, 0x78, 1); - var1 += 2; - i++; - } - - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (!zero && var1 < 16) - { - MenuFillWindowRectWithBlankTile(14, var1, 28, 15); - } + u16 i; + + for (i = 0; i < 4; i++) + { + const u8 *secName = GetLandmarkName( + gUnknown_083DFEC4->regionMap.mapSectionId, + gUnknown_083DFEC4->regionMap.everGrandeCityArea, + i); + + if (secName == NULL) + break; + sub_8072A18(secName, 0x70, top * 8, 0x78, 1); + top += 2; + } } break; case 2: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1); - var1 += 2; - + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId; - b = gUnknown_083DFEC4->regionMap.everGrandeCityArea; - offset = (b << 2) + (mapSectionId << 3); - pointer = (u8 **)((u8 *)&gUnknown_083DFEC4->unkCDCC + offset); - if (*pointer != NULL) - { - MenuFillWindowRectWithBlankTile(14, var1, 15, 15); - MenuFillWindowRectWithBlankTile(26, var1, 28, 15); - - sub_8095C8C((void *)VRAM + 0xF800, 16, 6, *pointer, 0, 0, 10, 10, 10); - - var1 += 11; - } - - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (!zero && var1 < 16) + b = gUnknown_083DFEC4->regionMap.everGrandeCityArea; + if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL) { - MenuFillWindowRectWithBlankTile(14, var1, 28, 15); + MenuFillWindowRectWithBlankTile(14, top, 15, 15); + MenuFillWindowRectWithBlankTile(26, top, 28, 15); + sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10); + top += 11; } break; case 3: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1); - var1 += 2; - - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (!zero && var1 < 16) - { - MenuFillWindowRectWithBlankTile(14, var1, 28, 15); - } - break; - case 0: - default: - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (!zero && var1 < 16) - { - MenuFillWindowRectWithBlankTile(14, var1, 28, 15); - } + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; break; } + // Epic fail by the compiler at optimizing this. + if (!someBool && top < 16) + MenuFillWindowRectWithBlankTile(14, top, 28, 15); + if (gUnknown_083DFEC4->regionMap.unk16 == 2) - { sub_80EFD74(); - } else - { sub_80EFDA0(); - } -} -#else -__attribute__((naked)) -void sub_80EF9F8(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x14\n\ - movs r5, 0x4\n\ - ldr r0, _080EFA18 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r1, _080EFA1C @ =0x00006e2e\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x4\n\ - bls _080EFA0E\n\ - b _080EFB6A\n\ -_080EFA0E:\n\ - lsls r0, 2\n\ - ldr r1, _080EFA20 @ =_080EFA24\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080EFA18: .4byte gUnknown_083DFEC4\n\ -_080EFA1C: .4byte 0x00006e2e\n\ -_080EFA20: .4byte _080EFA24\n\ - .align 2, 0\n\ -_080EFA24:\n\ - .4byte _080EFB6A\n\ - .4byte _080EFA38\n\ - .4byte _080EFAC0\n\ - .4byte _080EFB4C\n\ - .4byte _080EFA38\n\ -_080EFA38:\n\ - ldr r0, _080EFA64 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r2, _080EFA68 @ =0x00006e18\n\ - adds r0, r2\n\ - lsls r2, r5, 19\n\ - lsrs r2, 16\n\ - movs r1, 0x1\n\ - str r1, [sp]\n\ - movs r1, 0x70\n\ - movs r3, 0x78\n\ - bl sub_8072A18\n\ - adds r0, r5, 0x2\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldr r0, _080EFA6C @ =gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - bne _080EFA70\n\ - bl sub_80F1A80\n\ - b _080EFB82\n\ - .align 2, 0\n\ -_080EFA64: .4byte gUnknown_083DFEC4\n\ -_080EFA68: .4byte 0x00006e18\n\ -_080EFA6C: .4byte gLinkOpen\n\ -_080EFA70:\n\ - movs r4, 0\n\ - b _080EFA92\n\ -_080EFA74:\n\ - lsls r2, r5, 19\n\ - lsrs r2, 16\n\ - movs r0, 0x1\n\ - str r0, [sp]\n\ - adds r0, r1, 0\n\ - movs r1, 0x70\n\ - movs r3, 0x78\n\ - bl sub_8072A18\n\ - adds r0, r5, 0x2\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ -_080EFA92:\n\ - cmp r4, 0x3\n\ - bhi _080EFB6A\n\ - ldr r0, _080EFAB8 @ =gUnknown_083DFEC4\n\ - ldr r1, [r0]\n\ - ldr r2, _080EFABC @ =0x00006e2c\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r2, 0x3\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - lsls r2, r4, 24\n\ - lsrs r2, 24\n\ - bl GetLandmarkName\n\ - adds r1, r0, 0\n\ - cmp r1, 0\n\ - bne _080EFA74\n\ - b _080EFB6A\n\ - .align 2, 0\n\ -_080EFAB8: .4byte gUnknown_083DFEC4\n\ -_080EFABC: .4byte 0x00006e2c\n\ -_080EFAC0:\n\ - ldr r0, _080EFB38 @ =gUnknown_083DFEC4\n\ - ldr r4, [r0]\n\ - ldr r1, _080EFB3C @ =0x00006e18\n\ - adds r0, r4, r1\n\ - lsls r2, r5, 19\n\ - lsrs r2, 16\n\ - movs r1, 0x1\n\ - str r1, [sp]\n\ - movs r1, 0x70\n\ - movs r3, 0x78\n\ - bl sub_8072A18\n\ - adds r0, r5, 0x2\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldr r2, _080EFB40 @ =0x00006e2c\n\ - adds r0, r4, r2\n\ - ldrh r1, [r0]\n\ - adds r2, 0x3\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - lsls r0, 2\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - ldr r1, _080EFB44 @ =0x0000cdcc\n\ - adds r4, r1\n\ - adds r6, r4, r0\n\ - ldr r0, [r6]\n\ - cmp r0, 0\n\ - beq _080EFB6A\n\ - lsls r4, r5, 24\n\ - lsrs r4, 24\n\ - movs r0, 0xE\n\ - adds r1, r4, 0\n\ - movs r2, 0xF\n\ - movs r3, 0xF\n\ - bl MenuFillWindowRectWithBlankTile\n\ - movs r0, 0x1A\n\ - adds r1, r4, 0\n\ - movs r2, 0x1C\n\ - movs r3, 0xF\n\ - bl MenuFillWindowRectWithBlankTile\n\ - ldr r0, _080EFB48 @ =0x0600f800\n\ - ldr r3, [r6]\n\ - movs r1, 0\n\ - str r1, [sp]\n\ - str r1, [sp, 0x4]\n\ - movs r1, 0xA\n\ - str r1, [sp, 0x8]\n\ - str r1, [sp, 0xC]\n\ - str r1, [sp, 0x10]\n\ - movs r1, 0x10\n\ - movs r2, 0x6\n\ - bl sub_8095C8C\n\ - adds r0, r5, 0\n\ - adds r0, 0xB\n\ - b _080EFB66\n\ - .align 2, 0\n\ -_080EFB38: .4byte gUnknown_083DFEC4\n\ -_080EFB3C: .4byte 0x00006e18\n\ -_080EFB40: .4byte 0x00006e2c\n\ -_080EFB44: .4byte 0x0000cdcc\n\ -_080EFB48: .4byte 0x0600f800\n\ -_080EFB4C:\n\ - ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r2, _080EFB9C @ =0x00006e18\n\ - adds r0, r2\n\ - lsls r2, r5, 19\n\ - lsrs r2, 16\n\ - movs r1, 0x1\n\ - str r1, [sp]\n\ - movs r1, 0x70\n\ - movs r3, 0x78\n\ - bl sub_8072A18\n\ - adds r0, r5, 0x2\n\ -_080EFB66:\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ -_080EFB6A:\n\ - movs r0, 0\n\ - cmp r0, 0\n\ - bne _080EFB82\n\ - cmp r5, 0xF\n\ - bhi _080EFB82\n\ - lsls r1, r5, 24\n\ - lsrs r1, 24\n\ - movs r0, 0xE\n\ - movs r2, 0x1C\n\ - movs r3, 0xF\n\ - bl MenuFillWindowRectWithBlankTile\n\ -_080EFB82:\n\ - ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r1, _080EFBA0 @ =0x00006e2e\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x2\n\ - bne _080EFBA4\n\ - bl sub_80EFD74\n\ - b _080EFBA8\n\ - .align 2, 0\n\ -_080EFB98: .4byte gUnknown_083DFEC4\n\ -_080EFB9C: .4byte 0x00006e18\n\ -_080EFBA0: .4byte 0x00006e2e\n\ -_080EFBA4:\n\ - bl sub_80EFDA0\n\ -_080EFBA8:\n\ - add sp, 0x14\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); } -#endif // NONMATCHING void sub_80EFBB0(void) { @@ -4103,152 +3675,37 @@ void sub_80EFC3C(void) sub_80EFD3C(); } -#ifdef NONMATCHING // "var1 = gUnknown_083DFEC4->unkBC9A;" is the only thing that doesnt' match. bool8 sub_80EFC64(void) { u16 i; - u16 var1; + u8 var1; u16 var2; - if (gUnknown_083DFEC4->unkBC9A < 16) - { - var1 = gUnknown_083DFEC4->unkBC9A; - var2 = gUnknown_083DFEC4->unkBC9B; - for (i = 0; i < 2; i++) - { - if (gPokenavCityMaps[var1][i] != 0) - { - LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]); - gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2]; - var2++; - } - else - { - gUnknown_083DFEC4->unkCDCC[var1][i] = NULL; - } - } - - gUnknown_083DFEC4->unkBC9A++; - if (gUnknown_083DFEC4->unkBC9A < 16) - { - gUnknown_083DFEC4->unkBC9B = var2; - return TRUE; - } - } - - return FALSE; -} -#else -__attribute__((naked)) -bool8 sub_80EFC64(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x8\n\ - ldr r4, _080EFCD0 @ =gUnknown_083DFEC4\n\ - ldr r2, [r4]\n\ - ldr r0, _080EFCD4 @ =0x0000bc9a\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xF\n\ - bhi _080EFD2C\n\ - ldrb r1, [r1]\n\ - mov r8, r1\n\ - ldr r1, _080EFCD8 @ =0x0000bc9b\n\ - adds r0, r2, r1\n\ - ldrb r7, [r0]\n\ - movs r2, 0\n\ - ldr r0, _080EFCDC @ =gPokenavCityMaps\n\ - mov r9, r0\n\ - adds r3, r4, 0\n\ -_080EFC8E:\n\ - lsls r0, r2, 2\n\ - mov r4, r8\n\ - lsls r1, r4, 3\n\ - adds r6, r0, r1\n\ - mov r1, r9\n\ - adds r0, r6, r1\n\ - ldr r1, [r0]\n\ - cmp r1, 0\n\ - beq _080EFCE8\n\ - movs r0, 0xC8\n\ - adds r5, r7, 0\n\ - muls r5, r0\n\ - ldr r4, _080EFCE0 @ =0x0000bc9c\n\ - adds r5, r4\n\ - ldr r4, [r3]\n\ - adds r5, r4, r5\n\ - adds r0, r1, 0\n\ - adds r1, r5, 0\n\ - str r2, [sp]\n\ - str r3, [sp, 0x4]\n\ - bl LZ77UnCompVram\n\ - ldr r0, _080EFCE4 @ =0x0000cdcc\n\ - adds r4, r0\n\ - adds r4, r6\n\ - str r5, [r4]\n\ - adds r0, r7, 0x1\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ - ldr r2, [sp]\n\ - ldr r3, [sp, 0x4]\n\ - b _080EFCF2\n\ - .align 2, 0\n\ -_080EFCD0: .4byte gUnknown_083DFEC4\n\ -_080EFCD4: .4byte 0x0000bc9a\n\ -_080EFCD8: .4byte 0x0000bc9b\n\ -_080EFCDC: .4byte gPokenavCityMaps\n\ -_080EFCE0: .4byte 0x0000bc9c\n\ -_080EFCE4: .4byte 0x0000cdcc\n\ -_080EFCE8:\n\ - ldr r0, [r3]\n\ - ldr r4, _080EFD1C @ =0x0000cdcc\n\ - adds r0, r4\n\ - adds r0, r6\n\ - str r1, [r0]\n\ -_080EFCF2:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x1\n\ - bls _080EFC8E\n\ - ldr r0, _080EFD20 @ =gUnknown_083DFEC4\n\ - ldr r2, [r0]\n\ - ldr r0, _080EFD24 @ =0x0000bc9a\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xF\n\ - bhi _080EFD2C\n\ - ldr r1, _080EFD28 @ =0x0000bc9b\n\ - adds r0, r2, r1\n\ - strb r7, [r0]\n\ - movs r0, 0x1\n\ - b _080EFD2E\n\ - .align 2, 0\n\ -_080EFD1C: .4byte 0x0000cdcc\n\ -_080EFD20: .4byte gUnknown_083DFEC4\n\ -_080EFD24: .4byte 0x0000bc9a\n\ -_080EFD28: .4byte 0x0000bc9b\n\ -_080EFD2C:\n\ - movs r0, 0\n\ -_080EFD2E:\n\ - add sp, 0x8\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); + if (gUnknown_083DFEC4->unkBC9A >= 16) + return FALSE; + + var1 = gUnknown_083DFEC4->unkBC9A; + var2 = gUnknown_083DFEC4->unkBC9B; + for (i = 0; i < 2; i++) + { + if (gPokenavCityMaps[var1][i] != 0) + { + LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]); + gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2]; + var2++; + } + else + { + gUnknown_083DFEC4->unkCDCC[var1][i] = NULL; + } + } + + if (++gUnknown_083DFEC4->unkBC9A >= 16) + return FALSE; + + gUnknown_083DFEC4->unkBC9B = var2; + return TRUE; } -#endif // NONMATCHING void sub_80EFD3C(void) { @@ -4335,7 +3792,7 @@ void sub_80EFE7C(void) case 2: sub_80EFDE4(1); gUnknown_083DFEC4->unk769D = 1; - break; + break; } } |