diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-24 08:21:39 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-24 08:21:39 -0400 |
commit | bedf072c371990c991203d7ffca6e4c0941a891f (patch) | |
tree | 1a9aa35115ea203b4120d9b88f4e6ac22bfd9cc7 | |
parent | 3f34a0491d42c8e35a1d26bb34d59106d8a30660 (diff) |
Finish decompilation of pokedex_area_screen
-rw-r--r-- | asm/pokedex_area_screen.s | 124 | ||||
-rw-r--r-- | data/pokedex_area_screen.s | 22 | ||||
-rw-r--r-- | include/graphics.h | 3 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokedex_area_screen.c | 55 |
5 files changed, 58 insertions, 148 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s deleted file mode 100644 index a92075a1d..000000000 --- a/asm/pokedex_area_screen.s +++ /dev/null @@ -1,124 +0,0 @@ - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .syntax unified - - .text - - thumb_func_start LoadAreaUnknownGraphics -LoadAreaUnknownGraphics: @ 81117AC - push {lr} - sub sp, 0x8 - ldr r0, _081117D4 @ =gUnknown_083F8664 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, _081117D8 @ =gAreaUnknownTiles - ldr r1, _081117DC @ =gSharedMem + 0xFB4 - bl LZ77UnCompWram - mov r0, sp - bl LoadSpriteSheet - ldr r0, _081117E0 @ =gUnknown_083F865C - bl LoadSpritePalette - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_081117D4: .4byte gUnknown_083F8664 -_081117D8: .4byte gAreaUnknownTiles -_081117DC: .4byte gSharedMem + 0xFB4 -_081117E0: .4byte gUnknown_083F865C - thumb_func_end LoadAreaUnknownGraphics - - thumb_func_start CreateAreaUnknownSprites -CreateAreaUnknownSprites: @ 81117E4 - push {r4-r7,lr} - ldr r1, _08111810 @ =gSharedMem - movs r2, 0x88 - lsls r2, 1 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08111818 - movs r4, 0 - ldr r7, _08111814 @ =0x00000fa8 - adds r2, r1, r7 - movs r1, 0 -_081117FC: - lsls r0, r4, 2 - adds r0, r2 - str r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _081117FC - b _0811188E - .align 2, 0 -_08111810: .4byte gSharedMem -_08111814: .4byte 0x00000fa8 -_08111818: - movs r4, 0 - ldr r6, _08111868 @ =gSprites - ldr r0, _0811186C @ =0x00000fa8 - adds r5, r1, r0 -_08111820: - lsls r1, r4, 21 - movs r2, 0xA0 - lsls r2, 16 - adds r1, r2 - asrs r1, 16 - ldr r0, _08111870 @ =gSpriteTemplate_83F8674 - movs r2, 0x8C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0811187C - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r6 - ldrh r3, [r2, 0x4] - lsls r0, r3, 22 - lsrs r0, 22 - lsls r1, r4, 4 - adds r0, r1 - ldr r7, _08111874 @ =0x000003ff - adds r1, r7, 0 - ands r0, r1 - ldr r7, _08111878 @ =0xfffffc00 - adds r1, r7, 0 - ands r3, r1 - orrs r3, r0 - strh r3, [r2, 0x4] - lsls r0, r4, 2 - adds r0, r5 - str r2, [r0] - b _08111884 - .align 2, 0 -_08111868: .4byte gSprites -_0811186C: .4byte 0x00000fa8 -_08111870: .4byte gSpriteTemplate_83F8674 -_08111874: .4byte 0x000003ff -_08111878: .4byte 0xfffffc00 -_0811187C: - lsls r0, r4, 2 - adds r0, r5 - movs r1, 0 - str r1, [r0] -_08111884: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x2 - bls _08111820 -_0811188E: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreateAreaUnknownSprites - - .align 2, 0 @ Don't pad with nop. diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s deleted file mode 100644 index c2fc67ac6..000000000 --- a/data/pokedex_area_screen.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083F865C:: @ 83F865C - obj_pal gAreaUnknownPalette, 3 - - .align 2 -gUnknown_083F8664:: @ 83F8664 - obj_tiles gSharedMem + 0xFB4, 0x600, 3 - - .align 2 -gOamData_83F866C:: @ 83F866C - .2byte 0x0000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteTemplate_83F8674:: @ 83F8674 - spr_template 3, 3, gOamData_83F866C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/include/graphics.h b/include/graphics.h index d70aefac6..8e95d100d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3415,4 +3415,7 @@ extern const u16 gUnknown_08D1212C[]; extern const u16 gUnknown_08D1214C[]; extern const u8 Tiles_D129AC[]; +extern const u8 gAreaUnknownTiles[]; +extern const u16 gAreaUnknownPalette[]; + #endif // GUARD_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index 047638fd7..0b3622a1b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -341,7 +341,6 @@ SECTIONS { src/field_specials.o(.text); src/battle/battle_records.o(.text); src/pokedex_area_screen.o(.text); - asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); src/roulette.o(.text); asm/pokedex_cry_screen.o(.text); @@ -634,7 +633,6 @@ SECTIONS { src/field_specials.o(.rodata); src/battle/battle_records.o(.rodata); src/pokedex_area_screen.o(.rodata); - data/pokedex_area_screen.o(.rodata); src/evolution_scene.o(.rodata); data/roulette.o(.rodata); data/pokedex_cry_screen.o(.rodata); diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index af5c5dd54..2f2d20942 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -19,6 +19,7 @@ #include "overworld.h" #include "event_data.h" #include "trig.h" +#include "graphics.h" // Static type declarations @@ -1382,3 +1383,57 @@ void DestroyAreaSprites(void) } } } + +const struct SpritePalette gUnknown_083F865C = {gAreaUnknownPalette, 3}; + +void LoadAreaUnknownGraphics(void) +{ + struct SpriteSheet spriteSheet = {gPokedexAreaScreenPtr->unk0FB4, 0x600, 3}; + + LZ77UnCompWram(gAreaUnknownTiles, gPokedexAreaScreenPtr->unk0FB4); + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&gUnknown_083F865C); +} + +const struct OamData gOamData_83F866C = { + .size = 2, + .priority = 1 +}; + +const struct SpriteTemplate gSpriteTemplate_83F8674 = { + 3, + 3, + &gOamData_83F866C, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +void CreateAreaUnknownSprites(void) +{ + u16 i; + u8 spriteId; + + if (gPokedexAreaScreenPtr->unk0110 != 0 || gPokedexAreaScreenPtr->unk0112 != 0) + { + for (i = 0; i < 3; i++) + { + gPokedexAreaScreenPtr->unk0FA8[i] = NULL; + } + } + else + { + for (i = 0; i < 3; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83F8674, i * 32 + 0xa0, 0x8c, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.tileNum += i * 16; + gPokedexAreaScreenPtr->unk0FA8[i] = gSprites + spriteId; + } + else + gPokedexAreaScreenPtr->unk0FA8[i] = NULL; + } + } +} |