diff options
-rw-r--r-- | asm/region_map.s | 124 | ||||
-rw-r--r-- | include/region_map.h | 4 | ||||
-rw-r--r-- | src/quest_log.c | 4 | ||||
-rw-r--r-- | src/region_map.c | 56 |
4 files changed, 60 insertions, 128 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 09875ebd6..4f1b771f4 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,130 +5,6 @@ .text - thumb_func_start sub_80C4D40 -sub_80C4D40: @ 80C4D40 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080C4D68 @ =gUnknown_20399D4 - ldr r0, [r0] - cmp r0, 0 - bne _080C4D70 - cmp r1, 0x5E - bne _080C4D70 - ldr r0, _080C4D6C @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0xA - bne _080C4D70 - ldrb r0, [r1, 0x5] - cmp r0, 0x6 - bhi _080C4D70 - movs r0, 0x1 - b _080C4D72 - .align 2, 0 -_080C4D68: .4byte gUnknown_20399D4 -_080C4D6C: .4byte gSaveBlock1Ptr -_080C4D70: - movs r0, 0 -_080C4D72: - pop {r1} - bx r1 - thumb_func_end sub_80C4D40 - - thumb_func_start GetMapName -GetMapName: @ 80C4D78 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - lsrs r0, r1, 16 - ldr r2, _080C4D9C @ =0xffa80000 - adds r1, r2 - lsrs r5, r1, 16 - cmp r5, 0x6C - bhi _080C4DBC - bl sub_80C4D40 - cmp r0, 0x1 - bne _080C4DA4 - ldr r1, _080C4DA0 @ =gMapSecName_CeladonDept - b _080C4DAC - .align 2, 0 -_080C4D9C: .4byte 0xffa80000 -_080C4DA0: .4byte gMapSecName_CeladonDept -_080C4DA4: - ldr r0, _080C4DB8 @ =gUnknown_83F1CAC - lsls r1, r5, 2 - adds r1, r0 - ldr r1, [r1] -_080C4DAC: - adds r0, r6, 0 - bl StringCopy - adds r1, r0, 0 - b _080C4DCE - .align 2, 0 -_080C4DB8: .4byte gUnknown_83F1CAC -_080C4DBC: - cmp r4, 0 - bne _080C4DC2 - movs r4, 0x12 -_080C4DC2: - adds r0, r6, 0 - movs r1, 0 - adds r2, r4, 0 - bl StringFill - b _080C4DF2 -_080C4DCE: - cmp r4, 0 - beq _080C4DF0 - subs r0, r1, r6 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcs _080C4DEC - movs r2, 0 -_080C4DDE: - strb r2, [r1] - adds r1, 0x1 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bcc _080C4DDE -_080C4DEC: - movs r0, 0xFF - strb r0, [r1] -_080C4DF0: - adds r0, r1, 0 -_080C4DF2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end GetMapName - - thumb_func_start GetMapNameGeneric -GetMapNameGeneric: @ 80C4DF8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - movs r2, 0 - bl GetMapName - pop {r1} - bx r1 - thumb_func_end GetMapNameGeneric - - thumb_func_start sub_80C4E08 -sub_80C4E08: @ 80C4E08 - push {lr} - lsls r1, 16 - lsrs r1, 16 - bl GetMapNameGeneric - pop {r1} - bx r1 - thumb_func_end sub_80C4E08 - thumb_func_start sub_80C4E18 sub_80C4E18: @ 80C4E18 push {r4,lr} diff --git a/include/region_map.h b/include/region_map.h index 67287b6c4..76195a3af 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -92,9 +92,9 @@ void FreeRegionMapIconResources(void); u16 GetRegionMapSectionIdAt(u16 x, u16 y); void CreateRegionMapPlayerIcon(u16 x, u16 y); void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); -u8 *GetMapName(u8 *, u16, u16); +u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); bool32 sub_8124668(u8 mapSecId); -void GetMapNameGeneric(u8 *, u8); +u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); void sub_80BFF50(u8 a0, void (*a1)(void)); void MCB2_FlyMap(void); diff --git a/src/quest_log.c b/src/quest_log.c index 970071a0f..4d94c78ad 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3119,7 +3119,7 @@ static const u16 *sub_8113FBC(const u16 *a0) StringCopy(gStringVar1, ItemId_GetName(r5[0])); if (r5[0] == ITEM_ESCAPE_ROPE) { - GetMapNameGeneric(gStringVar2, r5[2]); + GetMapNameGeneric(gStringVar2, (u8)r5[2]); StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6); } else if (r5[1] != 0xFFFF) @@ -4373,7 +4373,7 @@ static u16 *sub_81157DC(u16 *a0, const u16 *a1) static const u16 *sub_8115800(const u16 *a0) { const u16 *r4 = sub_8113E88(42, a0); - GetMapNameGeneric(gStringVar1, r4[0]); + GetMapNameGeneric(gStringVar1, (u8)r4[0]); StringExpandPlaceholders(gStringVar4, gUnknown_841B064); return r4 + 1; } diff --git a/src/region_map.c b/src/region_map.c index e19e8e151..6678a226a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -3213,3 +3213,59 @@ void sub_80C4D30(void) sub_80C4BB8(); sub_80C4BE4(); } + +bool32 sub_80C4D40(u16 a0) +{ + if (gUnknown_20399D4 != NULL) + return FALSE; + if (a0 != MAPSEC_CELADON_CITY) + return FALSE; + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F)) + return FALSE; + if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_2F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_3F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_4F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_5F) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ROOF) + && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR)) + return FALSE; + return TRUE; +} + +u8 *GetMapName(u8 *dst0, u16 mapsec, u16 fill) +{ + u8 *dst; + u16 i; + u16 idx;; + if ((idx = mapsec - MAPSECS_KANTO) <= MAPSEC_SPECIAL_AREA - MAPSECS_KANTO) + { + if (sub_80C4D40(mapsec) == TRUE) + dst = StringCopy(dst0, gMapSecName_CeladonDept); + else + dst = StringCopy(dst0, gUnknown_83F1CAC[idx]); + } + else + { + if (fill == 0) + fill = 18; + return StringFill(dst0, CHAR_SPACE, fill); + } + if (fill != 0) + { + for (i = dst - dst0; i < fill; i++) + *dst++ = CHAR_SPACE; + *dst = EOS; + } + return dst; +} + +u8 *GetMapNameGeneric(u8 *dest, u16 mapsec) +{ + return GetMapName(dest, mapsec, 0); +} + +u8 *sub_80C4E08(u8 *dest, u16 mapsec) +{ + return GetMapNameGeneric(dest, mapsec); +} |