summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-04-24 08:21:39 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-04-24 08:21:39 -0400
commitbedf072c371990c991203d7ffca6e4c0941a891f (patch)
tree1a9aa35115ea203b4120d9b88f4e6ac22bfd9cc7
parent3f34a0491d42c8e35a1d26bb34d59106d8a30660 (diff)
Finish decompilation of pokedex_area_screen
-rw-r--r--asm/pokedex_area_screen.s124
-rw-r--r--data/pokedex_area_screen.s22
-rw-r--r--include/graphics.h3
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokedex_area_screen.c55
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;
+ }
+ }
+}