diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-24 00:47:22 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-24 00:47:22 -0400 |
commit | 3f34a0491d42c8e35a1d26bb34d59106d8a30660 (patch) | |
tree | 161db799a9b276cf930210f83397cb019d1f736e | |
parent | 0774f50bd4670527eee29347273fd63d69e74c25 (diff) |
through DestroyAreaSprites
-rw-r--r-- | asm/pokedex_area_screen.s | 170 | ||||
-rw-r--r-- | data/pokedex_area_screen.s | 26 | ||||
-rw-r--r-- | include/region_map.h | 9 | ||||
-rw-r--r-- | src/pokedex_area_screen.c | 85 | ||||
-rw-r--r-- | src/region_map.c | 7 |
5 files changed, 91 insertions, 206 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index e74ecc074..a92075a1d 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -5,176 +5,6 @@ .text - thumb_func_start CreateAreaMarkerSprites -CreateAreaMarkerSprites: @ 8111658 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08111720 @ =gUnknown_083F858C - bl LoadSpriteSheet - ldr r0, _08111724 @ =gUnknown_083F8594 - bl LoadSpritePalette - movs r5, 0 - movs r1, 0 - ldr r0, _08111728 @ =gSharedMem - movs r3, 0x89 - lsls r3, 1 - adds r2, r0, r3 - ldrh r7, [r2] - cmp r5, r7 - bge _0811170C - adds r6, r0, 0 - mov r8, r2 -_08111680: - lsls r0, r1, 16 - asrs r4, r0, 16 - lsls r1, r4, 1 - movs r2, 0xC4 - lsls r2, 3 - adds r0, r6, r2 - adds r1, r0 - ldr r2, _0811172C @ =gRegionMapLocations - movs r3, 0 - ldrsh r0, [r1, r3] - lsls r0, 3 - adds r0, r2 - ldrb r1, [r0] - adds r1, 0x1 - lsls r1, 3 - adds r1, 0x4 - ldrb r2, [r0, 0x1] - lsls r2, 19 - ldrb r3, [r0, 0x2] - subs r3, 0x1 - lsls r3, 2 - ldrb r0, [r0, 0x3] - subs r0, 0x1 - lsls r0, 2 - movs r7, 0xE0 - lsls r7, 13 - adds r2, r7 - asrs r2, 16 - adds r1, r3 - adds r2, r0 - ldr r0, _08111730 @ =gSpriteTemplate_83F85A4 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _081116FC - ldr r0, _08111734 @ =gSprites - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - adds r1, r5, 0 - lsls r0, r1, 16 - movs r3, 0x80 - lsls r3, 9 - adds r0, r3 - lsrs r5, r0, 16 - lsls r1, 16 - asrs r1, 14 - movs r7, 0xCC - lsls r7, 3 - adds r0, r6, r7 - adds r1, r0 - str r2, [r1] -_081116FC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - asrs r0, 16 - mov r2, r8 - ldrh r2, [r2] - cmp r0, r2 - blt _08111680 -_0811170C: - ldr r0, _08111728 @ =gSharedMem - movs r3, 0xDC - lsls r3, 3 - adds r0, r3 - strh r5, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08111720: .4byte gUnknown_083F858C -_08111724: .4byte gUnknown_083F8594 -_08111728: .4byte gSharedMem -_0811172C: .4byte gRegionMapLocations -_08111730: .4byte gSpriteTemplate_83F85A4 -_08111734: .4byte gSprites - thumb_func_end CreateAreaMarkerSprites - - thumb_func_start DestroyAreaSprites -DestroyAreaSprites: @ 8111738 - push {r4-r6,lr} - movs r0, 0x2 - bl FreeSpriteTilesByTag - movs r0, 0x2 - bl FreeSpritePaletteByTag - movs r4, 0 - ldr r1, _081117A4 @ =gSharedMem - movs r2, 0xDC - lsls r2, 3 - adds r0, r1, r2 - ldrh r2, [r0] - cmp r4, r2 - bcs _08111776 - adds r6, r1, 0 - adds r5, r0, 0 -_0811175A: - lsls r0, r4, 2 - movs r2, 0xCC - lsls r2, 3 - adds r1, r6, r2 - adds r0, r1 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrh r0, [r5] - cmp r4, r0 - bcc _0811175A -_08111776: - movs r0, 0x3 - bl FreeSpriteTilesByTag - movs r0, 0x3 - bl FreeSpritePaletteByTag - movs r4, 0 - ldr r5, _081117A8 @ =gSharedMem + 0xFA8 -_08111786: - lsls r0, r4, 2 - adds r0, r5 - ldr r0, [r0] - cmp r0, 0 - beq _08111794 - bl DestroySprite -_08111794: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _08111786 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081117A4: .4byte gSharedMem -_081117A8: .4byte gSharedMem + 0xFA8 - thumb_func_end DestroyAreaSprites - thumb_func_start LoadAreaUnknownGraphics LoadAreaUnknownGraphics: @ 81117AC push {lr} diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s index 0742ef5a4..c2fc67ac6 100644 --- a/data/pokedex_area_screen.s +++ b/data/pokedex_area_screen.s @@ -4,32 +4,6 @@ .section .rodata .align 2 -gUnknown_083F858C:: @ 83F858C - obj_tiles AreaMarkerTiles, 0x80, 2 - - .align 2 -gUnknown_083F8594:: @ 83F8594 - obj_pal AreaMarkerPalette, 2 - - .align 2 -gOamData_83F859C:: @ 83F859C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteTemplate_83F85A4:: @ 83F85A4 - spr_template 2, 2, gOamData_83F859C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -AreaMarkerPalette: - .incbin "graphics/pokedex/area_marker.gbapal" - - .align 2 -AreaMarkerTiles: - .incbin "graphics/pokedex/area_marker.4bpp" - - .align 2 gUnknown_083F865C:: @ 83F865C obj_pal gAreaUnknownPalette, 3 diff --git a/include/region_map.h b/include/region_map.h index c84de209b..2977987ef 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -1,6 +1,13 @@ #ifndef GUARD_REGION_MAP_H #define GUARD_REGION_MAP_H +struct RegionMapLocation +{ + u8 x, y; + u8 width, height; + const u8 *regionMapSectionId; +}; + struct RegionMap { u8 mapSectionName[20]; @@ -72,4 +79,6 @@ void CB2_InitFlyRegionMap(void); void debug_sub_8110F28(void); u16 GetRegionMapSectionAt_(u16 x, u16 y); +extern const struct RegionMapLocation gRegionMapLocations[]; + #endif // GUARD_REGION_MAP_H diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 6e16e4e5c..af5c5dd54 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -49,11 +49,12 @@ struct PokedexAreaScreenEwramStruct u8 unk061F; u16 unk0620[0x20]; struct Sprite * unk0660[0x20]; - u8 filler_06E0[4]; + u16 unk06E0; u8 * unk06E4; struct RegionMap unk06E8; u8 unk0F68[16]; - u8 filler_0F78[0x3C]; + u8 filler_0F78[0x30]; + struct Sprite * unk0FA8[3]; u8 unk0FB4[0x600]; }; @@ -1193,9 +1194,9 @@ void sub_8111360(void) void Task_PokedexAreaScreen_0(u8 taskId); void Task_PokedexAreaScreen_1(u8 taskId); void CreateAreaMarkerSprites(void); +void DestroyAreaSprites(void); void LoadAreaUnknownGraphics(void); void CreateAreaUnknownSprites(void); -void DestroyAreaSprites(void); void ShowPokedexAreaScreen(u16 species, u8 * a1) { @@ -1303,3 +1304,81 @@ void Task_PokedexAreaScreen_1(u8 taskId) } gTasks[taskId].data[0]++; } + +const u16 AreaMarkerPalette[]; +const u8 AreaMarkerTiles[]; + +const struct SpriteSheet gUnknown_083F858C = { + AreaMarkerTiles, 0x80, 2 +}; + +const struct SpritePalette gUnknown_083F8594 = { + AreaMarkerPalette, 2 +}; + +const struct OamData gOamData_83F859C = { + .size = 1, + .priority = 1 +}; + +const struct SpriteTemplate gSpriteTemplate_83F85A4 = { + 2, + 2, + &gOamData_83F859C, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u16 AreaMarkerPalette[] = INCBIN_U16("graphics/pokedex/area_marker.gbapal"); +const u8 AreaMarkerTiles[] = INCBIN_U8("graphics/pokedex/area_marker.4bpp"); + +void CreateAreaMarkerSprites(void) +{ + s16 i; + u8 spriteId; + s16 x; + s16 y; + s16 cnt; + s16 mapSecId; + + LoadSpriteSheet(&gUnknown_083F858C); + LoadSpritePalette(&gUnknown_083F8594); + cnt = 0; + for (i = 0; i < gPokedexAreaScreenPtr->unk0112; i++) + { + mapSecId = gPokedexAreaScreenPtr->unk0620[i]; + x = 8 * (gRegionMapLocations[mapSecId].x + 1) + 4; + y = 8 * (gRegionMapLocations[mapSecId].y) + 28; + x += 4 * (gRegionMapLocations[mapSecId].width - 1); + y += 4 * (gRegionMapLocations[mapSecId].height - 1); + spriteId = CreateSprite(&gSpriteTemplate_83F85A4, x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].invisible = TRUE; + gPokedexAreaScreenPtr->unk0660[cnt++] = gSprites + spriteId; + } + } + gPokedexAreaScreenPtr->unk06E0 = cnt; +} + +void DestroyAreaSprites(void) +{ + u16 i; + FreeSpriteTilesByTag(2); + FreeSpritePaletteByTag(2); + for (i = 0; i < gPokedexAreaScreenPtr->unk06E0; i++) + { + DestroySprite(gPokedexAreaScreenPtr->unk0660[i]); + } + FreeSpriteTilesByTag(3); + FreeSpritePaletteByTag(3); + for (i = 0; i < 3; i++) + { + if (gPokedexAreaScreenPtr->unk0FA8[i] != NULL) + { + DestroySprite(gPokedexAreaScreenPtr->unk0FA8[i]); + } + } +} diff --git a/src/region_map.c b/src/region_map.c index b4ed2c558..ab7c5c558 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -149,13 +149,6 @@ static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region #include "data/region_map_names_de.h" #endif -struct RegionMapLocation -{ - u8 x, y; - u8 width, height; - const u8 *regionMapSectionId; -}; - const struct RegionMapLocation gRegionMapLocations[] = { { 4, 11, 1, 1, gMapName_LittlerootTown}, |