mirror of
https://github.com/pret/pokefirered.git
synced 2026-04-25 07:19:36 -05:00
wild_pokemon_area and pokedex_area_markers
This commit is contained in:
parent
0cf4c9f25c
commit
1f6f5f369b
|
|
@ -3665,8 +3665,8 @@ sub_80CC1E4: @ 80CC1E4
|
|||
_080CC200: .4byte gSaveBlock2Ptr
|
||||
thumb_func_end sub_80CC1E4
|
||||
|
||||
thumb_func_start sub_80CC204
|
||||
sub_80CC204: @ 80CC204
|
||||
thumb_func_start GetUnlockedSeviiAreas
|
||||
GetUnlockedSeviiAreas: @ 80CC204
|
||||
push {r4,lr}
|
||||
movs r4, 0
|
||||
ldr r0, _080CC2A4 @ =0x0000089b
|
||||
|
|
@ -3753,7 +3753,7 @@ _080CC2AC: .4byte 0x0000089d
|
|||
_080CC2B0: .4byte 0x0000089e
|
||||
_080CC2B4: .4byte 0x0000089f
|
||||
_080CC2B8: .4byte 0x000008a1
|
||||
thumb_func_end sub_80CC204
|
||||
thumb_func_end GetUnlockedSeviiAreas
|
||||
|
||||
thumb_func_start sub_80CC2BC
|
||||
sub_80CC2BC: @ 80CC2BC
|
||||
|
|
|
|||
|
|
@ -65,10 +65,9 @@
|
|||
.endm
|
||||
|
||||
.macro subsprite x, y, priority, tile_num_offset, size
|
||||
.2byte \x
|
||||
.2byte \y
|
||||
.byte \x
|
||||
.byte \y
|
||||
.2byte ((\priority) << 14) | ((\tile_num_offset) << 4) | SPRITE_SIZE_\size
|
||||
.2byte 0 @ padding
|
||||
.endm
|
||||
|
||||
.macro obj_image_anim_frame pic_id, duration, flags = 0
|
||||
|
|
|
|||
|
|
@ -1,357 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8134200
|
||||
sub_8134200: @ 8134200
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r0, _08134228 @ =gTasks+0x8
|
||||
adds r1, r0
|
||||
ldr r2, _0813422C @ =gSprites
|
||||
ldrb r1, [r1, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
adds r0, 0x3E
|
||||
ldrb r2, [r0]
|
||||
movs r1, 0x5
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
strb r1, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08134228: .4byte gTasks+0x8
|
||||
_0813422C: .4byte gSprites
|
||||
thumb_func_end sub_8134200
|
||||
|
||||
thumb_func_start sub_8134230
|
||||
sub_8134230: @ 8134230
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x28
|
||||
mov r9, r0
|
||||
mov r8, r2
|
||||
adds r6, r3, 0
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r9, r0
|
||||
lsls r1, 16
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r8, r2
|
||||
lsls r6, 24
|
||||
lsrs r6, 24
|
||||
ldr r0, _081343C4 @ =gUnknown_846343C
|
||||
str r0, [sp, 0x20]
|
||||
ldr r3, _081343C8 @ =0xffff0000
|
||||
add r0, sp, 0x20
|
||||
ldr r2, [r0, 0x4]
|
||||
ands r2, r3
|
||||
movs r3, 0x94
|
||||
lsls r3, 3
|
||||
orrs r2, r3
|
||||
lsrs r7, r1, 16
|
||||
ldr r5, _081343CC @ =0x0000ffff
|
||||
ands r2, r5
|
||||
orrs r2, r1
|
||||
str r2, [r0, 0x4]
|
||||
bl LoadCompressedSpriteSheet
|
||||
ldr r0, _081343D0 @ =gUnknown_846341C
|
||||
mov r3, r8
|
||||
lsls r3, 4
|
||||
mov r8, r3
|
||||
movs r1, 0x80
|
||||
lsls r1, 1
|
||||
add r1, r8
|
||||
movs r2, 0x20
|
||||
bl LoadPalette
|
||||
ldr r0, _081343D4 @ =sub_8134200
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
mov r10, r0
|
||||
mov r0, r10
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r10, r0
|
||||
lsls r4, r0, 2
|
||||
add r4, r10
|
||||
lsls r4, 3
|
||||
ldr r0, _081343D8 @ =gTasks+0x8
|
||||
adds r4, r0
|
||||
movs r0, 0
|
||||
strb r0, [r4, 0xC]
|
||||
strh r7, [r4, 0xE]
|
||||
ldrh r0, [r4, 0x10]
|
||||
orrs r5, r0
|
||||
strh r5, [r4, 0x10]
|
||||
movs r0, 0xF0
|
||||
lsls r0, 1
|
||||
bl Alloc
|
||||
adds r1, r0, 0
|
||||
str r1, [r4, 0x8]
|
||||
str r1, [r4, 0x4]
|
||||
mov r0, r9
|
||||
bl sub_813C9DC
|
||||
strb r0, [r4]
|
||||
movs r1, 0x80
|
||||
lsls r1, 8
|
||||
movs r0, 0
|
||||
bl SetGpuRegBits
|
||||
ldr r1, _081343DC @ =0x00002f42
|
||||
movs r0, 0x50
|
||||
bl SetGpuReg
|
||||
ldr r1, _081343E0 @ =0x0000080c
|
||||
movs r0, 0x52
|
||||
bl SetGpuReg
|
||||
movs r0, 0x54
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
ldr r1, _081343E4 @ =0x00001f1f
|
||||
movs r0, 0x48
|
||||
bl SetGpuReg
|
||||
ldr r1, _081343E8 @ =0x00002f3d
|
||||
movs r0, 0x4A
|
||||
bl SetGpuReg
|
||||
add r1, sp, 0x8
|
||||
ldr r0, _081343EC @ =gDummySpriteTemplate
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
ldm r0!, {r2,r3,r5}
|
||||
stm r1!, {r2,r3,r5}
|
||||
add r0, sp, 0x8
|
||||
strh r7, [r0]
|
||||
adds r6, 0x20
|
||||
movs r1, 0x68
|
||||
adds r2, r6, 0
|
||||
movs r3, 0
|
||||
bl CreateSprite
|
||||
strb r0, [r4, 0xD]
|
||||
ldrb r1, [r4, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r5, _081343F0 @ =gSprites
|
||||
adds r0, r5
|
||||
adds r1, r4, 0
|
||||
bl SetSubspriteTables
|
||||
ldrb r1, [r4, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldrb r2, [r0, 0x1]
|
||||
movs r1, 0xD
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
movs r2, 0x8
|
||||
orrs r1, r2
|
||||
strb r1, [r0, 0x1]
|
||||
ldrb r0, [r4, 0xD]
|
||||
lsls r1, r0, 4
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
adds r1, r5
|
||||
ldrb r2, [r1, 0x5]
|
||||
movs r0, 0xF
|
||||
ands r0, r2
|
||||
mov r2, r8
|
||||
orrs r0, r2
|
||||
strb r0, [r1, 0x5]
|
||||
ldrb r1, [r4, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
adds r0, 0x42
|
||||
ldrb r2, [r0]
|
||||
movs r1, 0x40
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
strb r1, [r0]
|
||||
ldrb r1, [r4, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
adds r0, 0x3E
|
||||
ldrb r1, [r0]
|
||||
movs r2, 0x4
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
movs r0, 0x1
|
||||
bl HideBg
|
||||
movs r0, 0x1
|
||||
movs r1, 0x1
|
||||
movs r2, 0
|
||||
bl SetBgAttribute
|
||||
movs r0, 0x1E
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
str r0, [sp, 0x4]
|
||||
movs r0, 0x1
|
||||
movs r1, 0xF
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl FillBgTilemapBufferRect_Palette0
|
||||
movs r0, 0x1
|
||||
bl CopyBgTilemapBufferToVram
|
||||
movs r0, 0x1
|
||||
bl ShowBg
|
||||
mov r0, r10
|
||||
add sp, 0x28
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_081343C4: .4byte gUnknown_846343C
|
||||
_081343C8: .4byte 0xffff0000
|
||||
_081343CC: .4byte 0x0000ffff
|
||||
_081343D0: .4byte gUnknown_846341C
|
||||
_081343D4: .4byte sub_8134200
|
||||
_081343D8: .4byte gTasks+0x8
|
||||
_081343DC: .4byte 0x00002f42
|
||||
_081343E0: .4byte 0x0000080c
|
||||
_081343E4: .4byte 0x00001f1f
|
||||
_081343E8: .4byte 0x00002f3d
|
||||
_081343EC: .4byte gDummySpriteTemplate
|
||||
_081343F0: .4byte gSprites
|
||||
thumb_func_end sub_8134230
|
||||
|
||||
thumb_func_start sub_81343F4
|
||||
sub_81343F4: @ 81343F4
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
adds r5, r0, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
lsls r4, r5, 2
|
||||
adds r4, r5
|
||||
lsls r4, 3
|
||||
ldr r0, _08134498 @ =gTasks+0x8
|
||||
adds r4, r0
|
||||
ldrh r0, [r4, 0xE]
|
||||
bl FreeSpriteTilesByTag
|
||||
ldrb r1, [r4, 0xD]
|
||||
lsls r0, r1, 4
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0813449C @ =gSprites
|
||||
adds r0, r1
|
||||
bl DestroySprite
|
||||
ldr r0, [r4, 0x8]
|
||||
bl Free
|
||||
movs r0, 0x50
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x52
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x54
|
||||
movs r1, 0
|
||||
bl SetGpuReg
|
||||
ldr r4, _081344A0 @ =0x00001f1f
|
||||
movs r0, 0x48
|
||||
adds r1, r4, 0
|
||||
bl SetGpuReg
|
||||
movs r0, 0x4A
|
||||
adds r1, r4, 0
|
||||
bl SetGpuReg
|
||||
movs r1, 0x80
|
||||
lsls r1, 8
|
||||
movs r0, 0
|
||||
bl ClearGpuRegBits
|
||||
movs r0, 0x1
|
||||
bl HideBg
|
||||
movs r0, 0x1
|
||||
movs r1, 0x1
|
||||
movs r2, 0x2
|
||||
bl SetBgAttribute
|
||||
movs r0, 0x1E
|
||||
str r0, [sp]
|
||||
movs r0, 0x14
|
||||
str r0, [sp, 0x4]
|
||||
movs r0, 0x1
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl FillBgTilemapBufferRect_Palette0
|
||||
movs r0, 0x1
|
||||
bl CopyBgTilemapBufferToVram
|
||||
movs r0, 0x1
|
||||
bl ShowBg
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08134498: .4byte gTasks+0x8
|
||||
_0813449C: .4byte gSprites
|
||||
_081344A0: .4byte 0x00001f1f
|
||||
thumb_func_end sub_81343F4
|
||||
|
||||
thumb_func_start sub_81344A4
|
||||
sub_81344A4: @ 81344A4
|
||||
push {r4,lr}
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
ldr r4, _081344D8 @ =gUnknown_8463564
|
||||
ldr r3, _081344DC @ =gUnknown_8463580
|
||||
lsls r1, 2
|
||||
adds r2, r1, r3
|
||||
ldrb r2, [r2]
|
||||
lsls r2, 24
|
||||
asrs r2, 24
|
||||
lsls r2, 2
|
||||
adds r2, r4
|
||||
ldr r2, [r2]
|
||||
ldr r2, [r2]
|
||||
str r2, [r0]
|
||||
adds r2, r3, 0x1
|
||||
adds r2, r1, r2
|
||||
ldrb r2, [r2]
|
||||
strb r2, [r0]
|
||||
adds r3, 0x2
|
||||
adds r1, r3
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r0, 0x1]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_081344D8: .4byte gUnknown_8463564
|
||||
_081344DC: .4byte gUnknown_8463580
|
||||
thumb_func_end sub_81344A4
|
||||
|
||||
thumb_func_start sub_81344E0
|
||||
sub_81344E0: @ 81344E0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
ldr r0, _081344F4 @ =gTasks+0x8
|
||||
adds r1, r0
|
||||
ldrb r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_081344F4: .4byte gTasks+0x8
|
||||
thumb_func_end sub_81344E0
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
|
@ -7412,7 +7412,7 @@ sub_810603C: @ 810603C
|
|||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl FillBgTilemapBufferRect_Palette0
|
||||
bl sub_80CC204
|
||||
bl GetUnlockedSeviiAreas
|
||||
ldr r1, [r6]
|
||||
adds r1, 0x64
|
||||
strb r0, [r1]
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ _0808290C:
|
|||
sub_8082934: @ 8082934
|
||||
push {r4-r6,lr}
|
||||
movs r4, 0
|
||||
ldr r0, _08082990 @ =gUnknown_83C9CB8
|
||||
ldr r0, _08082990 @ =gWildMonHeaders
|
||||
ldrb r1, [r0]
|
||||
adds r5, r0, 0
|
||||
cmp r1, 0xFF
|
||||
|
|
@ -343,7 +343,7 @@ _08082980:
|
|||
adds r0, r4, 0
|
||||
b _080829B6
|
||||
.align 2, 0
|
||||
_08082990: .4byte gUnknown_83C9CB8
|
||||
_08082990: .4byte gWildMonHeaders
|
||||
_08082994: .4byte 0x00007a01
|
||||
_08082998: .4byte gSaveBlock1Ptr
|
||||
_0808299C: .4byte 0x00004024
|
||||
|
|
@ -799,7 +799,7 @@ _08082CE4:
|
|||
bl sub_8058F1C
|
||||
cmp r0, 0x1
|
||||
bne _08082D78
|
||||
ldr r1, _08082D4C @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082D4C @ =gWildMonHeaders
|
||||
lsls r2, r4, 2
|
||||
adds r0, r2, r4
|
||||
lsls r0, 2
|
||||
|
|
@ -822,7 +822,7 @@ _08082D06:
|
|||
bne _08082D1E
|
||||
b _08082E46
|
||||
_08082D1E:
|
||||
ldr r1, _08082D4C @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082D4C @ =gWildMonHeaders
|
||||
adds r0, r5, r4
|
||||
lsls r0, 2
|
||||
adds r1, 0x4
|
||||
|
|
@ -843,7 +843,7 @@ _08082D3A:
|
|||
.align 2, 0
|
||||
_08082D44: .4byte gUnknown_20386DC
|
||||
_08082D48: .4byte 0x0000ffff
|
||||
_08082D4C: .4byte gUnknown_83C9CB8
|
||||
_08082D4C: .4byte gWildMonHeaders
|
||||
_08082D50:
|
||||
bl TryStartRoamerEncounter
|
||||
lsls r0, 24
|
||||
|
|
@ -884,7 +884,7 @@ _08082D78:
|
|||
cmp r0, 0x1
|
||||
bne _08082E46
|
||||
_08082DA8:
|
||||
ldr r1, _08082E18 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082E18 @ =gWildMonHeaders
|
||||
lsls r2, r4, 2
|
||||
adds r0, r2, r4
|
||||
lsls r0, 2
|
||||
|
|
@ -904,7 +904,7 @@ _08082DA8:
|
|||
cmp r0, 0
|
||||
beq _08082E46
|
||||
_08082DD2:
|
||||
ldr r1, _08082E18 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082E18 @ =gWildMonHeaders
|
||||
adds r0, r5, r4
|
||||
lsls r0, 2
|
||||
adds r1, 0x8
|
||||
|
|
@ -936,7 +936,7 @@ _08082DFA:
|
|||
movs r0, 0x1
|
||||
b _08082E48
|
||||
.align 2, 0
|
||||
_08082E18: .4byte gUnknown_83C9CB8
|
||||
_08082E18: .4byte gWildMonHeaders
|
||||
_08082E1C: .4byte gSaveBlock1Ptr
|
||||
_08082E20: .4byte 0x000030d0
|
||||
_08082E24:
|
||||
|
|
@ -975,7 +975,7 @@ sub_8082E54: @ 8082E54
|
|||
ldr r0, _08082EA4 @ =0x0000ffff
|
||||
cmp r2, r0
|
||||
beq _08082EB0
|
||||
ldr r1, _08082EA8 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082EA8 @ =gWildMonHeaders
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
|
|
@ -1006,7 +1006,7 @@ _08082E9C:
|
|||
b _08082EB6
|
||||
.align 2, 0
|
||||
_08082EA4: .4byte 0x0000ffff
|
||||
_08082EA8: .4byte gUnknown_83C9CB8
|
||||
_08082EA8: .4byte gWildMonHeaders
|
||||
_08082EAC: .4byte gSpecialVar_Result
|
||||
_08082EB0:
|
||||
ldr r1, _08082EBC @ =gSpecialVar_Result
|
||||
|
|
@ -1049,7 +1049,7 @@ SweetScentWildEncounter: @ 8082EC0
|
|||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
beq _08082F3C
|
||||
ldr r1, _08082F18 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082F18 @ =gWildMonHeaders
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 2
|
||||
|
|
@ -1062,7 +1062,7 @@ SweetScentWildEncounter: @ 8082EC0
|
|||
b _08082F58
|
||||
.align 2, 0
|
||||
_08082F14: .4byte 0x0000ffff
|
||||
_08082F18: .4byte gUnknown_83C9CB8
|
||||
_08082F18: .4byte gWildMonHeaders
|
||||
_08082F1C:
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
|
|
@ -1083,7 +1083,7 @@ _08082F3C:
|
|||
movs r0, 0x1
|
||||
b _08082F6E
|
||||
_08082F44:
|
||||
ldr r1, _08082F68 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08082F68 @ =gWildMonHeaders
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 2
|
||||
|
|
@ -1100,7 +1100,7 @@ _08082F58:
|
|||
movs r0, 0x1
|
||||
b _08082F6E
|
||||
.align 2, 0
|
||||
_08082F68: .4byte gUnknown_83C9CB8
|
||||
_08082F68: .4byte gWildMonHeaders
|
||||
_08082F6C:
|
||||
movs r0, 0
|
||||
_08082F6E:
|
||||
|
|
@ -1119,7 +1119,7 @@ sub_8082F78: @ 8082F78
|
|||
ldr r0, _08082FA0 @ =0x0000ffff
|
||||
cmp r2, r0
|
||||
beq _08082FA8
|
||||
ldr r0, _08082FA4 @ =gUnknown_83C9CB8
|
||||
ldr r0, _08082FA4 @ =gWildMonHeaders
|
||||
lsls r1, r2, 2
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
|
|
@ -1132,7 +1132,7 @@ sub_8082F78: @ 8082F78
|
|||
b _08082FAA
|
||||
.align 2, 0
|
||||
_08082FA0: .4byte 0x0000ffff
|
||||
_08082FA4: .4byte gUnknown_83C9CB8
|
||||
_08082FA4: .4byte gWildMonHeaders
|
||||
_08082FA8:
|
||||
movs r0, 0
|
||||
_08082FAA:
|
||||
|
|
@ -1146,7 +1146,7 @@ sub_8082FB0: @ 8082FB0
|
|||
adds r5, r0, 0
|
||||
lsls r5, 24
|
||||
lsrs r5, 24
|
||||
ldr r4, _08082FE4 @ =gUnknown_83C9CB8
|
||||
ldr r4, _08082FE4 @ =gWildMonHeaders
|
||||
bl sub_8082934
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
|
|
@ -1165,7 +1165,7 @@ sub_8082FB0: @ 8082FB0
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08082FE4: .4byte gUnknown_83C9CB8
|
||||
_08082FE4: .4byte gWildMonHeaders
|
||||
thumb_func_end sub_8082FB0
|
||||
|
||||
thumb_func_start GetLocalWildMon
|
||||
|
|
@ -1180,7 +1180,7 @@ GetLocalWildMon: @ 8082FE8
|
|||
ldr r0, _08083020 @ =0x0000ffff
|
||||
cmp r3, r0
|
||||
beq _0808301A
|
||||
ldr r2, _08083024 @ =gUnknown_83C9CB8
|
||||
ldr r2, _08083024 @ =gWildMonHeaders
|
||||
lsls r1, r3, 2
|
||||
adds r1, r3
|
||||
lsls r1, 2
|
||||
|
|
@ -1199,7 +1199,7 @@ _0808301A:
|
|||
b _0808306E
|
||||
.align 2, 0
|
||||
_08083020: .4byte 0x0000ffff
|
||||
_08083024: .4byte gUnknown_83C9CB8
|
||||
_08083024: .4byte gWildMonHeaders
|
||||
_08083028:
|
||||
cmp r4, 0
|
||||
bne _0808303C
|
||||
|
|
@ -1250,7 +1250,7 @@ GetLocalWaterMon: @ 8083074
|
|||
ldr r0, _080830A8 @ =0x0000ffff
|
||||
cmp r2, r0
|
||||
beq _080830B0
|
||||
ldr r1, _080830AC @ =gUnknown_83C9CB8
|
||||
ldr r1, _080830AC @ =gWildMonHeaders
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
|
|
@ -1268,7 +1268,7 @@ GetLocalWaterMon: @ 8083074
|
|||
b _080830B2
|
||||
.align 2, 0
|
||||
_080830A8: .4byte 0x0000ffff
|
||||
_080830AC: .4byte gUnknown_83C9CB8
|
||||
_080830AC: .4byte gWildMonHeaders
|
||||
_080830B0:
|
||||
movs r0, 0
|
||||
_080830B2:
|
||||
|
|
@ -1513,7 +1513,7 @@ sub_808324C: @ 808324C
|
|||
beq _080832CC
|
||||
cmp r4, 0x1
|
||||
bne _0808328C
|
||||
ldr r1, _08083288 @ =gUnknown_83C9CB8
|
||||
ldr r1, _08083288 @ =gWildMonHeaders
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
|
|
@ -1530,11 +1530,11 @@ sub_808324C: @ 808324C
|
|||
b _080832B8
|
||||
.align 2, 0
|
||||
_08083284: .4byte 0x0000ffff
|
||||
_08083288: .4byte gUnknown_83C9CB8
|
||||
_08083288: .4byte gWildMonHeaders
|
||||
_0808328C:
|
||||
cmp r5, 0x2
|
||||
bne _080832CC
|
||||
ldr r1, _080832AC @ =gUnknown_83C9CB8
|
||||
ldr r1, _080832AC @ =gWildMonHeaders
|
||||
lsls r0, r2, 2
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
|
|
@ -1550,7 +1550,7 @@ _080832A8:
|
|||
movs r0, 0
|
||||
b _080832CE
|
||||
.align 2, 0
|
||||
_080832AC: .4byte gUnknown_83C9CB8
|
||||
_080832AC: .4byte gWildMonHeaders
|
||||
_080832B0:
|
||||
cmp r1, 0x9
|
||||
bhi _080832B8
|
||||
|
|
|
|||
|
|
@ -1,380 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_813C9DC
|
||||
sub_813C9DC: @ 813C9DC
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x24
|
||||
str r1, [sp, 0x10]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
str r0, [sp, 0xC]
|
||||
bl sub_813CB34
|
||||
cmp r0, 0
|
||||
blt _0813CA02
|
||||
ldr r0, [sp, 0xC]
|
||||
ldr r1, [sp, 0x10]
|
||||
bl sub_813CB5C
|
||||
b _0813CB1A
|
||||
_0813CA02:
|
||||
bl sub_80CC204
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp, 0x14]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x18]
|
||||
ldr r0, _0813CA74 @ =0x00004024
|
||||
bl VarGet
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
str r0, [sp, 0x1C]
|
||||
cmp r0, 0x8
|
||||
ble _0813CA24
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x1C]
|
||||
_0813CA24:
|
||||
movs r6, 0
|
||||
mov r8, r6
|
||||
ldr r1, _0813CA78 @ =gUnknown_83C9CB8
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xFF
|
||||
beq _0813CB18
|
||||
_0813CA30:
|
||||
lsls r0, r6, 2
|
||||
adds r0, r6
|
||||
lsls r0, 2
|
||||
adds r4, r0, r1
|
||||
adds r0, r4, 0
|
||||
bl sub_813CC44
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
cmp r5, 0xB7
|
||||
bne _0813CA5A
|
||||
ldr r2, [sp, 0x18]
|
||||
adds r2, 0x1
|
||||
str r2, [sp, 0x18]
|
||||
adds r0, r2, 0
|
||||
subs r0, 0x1
|
||||
adds r1, r6, 0x1
|
||||
str r1, [sp, 0x20]
|
||||
ldr r2, [sp, 0x1C]
|
||||
cmp r2, r0
|
||||
bne _0813CB06
|
||||
_0813CA5A:
|
||||
adds r0, r4, 0
|
||||
ldr r1, [sp, 0xC]
|
||||
bl sub_813CBD0
|
||||
adds r6, 0x1
|
||||
str r6, [sp, 0x20]
|
||||
cmp r0, 0
|
||||
beq _0813CB06
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x8]
|
||||
lsls r7, r5, 16
|
||||
add r6, sp, 0x8
|
||||
b _0813CA94
|
||||
.align 2, 0
|
||||
_0813CA74: .4byte 0x00004024
|
||||
_0813CA78: .4byte gUnknown_83C9CB8
|
||||
_0813CA7C:
|
||||
add r0, sp, 0x4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0813CA94
|
||||
mov r0, r8
|
||||
movs r1, 0x1
|
||||
add r8, r1
|
||||
add r1, sp, 0x4
|
||||
ldrh r1, [r1]
|
||||
ldr r2, [sp, 0x10]
|
||||
bl sub_81344A4
|
||||
_0813CA94:
|
||||
lsrs r0, r7, 16
|
||||
add r2, sp, 0x4
|
||||
str r2, [sp]
|
||||
ldr r1, _0813CAC8 @ =gUnknown_8464148
|
||||
movs r2, 0x37
|
||||
adds r3, r6, 0
|
||||
bl sub_813CC58
|
||||
cmp r0, 0
|
||||
bne _0813CA7C
|
||||
movs r2, 0
|
||||
add r5, sp, 0x4
|
||||
ldr r0, _0813CACC @ =gUnknown_84642BC
|
||||
mov r10, r0
|
||||
_0813CAB0:
|
||||
ldr r0, [sp, 0x14]
|
||||
asrs r0, r2
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
adds r1, r2, 0x1
|
||||
mov r9, r1
|
||||
cmp r0, 0
|
||||
beq _0813CB00
|
||||
movs r0, 0
|
||||
str r0, [sp, 0x8]
|
||||
lsls r4, r2, 3
|
||||
b _0813CAE4
|
||||
.align 2, 0
|
||||
_0813CAC8: .4byte gUnknown_8464148
|
||||
_0813CACC: .4byte gUnknown_84642BC
|
||||
_0813CAD0:
|
||||
ldrh r0, [r5]
|
||||
cmp r0, 0
|
||||
beq _0813CAE4
|
||||
mov r0, r8
|
||||
movs r2, 0x1
|
||||
add r8, r2
|
||||
ldrh r1, [r5]
|
||||
ldr r2, [sp, 0x10]
|
||||
bl sub_81344A4
|
||||
_0813CAE4:
|
||||
mov r1, r10
|
||||
adds r0, r4, r1
|
||||
ldr r1, [r0]
|
||||
ldr r2, _0813CB2C @ =gUnknown_84642C0
|
||||
adds r0, r4, r2
|
||||
ldr r2, [r0]
|
||||
add r0, sp, 0x4
|
||||
str r0, [sp]
|
||||
lsrs r0, r7, 16
|
||||
adds r3, r6, 0
|
||||
bl sub_813CC58
|
||||
cmp r0, 0
|
||||
bne _0813CAD0
|
||||
_0813CB00:
|
||||
mov r2, r9
|
||||
cmp r2, 0x6
|
||||
bls _0813CAB0
|
||||
_0813CB06:
|
||||
ldr r6, [sp, 0x20]
|
||||
ldr r1, _0813CB30 @ =gUnknown_83C9CB8
|
||||
lsls r0, r6, 2
|
||||
adds r0, r6
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0xFF
|
||||
bne _0813CA30
|
||||
_0813CB18:
|
||||
mov r0, r8
|
||||
_0813CB1A:
|
||||
add sp, 0x24
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0813CB2C: .4byte gUnknown_84642C0
|
||||
_0813CB30: .4byte gUnknown_83C9CB8
|
||||
thumb_func_end sub_813C9DC
|
||||
|
||||
thumb_func_start sub_813CB34
|
||||
sub_813CB34: @ 813CB34
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
movs r1, 0
|
||||
ldr r2, _0813CB48 @ =gUnknown_84642F4
|
||||
_0813CB3E:
|
||||
ldrh r0, [r2]
|
||||
cmp r0, r3
|
||||
bne _0813CB4C
|
||||
adds r0, r1, 0
|
||||
b _0813CB58
|
||||
.align 2, 0
|
||||
_0813CB48: .4byte gUnknown_84642F4
|
||||
_0813CB4C:
|
||||
adds r2, 0x4
|
||||
adds r1, 0x1
|
||||
cmp r1, 0x2
|
||||
bls _0813CB3E
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
_0813CB58:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CB34
|
||||
|
||||
thumb_func_start sub_813CB5C
|
||||
sub_813CB5C: @ 813CB5C
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0xC
|
||||
adds r5, r1, 0
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
bl sub_813CB34
|
||||
adds r4, r0, 0
|
||||
cmp r4, 0
|
||||
blt _0813CBC4
|
||||
ldr r0, _0813CBBC @ =gUnknown_84642F4
|
||||
lsls r4, 2
|
||||
adds r4, r0
|
||||
bl ScrSpecial_GetStarter
|
||||
ldrh r1, [r4, 0x2]
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
cmp r1, r0
|
||||
bne _0813CBC4
|
||||
bl GetRoamerLocationMapSectionId
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
str r1, [sp, 0x8]
|
||||
ldr r1, _0813CBC0 @ =gUnknown_8464148
|
||||
add r3, sp, 0x8
|
||||
add r2, sp, 0x4
|
||||
str r2, [sp]
|
||||
movs r2, 0x37
|
||||
bl sub_813CC58
|
||||
cmp r0, 0
|
||||
beq _0813CBC4
|
||||
add r0, sp, 0x4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _0813CBC4
|
||||
add r0, sp, 0x4
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_81344A4
|
||||
movs r0, 0x1
|
||||
b _0813CBC6
|
||||
.align 2, 0
|
||||
_0813CBBC: .4byte gUnknown_84642F4
|
||||
_0813CBC0: .4byte gUnknown_8464148
|
||||
_0813CBC4:
|
||||
movs r0, 0
|
||||
_0813CBC6:
|
||||
add sp, 0xC
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CB5C
|
||||
|
||||
thumb_func_start sub_813CBD0
|
||||
sub_813CBD0: @ 813CBD0
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldr r0, [r4, 0x4]
|
||||
movs r2, 0xC
|
||||
bl sub_813CC18
|
||||
cmp r0, 0
|
||||
bne _0813CC10
|
||||
ldr r0, [r4, 0x8]
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x5
|
||||
bl sub_813CC18
|
||||
cmp r0, 0
|
||||
bne _0813CC10
|
||||
ldr r0, [r4, 0x10]
|
||||
adds r1, r5, 0
|
||||
movs r2, 0xC
|
||||
bl sub_813CC18
|
||||
cmp r0, 0
|
||||
bne _0813CC10
|
||||
ldr r0, [r4, 0xC]
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x5
|
||||
bl sub_813CC18
|
||||
cmp r0, 0
|
||||
bne _0813CC10
|
||||
movs r0, 0
|
||||
b _0813CC12
|
||||
_0813CC10:
|
||||
movs r0, 0x1
|
||||
_0813CC12:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CBD0
|
||||
|
||||
thumb_func_start sub_813CC18
|
||||
sub_813CC18: @ 813CC18
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
cmp r0, 0
|
||||
beq _0813CC3A
|
||||
movs r1, 0
|
||||
cmp r1, r2
|
||||
bge _0813CC3A
|
||||
ldr r3, [r0, 0x4]
|
||||
_0813CC28:
|
||||
ldrh r0, [r3, 0x2]
|
||||
cmp r0, r4
|
||||
bne _0813CC32
|
||||
movs r0, 0x1
|
||||
b _0813CC3C
|
||||
_0813CC32:
|
||||
adds r3, 0x4
|
||||
adds r1, 0x1
|
||||
cmp r1, r2
|
||||
blt _0813CC28
|
||||
_0813CC3A:
|
||||
movs r0, 0
|
||||
_0813CC3C:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CC18
|
||||
|
||||
thumb_func_start sub_813CC44
|
||||
sub_813CC44: @ 813CC44
|
||||
push {lr}
|
||||
ldrb r2, [r0]
|
||||
ldrb r1, [r0, 0x1]
|
||||
adds r0, r2, 0
|
||||
bl get_mapheader_by_bank_and_number
|
||||
ldrb r0, [r0, 0x14]
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CC44
|
||||
|
||||
thumb_func_start sub_813CC58
|
||||
sub_813CC58: @ 813CC58
|
||||
push {r4-r6,lr}
|
||||
adds r4, r2, 0
|
||||
ldr r6, [sp, 0x10]
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
ldr r2, [r3]
|
||||
cmp r2, r4
|
||||
bge _0813CC86
|
||||
lsls r0, r2, 2
|
||||
adds r1, r0, r1
|
||||
_0813CC6C:
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r5
|
||||
bne _0813CC7E
|
||||
ldrh r0, [r1, 0x2]
|
||||
strh r0, [r6]
|
||||
adds r0, r2, 0x1
|
||||
str r0, [r3]
|
||||
movs r0, 0x1
|
||||
b _0813CC88
|
||||
_0813CC7E:
|
||||
adds r1, 0x4
|
||||
adds r2, 0x1
|
||||
cmp r2, r4
|
||||
blt _0813CC6C
|
||||
_0813CC86:
|
||||
movs r0, 0
|
||||
_0813CC88:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_813CC58
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
|
@ -55,7 +55,7 @@ gUnknown_83C7294:: @ 83C7294
|
|||
gUnknown_83C7388:: @ 83C7388
|
||||
.incbin "baserom.gba", 0x3C7388, 0x2930
|
||||
|
||||
gUnknown_83C9CB8:: @ 83C9CB8
|
||||
gWildMonHeaders:: @ 83C9CB8
|
||||
.incbin "baserom.gba", 0x3C9CB8, 0xA64
|
||||
|
||||
gUnknown_83CA71C:: @ 83CA71C
|
||||
|
|
|
|||
|
|
@ -1485,7 +1485,7 @@ gUnknown_81A6481:: @ 81A6481
|
|||
setflag FLAG_0x09F
|
||||
setflag FLAG_0x0A0
|
||||
setflag FLAG_0x0AE
|
||||
setvar VAR_MIRAGE_RND_L, 500
|
||||
setvar VAR_0x4025, 500
|
||||
end
|
||||
|
||||
EventScript_1A651A:: @ 81A651A
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ EventScript_168DB9:: @ 8168DB9
|
|||
compare_var_to_value VAR_RESULT, 2
|
||||
goto_if_eq EventScript_1A7AE0
|
||||
special sub_8112364
|
||||
compare_var_to_value VAR_MIRAGE_RND_L, 500
|
||||
compare_var_to_value VAR_0x4025, 500
|
||||
goto_if 0, EventScript_168E46
|
||||
msgbox gUnknown_818D7D3, MSGBOX_YESNO
|
||||
compare_var_to_value VAR_RESULT, 0
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_846341C:: @ 846341C
|
||||
.incbin "baserom.gba", 0x46341C, 0x20
|
||||
|
||||
gUnknown_846343C:: @ 846343C
|
||||
.incbin "baserom.gba", 0x46343C, 0x128
|
||||
|
||||
gUnknown_8463564:: @ 8463564
|
||||
.incbin "baserom.gba", 0x463564, 0x1C
|
||||
|
||||
gUnknown_8463580:: @ 8463580
|
||||
.incbin "baserom.gba", 0x463580, 0x140
|
||||
BIN
data/pokedex_area_markers/marker.png
Normal file
BIN
data/pokedex_area_markers/marker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 354 B |
|
|
@ -1,14 +0,0 @@
|
|||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_8464148:: @ 8464148
|
||||
.incbin "baserom.gba", 0x464148, 0x174
|
||||
|
||||
gUnknown_84642BC:: @ 84642BC
|
||||
.incbin "baserom.gba", 0x4642BC, 0x4
|
||||
|
||||
gUnknown_84642C0:: @ 84642C0
|
||||
.incbin "baserom.gba", 0x4642C0, 0x34
|
||||
|
||||
gUnknown_84642F4:: @ 84642F4
|
||||
.incbin "baserom.gba", 0x4642F4, 0xC
|
||||
|
|
@ -39,8 +39,8 @@
|
|||
#define VAR_0x4021 0x4021
|
||||
#define VAR_ICE_STEP_COUNT 0x4022
|
||||
#define VAR_0x4023 0x4023
|
||||
#define VAR_MIRAGE_RND_H 0x4024
|
||||
#define VAR_MIRAGE_RND_L 0x4025
|
||||
#define VAR_0x4024 0x4024
|
||||
#define VAR_0x4025 0x4025
|
||||
#define VAR_SECRET_BASE_MAP 0x4026
|
||||
#define VAR_0x4027 0x4027
|
||||
#define VAR_0x4028 0x4028
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@ void set_unknown_box_id(u8);
|
|||
u16 get_unknown_box_id(void);
|
||||
bool8 sub_80CC7B4(void);
|
||||
u16 GetHiddenItemAttr(struct HiddenItemStruct hiddenItem, u8 attr);
|
||||
u8 GetUnlockedSeviiAreas(void);
|
||||
|
||||
#endif // GUARD_FIELD_SPECIALS_H
|
||||
|
|
|
|||
|
|
@ -68,6 +68,10 @@ struct OamData
|
|||
/*0x06*/ u16 affineParam;
|
||||
};
|
||||
|
||||
#define ST_OAM_HFLIP 0x08
|
||||
#define ST_OAM_VFLIP 0x10
|
||||
#define ST_OAM_MNUM_FLIP_MASK 0x18
|
||||
|
||||
#define ST_OAM_OBJ_NORMAL 0
|
||||
#define ST_OAM_OBJ_BLEND 1
|
||||
#define ST_OAM_OBJ_WINDOW 2
|
||||
|
|
|
|||
16
include/pokedex_area_markers.h
Normal file
16
include/pokedex_area_markers.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef GUARD_POKEDEX_AREA_MARKERS_H
|
||||
#define GUARD_POKEDEX_AREA_MARKERS_H
|
||||
|
||||
struct PAM_TaskData
|
||||
{
|
||||
struct SubspriteTable subsprites;
|
||||
void * buffer;
|
||||
u8 unk_0C;
|
||||
u8 spr_id;
|
||||
u16 tilesTag;
|
||||
u16 unk_10;
|
||||
};
|
||||
|
||||
void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites);
|
||||
|
||||
#endif //GUARD_POKEDEX_AREA_MARKERS_H
|
||||
|
|
@ -15,5 +15,6 @@ u8 TryStartRoamerEncounter(void);
|
|||
void UpdateRoamerHPStatus(struct Pokemon *mon);
|
||||
void SetRoamerInactive(void);
|
||||
void GetRoamerLocation(u8 *mapGroup, u8 *mapNum);
|
||||
u16 GetRoamerLocationMapSectionId(void);
|
||||
|
||||
#endif // GUARD_ROAMER_H
|
||||
|
|
|
|||
6
include/wild_pokemon_area.h
Normal file
6
include/wild_pokemon_area.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef GUARD_WILD_POKEMON_AREA_H
|
||||
#define GUARD_WILD_POKEMON_AREA_H
|
||||
|
||||
s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites);
|
||||
|
||||
#endif //GUARD_WILD_POKEMON_AREA_H
|
||||
|
|
@ -246,10 +246,10 @@ SECTIONS {
|
|||
src/oak_speech.o(.text);
|
||||
src/tm_case.o(.text);
|
||||
src/menu_indicators.o(.text);
|
||||
asm/pokedex_area_markers.o(.text);
|
||||
src/pokedex_area_markers.o(.text);
|
||||
asm/pokemon_summary_screen.o(.text);
|
||||
src/help_system.o(.text);
|
||||
asm/wild_pokemon_area.o(.text);
|
||||
src/wild_pokemon_area.o(.text);
|
||||
src/dynamic_placeholder_text_util.o(.text);
|
||||
src/berry_pouch.o(.text);
|
||||
src/itemfinder.o(.text);
|
||||
|
|
@ -461,10 +461,10 @@ SECTIONS {
|
|||
src/oak_speech.o(.rodata);
|
||||
src/tm_case.o(.rodata);
|
||||
src/menu_indicators.o(.rodata);
|
||||
data/pokedex_area_markers.o(.rodata);
|
||||
src/pokedex_area_markers.o(.rodata);
|
||||
data/pokemon_summary_screen.o(.rodata);
|
||||
src/help_system.o(.rodata);
|
||||
data/wild_pokemon_area.o(.rodata);
|
||||
src/wild_pokemon_area.o(.rodata);
|
||||
src/dynamic_placeholder_text_util.o(.rodata);
|
||||
src/berry_pouch.o(.rodata);
|
||||
src/itemfinder.o(.rodata);
|
||||
|
|
|
|||
238
src/pokedex_area_markers.c
Normal file
238
src/pokedex_area_markers.c
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "bg.h"
|
||||
#include "decompress.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "palette.h"
|
||||
#include "task.h"
|
||||
#include "wild_pokemon_area.h"
|
||||
#include "pokedex_area_markers.h"
|
||||
|
||||
static const u16 sMarkerPal[] = INCBIN_U16("data/pokedex_area_markers/marker.gbapal");
|
||||
static const u32 sMarkerTiles[] = INCBIN_U32("data/pokedex_area_markers/marker.4bpp.lz");
|
||||
|
||||
static const struct Subsprite sSubsprite0 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_SQUARE,
|
||||
.priority = 1,
|
||||
.tileOffset = 0
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite1 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 1
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite2 = {
|
||||
.size = ST_OAM_SIZE_0,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 3
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite3 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 5
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite4 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 13
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite5 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_H_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 21
|
||||
};
|
||||
|
||||
static const struct Subsprite sSubsprite6 = {
|
||||
.size = ST_OAM_SIZE_2,
|
||||
.shape = ST_OAM_V_RECTANGLE,
|
||||
.priority = 1,
|
||||
.tileOffset = 29
|
||||
};
|
||||
|
||||
|
||||
static const struct Subsprite *const sSubsprites[] = {
|
||||
&sSubsprite0,
|
||||
&sSubsprite1,
|
||||
&sSubsprite2,
|
||||
&sSubsprite3,
|
||||
&sSubsprite4,
|
||||
&sSubsprite5,
|
||||
&sSubsprite6
|
||||
};
|
||||
|
||||
static const s8 sSubspriteLookupTable[][4] = {
|
||||
{ 0, 0x00, 0x00 },
|
||||
{ 0, 0x36, 0x2c },
|
||||
{ 0, 0x36, 0x1c },
|
||||
{ 0, 0x36, 0x0c },
|
||||
{ 0, 0x5c, 0x0c },
|
||||
{ 0, 0x6e, 0x18 },
|
||||
{ 0, 0x5c, 0x24 },
|
||||
{ 0, 0x4c, 0x18 },
|
||||
{ 0, 0x4e, 0x34 },
|
||||
{ 0, 0x36, 0x3e },
|
||||
{ 0, 0x2a, 0x02 },
|
||||
{ 0, 0x5c, 0x18 },
|
||||
{ 2, 0x36, 0x20 },
|
||||
{ 2, 0x36, 0x10 },
|
||||
{ 1, 0x3d, 0x0c },
|
||||
{ 1, 0x4d, 0x0c },
|
||||
{ 0, 0x5c, 0x12 },
|
||||
{ 0, 0x5c, 0x1e },
|
||||
{ 0, 0x54, 0x18 },
|
||||
{ 1, 0x62, 0x18 },
|
||||
{ 1, 0x62, 0x0c },
|
||||
{ 2, 0x6e, 0x0c },
|
||||
{ 1, 0x62, 0x24 },
|
||||
{ 4, 0x6a, 0x19 },
|
||||
{ 1, 0x64, 0x2e },
|
||||
{ 2, 0x5e, 0x2d },
|
||||
{ 1, 0x55, 0x34 },
|
||||
{ 0, 0x44, 0x18 },
|
||||
{ 4, 0x3e, 0x1a },
|
||||
{ 1, 0x40, 0x34 },
|
||||
{ 0, 0x4e, 0x3c },
|
||||
{ 3, 0x37, 0x3a },
|
||||
{ 2, 0x36, 0x32 },
|
||||
{ 1, 0x28, 0x1c },
|
||||
{ 4, 0x26, 0x04 },
|
||||
{ 0, 0x5c, 0x04 },
|
||||
{ 3, 0x5a, 0xfe },
|
||||
{ 0, 0x33, 0x14 },
|
||||
{ 1, 0x3d, 0x12 },
|
||||
{ 0, 0x48, 0x08 },
|
||||
{ 0, 0x57, 0x08 },
|
||||
{ 0, 0x70, 0x0e },
|
||||
{ 0, 0x71, 0x14 },
|
||||
{ 0, 0x71, 0x19 },
|
||||
{ 1, 0x4e, 0x2c },
|
||||
{ 0, 0x41, 0x3c },
|
||||
{ 0, 0x34, 0x3e },
|
||||
{ 0, 0x2d, 0x07 },
|
||||
{ 0, 0x0a, 0x0a },
|
||||
{ 0, 0x0c, 0x23 },
|
||||
{ 0, 0x0e, 0x34 },
|
||||
{ 0, 0x0c, 0x54 },
|
||||
{ 0, 0x2d, 0x51 },
|
||||
{ 0, 0x4c, 0x54 },
|
||||
{ 0, 0x68, 0x52 },
|
||||
{ 2, 0x0e, 0x02 },
|
||||
{ 0, 0x0a, 0x0f },
|
||||
{ 0, 0x0c, 0x1d },
|
||||
{ 1, 0x02, 0x34 },
|
||||
{ 1, 0x0c, 0x38 },
|
||||
{ 1, 0x2c, 0x4a },
|
||||
{ 1, 0x24, 0x4e },
|
||||
{ 2, 0x30, 0x50 },
|
||||
{ 2, 0x34, 0x56 },
|
||||
{ 0, 0x48, 0x4a },
|
||||
{ 1, 0x48, 0x4e },
|
||||
{ 2, 0x51, 0x50 },
|
||||
{ 0, 0x4c, 0x5c },
|
||||
{ 0, 0x68, 0x4b },
|
||||
{ 0, 0x68, 0x56 },
|
||||
{ 2, 0x6c, 0x53 },
|
||||
{ 3, 0x60, 0x5a },
|
||||
{ 0, 0x0e, 0x01 },
|
||||
{ 0, 0x05, 0x34 },
|
||||
{ 0, 0x0d, 0x50 },
|
||||
{ 0, 0x36, 0x4a },
|
||||
{ 0, 0x45, 0x49 },
|
||||
{ 0, 0x4c, 0x4d },
|
||||
{ 0, 0x49, 0x5f },
|
||||
{ 3, 0x60, 0x5a }
|
||||
};
|
||||
|
||||
static void Task_ShowAreaMarkers(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
gSprites[data->spr_id].invisible = FALSE;
|
||||
}
|
||||
|
||||
u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y)
|
||||
{
|
||||
struct SpriteTemplate spriteTemplate;
|
||||
struct CompressedSpriteSheet spriteSheet;
|
||||
u8 taskId;
|
||||
struct PAM_TaskData * data;
|
||||
struct Subsprite * subsprites;
|
||||
|
||||
spriteSheet.data = sMarkerTiles;
|
||||
spriteSheet.size = 0x4A0;
|
||||
spriteSheet.tag = tilesTag;
|
||||
LoadCompressedSpriteSheet(&spriteSheet);
|
||||
LoadPalette(sMarkerPal, 0x100 + 16 * palIdx, 0x20);
|
||||
taskId = CreateTask(Task_ShowAreaMarkers, 0);
|
||||
data = (void *)gTasks[taskId].data;
|
||||
data->unk_0C = 0;
|
||||
data->tilesTag = tilesTag;
|
||||
data->unk_10 = 0xFFFF;
|
||||
subsprites = Alloc(120 * sizeof(struct Subsprite));
|
||||
data->buffer = subsprites;
|
||||
data->subsprites.subsprites = subsprites;
|
||||
data->subsprites.subspriteCount = BuildPokedexAreaSubspriteBuffer(species, subsprites);
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8));
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x2F3D);
|
||||
spriteTemplate = gDummySpriteTemplate;
|
||||
spriteTemplate.tileTag = tilesTag;
|
||||
data->spr_id = CreateSprite(&spriteTemplate, 104, y + 32, 0);
|
||||
SetSubspriteTables(&gSprites[data->spr_id], &data->subsprites);
|
||||
gSprites[data->spr_id].oam.objMode = ST_OAM_OBJ_WINDOW;
|
||||
gSprites[data->spr_id].oam.paletteNum = palIdx;
|
||||
gSprites[data->spr_id].subspriteTableNum = 0;
|
||||
gSprites[data->spr_id].invisible = TRUE;
|
||||
HideBg(1);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0);
|
||||
FillBgTilemapBufferRect_Palette0(1, 0x00F, 0, 0, 30, 20);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
ShowBg(1);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
void sub_81343F4(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
FreeSpriteTilesByTag(data->tilesTag);
|
||||
DestroySprite(&gSprites[data->spr_id]);
|
||||
Free(data->buffer);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0x1F1F);
|
||||
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON);
|
||||
HideBg(1);
|
||||
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2);
|
||||
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
ShowBg(1);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites)
|
||||
{
|
||||
subsprites[i] = *sSubsprites[sSubspriteLookupTable[whichArea][0]];
|
||||
subsprites[i].x = sSubspriteLookupTable[whichArea][1];
|
||||
subsprites[i].y = sSubspriteLookupTable[whichArea][2];
|
||||
}
|
||||
|
||||
u8 sub_81344E0(u8 taskId)
|
||||
{
|
||||
struct PAM_TaskData * data = (void *)gTasks[taskId].data;
|
||||
return data->subsprites.subspriteCount;
|
||||
}
|
||||
308
src/wild_pokemon_area.c
Normal file
308
src/wild_pokemon_area.c
Normal file
|
|
@ -0,0 +1,308 @@
|
|||
#include "global.h"
|
||||
#include "field_specials.h"
|
||||
#include "event_data.h"
|
||||
#include "wild_encounter.h"
|
||||
#include "roamer.h"
|
||||
#include "overworld.h"
|
||||
#include "pokedex_area_markers.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
struct SeviiDexArea
|
||||
{
|
||||
const u16 (* lut)[2];
|
||||
s32 count;
|
||||
};
|
||||
|
||||
struct RoamerPair
|
||||
{
|
||||
u16 roamer;
|
||||
u16 starter;
|
||||
};
|
||||
|
||||
static s32 GetRoamerIndex(u16 species);
|
||||
static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites);
|
||||
static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species);
|
||||
static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * pokemon, s32 species, s32 count);
|
||||
static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header);
|
||||
static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p);
|
||||
|
||||
static const u16 sDexAreas_Kanto[][2] = {
|
||||
{ MAPSEC_PALLET_TOWN, 1 },
|
||||
{ MAPSEC_VIRIDIAN_CITY, 2 },
|
||||
{ MAPSEC_PEWTER_CITY, 3 },
|
||||
{ MAPSEC_CERULEAN_CITY, 4 },
|
||||
{ MAPSEC_LAVENDER_TOWN, 5 },
|
||||
{ MAPSEC_VERMILION_CITY, 6 },
|
||||
{ MAPSEC_CELADON_CITY, 7 },
|
||||
{ MAPSEC_FUCHSIA_CITY, 8 },
|
||||
{ MAPSEC_CINNABAR_ISLAND, 9 },
|
||||
{ MAPSEC_INDIGO_PLATEAU, 10 },
|
||||
{ MAPSEC_SAFFRON_CITY, 11 },
|
||||
{ MAPSEC_ROUTE_4_FLYDUP, 15 },
|
||||
{ MAPSEC_ROUTE_10_FLYDUP, 21 },
|
||||
{ MAPSEC_ROUTE_1, 12 },
|
||||
{ MAPSEC_ROUTE_2, 13 },
|
||||
{ MAPSEC_ROUTE_3, 14 },
|
||||
{ MAPSEC_ROUTE_4, 15 },
|
||||
{ MAPSEC_ROUTE_5, 16 },
|
||||
{ MAPSEC_ROUTE_6, 17 },
|
||||
{ MAPSEC_ROUTE_7, 18 },
|
||||
{ MAPSEC_ROUTE_8, 19 },
|
||||
{ MAPSEC_ROUTE_9, 20 },
|
||||
{ MAPSEC_ROUTE_10, 21 },
|
||||
{ MAPSEC_ROUTE_11, 22 },
|
||||
{ MAPSEC_ROUTE_12, 23 },
|
||||
{ MAPSEC_ROUTE_13, 24 },
|
||||
{ MAPSEC_ROUTE_14, 25 },
|
||||
{ MAPSEC_ROUTE_15, 26 },
|
||||
{ MAPSEC_ROUTE_16, 27 },
|
||||
{ MAPSEC_ROUTE_17, 28 },
|
||||
{ MAPSEC_ROUTE_18, 29 },
|
||||
{ MAPSEC_ROUTE_19, 30 },
|
||||
{ MAPSEC_ROUTE_20, 31 },
|
||||
{ MAPSEC_ROUTE_21, 32 },
|
||||
{ MAPSEC_ROUTE_22, 33 },
|
||||
{ MAPSEC_ROUTE_23, 34 },
|
||||
{ MAPSEC_ROUTE_24, 35 },
|
||||
{ MAPSEC_ROUTE_25, 36 },
|
||||
{ MAPSEC_VIRIDIAN_FOREST, 37 },
|
||||
{ MAPSEC_MT_MOON, 39 },
|
||||
{ MAPSEC_S_S_ANNE, 6 },
|
||||
{ MAPSEC_UNDERGROUND_PATH, 11 },
|
||||
{ MAPSEC_UNDERGROUND_PATH_2, 11 },
|
||||
{ MAPSEC_DIGLETTS_CAVE, 38 },
|
||||
{ MAPSEC_KANTO_VICTORY_ROAD, 47 },
|
||||
{ MAPSEC_ROCKET_HIDEOUT, 7 },
|
||||
{ MAPSEC_SILPH_CO, 11 },
|
||||
{ MAPSEC_POKEMON_MANSION, 46 },
|
||||
{ MAPSEC_KANTO_SAFARI_ZONE, 44 },
|
||||
{ MAPSEC_POKEMON_LEAGUE, 47 },
|
||||
{ MAPSEC_ROCK_TUNNEL, 41 },
|
||||
{ MAPSEC_SEAFOAM_ISLANDS, 45 },
|
||||
{ MAPSEC_POKEMON_TOWER, 43 },
|
||||
{ MAPSEC_CERULEAN_CAVE, 40 },
|
||||
{ MAPSEC_POWER_PLANT, 42 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii1[][2] = {
|
||||
{ MAPSEC_KINDLE_ROAD, 55 },
|
||||
{ MAPSEC_TREASURE_BEACH, 56 },
|
||||
{ MAPSEC_ONE_ISLAND, 48 },
|
||||
{ MAPSEC_MT_EMBER, 72 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii2[][2] = {
|
||||
{ MAPSEC_CAPE_BRINK, 57 },
|
||||
{ MAPSEC_TWO_ISLAND, 49 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii3[][2] = {
|
||||
{ MAPSEC_BOND_BRIDGE, 58 },
|
||||
{ MAPSEC_THREE_ISLE_PORT, 59 },
|
||||
{ MAPSEC_THREE_ISLAND, 50 },
|
||||
{ MAPSEC_BERRY_FOREST, 73 },
|
||||
{ MAPSEC_THREE_ISLE_PATH, 59 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii4[][2] = {
|
||||
{ MAPSEC_FOUR_ISLAND, 51 },
|
||||
{ MAPSEC_ICEFALL_CAVE, 74 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii5[][2] = {
|
||||
{ MAPSEC_RESORT_GORGEOUS, 60 },
|
||||
{ MAPSEC_WATER_LABYRINTH, 61 },
|
||||
{ MAPSEC_FIVE_ISLE_MEADOW, 62 },
|
||||
{ MAPSEC_MEMORIAL_PILLAR, 63 },
|
||||
{ MAPSEC_FIVE_ISLAND, 52 },
|
||||
{ MAPSEC_ROCKET_WAREHOUSE, 62 },
|
||||
{ MAPSEC_LOST_CAVE, 75 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii6[][2] = {
|
||||
{ MAPSEC_OUTCAST_ISLAND, 64 },
|
||||
{ MAPSEC_GREEN_PATH, 65 },
|
||||
{ MAPSEC_WATER_PATH, 66 },
|
||||
{ MAPSEC_RUIN_VALLEY, 67 },
|
||||
{ MAPSEC_DOTTED_HOLE, 78 },
|
||||
{ MAPSEC_PATTERN_BUSH, 77 },
|
||||
{ MAPSEC_ALTERING_CAVE, 76 }
|
||||
};
|
||||
|
||||
static const u16 sDexAreas_Sevii7[][2] = {
|
||||
{ MAPSEC_TRAINER_TOWER, 68 },
|
||||
{ MAPSEC_CANYON_ENTRANCE, 69 },
|
||||
{ MAPSEC_SEVAULT_CANYON, 70 },
|
||||
{ MAPSEC_TANOBY_RUINS, 71 },
|
||||
{ MAPSEC_MONEAN_CHAMBER, 79 },
|
||||
{ MAPSEC_LIPTOO_CHAMBER, 79 },
|
||||
{ MAPSEC_WEEPTH_CHAMBER, 79 },
|
||||
{ MAPSEC_DILFORD_CHAMBER, 79 },
|
||||
{ MAPSEC_SCUFIB_CHAMBER, 79 },
|
||||
{ MAPSEC_RIXY_CHAMBER, 79 },
|
||||
{ MAPSEC_VIAPOIS_CHAMBER, 79 }
|
||||
};
|
||||
|
||||
static const struct SeviiDexArea sSeviiDexAreas[] = {
|
||||
{ sDexAreas_Sevii1, 4 },
|
||||
{ sDexAreas_Sevii2, 2 },
|
||||
{ sDexAreas_Sevii3, 5 },
|
||||
{ sDexAreas_Sevii4, 2 },
|
||||
{ sDexAreas_Sevii5, 7 },
|
||||
{ sDexAreas_Sevii6, 7 },
|
||||
{ sDexAreas_Sevii7, 11 }
|
||||
};
|
||||
|
||||
static const struct RoamerPair sRoamerPairs[] = {
|
||||
{ SPECIES_ENTEI, SPECIES_BULBASAUR },
|
||||
{ SPECIES_SUICUNE, SPECIES_CHARMANDER },
|
||||
{ SPECIES_RAIKOU, SPECIES_SQUIRTLE }
|
||||
};
|
||||
|
||||
s32 BuildPokedexAreaSubspriteBuffer(u16 species, struct Subsprite * subsprites)
|
||||
{
|
||||
s32 areaCount;
|
||||
s32 j;
|
||||
s32 mapSecId;
|
||||
u16 dexAreaSubspriteIdx;
|
||||
s32 dexAreaEntryLUTidx;
|
||||
s32 seviiAreas;
|
||||
s32 alteringCaveCount;
|
||||
s32 alteringCaveNum;
|
||||
s32 i;
|
||||
|
||||
if (GetRoamerIndex(species) >= SPECIES_NONE)
|
||||
{
|
||||
return CountRoamerNests(species, subsprites);
|
||||
}
|
||||
|
||||
seviiAreas = GetUnlockedSeviiAreas();
|
||||
alteringCaveCount = 0;
|
||||
alteringCaveNum = VarGet(VAR_0x4024);
|
||||
if (alteringCaveNum > 8)
|
||||
alteringCaveNum = 0;
|
||||
for (i = 0, areaCount = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++)
|
||||
{
|
||||
mapSecId = GetMapSecIdFromWildMonHeader(&gWildMonHeaders[i]);
|
||||
if (mapSecId == MAPSEC_ALTERING_CAVE)
|
||||
{
|
||||
alteringCaveCount++;
|
||||
if (alteringCaveNum != alteringCaveCount - 1)
|
||||
continue;
|
||||
}
|
||||
if (PokemonInAnyEncounterTableInMap(&gWildMonHeaders[i], species))
|
||||
{
|
||||
dexAreaEntryLUTidx = 0;
|
||||
while (TryGetMapSecPokedexAreaEntry(mapSecId, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx))
|
||||
{
|
||||
if (dexAreaSubspriteIdx != 0)
|
||||
{
|
||||
SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites);
|
||||
}
|
||||
}
|
||||
for (j = 0; j < NELEMS(sSeviiDexAreas); j++)
|
||||
{
|
||||
if ((seviiAreas >> j) & 1)
|
||||
{
|
||||
dexAreaEntryLUTidx = 0;
|
||||
while (TryGetMapSecPokedexAreaEntry(mapSecId, sSeviiDexAreas[j].lut, sSeviiDexAreas[j].count, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx))
|
||||
{
|
||||
if (dexAreaSubspriteIdx != 0)
|
||||
{
|
||||
SetAreaSubsprite(areaCount++, dexAreaSubspriteIdx, subsprites);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return areaCount;
|
||||
}
|
||||
|
||||
static s32 GetRoamerIndex(u16 species)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 3u; i++)
|
||||
{
|
||||
if (sRoamerPairs[i].roamer == species)
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static s32 CountRoamerNests(u16 species, struct Subsprite * subsprites)
|
||||
{
|
||||
u16 roamerLocation;
|
||||
s32 roamerIdx;
|
||||
u16 dexAreaSubspriteIdx;
|
||||
s32 dexAreaEntryLUTidx;
|
||||
|
||||
roamerIdx = GetRoamerIndex(species);
|
||||
if (roamerIdx < 0)
|
||||
return 0;
|
||||
if (sRoamerPairs[roamerIdx].starter != ScrSpecial_GetStarter())
|
||||
return 0;
|
||||
roamerLocation = GetRoamerLocationMapSectionId();
|
||||
dexAreaEntryLUTidx = 0;
|
||||
if (TryGetMapSecPokedexAreaEntry(roamerLocation, sDexAreas_Kanto, 55, &dexAreaEntryLUTidx, &dexAreaSubspriteIdx))
|
||||
{
|
||||
if (dexAreaSubspriteIdx != 0)
|
||||
{
|
||||
SetAreaSubsprite(0, dexAreaSubspriteIdx, subsprites);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool32 PokemonInAnyEncounterTableInMap(const struct WildPokemonHeader * data, s32 species)
|
||||
{
|
||||
if (PokemonInEncounterTable(data->landMonsInfo, species, 12))
|
||||
return TRUE;
|
||||
if (PokemonInEncounterTable(data->waterMonsInfo, species, 5))
|
||||
return TRUE;
|
||||
if (PokemonInEncounterTable(data->fishingMonsInfo, species, 12))
|
||||
return TRUE;
|
||||
if (PokemonInEncounterTable(data->rockSmashMonsInfo, species, 5))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 PokemonInEncounterTable(const struct WildPokemonInfo * info, s32 species, s32 count)
|
||||
{
|
||||
s32 i;
|
||||
if (info != NULL)
|
||||
{
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
if (info->wildPokemon[i].species == species)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u16 GetMapSecIdFromWildMonHeader(const struct WildPokemonHeader * header)
|
||||
{
|
||||
return get_mapheader_by_bank_and_number(header->mapGroup, header->mapNum)->regionMapSectionId;
|
||||
}
|
||||
|
||||
static bool32 TryGetMapSecPokedexAreaEntry(u16 mapSecId, const u16 (*lut)[2], s32 count, s32 * lut_i_p, u16 * table_idx_p)
|
||||
{
|
||||
s32 i;
|
||||
for (i = *lut_i_p; i < count; i++)
|
||||
{
|
||||
if (lut[i][0] == mapSecId)
|
||||
{
|
||||
*table_idx_p = lut[i][1];
|
||||
*lut_i_p = i + 1;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user