summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_area_screen.s332
-rw-r--r--src/pokedex_area_screen.c119
2 files changed, 118 insertions, 333 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index a4b103e23..e74ecc074 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -5,338 +5,6 @@
.text
- thumb_func_start ShowPokedexAreaScreen
-ShowPokedexAreaScreen: @ 81113AC
- push {r4,lr}
- ldr r2, _081113DC @ =gSharedMem
- movs r3, 0
- movs r4, 0
- strh r0, [r2, 0xE]
- ldr r0, _081113E0 @ =0x000006e4
- adds r2, r0
- str r1, [r2]
- strb r3, [r1]
- ldr r0, _081113E4 @ =Task_PokedexAreaScreen_0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081113E8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081113DC: .4byte gSharedMem
-_081113E0: .4byte 0x000006e4
-_081113E4: .4byte Task_PokedexAreaScreen_0
-_081113E8: .4byte gTasks
- thumb_func_end ShowPokedexAreaScreen
-
- thumb_func_start Task_PokedexAreaScreen_0
-Task_PokedexAreaScreen_0: @ 81113EC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08111414 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r2, r1, 0
- cmp r0, 0xB
- bls _0811140A
- b _08111540
-_0811140A:
- lsls r0, 2
- ldr r1, _08111418 @ =_0811141C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08111414: .4byte gTasks
-_08111418: .4byte _0811141C
- .align 2, 0
-_0811141C:
- .4byte _0811144C
- .4byte _08111488
- .4byte _08111496
- .4byte _081114B8
- .4byte _081114BE
- .4byte _081114CA
- .4byte _081114DE
- .4byte _081114E4
- .4byte _081114EA
- .4byte _081114F0
- .4byte _08111502
- .4byte _08111528
-_0811144C:
- movs r1, 0x80
- lsls r1, 19
- movs r3, 0xC4
- lsls r3, 7
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _08111478 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- ldr r2, _0811147C @ =REG_BG0VOFS
- ldr r3, _08111480 @ =0x0000fff8
- adds r0, r3, 0
- strh r0, [r2]
- ldr r0, _08111484 @ =REG_BG2VOFS
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- b _08111540
- .align 2, 0
-_08111478: .4byte REG_BG0HOFS
-_0811147C: .4byte REG_BG0VOFS
-_08111480: .4byte 0x0000fff8
-_08111484: .4byte REG_BG2VOFS
-_08111488:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- b _08111540
-_08111496:
- ldr r4, _081114B4 @ =gSharedMem + 0x6E8
- adds r0, r4, 0
- movs r1, 0
- bl InitRegionMap
- movs r0, 0x88
- lsls r0, 4
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- b _08111540
- .align 2, 0
-_081114B4: .4byte gSharedMem + 0x6E8
-_081114B8:
- bl sub_8110824
- b _08111540
-_081114BE:
- bl DrawAreaGlow
- lsls r0, 24
- cmp r0, 0
- bne _08111550
- b _08111540
-_081114CA:
- movs r0, 0x1
- movs r1, 0x1
- bl CreateRegionMapPlayerIcon
- movs r1, 0x8
- negs r1, r1
- movs r0, 0
- bl sub_80FB2A4
- b _08111540
-_081114DE:
- bl CreateAreaMarkerSprites
- b _08111540
-_081114E4:
- bl LoadAreaUnknownGraphics
- b _08111540
-_081114EA:
- bl CreateAreaUnknownSprites
- b _08111540
-_081114F0:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08111540
-_08111502:
- ldr r1, _0811151C @ =REG_BLDCNT
- ldr r2, _08111520 @ =0x00003f41
- adds r0, r2, 0
- strh r0, [r1]
- bl sub_8111084
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _08111524 @ =0x00007741
- adds r0, r3, 0
- strh r0, [r1]
- b _08111540
- .align 2, 0
-_0811151C: .4byte REG_BLDCNT
-_08111520: .4byte 0x00003f41
-_08111524: .4byte 0x00007741
-_08111528:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldr r1, _0811153C @ =Task_PokedexAreaScreen_1
- str r1, [r0]
- movs r1, 0
- strh r1, [r0, 0x8]
- b _08111550
- .align 2, 0
-_0811153C: .4byte Task_PokedexAreaScreen_1
-_08111540:
- ldr r0, _08111558 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08111550:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111558: .4byte gTasks
- thumb_func_end Task_PokedexAreaScreen_0
-
- thumb_func_start Task_PokedexAreaScreen_1
-Task_PokedexAreaScreen_1: @ 811155C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8111110
- ldr r1, _08111584 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0x1
- beq _081115B4
- cmp r1, 0x1
- bgt _08111588
- cmp r1, 0
- beq _0811159E
- b _08111590
- .align 2, 0
-_08111584: .4byte gTasks
-_08111588:
- cmp r1, 0x2
- beq _081115F8
- cmp r1, 0x3
- beq _0811160A
-_08111590:
- ldr r0, _081115AC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
-_0811159E:
- ldr r0, _081115B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811164C
- b _0811163C
- .align 2, 0
-_081115AC: .4byte gTasks
-_081115B0: .4byte gPaletteFade
-_081115B4:
- ldr r0, _081115CC @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r3, 0x2
- adds r0, r3, 0
- ands r0, r2
- cmp r0, 0
- beq _081115D0
- strh r1, [r5, 0xA]
- movs r0, 0x3
- bl PlaySE
- b _0811163C
- .align 2, 0
-_081115CC: .4byte gMain
-_081115D0:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _081115EA
- movs r0, 0x80
- lsls r0, 1
- ands r0, r2
- cmp r0, 0
- beq _0811164C
- ldr r0, _081115F4 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0811164C
-_081115EA:
- strh r3, [r5, 0xA]
- movs r0, 0x6D
- bl PlaySE
- b _0811163C
- .align 2, 0
-_081115F4: .4byte gSaveBlock2
-_081115F8:
- movs r0, 0x15
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0811163C
-_0811160A:
- ldr r0, _08111630 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811164C
- bl DestroyAreaSprites
- ldr r0, _08111634 @ =gSharedMem
- ldr r1, _08111638 @ =0x000006e4
- adds r0, r1
- ldr r1, [r0]
- ldrh r0, [r5, 0xA]
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
- b _0811164C
- .align 2, 0
-_08111630: .4byte gPaletteFade
-_08111634: .4byte gSharedMem
-_08111638: .4byte 0x000006e4
-_0811163C:
- ldr r0, _08111654 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_0811164C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08111654: .4byte gTasks
- thumb_func_end Task_PokedexAreaScreen_1
-
thumb_func_start CreateAreaMarkerSprites
CreateAreaMarkerSprites: @ 8111658
push {r4-r7,lr}
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index d5ca06395..6e16e4e5c 100644
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -3,6 +3,8 @@
#include "global.h"
#include "constants/species.h"
#include "constants/maps.h"
+#include "constants/songs.h"
+#include "sound.h"
#include "ewram.h"
#include "main.h"
#include "palette.h"
@@ -47,7 +49,8 @@ struct PokedexAreaScreenEwramStruct
u8 unk061F;
u16 unk0620[0x20];
struct Sprite * unk0660[0x20];
- u8 filler_06E0[8];
+ u8 filler_06E0[4];
+ u8 * unk06E4;
struct RegionMap unk06E8;
u8 unk0F68[16];
u8 filler_0F78[0x3C];
@@ -1186,3 +1189,117 @@ void sub_8111360(void)
break;
}
}
+
+void Task_PokedexAreaScreen_0(u8 taskId);
+void Task_PokedexAreaScreen_1(u8 taskId);
+void CreateAreaMarkerSprites(void);
+void LoadAreaUnknownGraphics(void);
+void CreateAreaUnknownSprites(void);
+void DestroyAreaSprites(void);
+
+void ShowPokedexAreaScreen(u16 species, u8 * a1)
+{
+ u8 taskId;
+ gPokedexAreaScreenPtr->unk000E = species;
+ gPokedexAreaScreenPtr->unk06E4 = a1;
+ a1[0] = 0;
+ taskId = CreateTask(Task_PokedexAreaScreen_0, 0);
+ gTasks[taskId].data[0] = 0;
+}
+
+void Task_PokedexAreaScreen_0(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = -8;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 1:
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ break;
+ case 2:
+ InitRegionMap(&gPokedexAreaScreenPtr->unk06E8, FALSE);
+ StringFill(gPokedexAreaScreenPtr->unk0F68, CHAR_SPACE, 16);
+ break;
+ case 3:
+ sub_8110824();
+ break;
+ case 4:
+ if (DrawAreaGlow())
+ return;
+ break;
+ case 5:
+ CreateRegionMapPlayerIcon(1, 1);
+ sub_80FB2A4(0, -8);
+ break;
+ case 6:
+ CreateAreaMarkerSprites();
+ break;
+ case 7:
+ LoadAreaUnknownGraphics();
+ break;
+ case 8:
+ CreateAreaUnknownSprites();
+ break;
+ case 9:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, 0);
+ break;
+ case 10:
+ REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD;
+ sub_8111084();
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ break;
+ case 11:
+ gTasks[taskId].func = Task_PokedexAreaScreen_1;
+ gTasks[taskId].data[0] = 0;
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+void Task_PokedexAreaScreen_1(u8 taskId)
+{
+ sub_8111110();
+ switch (gTasks[taskId].data[0])
+ {
+ default:
+ gTasks[taskId].data[0] = 0;
+ case 0:
+ if (gPaletteFade.active)
+ return;
+ break;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[1] = 1;
+ PlaySE(SE_PC_OFF);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ gTasks[taskId].data[1] = 2;
+ PlaySE(SE_Z_PAGE);
+ }
+ else
+ return;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, 0);
+ break;
+ case 3:
+ if (gPaletteFade.active)
+ return;
+ DestroyAreaSprites();
+ gPokedexAreaScreenPtr->unk06E4[0] = gTasks[taskId].data[1];
+ DestroyTask(taskId);
+ return;
+ }
+ gTasks[taskId].data[0]++;
+}