summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2017-11-17 15:07:17 -0600
committerDiegoisawesome <diego@domoreaweso.me>2017-11-17 15:07:17 -0600
commit52624c4fb7c145c33a2d0edc1d64b2d6e09c1336 (patch)
treeaec3073d480a2fbc3f0221397aa5e84f85755e48
parentf8402b3d7408e31a085dc136967f99705c764553 (diff)
parent3883c399912a35ca4eca3cbee7cb0c46c81e8d76 (diff)
Merge branch 'master' of https://github.com/pret/pokeemerald
-rw-r--r--Makefile1
-rw-r--r--asm/daycare.s3193
-rw-r--r--asm/field_control_avatar.s2
-rw-r--r--asm/field_effect.s2
-rw-r--r--asm/field_region_map.s325
-rw-r--r--asm/fldeff_80F9BCC.s6
-rwxr-xr-xasm/fldeff_cut.s6
-rwxr-xr-xasm/fldeff_softboiled.s6
-rw-r--r--asm/fldeff_strength.s4
-rw-r--r--asm/fldeff_sweetscent.s2
-rw-r--r--asm/fldeff_teleport.s2
-rw-r--r--asm/heal_location.s83
-rw-r--r--asm/link.s10
-rwxr-xr-xasm/mail_data.s28
-rw-r--r--asm/mystery_event_script.s4
-rwxr-xr-xasm/party_menu.s32
-rw-r--r--asm/player_pc.s2
-rw-r--r--asm/pokedex_area_screen.s8
-rw-r--r--asm/pokemon_1.s6
-rwxr-xr-xasm/pokemon_storage_system.s246
-rwxr-xr-xasm/pokenav.s8
-rw-r--r--asm/record_mixing.s2
-rw-r--r--asm/region_map.s4288
-rw-r--r--asm/rom4.s6
-rw-r--r--asm/rom6.s10
-rw-r--r--asm/script_pokemon_util_80F87D8.s2
-rw-r--r--asm/trade.s8
-rw-r--r--constants/flags.inc2
-rw-r--r--data/daycare.s24
-rw-r--r--data/egg_moves.inc1306
-rw-r--r--data/field_region_map.s14
-rw-r--r--data/heal_location.s11
-rw-r--r--data/menu_helpers.s2
-rw-r--r--data/region_map.s101
-rw-r--r--data/region_map_entries.inc809
-rw-r--r--data/scripts/cable_club.inc2
-rw-r--r--data/scripts/day_care.inc48
-rw-r--r--data/scripts/maps/Route117.inc2
-rw-r--r--data/specials.inc29
-rw-r--r--data/strings.s12
-rw-r--r--data/trade.s10
-rw-r--r--graphics/pokenav/brendan_icon.pal19
-rw-r--r--graphics/pokenav/brendan_icon.pngbin0 -> 239 bytes
-rw-r--r--graphics/pokenav/cursor.pal19
-rw-r--r--graphics/pokenav/cursor_large.pngbin0 -> 194 bytes
-rw-r--r--graphics/pokenav/cursor_small.pngbin0 -> 168 bytes
-rw-r--r--graphics/pokenav/fly_target_icons.pal19
-rw-r--r--graphics/pokenav/fly_target_icons.pngbin0 -> 291 bytes
-rw-r--r--graphics/pokenav/map_frame.binbin0 -> 1280 bytes
-rw-r--r--graphics/pokenav/map_frame.pngbin0 -> 160 bytes
-rw-r--r--graphics/pokenav/may_icon.pal19
-rw-r--r--graphics/pokenav/may_icon.pngbin0 -> 245 bytes
-rw-r--r--graphics/pokenav/region_map.pal35
-rw-r--r--graphics/pokenav/region_map.pngbin0 -> 3959 bytes
-rw-r--r--graphics/pokenav/region_map_map.binbin0 -> 4096 bytes
-rw-r--r--graphics/pokenav/region_map_section_layout.binbin0 -> 420 bytes
-rw-r--r--graphics_file_rules.mk6
-rw-r--r--include/data/pokemon/egg_moves.h1315
-rw-r--r--include/data/region_map/region_map_entries.h421
-rw-r--r--include/daycare.h27
-rw-r--r--include/egg_hatch.h10
-rw-r--r--include/field_effect.h5
-rw-r--r--include/flags.h188
-rw-r--r--include/global.h47
-rw-r--r--include/heal_location.h25
-rw-r--r--include/items.h3
-rw-r--r--include/list_menu.h30
-rw-r--r--include/mail.h6
-rw-r--r--include/menu.h2
-rw-r--r--include/overworld.h5
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokemon.h7
-rw-r--r--include/pokemon_storage_system.h5
-rw-r--r--include/region_map.h515
-rw-r--r--include/rom6.h1
-rw-r--r--include/secret_base.h1
-rw-r--r--include/strings.h7
-rw-r--r--include/vars.h3
-rw-r--r--ld_script.txt17
-rwxr-xr-xsrc/braille_puzzles.c6
-rw-r--r--src/daycare.c1318
-rw-r--r--src/decoration.c46
-rw-r--r--src/egg_hatch.c22
-rw-r--r--src/field_region_map.c193
-rw-r--r--src/heal_location.c83
-rw-r--r--src/pokemon_storage_system.c123
-rwxr-xr-xsrc/pokemon_summary_screen.c17
-rw-r--r--src/region_map.c1949
-rw-r--r--src/secret_base.c8
-rw-r--r--src/tv.c6
-rw-r--r--sym_bss.txt3
-rw-r--r--sym_ewram.txt28
92 files changed, 6273 insertions, 10951 deletions
diff --git a/Makefile b/Makefile
index 4a1f94352..4bff6887a 100644
--- a/Makefile
+++ b/Makefile
@@ -86,6 +86,7 @@ include graphics_file_rules.mk
%.4bpp: %.png ; $(GFX) $< $@
%.8bpp: %.png ; $(GFX) $< $@
%.gbapal: %.pal ; $(GFX) $< $@
+%.gbapal: %.png ; $(GFX) $< $@
%.lz: % ; $(GFX) $< $@
%.rl: % ; $(GFX) $< $@
diff --git a/asm/daycare.s b/asm/daycare.s
deleted file mode 100644
index a25f2a40c..000000000
--- a/asm/daycare.s
+++ /dev/null
@@ -1,3193 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GetMonNick
-GetMonNick: @ 806FA2C
- push {r4,lr}
- sub sp, 0x14
- adds r4, r1, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetMonNick
-
- thumb_func_start GetBoxMonNick
-GetBoxMonNick: @ 806FA4C
- push {r4,lr}
- sub sp, 0x14
- adds r4, r1, 0
- movs r1, 0x2
- mov r2, sp
- bl GetBoxMonData
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- add sp, 0x14
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetBoxMonNick
-
- thumb_func_start daycare_count_pokemon
-daycare_count_pokemon: @ 806FA6C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
- movs r4, 0
-_0806FA74:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FA8A
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0806FA8A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FA74
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end daycare_count_pokemon
-
- thumb_func_start sub_806FA9C
-sub_806FA9C: @ 806FA9C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- movs r7, 0
- movs r5, 0
- mov r6, r10
- adds r6, 0x74
- movs r0, 0x1
- mov r8, r0
-_0806FAB6:
- movs r0, 0x8C
- muls r0, r5
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FAE4
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0806FAE4
- lsls r0, r5, 1
- adds r0, r6, r0
- b _0806FAEA
-_0806FAE4:
- lsls r0, r5, 1
- adds r0, r6, r0
- mov r1, r8
-_0806FAEA:
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0806FAB6
- mov r0, r10
- str r7, [r0, 0x70]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_806FA9C
-
- thumb_func_start daycare_empty_slot
-@ u8 daycare_empty_slot(struct daycare_mon *dayCareMons)
-daycare_empty_slot: @ 806FB08
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0806FB0E:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r5, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _0806FB24
- lsls r0, r4, 24
- asrs r0, 24
- b _0806FB32
-_0806FB24:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FB0E
- movs r0, 0x1
- negs r0, r0
-_0806FB32:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end daycare_empty_slot
-
- thumb_func_start sub_806FB38
-@ void sub_806FB38(struct pokemon *mon, struct daycare_mon *dayCareMon)
-sub_806FB38: @ 806FB38
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- bl sub_80D43F0
- lsls r0, 24
- cmp r0, 0
- beq _0806FBBC
- adds r0, r5, 0
- adds r0, 0x74
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r4, r5, 0
- adds r4, 0x7C
- adds r0, r6, 0
- adds r1, r4, 0
- bl GetMonNick
- adds r0, r4, 0
- bl StripExtCtrlCodes
- adds r4, 0xB
- ldrb r1, [r4]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- lsls r0, 4
- ldrb r2, [r4]
- movs r1, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- adds r0, r6, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r1, r2
- adds r0, r5, 0
- adds r0, 0x50
- ldr r2, =0x00002be0
- adds r1, r2
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- adds r0, r6, 0
- bl sub_80D4680
-_0806FBBC:
- adds r0, r5, 0
- adds r1, r6, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r5, 0
- bl BoxMonRestorePP
- adds r1, r5, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- adds r0, r6, 0
- bl ZeroMonData
- bl party_compaction
- bl CalculatePlayerPartyCount
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FB38
-
- thumb_func_start daycare_send
-@ void daycare_send(struct pokemon *mon, struct daycare_mon *dayCareMons)
-daycare_send: @ 806FBF4
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- bl daycare_empty_slot
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x8C
- muls r0, r1
- adds r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_806FB38
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end daycare_send
-
- thumb_func_start daycare_send_selected_pokemon
-daycare_send_selected_pokemon: @ 806FC18
- push {lr}
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, =0x00003030
- adds r1, r2
- bl daycare_send
- pop {r0}
- bx r0
- .pool
- thumb_func_end daycare_send_selected_pokemon
-
- thumb_func_start sub_806FC48
-sub_806FC48: @ 806FC48
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0806FC9E
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- adds r6, r0, 0
- cmp r6, 0
- bne _0806FC9E
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- bl ZeroBoxMonData
- adds r4, 0x50
- adds r0, r5, 0
- adds r0, 0x50
- adds r1, r4, 0
- movs r2, 0x38
- bl memcpy
- adds r2, r5, 0
- adds r2, 0x88
- movs r0, 0x8A
- lsls r0, 1
- adds r1, r5, r0
- ldr r0, [r1]
- str r0, [r2]
- str r6, [r1]
- adds r0, r4, 0
- bl sub_806FF80
-_0806FC9E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806FC48
-
- thumb_func_start sub_806FCA4
-sub_806FCA4: @ 806FCA4
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
- ldr r7, =0x0000ffff
-_0806FCAC:
- adds r0, r4, 0
- bl TryIncrementMonLevel
- lsls r0, 24
- cmp r0, 0
- beq _0806FCE8
- movs r6, 0x1
- adds r5, 0x1
- b _0806FCD4
- .pool
-_0806FCC4:
- movs r6, 0
- cmp r0, r7
- bne _0806FCD4
- ldr r0, =gMoveToLearn
- ldrh r1, [r0]
- adds r0, r4, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_0806FCD4:
- adds r0, r4, 0
- adds r1, r6, 0
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0806FCC4
- cmp r5, 0x63
- ble _0806FCAC
-_0806FCE8:
- adds r0, r4, 0
- bl CalculateMonStats
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FCA4
-
- thumb_func_start sub_806FCF8
-sub_806FCF8: @ 806FCF8
- push {r4-r7,lr}
- sub sp, 0x68
- adds r5, r0, 0
- ldr r1, =gStringVar1
- bl GetBoxMonNick
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r5, 0
- mov r1, sp
- bl sub_8069004
- mov r0, sp
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _0806FD46
- mov r0, sp
- movs r1, 0x19
- bl GetMonData
- adds r1, r5, 0
- adds r1, 0x88
- ldr r1, [r1]
- adds r0, r1
- str r0, [sp, 0x64]
- add r2, sp, 0x64
- mov r0, sp
- movs r1, 0x19
- bl SetMonData
- mov r0, sp
- bl sub_806FCA4
-_0806FD46:
- ldr r0, =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r6, r0, r1
- adds r0, r6, 0
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- adds r0, r5, 0
- adds r0, 0x70
- ldrh r0, [r0]
- cmp r0, 0
- beq _0806FD74
- adds r4, r5, 0
- adds r4, 0x50
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_80D460C
- adds r0, r4, 0
- bl sub_806FF80
-_0806FD74:
- adds r0, r5, 0
- bl ZeroBoxMonData
- adds r1, r5, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r7, 0
- add sp, 0x68
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FCF8
-
- thumb_func_start sub_806FD9C
-sub_806FD9C: @ 806FD9C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x8C
- muls r0, r1
- adds r0, r5, r0
- bl sub_806FCF8
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl sub_806FC48
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FD9C
-
- thumb_func_start sub_806FDC4
-sub_806FDC4: @ 806FDC4
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- ldr r1, =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_806FD9C
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FDC4
-
- thumb_func_start sub_806FDEC
-sub_806FDEC: @ 806FDEC
- push {r4,r5,lr}
- sub sp, 0x54
- adds r4, r0, 0
- adds r5, r1, 0
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x19
- bl GetBoxMonData
- adds r0, r5
- str r0, [sp, 0x50]
- add r2, sp, 0x50
- mov r0, sp
- movs r1, 0x19
- bl SetBoxMonData
- mov r0, sp
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x54
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FDEC
-
- thumb_func_start sub_806FE28
-sub_806FE28: @ 806FE28
- push {r4,r5,lr}
- adds r5, r0, 0
- bl GetLevelFromBoxMonExp
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r0, 0x88
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_806FDEC
- lsls r0, 24
- lsrs r0, 24
- subs r0, r4
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806FE28
-
- thumb_func_start sub_806FE54
-sub_806FE54: @ 806FE54
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_806FE28
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetBoxMonNick
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FE54
-
- thumb_func_start sub_806FE88
-sub_806FE88: @ 806FE88
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_806FE28
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gStringVar1
- adds r0, r5, 0
- bl GetBoxMonNick
- movs r0, 0x64
- muls r4, r0
- adds r4, 0x64
- ldr r0, =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FE88
-
- thumb_func_start sub_806FEC0
-sub_806FEC0: @ 806FEC0
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x8C
- muls r1, r2
- adds r0, r1
- bl sub_806FE88
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_806FEC0
-
- thumb_func_start sub_806FED8
-sub_806FED8: @ 806FED8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- ldr r1, =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_806FEC0
- ldr r1, =gSpecialVar_0x8005
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_806FED8
-
- thumb_func_start sub_806FF04
-sub_806FF04: @ 806FF04
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldr r1, =0x000030b8
- adds r3, r2, r1
- ldr r1, [r3]
- adds r1, r0
- str r1, [r3]
- ldr r1, =0x00003144
- adds r2, r1
- ldr r1, [r2]
- adds r1, r0
- str r1, [r2]
- bx lr
- .pool
- thumb_func_end sub_806FF04
-
- thumb_func_start sub_806FF30
-sub_806FF30: @ 806FF30
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r5, =gSpecialVar_0x8004
- ldrh r0, [r5]
- movs r4, 0x8C
- adds r1, r0, 0
- muls r1, r4
- ldr r0, =0x00003030
- adds r1, r0
- ldr r0, [r6]
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _0806FF60
- movs r0, 0
- b _0806FF76
- .pool
-_0806FF60:
- ldrh r0, [r5]
- adds r1, r0, 0
- muls r1, r4
- ldr r0, =0x00003030
- adds r1, r0
- ldr r0, [r6]
- adds r0, r1
- bl sub_806FE54
- lsls r0, 24
- lsrs r0, 24
-_0806FF76:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_806FF30
-
- thumb_func_start sub_806FF80
-sub_806FF80: @ 806FF80
- push {lr}
- movs r3, 0
- movs r2, 0x7
- adds r1, r0, 0
- adds r1, 0x2B
-_0806FF8A:
- strb r3, [r1]
- subs r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _0806FF8A
- adds r2, r0, 0
- adds r2, 0x2C
- movs r3, 0
- adds r1, r0, 0
- adds r1, 0x36
-_0806FF9E:
- strb r3, [r1]
- subs r1, 0x1
- cmp r1, r2
- bge _0806FF9E
- bl sub_80D439C
- pop {r0}
- bx r0
- thumb_func_end sub_806FF80
-
- thumb_func_start sub_806FFB0
-sub_806FFB0: @ 806FFB0
- push {r4,lr}
- adds r4, r0, 0
- bl ZeroBoxMonData
- adds r1, r4, 0
- adds r1, 0x88
- movs r0, 0
- str r0, [r1]
- adds r4, 0x50
- adds r0, r4, 0
- bl sub_806FF80
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_806FFB0
-
- thumb_func_start sub_806FFD0
-sub_806FFD0: @ 806FFD0
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- movs r6, 0x8C
-_0806FFD8:
- adds r0, r4, 0
- muls r0, r6
- adds r0, r5, r0
- bl sub_806FFB0
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0806FFD8
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r5, r1
- movs r1, 0
- str r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r5, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806FFD0
-
- thumb_func_start sub_8070004
-sub_8070004: @ 8070004
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- mov r8, r0
- ldr r0, =gEvolutionTable
- mov r12, r0
-_08070016:
- movs r7, 0
- movs r6, 0x1
- movs r4, 0x80
- lsls r4, 9
- movs r5, 0x28
- mov r3, r12
- adds r3, 0x28
-_08070024:
- movs r1, 0
- ldrh r0, [r3, 0x4]
- cmp r0, r2
- bne _08070034
- lsrs r2, r4, 16
- b _08070060
- .pool
-_08070034:
- adds r1, 0x1
- cmp r1, 0x4
- bgt _0807004A
- lsls r0, r1, 3
- adds r0, r5
- add r0, r12
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _08070034
- lsrs r2, r4, 16
- movs r7, 0x1
-_0807004A:
- cmp r7, 0
- bne _08070060
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x28
- adds r3, 0x28
- adds r6, 0x1
- ldr r0, =0x0000019b
- cmp r6, r0
- ble _08070024
-_08070060:
- movs r0, 0xCE
- lsls r0, 1
- cmp r6, r0
- beq _08070072
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x4
- ble _08070016
-_08070072:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070004
-
- thumb_func_start sub_8070084
-sub_8070084: @ 8070084
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- movs r7, 0x1
- negs r7, r7
- movs r4, 0
-_08070090:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _080700A4
- adds r7, r4, 0
-_080700A4:
- adds r4, 0x1
- cmp r4, 0x1
- ble _08070090
- movs r5, 0
- movs r4, 0
-_080700AE:
- movs r0, 0x8C
- muls r0, r4
- adds r0, r6, r0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 2
- add r1, sp
- str r0, [r1]
- cmp r0, 0x84
- bne _080700C8
- adds r5, 0x1
- adds r7, r4, 0
-_080700C8:
- adds r4, 0x1
- cmp r4, 0x1
- ble _080700AE
- cmp r5, 0x2
- bne _080700E2
- bl Random
- lsls r0, 16
- ldr r1, =0x7ffe0000
- movs r7, 0x1
- cmp r0, r1
- bls _080700E2
- movs r7, 0
-_080700E2:
- movs r0, 0x8C
- muls r0, r7
- adds r0, r6, r0
- movs r1, 0xC
- bl GetBoxMonData
- cmp r0, 0xC3
- bne _080700FE
- bl Random
- lsls r0, 16
- ldr r1, =0x7ffe0000
- cmp r0, r1
- bls _08070108
-_080700FE:
- movs r0, 0x1
- negs r0, r0
- b _0807010A
- .pool
-_08070108:
- adds r0, r7, 0
-_0807010A:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8070084
-
- thumb_func_start sub_8070114
-sub_8070114: @ 8070114
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r6, 0
- ldr r0, =gMain
- ldrh r0, [r0, 0x24]
- bl SeedRng2
- adds r0, r5, 0
- bl sub_8070084
- adds r1, r0, 0
- cmp r1, 0
- bge _08070160
- bl Random2
- adds r4, r0, 0
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r5, r1
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000fffe
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- orrs r4, r0
- str r4, [r5]
- b _080701AC
- .pool
-_08070160:
- movs r0, 0x8C
- muls r0, r1
- adds r0, r5, r0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- bl GetNatureFromPersonality
- lsls r0, 24
- lsrs r7, r0, 24
-_08070176:
- bl Random2
- adds r4, r0, 0
- bl Random
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- orrs r4, r0
- adds r0, r4, 0
- bl GetNatureFromPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r7, r0
- bne _0807019A
- cmp r4, 0
- bne _080701A4
-_0807019A:
- adds r6, 0x1
- movs r0, 0x96
- lsls r0, 4
- cmp r6, r0
- ble _08070176
-_080701A4:
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r5, r1
- str r4, [r0]
-_080701AC:
- movs r0, 0x86
- bl FlagSet
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8070114
-
- thumb_func_start sub_80701B8
-sub_80701B8: @ 80701B8
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- str r0, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80701B8
-
- thumb_func_start sub_80701E0
-sub_80701E0: @ 80701E0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070114
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80701E0
-
- thumb_func_start sub_80701FC
-sub_80701FC: @ 80701FC
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_80701B8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80701FC
-
- thumb_func_start sub_8070218
-sub_8070218: @ 8070218
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, r4, r1
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
-_0807022A:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _0807022A
- movs r3, 0
- movs r2, 0
-_0807023E:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08070250
- adds r0, r4, r3
- strb r1, [r0]
- adds r3, 0x1
-_08070250:
- adds r2, 0x1
- cmp r2, 0x5
- ble _0807023E
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8070218
-
- thumb_func_start sub_8070260
-sub_8070260: @ 8070260
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- mov r8, r1
- movs r5, 0
- add r1, sp, 0x4
- add r7, sp, 0xC
- adds r2, r1, 0
-_08070276:
- adds r0, r2, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08070276
- movs r5, 0
- adds r6, r1, 0
-_08070288:
- bl Random
- mov r1, sp
- adds r4, r1, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- subs r1, r5
- bl __modsi3
- adds r0, r6, r0
- ldrb r0, [r0]
- strb r0, [r4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_8070218
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08070288
- movs r5, 0
- movs r4, 0x1
-_080702B8:
- bl Random
- adds r1, r7, r5
- lsls r0, 16
- lsrs r0, 16
- ands r0, r4
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080702B8
- movs r5, 0
-_080702D2:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _080703AE
- lsls r0, 2
- ldr r1, =_080702EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080702EC:
- .4byte _08070304
- .4byte _08070322
- .4byte _0807033C
- .4byte _08070356
- .4byte _08070370
- .4byte _08070390
-_08070304:
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x27
- bl GetBoxMonData
- add r2, sp, 0x10
- strb r0, [r2]
- mov r0, r9
- movs r1, 0x27
- bl SetMonData
- b _080703AE
-_08070322:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x28
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x28
- b _08070388
-_0807033C:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x29
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x29
- b _08070388
-_08070356:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2A
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2A
- b _08070388
-_08070370:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2B
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2B
-_08070388:
- adds r2, r4, 0
- bl SetMonData
- b _080703AE
-_08070390:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- movs r0, 0x8C
- muls r0, r1
- add r0, r8
- movs r1, 0x2C
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2C
- adds r2, r4, 0
- bl SetMonData
-_080703AE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080702D2
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8070260
-
- thumb_func_start pokemon_get_eggmoves
-pokemon_get_eggmoves: @ 80703C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- movs r6, 0
- movs r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r5, =gEggMoves
- ldrh r1, [r5]
- ldr r7, =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _080703F8
- movs r4, 0x1
- b _0807041A
- .pool
-_080703F8:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, =0x00000471
- ldr r5, =gEggMoves
- cmp r2, r0
- bhi _0807041A
- lsls r0, r2, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r7, =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _080703F8
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_0807041A:
- movs r2, 0
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r1, =0x00004e20
- cmp r0, r1
- bhi _08070456
- adds r7, r5, 0
- adds r3, r1, 0
-_0807042C:
- lsls r1, r2, 1
- add r1, r8
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bhi _08070456
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r3
- bls _0807042C
-_08070456:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end pokemon_get_eggmoves
-
- thumb_func_start daycare_build_child_moveset
-daycare_build_child_moveset: @ 8070470
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r7, r0, 0
- mov r10, r1
- mov r9, r2
- movs r0, 0
- str r0, [sp]
- movs r6, 0
- ldr r5, =gUnknown_02024A4C
- movs r2, 0
- ldr r4, =gUnknown_02024A28
- ldr r3, =gUnknown_02024A30
-_08070490:
- lsls r1, r6, 1
- adds r0, r1, r5
- strh r2, [r0]
- adds r0, r1, r4
- strh r2, [r0]
- adds r1, r3
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08070490
- movs r6, 0
- ldr r2, =gUnknown_02024A38
- movs r1, 0
-_080704AE:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x9
- bls _080704AE
- movs r6, 0
- ldr r2, =gUnknown_020249C4
- movs r1, 0
-_080704C4:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x31
- bls _080704C4
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_020249C4
- bl GetLevelUpMovesBySpecies
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r6, 0
- ldr r1, =gUnknown_02024A28
- mov r8, r1
-_080704F2:
- adds r5, r6, 0
- adds r5, 0xD
- mov r0, r10
- adds r1, r5, 0
- bl GetBoxMonData
- lsls r4, r6, 1
- mov r2, r8
- adds r1, r4, r2
- strh r0, [r1]
- mov r0, r9
- adds r1, r5, 0
- bl GetBoxMonData
- ldr r1, =gUnknown_02024A4C
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080704F2
- ldr r1, =gUnknown_02024A38
- adds r0, r7, 0
- bl pokemon_get_eggmoves
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
-_0807052E:
- ldr r0, =gUnknown_02024A28
- lsls r1, r6, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- mov r9, r0
- cmp r1, 0
- beq _080705A4
- movs r5, 0
- cmp r5, r8
- bcs _08070596
- adds r4, r2, 0
- ldr r2, =0x0000ffff
-_08070546:
- ldr r0, =gUnknown_02024A38
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r4]
- ldrh r1, [r1]
- cmp r0, r1
- bne _0807058C
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08070596
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08070596
- .pool
-_0807058C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _08070546
-_08070596:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, =gUnknown_02024A28
- mov r9, r3
- cmp r6, 0x3
- bls _0807052E
-_080705A4:
- movs r6, 0
-_080705A6:
- lsls r0, r6, 1
- mov r2, r9
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r2, r0, 0
- adds r6, 0x1
- mov r8, r6
- cmp r1, 0
- beq _08070608
- movs r5, 0
- ldr r0, =gUnknown_02024A28
- adds r4, r2, r0
- ldr r6, =0x0000ffff
- mov r9, r0
-_080705C2:
- ldr r3, =0x00000121
- adds r0, r5, r3
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBattleMoveId
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bne _080705FE
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- beq _080705FE
- ldrh r1, [r4]
- adds r0, r7, 0
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bne _080705FE
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_080705FE:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x39
- bls _080705C2
-_08070608:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080705A6
- movs r6, 0
- mov r2, r9
- ldrh r0, [r2]
- ldr r3, =gUnknown_02024A30
- mov r10, r3
- cmp r0, 0
- beq _08070672
- mov r4, r9
- ldr r0, =gUnknown_02024A4C
- mov r9, r0
- mov r12, r10
-_08070628:
- movs r5, 0
- lsls r2, r6, 1
- adds r6, 0x1
- mov r8, r6
- adds r3, r2, r4
-_08070632:
- lsls r0, r5, 1
- add r0, r9
- ldrh r2, [r3]
- adds r1, r2, 0
- ldrh r0, [r0]
- cmp r1, r0
- bne _08070654
- cmp r1, 0
- beq _08070654
- ldr r1, [sp]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- lsls r1, 1
- add r1, r12
- strh r2, [r1]
-_08070654:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08070632
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08070672
- lsls r0, r6, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _08070628
-_08070672:
- movs r6, 0
- mov r2, r10
- ldrh r0, [r2]
- cmp r0, 0
- beq _080706FC
-_0807067C:
- movs r5, 0
- adds r3, r6, 0x1
- mov r8, r3
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcs _080706E4
- ldr r2, =0x0000ffff
-_0807068A:
- ldr r1, =gUnknown_020249C4
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _080706D8
- lsls r0, r6, 1
- mov r3, r10
- adds r4, r0, r3
- ldrh r0, [r4]
- cmp r0, r1
- bne _080706D8
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _080706E4
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _080706E4
- .pool
-_080706D8:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcc _0807068A
-_080706E4:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _080706FC
- ldr r0, =gUnknown_02024A30
- lsls r1, r6, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r10, r0
- cmp r1, 0
- bne _0807067C
-_080706FC:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end daycare_build_child_moveset
-
- thumb_func_start sub_8070710
-sub_8070710: @ 8070710
- adds r2, r0, 0
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- str r1, [r0]
- movs r3, 0x8E
- lsls r3, 1
- adds r0, r2, r3
- strb r1, [r0]
- bx lr
- thumb_func_end sub_8070710
-
- thumb_func_start sub_8070728
-sub_8070728: @ 8070728
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070710
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070728
-
- thumb_func_start incense_effects
-incense_effects: @ 8070744
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrh r1, [r4]
- movs r7, 0xB4
- lsls r7, 1
- cmp r1, r7
- beq _0807075C
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _0807079E
-_0807075C:
- adds r0, r5, 0
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r0, 0x8C
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r4]
- cmp r0, r7
- bne _08070788
- cmp r6, 0xDD
- beq _08070788
- cmp r2, 0xDD
- beq _08070788
- movs r0, 0xCA
- strh r0, [r4]
-_08070788:
- ldrh r1, [r4]
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _0807079E
- cmp r6, 0xDC
- beq _0807079E
- cmp r2, 0xDC
- beq _0807079E
- movs r0, 0xB7
- strh r0, [r4]
-_0807079E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end incense_effects
-
- thumb_func_start sub_80707A4
-sub_80707A4: @ 80707A4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r5, r0, 0
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- cmp r5, 0xCA
- beq _080707C6
- cmp r0, 0xCA
- bne _080707E2
-_080707C6:
- movs r4, 0xAC
- lsls r4, 1
- adds r0, r6, 0
- adds r1, r4, 0
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _080707E2
- adds r0, r6, 0
- adds r1, r4, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_080707E2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80707A4
-
- thumb_func_start sub_80707EC
-sub_80707EC: @ 80707EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r7, r0, 0
- adds r6, r1, 0
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
-_080707FE:
- movs r0, 0x8C
- muls r0, r4
- adds r5, r7, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bne _08070826
- adds r0, r4, 0
- mov r1, r8
- eors r0, r1
- strb r0, [r6]
- strb r4, [r6, 0x1]
- b _0807083E
-_08070826:
- adds r0, r5, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _0807083E
- strb r4, [r6]
- adds r0, r4, 0
- mov r1, r8
- eors r0, r1
- strb r0, [r6, 0x1]
-_0807083E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080707FE
- ldrb r0, [r6]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- bl sub_8070004
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bne _08070870
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _08070870
- movs r4, 0x20
-_08070870:
- ldr r0, =0x00000183
- cmp r4, r0
- bne _0807088C
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0807088C
- movs r4, 0xC1
- lsls r4, 1
-_0807088C:
- ldrb r0, [r6, 0x1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- cmp r0, 0x84
- bne _080708B4
- ldrb r1, [r6]
- movs r0, 0x8C
- muls r0, r1
- adds r0, r7, r0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- beq _080708B4
- ldrb r1, [r6, 0x1]
- ldrb r0, [r6]
- strb r0, [r6, 0x1]
- strb r1, [r6]
-_080708B4:
- adds r0, r4, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80707EC
-
- thumb_func_start sub_80708C8
-sub_80708C8: @ 80708C8
- push {r4-r6,lr}
- sub sp, 0x6C
- adds r6, r0, 0
- add r5, sp, 0x64
- adds r1, r5, 0
- bl sub_80707EC
- add r4, sp, 0x68
- strh r0, [r4]
- adds r0, r4, 0
- adds r1, r6, 0
- bl incense_effects
- ldrh r1, [r4]
- mov r0, sp
- adds r2, r6, 0
- bl sub_8070A0C
- mov r0, sp
- adds r1, r6, 0
- bl sub_8070260
- ldrb r0, [r5, 0x1]
- movs r2, 0x8C
- adds r1, r0, 0
- muls r1, r2
- adds r1, r6, r1
- ldrb r0, [r5]
- muls r2, r0
- adds r2, r6, r2
- mov r0, sp
- bl daycare_build_child_moveset
- ldrh r0, [r4]
- cmp r0, 0xAC
- bne _08070918
- mov r0, sp
- adds r1, r6, 0
- bl sub_80707A4
-_08070918:
- mov r2, sp
- adds r2, 0x6A
- movs r0, 0x1
- strb r0, [r2]
- mov r0, sp
- movs r1, 0x2D
- bl SetMonData
- ldr r0, =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r1
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r6, 0
- bl sub_8070710
- add sp, 0x6C
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80708C8
-
- thumb_func_start sub_8070954
-sub_8070954: @ 8070954
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- adds r7, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r8, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- movs r0, 0x1
- mov r9, r0
- mov r0, r9
- strb r0, [r4]
- adds r0, r7, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, =gEggName
- adds r0, r7, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r7, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x24
- mov r2, r8
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- cmp r6, 0
- beq _080709E6
- add r2, sp, 0x14
- movs r0, 0xFD
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x23
- bl SetMonData
-_080709E6:
- mov r2, sp
- adds r2, 0x15
- mov r0, r9
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x2D
- bl SetMonData
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070954
-
- thumb_func_start sub_8070A0C
-sub_8070A0C: @ 8070A0C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0x8C
- lsls r0, 1
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x1
- mov r8, r1
- str r1, [sp]
- str r0, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r9, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- mov r1, r8
- strb r1, [r4]
- adds r0, r6, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, =gEggName
- adds r0, r6, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x24
- mov r2, r9
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070A0C
-
- thumb_func_start sp0B8_daycare
-sp0B8_daycare: @ 8070AA8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_80708C8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B8_daycare
-
- thumb_func_start sub_8070AC4
-sub_8070AC4: @ 8070AC4
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- movs r7, 0
- movs r5, 0
-_08070ACE:
- movs r0, 0x8C
- adds r4, r5, 0
- muls r4, r0
- adds r0, r6, r4
- movs r1, 0x5
- bl GetBoxMonData
- cmp r0, 0
- beq _08070AEE
- adds r1, r6, 0
- adds r1, 0x88
- adds r1, r4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- adds r7, 0x1
-_08070AEE:
- adds r5, 0x1
- cmp r5, 0x1
- bls _08070ACE
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r6, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _08070B34
- cmp r7, 0x2
- bne _08070B34
- subs r1, 0x4
- adds r0, r6, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08070B34
- adds r0, r6, 0
- bl daycare_relationship_score
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =0x0000ffff
- bl __udivsi3
- cmp r4, r0
- bls _08070B34
- bl sub_80701E0
-_08070B34:
- movs r0, 0x8E
- lsls r0, 1
- adds r1, r6, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08070BC0
- bl GetEggStepsToSubtract
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08070BC0
- ldr r4, =gPlayerParty
-_08070B5C:
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08070BB4
- adds r0, r4, 0
- movs r1, 0x4
- bl GetMonData
- cmp r0, 0
- bne _08070BB4
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- adds r1, r0, 0
- str r1, [sp]
- cmp r0, 0
- beq _08070BA8
- cmp r0, r6
- bcc _08070B98
- subs r0, r6
- b _08070B9A
- .pool
-_08070B98:
- subs r0, r1, 0x1
-_08070B9A:
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
- b _08070BB4
-_08070BA8:
- ldr r0, =gSpecialVar_0x8004
- strh r5, [r0]
- movs r0, 0x1
- b _08070BC2
- .pool
-_08070BB4:
- adds r4, 0x64
- adds r5, 0x1
- ldr r0, =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08070B5C
-_08070BC0:
- movs r0, 0
-_08070BC2:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070AC4
-
- thumb_func_start sub_8070BD0
-sub_8070BD0: @ 8070BD0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070AC4
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070BD0
-
- thumb_func_start sub_8070BF0
-sub_8070BF0: @ 8070BF0
- push {lr}
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _08070C00
- movs r0, 0x1
-_08070C00:
- pop {r1}
- bx r1
- thumb_func_end sub_8070BF0
-
- thumb_func_start sub_8070C04
-sub_8070C04: @ 8070C04
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08070C2E
- ldr r1, =gStringVar1
- adds r0, r4, 0
- bl GetBoxMonNick
- adds r0, r4, 0
- movs r1, 0x7
- mov r2, sp
- bl GetBoxMonData
- ldr r0, =gStringVar3
- mov r1, sp
- bl StringCopy
-_08070C2E:
- adds r4, 0x8C
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08070C44
- ldr r1, =gStringVar2
- adds r0, r4, 0
- bl GetBoxMonNick
-_08070C44:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070C04
-
- thumb_func_start sub_8070C58
-sub_8070C58: @ 8070C58
- push {r4,r5,lr}
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- ldr r1, =gStringVar1
- bl GetBoxMonNick
- bl brm_get_pokemon_selection
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070C58
-
- thumb_func_start sp0B5_daycare
-sp0B5_daycare: @ 8070C94
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070C04
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B5_daycare
-
- thumb_func_start sp0B6_daycare
-sp0B6_daycare: @ 8070CB0
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x00003030
- adds r0, r1
- bl sub_8070BF0
- lsls r0, 24
- cmp r0, 0
- beq _08070CD0
- movs r0, 0x1
- b _08070CF2
- .pool
-_08070CD0:
- ldr r0, [r4]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08070CEC
- movs r0, 0
- b _08070CF2
- .pool
-_08070CEC:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_08070CF2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sp0B6_daycare
-
- thumb_func_start sub_8070CF8
-sub_8070CF8: @ 8070CF8
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_count_pokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08070D10
- movs r0, 0
-_08070D10:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070CF8
-
- thumb_func_start sub_8070D1C
-sub_8070D1C: @ 8070D1C
- push {r4-r6,lr}
- adds r5, r1, 0
- movs r4, 0
- adds r1, r0, 0
-_08070D24:
- movs r3, 0
- ldrh r0, [r1]
- adds r2, r5, 0
-_08070D2A:
- ldrh r6, [r2]
- cmp r0, r6
- bne _08070D34
- movs r0, 0x1
- b _08070D46
-_08070D34:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x1
- ble _08070D2A
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x1
- ble _08070D24
- movs r0, 0
-_08070D46:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8070D1C
-
- thumb_func_start daycare_relationship_score
-daycare_relationship_score: @ 8070D4C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- str r0, [sp, 0x1C]
- movs r7, 0
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x20]
- add r1, sp, 0xC
- mov r9, r1
- mov r2, sp
- adds r2, 0x14
- str r2, [sp, 0x24]
- subs r0, 0x6
- ldr r1, =gBaseStats
- mov r10, r1
- ldr r5, [sp, 0x20]
- mov r8, r0
- mov r6, sp
- str r2, [sp, 0x28]
- mov r2, r9
- str r2, [sp, 0x2C]
-_08070D7E:
- movs r0, 0x8C
- adds r4, r7, 0
- muls r4, r0
- ldr r0, [sp, 0x1C]
- adds r4, r0, r4
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
- ldr r1, [sp, 0x2C]
- stm r1!, {r0}
- str r1, [sp, 0x2C]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- ldrh r0, [r5]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x28]
- stm r2!, {r0}
- str r2, [sp, 0x28]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r0, [r0, 0x14]
- strh r0, [r6]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r0, [r0, 0x15]
- mov r1, r8
- strh r0, [r1]
- adds r5, 0x2
- movs r2, 0x4
- add r8, r2
- adds r6, 0x4
- adds r7, 0x1
- cmp r7, 0x1
- bls _08070D7E
- mov r0, sp
- ldrh r1, [r0]
- cmp r1, 0xF
- beq _08070DFC
- ldrh r0, [r0, 0x4]
- cmp r0, 0xF
- beq _08070DFC
- cmp r1, 0xD
- bne _08070E04
- cmp r0, 0xD
- bne _08070E08
-_08070DFC:
- movs r0, 0
- b _08070E5C
- .pool
-_08070E04:
- cmp r0, 0xD
- bne _08070E14
-_08070E08:
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _08070E56
- b _08070E5A
-_08070E14:
- ldr r0, [sp, 0x14]
- ldr r2, [sp, 0x24]
- ldr r1, [r2, 0x4]
- cmp r0, r1
- beq _08070DFC
- cmp r0, 0xFF
- beq _08070DFC
- cmp r1, 0xFF
- beq _08070DFC
- add r1, sp, 0x4
- mov r0, sp
- bl sub_8070D1C
- lsls r0, 24
- cmp r0, 0
- beq _08070DFC
- ldr r0, [sp, 0x20]
- ldrh r1, [r0, 0x2]
- ldrh r0, [r0]
- cmp r0, r1
- bne _08070E4C
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _08070E5A
- movs r0, 0x46
- b _08070E5C
-_08070E4C:
- ldr r1, [sp, 0xC]
- mov r2, r9
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bne _08070E5A
-_08070E56:
- movs r0, 0x14
- b _08070E5C
-_08070E5A:
- movs r0, 0x32
-_08070E5C:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end daycare_relationship_score
-
- thumb_func_start daycare_relationship_score_from_savegame
-daycare_relationship_score_from_savegame: @ 8070E6C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003030
- adds r0, r1
- bl daycare_relationship_score
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end daycare_relationship_score_from_savegame
-
- thumb_func_start sp0B9_daycare_relationship_comment
-sp0B9_daycare_relationship_comment: @ 8070E8C
- push {lr}
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- movs r1, 0
- cmp r0, 0
- bne _08070EA0
- movs r1, 0x3
-_08070EA0:
- cmp r0, 0x14
- bne _08070EA6
- movs r1, 0x2
-_08070EA6:
- cmp r0, 0x32
- bne _08070EAC
- movs r1, 0x1
-_08070EAC:
- cmp r2, 0x46
- bne _08070EB2
- movs r1, 0
-_08070EB2:
- ldr r0, =gStringVar4
- ldr r2, =gUnknown_0832B6F8
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp0B9_daycare_relationship_comment
-
- thumb_func_start sub_8070ECC
-sub_8070ECC: @ 8070ECC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r2, sp
- mov r1, sp
- movs r0, 0
- strb r0, [r1, 0x1]
- strb r0, [r2]
- movs r3, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08070F10
-_08070EE8:
- adds r1, r4, r3
- ldrb r0, [r1]
- cmp r0, 0xB5
- bne _08070EF6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08070EF6:
- ldrb r0, [r1]
- cmp r0, 0xB6
- bne _08070F02
- ldrb r0, [r2, 0x1]
- adds r0, 0x1
- strb r0, [r2, 0x1]
-_08070F02:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08070EE8
-_08070F10:
- cmp r5, 0
- bne _08070F24
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- beq _08070F24
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08070F38
-_08070F24:
- cmp r5, 0xFE
- bne _08070F3C
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08070F3C
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _08070F3C
-_08070F38:
- movs r0, 0x1
- b _08070F3E
-_08070F3C:
- movs r0, 0
-_08070F3E:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8070ECC
-
- thumb_func_start sub_8070F48
-sub_8070F48: @ 8070F48
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _08070F68
- movs r1, 0
- bl sub_8070ECC
- lsls r0, 24
- cmp r0, 0
- bne _08070F84
- ldr r1, =gUnknown_0832DAC7
- b _08070F86
- .pool
-_08070F68:
- cmp r1, 0xFE
- bne _08070F84
- adds r0, r4, 0
- movs r1, 0xFE
- bl sub_8070ECC
- lsls r0, 24
- cmp r0, 0
- bne _08070F84
- ldr r1, =gUnknown_0832DAC9
- b _08070F86
- .pool
-_08070F84:
- ldr r1, =gUnknown_0832DACB
-_08070F86:
- adds r0, r4, 0
- bl StringAppend
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8070F48
-
- thumb_func_start sub_8070F98
-sub_8070F98: @ 8070F98
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- bl GetBoxMonGender
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8070F48
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8070F98
-
- thumb_func_start sub_8070FB4
-sub_8070FB4: @ 8070FB4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- mov r8, r0
- adds r7, r1, 0
- movs r0, 0xFF
- strb r0, [r7]
- movs r6, 0
- add r0, sp, 0x14
- mov r9, r0
-_08070FCC:
- movs r0, 0x8C
- adds r4, r6, 0
- muls r4, r0
- add r4, r8
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- mov r1, sp
- adds r5, r1, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBoxMonNick
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8070F98
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _08070FCC
- adds r0, r7, 0
- mov r1, sp
- bl StringCopy
- ldr r4, =gText_NewLine2
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- adds r0, r7, 0
- mov r1, r9
- bl StringAppend
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r1, =gText_Exit4
- adds r0, r7, 0
- bl StringAppend
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8070FB4
-
- thumb_func_start sub_8071038
-sub_8071038: @ 8071038
- push {r4-r6,lr}
- sub sp, 0x14
- adds r6, r0, 0
- adds r4, r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r5, 0
-_08071046:
- adds r0, r4, 0
- ldr r1, =gText_Lv
- bl StringAppend
- movs r0, 0x8C
- adds r2, r5, 0
- muls r2, r0
- adds r0, r6, r2
- adds r1, r6, 0
- adds r1, 0x88
- adds r1, r2
- ldr r1, [r1]
- bl sub_806FDEC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- mov r1, sp
- bl StringAppend
- adds r0, r4, 0
- ldr r1, =gText_NewLine2
- bl StringAppend
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _08071046
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071038
-
- thumb_func_start sub_807109C
-sub_807109C: @ 807109C
- push {r4-r6,lr}
- sub sp, 0x10
- str r1, [sp]
- mov r1, sp
- movs r5, 0
- strb r0, [r1, 0x4]
- mov r0, sp
- movs r6, 0x1
- movs r4, 0x1
- strb r4, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- strb r2, [r0, 0x8]
- strb r3, [r0, 0x9]
- mov r3, sp
- ldrb r1, [r3, 0xC]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r1
- strb r0, [r3, 0xC]
- ldr r3, =gTextFlags
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- mov r0, sp
- strb r5, [r0, 0xA]
- strb r4, [r0, 0xB]
- mov r3, sp
- ldrb r1, [r3, 0xC]
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r3, 0xC]
- mov r1, sp
- ldrb r0, [r1, 0xD]
- ands r2, r0
- orrs r2, r6
- strb r2, [r1, 0xD]
- ands r2, r4
- movs r0, 0x30
- orrs r2, r0
- strb r2, [r1, 0xD]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807109C
-
- thumb_func_start sub_8071110
-sub_8071110: @ 8071110
- push {r4-r6,lr}
- sub sp, 0x14
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x8C
- muls r0, r2
- adds r5, r0
- adds r0, r5, 0
- mov r1, sp
- bl GetBoxMonNick
- mov r0, sp
- adds r1, r5, 0
- bl sub_8070F98
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x8
- adds r3, r6, 0
- bl sub_807109C
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8071110
-
- thumb_func_start sub_8071148
-sub_8071148: @ 8071148
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gText_Lv
- mov r0, sp
- bl StringCopy
- movs r0, 0x8C
- adds r1, r6, 0
- muls r1, r0
- adds r0, r4, r1
- adds r4, 0x88
- adds r4, r1
- ldr r1, [r4]
- bl sub_806FDEC
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- add r4, sp, 0xC
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- movs r0, 0x1
- mov r1, sp
- movs r2, 0x70
- bl GetStringRightAlignXOffset
- adds r2, r0, 0
- adds r0, r5, 0
- mov r1, sp
- mov r3, r8
- bl sub_807109C
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071148
-
- thumb_func_start sub_80711B8
-sub_80711B8: @ 80711B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r6, 0x1
- bhi _080711F0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r4, =0x00003030
- adds r0, r4
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_8071110
- mov r1, r8
- ldr r0, [r1]
- adds r0, r4
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_8071148
-_080711F0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80711B8
-
- thumb_func_start c3_080469FC
-c3_080469FC: @ 8071204
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrb r0, [r4, 0x8]
- bl ListMenuHandleInput
- adds r1, r0, 0
- ldr r0, =gMain
- ldrh r2, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08071284
- cmp r1, 0x1
- bls _0807123C
- cmp r1, 0x5
- beq _08071248
- b _0807124E
- .pool
-_0807123C:
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
- b _0807124E
- .pool
-_08071248:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x2
- strh r0, [r1]
-_0807124E:
- ldr r0, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_81AE6C8
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- b _080712B4
- .pool
-_08071284:
- movs r1, 0x2
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _080712B4
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
- ldrb r0, [r4, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_81AE6C8
- ldrb r0, [r4, 0xA]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4, 0xA]
- bl RemoveWindow
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080712B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_080469FC
-
- thumb_func_start sub_80712C0
-sub_80712C0: @ 80712C0
- push {r4,r5,lr}
- sub sp, 0x18
- ldr r0, =gUnknown_0832B6C0
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_81973FC
- mov r1, sp
- ldr r0, =gUnknown_0832B6E0
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- mov r0, sp
- strb r4, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =c3_080469FC
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- strh r4, [r1, 0xA]
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80712C0
-
- thumb_func_start sub_8071330
-sub_8071330: @ 8071330
- push {lr}
- bl sub_81B9328
- ldr r1, =gMain
- ldr r0, =c2_exit_to_overworld_2_switch
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8071330
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 7ce989d94..b85c6de07 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -1390,7 +1390,7 @@ _0809CA04:
b _0809CB28
.pool
_0809CA48:
- bl sub_8070BD0
+ bl DoEggActions_CheckHatch
lsls r0, 24
cmp r0, 0
beq _0809CA64
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 964bf8079..bfa563af1 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1988,7 +1988,7 @@ task00_8084310: @ 80B6A24
lsls r0, 24
cmp r0, 0
beq _080B6A8A
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/field_region_map.s b/asm/field_region_map.s
deleted file mode 100644
index 512dfb151..000000000
--- a/asm/field_region_map.s
+++ /dev/null
@@ -1,325 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_817018C
-sub_817018C: @ 817018C
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, =gUnknown_0203BCD0
- movs r0, 0x89
- lsls r0, 4
- bl Alloc
- str r0, [r4]
- ldr r1, =0x0000088c
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- str r5, [r0]
- ldr r0, =sub_81701C4
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817018C
-
- thumb_func_start sub_81701C4
-sub_81701C4: @ 81701C4
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085E5068
- movs r0, 0x1
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_085E5070
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0x27
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- ldr r0, =sub_8170274
- bl SetMainCallback2
- ldr r0, =sub_8170260
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81701C4
-
- thumb_func_start sub_8170260
-sub_8170260: @ 8170260
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8170260
-
- thumb_func_start sub_8170274
-sub_8170274: @ 8170274
- push {lr}
- bl sub_8170290
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl do_scheduled_bg_tilemap_copies_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_8170274
-
- thumb_func_start sub_8170290
-sub_8170290: @ 8170290
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r1, =gUnknown_0203BCD0
- ldr r0, [r1]
- ldr r2, =0x0000088c
- adds r0, r2
- ldrh r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _081702A6
- b _08170416
-_081702A6:
- lsls r0, 2
- ldr r1, =_081702BC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081702BC:
- .4byte _081702D8
- .4byte _08170300
- .4byte _08170358
- .4byte _08170380
- .4byte _08170394
- .4byte _081703C0
- .4byte _081703E8
-_081702D8:
- ldr r0, [r4]
- adds r0, 0x8
- movs r1, 0
- bl sub_8122CDC
- movs r0, 0
- movs r1, 0
- bl sub_8124288
- movs r0, 0x1
- movs r1, 0x1
- bl sub_81240D4
- ldr r1, [r4]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_08170300:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x27
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r5, =gText_Hoenn
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x38
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0
- movs r2, 0x27
- movs r3, 0xD
- bl SetWindowBorderStyle
- bl sub_8170428
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- b _081703CC
- .pool
-_08170358:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_08170380:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08170416
- ldr r1, [r4]
- b _081703D4
- .pool
-_08170394:
- bl sub_81230AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _081703A6
- bl sub_8170428
- b _08170416
-_081703A6:
- cmp r0, 0x3
- blt _08170416
- cmp r0, 0x5
- bgt _08170416
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
- ldr r0, =0x0000088c
- adds r1, r0
- b _081703D8
- .pool
-_081703C0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
-_081703CC:
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_0203BCD0
- ldr r1, [r0]
-_081703D4:
- ldr r2, =0x0000088c
- adds r1, r2
-_081703D8:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08170416
- .pool
-_081703E8:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08170416
- bl sub_812305C
- ldr r4, =gUnknown_0203BCD0
- ldr r0, [r4]
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r0, [r4]
- cmp r0, 0
- beq _08170412
- bl Free
- str r5, [r4]
-_08170412:
- bl FreeAllWindowBuffers
-_08170416:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8170290
-
- thumb_func_start sub_8170428
-sub_8170428: @ 8170428
- push {r4,lr}
- sub sp, 0xC
- ldr r4, =gUnknown_0203BCD0
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _08170460
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, [r4]
- adds r2, 0xC
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- b _08170470
- .pool
-_08170460:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08170470:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8170428
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index 7ebf0bfa8..efdc114a2 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -642,7 +642,7 @@ _080FA0C4:
thumb_func_start sub_80FA0DC
sub_80FA0DC: @ 80FA0DC
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -777,7 +777,7 @@ sub_80FA1D8: @ 80FA1D8
thumb_func_start sub_80FA1E8
sub_80FA1E8: @ 80FA1E8
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -950,7 +950,7 @@ sub_80FA33C: @ 80FA33C
thumb_func_start sub_80FA34C
sub_80FA34C: @ 80FA34C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index 5e2a99d18..71137b705 100755
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -32,7 +32,7 @@ _080D3754:
ldr r0, =gUnknown_0203AB40
adds r1, r0, 0x2
bl PlayerGetDestCoords
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -384,7 +384,7 @@ hm2_ruin_valley: @ 80D3A50
push {lr}
movs r0, 0x1
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -420,7 +420,7 @@ sub_80D3A6C: @ 80D3A6C
thumb_func_start sub_80D3A9C
sub_80D3A9C: @ 80D3A9C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_softboiled.s b/asm/fldeff_softboiled.s
index 48d968d20..c3aa4f1ed 100755
--- a/asm/fldeff_softboiled.s
+++ b/asm/fldeff_softboiled.s
@@ -8,7 +8,7 @@
thumb_func_start hm_prepare_dive_probably
hm_prepare_dive_probably: @ 8161508
push {r4-r6,lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r6, 0x64
@@ -20,7 +20,7 @@ hm_prepare_dive_probably: @ 8161508
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
muls r0, r6
@@ -59,7 +59,7 @@ sub_8161560: @ 8161560
strb r1, [r0, 0xB]
ldrb r1, [r0, 0x9]
strb r1, [r0, 0xA]
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
index 3001ca259..53a088aa3 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -18,7 +18,7 @@ hm_prepare_rocksmash: @ 8145DC4
b _08145DF2
_08145DD8:
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -39,7 +39,7 @@ _08145DF2:
thumb_func_start sub_8145E0C
sub_8145E0C: @ 8145E0C
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s
index 9510ca4a0..eea0df12f 100644
--- a/asm/fldeff_sweetscent.s
+++ b/asm/fldeff_sweetscent.s
@@ -23,7 +23,7 @@ hm2_sweet_scent: @ 8159F10
push {lr}
movs r0, 0x33
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
index d77e29dd2..17bab1496 100644
--- a/asm/fldeff_teleport.s
+++ b/asm/fldeff_teleport.s
@@ -38,7 +38,7 @@ hm_teleport_run_dp02scr: @ 817C8FC
bl sub_808469C
movs r0, 0x3F
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/heal_location.s b/asm/heal_location.s
deleted file mode 100644
index f7947d34e..000000000
--- a/asm/heal_location.s
+++ /dev/null
@@ -1,83 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8122C5C
-sub_8122C5C: @ 8122C5C
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0
- ldr r2, =gUnknown_0859F53C
-_08122C6A:
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, r4
- bne _08122C84
- movs r0, 0x1
- ldrsb r0, [r2, r0]
- cmp r0, r1
- bne _08122C84
- adds r0, r3, 0x1
- b _08122C8E
- .pool
-_08122C84:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x15
- bls _08122C6A
- movs r0, 0
-_08122C8E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8122C5C
-
- thumb_func_start sub_8122C94
-sub_8122C94: @ 8122C94
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl sub_8122C5C
- cmp r0, 0
- beq _08122CB4
- lsls r0, 3
- ldr r1, =gUnknown_0859F534
- adds r0, r1
- b _08122CB6
- .pool
-_08122CB4:
- movs r0, 0
-_08122CB6:
- pop {r1}
- bx r1
- thumb_func_end sub_8122C94
-
- thumb_func_start sub_8122CBC
-@ warpdata *sub_8122CBC(int a1)
-sub_8122CBC: @ 8122CBC
- push {lr}
- cmp r0, 0
- beq _08122CD4
- cmp r0, 0x16
- bhi _08122CD4
- lsls r0, 3
- ldr r1, =gUnknown_0859F534
- adds r0, r1
- b _08122CD6
- .pool
-_08122CD4:
- movs r0, 0
-_08122CD6:
- pop {r1}
- bx r1
- thumb_func_end sub_8122CBC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link.s b/asm/link.s
index c1ab6c434..d2dc05630 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -21515,7 +21515,7 @@ _08014714:
movs r1, 0x5
movs r2, 0x1
bl sub_8014290
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
ldr r1, =c2_load_new_map
@@ -21536,7 +21536,7 @@ _0801474C:
movs r1, 0x5
movs r2, 0x1
bl sub_8014290
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
ldr r1, =c2_load_new_map
@@ -23406,7 +23406,7 @@ _080158E0:
ldrh r0, [r4]
cmp r0, 0
beq _080159A0
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4]
@@ -23434,7 +23434,7 @@ _08015900:
b _0801598E
.pool
_0801592C:
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
@@ -23468,7 +23468,7 @@ _0801596C:
ldr r1, =gUnknown_02022C2C
movs r0, 0x44
strb r0, [r1]
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
adds r1, r4, 0
diff --git a/asm/mail_data.s b/asm/mail_data.s
index 94cb3e9e6..70fc856d1 100755
--- a/asm/mail_data.s
+++ b/asm/mail_data.s
@@ -18,7 +18,7 @@ _080D4372:
adds r1, r0
ldr r0, [r5]
adds r0, r1
- bl sub_80D439C
+ bl ClearMailStruct
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -30,8 +30,8 @@ _080D4372:
.pool
thumb_func_end ClearMailData
- thumb_func_start sub_80D439C
-sub_80D439C: @ 80D439C
+ thumb_func_start ClearMailStruct
+ClearMailStruct: @ 80D439C
push {r4-r6,lr}
adds r3, r0, 0
ldr r0, =0x0000ffff
@@ -76,10 +76,10 @@ _080D43D6:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D439C
+ thumb_func_end ClearMailStruct
- thumb_func_start sub_80D43F0
-sub_80D43F0: @ 80D43F0
+ thumb_func_start MonHasMail
+MonHasMail: @ 80D43F0
push {r4,lr}
adds r4, r0, 0
movs r1, 0xC
@@ -103,7 +103,7 @@ _080D441A:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80D43F0
+ thumb_func_end MonHasMail
thumb_func_start sub_80D4420
sub_80D4420: @ 80D4420
@@ -349,8 +349,8 @@ _080D4606:
bx r1
thumb_func_end sub_80D45E8
- thumb_func_start sub_80D460C
-sub_80D460C: @ 80D460C
+ thumb_func_start GiveMailToMon2
+GiveMailToMon2: @ 80D460C
push {r4-r7,lr}
sub sp, 0x8
adds r6, r0, 0
@@ -401,7 +401,7 @@ _080D4672:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80D460C
+ thumb_func_end GiveMailToMon2
thumb_func_start sub_80D467C
sub_80D467C: @ 80D467C
@@ -409,12 +409,12 @@ sub_80D467C: @ 80D467C
bx lr
thumb_func_end sub_80D467C
- thumb_func_start sub_80D4680
-sub_80D4680: @ 80D4680
+ thumb_func_start TakeMailFromMon
+TakeMailFromMon: @ 80D4680
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
- bl sub_80D43F0
+ bl MonHasMail
lsls r0, 24
cmp r0, 0
beq _080D46D2
@@ -454,7 +454,7 @@ _080D46D2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D4680
+ thumb_func_end TakeMailFromMon
thumb_func_start sub_80D46E0
sub_80D46E0: @ 80D46E0
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index ce8591981..fbcc5f036 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -727,9 +727,9 @@ _08153D86:
beq _08153DA4
adds r0, r7, 0
mov r1, sp
- bl sub_80D460C
+ bl GiveMailToMon2
_08153DA4:
- bl party_compaction
+ bl CompactPartySlots
bl CalculatePlayerPartyCount
ldr r0, =gStringVar4
ldr r1, =gUnknown_08674BF0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 4c8d90530..018ee7b84 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -2111,13 +2111,13 @@ _081B134C:
bx r0
thumb_func_end c3_0811FAB4
- thumb_func_start brm_get_pokemon_selection
-brm_get_pokemon_selection: @ 81B1354
+ thumb_func_start GetCursorSelectionMonId
+GetCursorSelectionMonId: @ 81B1354
ldr r0, =gUnknown_0203CEC8
ldrb r0, [r0, 0x9]
bx lr
.pool
- thumb_func_end brm_get_pokemon_selection
+ thumb_func_end GetCursorSelectionMonId
thumb_func_start sub_81B1360
sub_81B1360: @ 81B1360
@@ -8140,7 +8140,7 @@ sub_81B4578: @ 81B4578
cmp r7, 0
bne _081B45F8
adds r0, r5, 0
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r4, =gUnknown_0203CEFC
adds r0, r5, 0
movs r1, 0xC
@@ -8925,7 +8925,7 @@ _081B4CBE:
ldrsb r0, [r1, r0]
muls r0, r7
adds r0, r6
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r0, =gText_MailTakenFromPkmn
movs r1, 0
bl sub_81B1B5C
@@ -9892,7 +9892,7 @@ _081B55E8:
.pool
_081B5614:
ldr r1, =gUnknown_0203CEC8
- ldr r0, =sub_8124690
+ ldr r0, =MCB2_FlyMap
b _081B5628
.pool
_081B5624:
@@ -10134,7 +10134,7 @@ _081B57FE:
thumb_func_start hm_surf_run_dp02scr
hm_surf_run_dp02scr: @ 81B5804
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -10238,7 +10238,7 @@ sub_81B58A8: @ 81B58A8
thumb_func_start hm2_waterfall
hm2_waterfall: @ 81B58D4
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -10298,7 +10298,7 @@ _081B594E:
thumb_func_start sub_81B5958
sub_81B5958: @ 81B5958
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -14938,7 +14938,7 @@ sub_81B81A8: @ 81B81A8
cmp r0, 0
bne _081B8208
adds r0, r5, 0
- bl sub_80D4680
+ bl TakeMailFromMon
ldr r4, =gUnknown_0203CEFC
adds r0, r5, 0
movs r1, 0xC
@@ -15281,9 +15281,9 @@ sub_81B8474: @ 81B8474
_081B84DC:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_80D460C
+ bl GiveMailToMon2
adds r0, r4, 0
- bl sub_80D439C
+ bl ClearMailStruct
ldr r0, =gText_MailTransferredFromMailbox
movs r1, 0x1
bl sub_81B1B5C
@@ -15994,7 +15994,7 @@ sub_81B8A7C: @ 81B8A7C
push {r4-r7,lr}
mov r7, r8
push {r7}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r5, r0, 24
bl sub_81B1250
@@ -17113,7 +17113,7 @@ sub_81B9354: @ 81B9354
sub_81B9390: @ 81B9390
push {r4,lr}
ldr r4, =gSpecialVar_0x8004
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -17218,7 +17218,7 @@ _081B945C:
thumb_func_start sub_81B9470
sub_81B9470: @ 81B9470
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r2, =gUnknown_02039F24
strb r0, [r2]
lsls r0, 24
@@ -17345,7 +17345,7 @@ _081B9574:
sub_81B9588: @ 81B9588
push {r4,r5,lr}
ldr r5, =gSpecialVar_0x8004
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r5]
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 592cc0fe0..2287d4123 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1444,7 +1444,7 @@ _0816BA68:
adds r0, r6, 0
bl DisplayItemMessageOnField
adds r0, r5, 0
- bl sub_80D439C
+ bl ClearMailStruct
bl sub_816B54C
ldrb r0, [r4, 0x5]
subs r0, 0x1
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index b599b365c..9bf70a379 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -362,7 +362,7 @@ sub_813CD04: @ 813CD04
adds r1, r3, 0
bl get_mapheader_by_bank_and_number
ldrb r0, [r0, 0x14]
- bl sub_8123F9C
+ bl CorrectSpecialMapSecId
ldr r2, [r4]
movs r1, 0x88
lsls r1, 1
@@ -653,7 +653,7 @@ _0813CF5A:
adds r0, r4, 0
adds r1, r6, 0
str r3, [sp]
- bl sub_8123E9C
+ bl GetRegionMapSectionIdAt
ldr r3, [sp]
ldr r2, [r3]
mov r7, r9
@@ -1338,11 +1338,11 @@ _0813D4F8:
bl sub_8122D88
movs r0, 0x1
movs r1, 0x1
- bl sub_8124288
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
- bl sub_8123824
+ bl PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs
b _0813D584
.pool
_0813D520:
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
index ed97cd672..15b4af009 100644
--- a/asm/pokemon_1.s
+++ b/asm/pokemon_1.s
@@ -1310,8 +1310,8 @@ _08068FF4:
bx r0
thumb_func_end CalculateMonStats
- thumb_func_start sub_8069004
-sub_8069004: @ 8069004
+ thumb_func_start BoxMonToMon
+BoxMonToMon: @ 8069004
push {r4,lr}
sub sp, 0x4
adds r2, r0, 0
@@ -1346,7 +1346,7 @@ sub_8069004: @ 8069004
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8069004
+ thumb_func_end BoxMonToMon
thumb_func_start GetLevelFromMonExp
GetLevelFromMonExp: @ 8069054
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 4d7fe3d62..94245f93b 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,224 +5,8 @@
.text
- thumb_func_start CountMonsInBox
-CountMonsInBox: @ 80C6FA0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- movs r5, 0
-_080C6FAA:
- lsls r1, r4, 24
- lsrs r1, 24
- adds r0, r6, 0
- movs r2, 0xB
- bl GetBoxMonDataFromAnyBox
- cmp r0, 0
- beq _080C6FC0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080C6FC0:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _080C6FAA
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CountMonsInBox
-
- thumb_func_start sub_80C6FD4
-sub_80C6FD4: @ 80C6FD4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
-_080C6FDC:
- lsls r1, r4, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0xB
- bl GetBoxMonDataFromAnyBox
- cmp r0, 0
- bne _080C6FF2
- lsls r0, r4, 16
- asrs r0, 16
- b _080C7000
-_080C6FF2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _080C6FDC
- movs r0, 0x1
- negs r0, r0
-_080C7000:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C6FD4
-
- thumb_func_start sub_80C7008
-sub_80C7008: @ 80C7008
- push {r4-r6,lr}
- movs r5, 0
- movs r6, 0
-_080C700E:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080C7036
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080C7036
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080C7036:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _080C700E
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80C7008
-
- thumb_func_start sub_80C7050
-sub_80C7050: @ 80C7050
- push {r4-r7,lr}
- lsls r0, 24
- movs r5, 0
- movs r6, 0
- lsrs r7, r0, 24
-_080C705A:
- cmp r5, r7
- beq _080C7092
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080C7092
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080C7092
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080C7092
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080C7092:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _080C705A
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80C7050
-
- thumb_func_start sub_80C70AC
-sub_80C70AC: @ 80C70AC
- push {lr}
- ldr r0, =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_80C7050
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80C70AC
-
- thumb_func_start sub_80C70C4
-sub_80C70C4: @ 80C70C4
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0
-_080C70CA:
- movs r0, 0x64
- muls r0, r4
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080C70E2
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080C70E2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _080C70CA
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80C70C4
-
- thumb_func_start sub_80C70FC
-sub_80C70FC: @ 80C70FC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r2, 16
- lsrs r4, 16
- bl StringCopy
- adds r1, r0, 0
- adds r5, r4
- cmp r1, r5
- bcs _080C711A
- movs r0, 0
-_080C7112:
- strb r0, [r1]
- adds r1, 0x1
- cmp r1, r5
- bcc _080C7112
-_080C711A:
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r1, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C70FC
- thumb_func_start sub_80C7128
+ thumb_func_start sub_80C7128
sub_80C7128: @ 80C7128
push {r4-r7,lr}
mov r7, r9
@@ -578,7 +362,7 @@ _080C73F6:
ldrsh r4, [r5, r3]
cmp r4, 0
bne _080C7428
- bl sub_80C70C4
+ bl CountPartyMons
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
@@ -601,7 +385,7 @@ _080C7428:
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _080C745C
- bl sub_80C70C4
+ bl CountPartyMons
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
@@ -3539,7 +3323,7 @@ _080C8E38:
b _080C8EA0
.pool
_080C8E4C:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r0, =gUnknown_02039D08
ldr r1, [r0]
@@ -3699,7 +3483,7 @@ _080C8FA4:
ldrb r0, [r0]
cmp r0, 0
beq _080C8FD0
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
b _080C905C
.pool
@@ -4453,7 +4237,7 @@ sub_80C9670: @ 80C9670
b _080C96AE
.pool
_080C9688:
- bl party_compaction
+ bl CompactPartySlots
bl sub_80CB950
ldr r1, [r4]
ldrb r0, [r1]
@@ -6567,7 +6351,7 @@ _080CA94C:
movs r1, 0
strb r1, [r0]
bl sub_80CBB9C
- bl party_compaction
+ bl CompactPartySlots
movs r0, 0x2
str r0, [sp]
movs r1, 0
@@ -13381,7 +13165,7 @@ sub_80CE19C: @ 80CE19C
lsls r0, 24
lsrs r6, r0, 24
adds r0, r6, 0
- bl sub_80C6FD4
+ bl GetFirstFreeBoxSpot
lsls r0, 16
lsrs r4, r0, 16
asrs r0, 16
@@ -14127,7 +13911,7 @@ _080CE838:
ldr r2, =0x00002187
adds r1, r2
strb r0, [r1]
- bl sub_80C70C4
+ bl CountPartyMons
ldr r1, [r4]
subs r0, 0x1
ldr r2, =0x00002186
@@ -14193,8 +13977,8 @@ _080CE900:
.pool
thumb_func_end sub_80CE8E4
- thumb_func_start party_compaction
-party_compaction: @ 80CE90C
+ thumb_func_start CompactPartySlots
+CompactPartySlots: @ 80CE90C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -14271,7 +14055,7 @@ _080CE992:
pop {r1}
bx r1
.pool
- thumb_func_end party_compaction
+ thumb_func_end CompactPartySlots
thumb_func_start sub_80CE9A8
sub_80CE9A8: @ 80CE9A8
@@ -14347,7 +14131,7 @@ sub_80CEA30: @ 80CEA30
bne _080CEA64
ldr r0, =gUnknown_02039D79
ldrb r0, [r0]
- bl sub_80C7050
+ bl CountPartyAliveNonEggMonsExcept
lsls r0, 24
cmp r0, 0
bne _080CEA64
@@ -14376,7 +14160,7 @@ sub_80CEA6C: @ 80CEA6C
bne _080CEAAC
ldr r0, =gUnknown_02039D79
ldrb r0, [r0]
- bl sub_80C7050
+ bl CountPartyAliveNonEggMonsExcept
lsls r0, 24
cmp r0, 0
bne _080CEAAC
@@ -21042,7 +20826,7 @@ sub_80D2054: @ 80D2054
lsls r1, 4
adds r0, r1
adds r1, r5, 0
- bl sub_8069004
+ bl BoxMonToMon
_080D2088:
pop {r4,r5}
pop {r0}
diff --git a/asm/pokenav.s b/asm/pokenav.s
index c6e058955..249258404 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -10864,7 +10864,7 @@ sub_81CC670: @ 81CC670
movs r0, 0x4
bl sub_81C763C
adds r4, r0, 0
- bl sub_812305C
+ bl FreeRegionMapIconResources
bl sub_81CC9EC
ldrb r0, [r4, 0x8]
bl RemoveWindow
@@ -10886,7 +10886,7 @@ sub_81CC6A4: @ 81CC6A4
bl TransferPlttBuffer
bl LoadOam
bl ProcessSpriteCopyRequests
- bl sub_81237B4
+ bl UpdateRegionMapVideoRegs
pop {r0}
bx r0
thumb_func_end sub_81CC6A4
@@ -10991,10 +10991,10 @@ _081CC784:
bne _081CC7AC
movs r0, 0x4
movs r1, 0x9
- bl sub_8124288
+ bl CreateRegionMapPlayerIcon
movs r0, 0x5
movs r1, 0xA
- bl sub_81240D4
+ bl CreateRegionMapCursor
bl sub_812454C
b _081CC77C
_081CC7AC:
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index 7e9ea30d1..35e0557ee 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -3607,7 +3607,7 @@ sub_80E89F8: @ 80E89F8
ldr r1, =0x00003030
adds r0, r1
adds r1, r5, 0
- bl sub_806FA9C
+ bl InitDaycareMailRecordMixing
ldr r0, =gUnknown_03001148
ldr r1, [r0]
adds r0, r6, 0
diff --git a/asm/region_map.s b/asm/region_map.s
deleted file mode 100644
index 032bdf7a5..000000000
--- a/asm/region_map.s
+++ /dev/null
@@ -1,4288 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8122CDC
-sub_8122CDC: @ 8122CDC
- push {lr}
- lsls r2, r1, 24
- lsrs r2, 24
- movs r1, 0
- bl sub_8122CF8
-_08122CE8:
- bl sub_8122DB0
- lsls r0, 24
- cmp r0, 0
- bne _08122CE8
- pop {r0}
- bx r0
- thumb_func_end sub_8122CDC
-
- thumb_func_start sub_8122CF8
-sub_8122CF8: @ 8122CF8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =gUnknown_0203A144
- str r0, [r3]
- movs r1, 0x79
- adds r1, r0
- mov r12, r1
- movs r1, 0
- mov r5, r12
- strb r1, [r5]
- adds r0, 0x78
- strb r2, [r0]
- ldr r1, [r3]
- cmp r2, 0x1
- bne _08122D28
- ldr r0, =sub_8123254
- b _08122D2A
- .pool
-_08122D28:
- ldr r0, =sub_81230C4
-_08122D2A:
- str r0, [r1, 0x18]
- cmp r4, 0
- beq _08122D64
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 30
- lsrs r0, 30
- adds r1, 0x80
- strb r0, [r1]
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 28
- lsrs r0, 30
- adds r1, 0x81
- strb r0, [r1]
- ldr r1, [r3]
- ldr r0, [r4]
- lsls r0, 23
- lsrs r0, 27
- adds r1, 0x82
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x83
- movs r1, 0x1
- strb r1, [r0]
- b _08122D80
- .pool
-_08122D64:
- ldr r0, [r3]
- adds r0, 0x80
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x81
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x82
- movs r1, 0x1C
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0x83
- strb r4, [r0]
-_08122D80:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8122CF8
-
- thumb_func_start sub_8122D88
-sub_8122D88: @ 8122D88
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- str r0, [r4]
- bl sub_81238AC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8122D88
-
- thumb_func_start sub_8122DB0
-sub_8122DB0: @ 8122DB0
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08122DC2
- b _0812300C
-_08122DC2:
- lsls r0, 2
- ldr r1, =_08122DD4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08122DD4:
- .4byte _08122DF4
- .4byte _08122E2C
- .4byte _08122E78
- .4byte _08122E94
- .4byte _08122EB0
- .4byte _08122ECC
- .4byte _08122F10
- .4byte _08122F8C
-_08122DF4:
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08122E18
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- ldr r1, =gUnknown_0859F77C
- movs r2, 0
- str r2, [sp]
- b _08122E52
- .pool
-_08122E18:
- ldr r0, =gUnknown_0859F77C
- ldr r1, =0x06008000
- bl LZ77UnCompVram
- b _08123014
- .pool
-_08122E2C:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08122E64
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08122E44
- b _08123014
-_08122E44:
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- ldr r1, =gUnknown_085A04E0
- movs r2, 0x1
- str r2, [sp]
- movs r2, 0
-_08122E52:
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _08123014
- .pool
-_08122E64:
- ldr r0, =gUnknown_085A04E0
- ldr r1, =0x0600e000
- bl LZ77UnCompVram
- b _08123014
- .pool
-_08122E78:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08122E84
- b _08123014
-_08122E84:
- ldr r0, =gUnknown_0859F73C
- movs r1, 0x70
- movs r2, 0x60
- bl LoadPalette
- b _08123014
- .pool
-_08122E94:
- ldr r0, =gUnknown_0859F60C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- movs r2, 0xC2
- lsls r2, 1
- adds r1, r2
- bl LZ77UnCompWram
- b _08123014
- .pool
-_08122EB0:
- ldr r0, =gUnknown_0859F650
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- movs r5, 0xA1
- lsls r5, 2
- adds r1, r5
- bl LZ77UnCompWram
- b _08123014
- .pool
-_08122ECC:
- bl sub_81238AC
- ldr r4, =gUnknown_0203A144
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x76
- strh r0, [r1]
- ldrh r0, [r2]
- bl sub_8123EB4
- ldr r1, [r4]
- strh r0, [r1]
- ldrh r0, [r1]
- bl get_flagnr_blue_points
- ldr r1, [r4]
- strb r0, [r1, 0x2]
- ldr r1, [r4]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
- b _08123014
- .pool
-_08122F10:
- ldr r0, =gUnknown_0203A144
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x78
- ldrb r1, [r0]
- cmp r1, 0
- bne _08122F3C
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_81236C4
- b _08123014
- .pool
-_08122F3C:
- adds r1, r4, 0
- adds r1, 0x54
- ldrh r0, [r1]
- lsls r0, 3
- subs r0, 0x34
- adds r2, r4, 0
- adds r2, 0x5C
- movs r3, 0
- strh r0, [r2]
- movs r0, 0x56
- adds r0, r4
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r5, r4, 0
- adds r5, 0x5E
- strh r0, [r5]
- ldrh r1, [r1]
- adds r0, r4, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r0, 0x66
- strh r1, [r0]
- movs r1, 0
- ldrsh r0, [r2, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r2, 0x80
- str r2, [sp]
- str r2, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- b _08123014
-_08122F8C:
- bl sub_8123FB0
- bl sub_81237B4
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- movs r1, 0
- str r1, [r0, 0x1C]
- str r1, [r0, 0x20]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x83
- ldrb r0, [r0]
- cmp r0, 0
- beq _08123002
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x3
- movs r2, 0x2
- bl SetBgAttribute
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- adds r1, 0x81
- ldrb r2, [r1]
- movs r1, 0x1
- bl SetBgAttribute
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x80
- ldrb r0, [r0]
- adds r1, 0x82
- ldrb r2, [r1]
- movs r1, 0x2
- bl SetBgAttribute
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x6
- movs r2, 0x1
- bl SetBgAttribute
- ldr r0, [r4]
- adds r0, 0x80
- ldrb r0, [r0]
- movs r1, 0x4
- movs r2, 0x1
- bl SetBgAttribute
-_08123002:
- ldr r1, [r4]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0812300C:
- movs r0, 0
- b _08123022
- .pool
-_08123014:
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_08123022:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8122DB0
-
- thumb_func_start sub_8123030
-sub_8123030: @ 8123030
- push {lr}
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0xE0
- lsls r0, 2
- lsls r1, 24
- lsrs r1, 24
- bl BlendPalettes
- ldr r0, =gPlttBufferFaded + 0xE0
- ldr r1, =gPlttBufferUnfaded + 0xE0
- movs r2, 0x30
- bl CpuSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123030
-
- thumb_func_start sub_812305C
-sub_812305C: @ 812305C
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _08123080
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_08123080:
- ldr r0, [r4]
- ldr r0, [r0, 0x20]
- cmp r0, 0
- beq _081230A0
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x70
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x72
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_081230A0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812305C
-
- thumb_func_start sub_81230AC
-sub_81230AC: @ 81230AC
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81230AC
-
- thumb_func_start sub_81230C4
-sub_81230C4: @ 81230C4
- push {r4,lr}
- movs r4, 0
- ldr r2, =gUnknown_0203A144
- ldr r0, [r2]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r2]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r3, =gMain
- ldrh r1, [r3, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081230F6
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _081230F6
- adds r1, 0x7C
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_081230F6:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08123114
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0xF
- bhi _08123114
- adds r1, 0x7C
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_08123114:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08123132
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _08123132
- adds r1, 0x7B
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_08123132:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08123150
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1B
- bhi _08123150
- adds r1, 0x7B
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_08123150:
- ldrh r3, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08123168
- movs r4, 0x4
- b _08123172
- .pool
-_08123168:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _08123172
- movs r4, 0x5
-_08123172:
- cmp r4, 0x1
- bne _08123184
- ldr r0, [r2]
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, [r2]
- ldr r0, =_swiopen
- str r0, [r1, 0x18]
-_08123184:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81230C4
-
- thumb_func_start _swiopen
-_swiopen: @ 8123190
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A144
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _081231AC
- movs r0, 0x2
- b _08123248
- .pool
-_081231AC:
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _081231C2
- adds r1, 0x54
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081231C2:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _081231DA
- adds r1, 0x54
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_081231DA:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _081231F2
- adds r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081231F2:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _0812320A
- adds r1, 0x56
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_0812320A:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- adds r1, 0x56
- ldrh r1, [r1]
- bl sub_812386C
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl get_flagnr_blue_points
- ldr r1, [r5]
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- ldrh r0, [r1]
- cmp r4, r0
- beq _0812323C
- strh r4, [r1]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
-_0812323C:
- bl sub_8123FB0
- ldr r1, [r5]
- ldr r0, =sub_81230C4
- str r0, [r1, 0x18]
- movs r0, 0x3
-_08123248:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end _swiopen
-
- thumb_func_start sub_8123254
-sub_8123254: @ 8123254
- push {r4-r6,lr}
- movs r4, 0
- ldr r3, =gUnknown_0203A144
- ldr r0, [r3]
- mov r12, r0
- adds r0, 0x6A
- strh r4, [r0]
- mov r5, r12
- adds r5, 0x68
- strh r4, [r5]
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0
- beq _0812328E
- mov r0, r12
- adds r0, 0x5E
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x34
- negs r0, r0
- cmp r1, r0
- ble _0812328E
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r4, 0x1
-_0812328E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081232AE
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5E
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0x3B
- bgt _081232AE
- adds r1, 0x68
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_081232AE:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _081232D4
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r5, 0
- ldrsh r1, [r0, r5]
- movs r0, 0x2C
- negs r0, r0
- cmp r1, r0
- ble _081232D4
- adds r1, r2, 0
- adds r1, 0x6A
- ldr r0, =0x0000ffff
- strh r0, [r1]
- movs r4, 0x1
-_081232D4:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081232F4
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0xAB
- bgt _081232F4
- adds r1, 0x6A
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_081232F4:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _08123300
- movs r4, 0x4
-_08123300:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0812330A
- movs r4, 0x5
-_0812330A:
- cmp r4, 0x1
- bne _0812331A
- ldr r0, [r6]
- ldr r1, =sub_8123334
- str r1, [r0, 0x18]
- adds r0, 0x6C
- movs r1, 0
- strh r1, [r0]
-_0812331A:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123254
-
- thumb_func_start sub_8123334
-sub_8123334: @ 8123334
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203A144
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x5E
- adds r0, r2, 0
- adds r0, 0x68
- ldrh r0, [r0]
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x5C
- adds r0, r2, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- movs r2, 0
- ldrsh r1, [r3, r2]
- bl sub_812378C
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x6C
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bne _08123410
- adds r0, r2, 0
- adds r0, 0x5C
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r0, r1, 0
- adds r0, 0x2C
- cmp r0, 0
- bge _0812338C
- adds r0, 0x7
-_0812338C:
- asrs r0, 3
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r2, 0
- adds r0, 0x5E
- movs r4, 0
- ldrsh r1, [r0, r4]
- adds r0, r1, 0
- adds r0, 0x34
- cmp r0, 0
- bge _081233A6
- adds r0, 0x7
-_081233A6:
- asrs r0, 3
- adds r0, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, r2, 0
- adds r4, 0x64
- adds r0, r2, 0
- adds r0, 0x66
- ldrh r2, [r4]
- cmp r3, r2
- bne _081233C2
- ldrh r2, [r0]
- cmp r1, r2
- beq _081233F2
-_081233C2:
- strh r3, [r4]
- strh r1, [r0]
- adds r0, r3, 0
- bl sub_812386C
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl get_flagnr_blue_points
- ldr r1, [r5]
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- ldrh r3, [r1]
- cmp r4, r3
- beq _081233EE
- strh r4, [r1]
- adds r0, r1, 0x4
- ldrh r1, [r1]
- movs r2, 0x10
- bl GetMapName
-_081233EE:
- bl sub_8123FB0
-_081233F2:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x6C
- movs r0, 0
- strh r0, [r1]
- ldr r0, =sub_8123254
- str r0, [r2, 0x18]
- movs r0, 0x3
- b _08123412
- .pool
-_08123410:
- movs r0, 0x2
-_08123412:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8123334
-
- thumb_func_start sub_8123418
-sub_8123418: @ 8123418
- push {r4-r6,lr}
- ldr r1, =gUnknown_0203A144
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- adds r5, r1, 0
- cmp r3, 0
- bne _0812349C
- subs r0, 0x1A
- strh r3, [r0]
- subs r0, 0x2
- strh r3, [r0]
- str r3, [r2, 0x40]
- str r3, [r2, 0x3C]
- adds r4, r2, 0
- adds r4, 0x54
- ldrh r0, [r4]
- lsls r0, 3
- subs r0, 0x34
- adds r1, r2, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r0, 0x56
- adds r0, r2
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r3, r2, 0
- adds r3, 0x62
- strh r0, [r3]
- movs r6, 0
- ldrsh r0, [r1, r6]
- lsls r0, 8
- cmp r0, 0
- bge _08123464
- adds r0, 0xF
-_08123464:
- asrs r0, 4
- str r0, [r2, 0x44]
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 8
- cmp r0, 0
- bge _08123474
- adds r0, 0xF
-_08123474:
- asrs r0, 4
- str r0, [r2, 0x48]
- ldrh r1, [r4]
- adds r0, r2, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r3, r12
- ldrh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 9
- str r0, [r2, 0x4C]
- ldr r0, =0xfffff800
- b _081234FA
- .pool
-_0812349C:
- adds r0, r2, 0
- adds r0, 0x5C
- movs r6, 0
- ldrsh r0, [r0, r6]
- lsls r0, 8
- str r0, [r2, 0x3C]
- adds r0, r2, 0
- adds r0, 0x5E
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r2, 0x40]
- adds r0, r2, 0
- adds r0, 0x60
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, [r2, 0x3C]
- cmp r0, 0
- bge _081234C8
- adds r0, 0xF
-_081234C8:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x44]
- ldr r0, [r2, 0x40]
- cmp r0, 0
- bge _081234D6
- adds r0, 0xF
-_081234D6:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x48]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- subs r0, 0x10
- strh r1, [r0]
- adds r0, 0x12
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x56
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 8
- str r0, [r2, 0x4C]
- movs r0, 0x80
- lsls r0, 4
-_081234FA:
- str r0, [r2, 0x50]
- ldr r0, [r5]
- adds r0, 0x6E
- movs r1, 0
- strh r1, [r0]
- bl sub_8124238
- bl sub_81243B0
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8123418
-
- thumb_func_start sub_8123514
-sub_8123514: @ 8123514
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x6E
- ldrh r1, [r2]
- adds r5, r0, 0
- cmp r1, 0xF
- bls _08123530
- movs r0, 0
- b _081236B8
- .pool
-_08123530:
- adds r0, r1, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _081235A4
- str r1, [r3, 0x44]
- str r1, [r3, 0x48]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- adds r0, 0x6
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- adds r1, 0x1A
- ldrb r0, [r1]
- movs r2, 0x80
- lsls r2, 9
- cmp r0, 0
- bne _08123566
- movs r2, 0x80
- lsls r2, 8
-_08123566:
- str r2, [r3, 0x4C]
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08123572
- movs r2, 0x1
-_08123572:
- strb r2, [r1]
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- ldr r2, =sub_8123254
- cmp r0, 0
- bne _08123584
- ldr r2, =sub_81230C4
-_08123584:
- str r2, [r1, 0x18]
- adds r0, r1, 0
- adds r0, 0x58
- ldrh r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- bl sub_81240D4
- bl sub_81243DC
- movs r4, 0
- b _08123686
- .pool
-_081235A4:
- ldr r2, [r3, 0x3C]
- ldr r0, [r3, 0x44]
- adds r2, r0
- str r2, [r3, 0x3C]
- ldr r0, [r3, 0x40]
- ldr r1, [r3, 0x48]
- adds r0, r1
- str r0, [r3, 0x40]
- asrs r2, 8
- adds r4, r3, 0
- adds r4, 0x5C
- strh r2, [r4]
- ldr r0, [r3, 0x40]
- asrs r0, 8
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- ldr r0, [r3, 0x4C]
- ldr r1, [r3, 0x50]
- adds r0, r1
- str r0, [r3, 0x4C]
- ldr r2, [r3, 0x44]
- cmp r2, 0
- bge _081235E4
- adds r0, r3, 0
- adds r0, 0x60
- movs r6, 0
- ldrsh r1, [r4, r6]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- blt _081235F8
-_081235E4:
- cmp r2, 0
- ble _08123608
- adds r0, r3, 0
- adds r0, 0x60
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _08123608
-_081235F8:
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r2, [r0]
- subs r0, 0x4
- movs r1, 0
- strh r2, [r0]
- str r1, [r3, 0x44]
-_08123608:
- ldr r2, [r5]
- ldr r4, [r2, 0x48]
- cmp r4, 0
- bge _08123624
- adds r0, r2, 0
- adds r0, 0x5E
- adds r3, r2, 0
- adds r3, 0x62
- movs r6, 0
- ldrsh r1, [r0, r6]
- movs r6, 0
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _0812363C
-_08123624:
- cmp r4, 0
- ble _0812364E
- adds r1, r2, 0
- adds r1, 0x5E
- adds r0, r2, 0
- adds r0, 0x62
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _0812364E
-_0812363C:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x62
- ldrh r1, [r0]
- adds r3, r2, 0
- adds r3, 0x5E
- movs r0, 0
- strh r1, [r3]
- str r0, [r2, 0x48]
-_0812364E:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- cmp r3, 0
- bne _08123674
- ldr r1, [r2, 0x4C]
- ldr r0, =0x00007fff
- cmp r1, r0
- bgt _08123684
- adds r0, 0x1
- str r0, [r2, 0x4C]
- str r3, [r2, 0x50]
- b _08123684
- .pool
-_08123674:
- ldr r0, [r2, 0x4C]
- movs r1, 0x80
- lsls r1, 9
- cmp r0, r1
- ble _08123684
- str r1, [r2, 0x4C]
- movs r0, 0
- str r0, [r2, 0x50]
-_08123684:
- movs r4, 0x1
-_08123686:
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r1, r3, 0
- adds r1, 0x5E
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- adds r0, r4, 0
-_081236B8:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123514
-
- thumb_func_start sub_81236C4
-sub_81236C4: @ 81236C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r4, 16
- lsrs r4, 16
- mov r8, r4
- lsls r7, 16
- adds r4, r7, 0
- lsrs r4, 16
- mov r9, r4
- lsls r5, 24
- lsrs r5, 24
- ldr r4, =gUnknown_0203A144
- ldr r6, [r4]
- ldr r7, =gSineTable
- mov r12, r7
- adds r4, r5, 0
- adds r4, 0x40
- lsls r4, 1
- add r4, r12
- movs r7, 0
- ldrsh r4, [r4, r7]
- str r4, [sp]
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r10, r4
- str r4, [r6, 0x2C]
- lsls r5, 1
- add r5, r12
- movs r7, 0
- ldrsh r5, [r5, r7]
- negs r4, r5
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r12, r4
- str r4, [r6, 0x30]
- mov r7, r9
- muls r7, r5
- adds r5, r7, 0
- asrs r5, 8
- str r5, [r6, 0x34]
- ldr r7, [sp]
- mov r4, r9
- muls r4, r7
- asrs r4, 8
- mov r8, r4
- str r4, [r6, 0x38]
- lsls r0, 16
- asrs r0, 8
- lsls r2, 16
- asrs r2, 16
- lsls r4, r2, 8
- adds r0, r4
- lsls r3, 16
- asrs r3, 16
- adds r4, r3, 0
- muls r4, r5
- mov r5, r10
- muls r5, r2
- adds r4, r5
- subs r0, r4
- str r0, [r6, 0x24]
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 8
- adds r1, r0
- mov r0, r8
- muls r0, r3
- mov r3, r12
- muls r3, r2
- adds r2, r3, 0
- adds r0, r2
- subs r1, r0
- str r1, [r6, 0x28]
- adds r6, 0x7D
- movs r0, 0x1
- strb r0, [r6]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81236C4
-
- thumb_func_start sub_812378C
-sub_812378C: @ 812378C
- ldr r2, =gUnknown_0203A144
- ldr r2, [r2]
- lsls r0, 16
- asrs r0, 8
- movs r3, 0xE0
- lsls r3, 5
- adds r0, r3
- str r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 8
- movs r0, 0x90
- lsls r0, 6
- adds r1, r0
- str r1, [r2, 0x28]
- adds r2, 0x7D
- movs r0, 0x1
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_812378C
-
- thumb_func_start sub_81237B4
-sub_81237B4: @ 81237B4
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x7D
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812381A
- ldrh r1, [r1, 0x2C]
- movs r0, 0x20
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x34]
- movs r0, 0x22
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x30]
- movs r0, 0x24
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x38]
- movs r0, 0x26
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x24]
- movs r0, 0x28
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x26]
- movs r0, 0x2A
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x28]
- movs r0, 0x2C
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x2A]
- movs r0, 0x2E
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0x7D
- movs r1, 0
- strb r1, [r0]
-_0812381A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81237B4
-
- thumb_func_start sub_8123824
-sub_8123824: @ 8123824
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x38
- movs r3, 0x48
- bl sub_81236C4
- bl sub_81237B4
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- ldr r1, [r2, 0x20]
- cmp r1, 0
- beq _08123860
- negs r0, r4
- strh r0, [r1, 0x24]
- ldr r1, [r2, 0x20]
- negs r0, r5
- strh r0, [r1, 0x26]
-_08123860:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123824
-
- thumb_func_start sub_812386C
-sub_812386C: @ 812386C
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- ldr r0, =0xfffe0000
- adds r1, r0
- lsrs r2, r1, 16
- cmp r2, 0xE
- bhi _08123886
- cmp r3, 0
- beq _08123886
- cmp r3, 0x1C
- bls _08123890
-_08123886:
- movs r0, 0xD5
- b _081238A4
- .pool
-_08123890:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, =gUnknown_085A096C
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r1
- ldrb r0, [r0]
-_081238A4:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_812386C
-
- thumb_func_start sub_81238AC
-sub_81238AC: @ 81238AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- adds r3, r0, 0
- cmp r1, 0x19
- bne _081238DC
- ldrb r0, [r2, 0x5]
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _081238DC
- bl sub_8123C00
- b _08123BEC
- .pool
-_081238DC:
- ldr r1, [r3]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _08123928
- lsls r0, 2
- ldr r1, =_08123904
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08123904:
- .4byte _08123928
- .4byte _08123928
- .4byte _08123928
- .4byte _0812396C
- .4byte _08123928
- .4byte _08123928
- .4byte _0812396C
- .4byte _08123A28
- .4byte _081239E4
-_08123928:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r3, =gMapHeader
- ldrb r1, [r3, 0x14]
- movs r2, 0
- strh r1, [r0]
- adds r0, 0x7F
- strb r2, [r0]
- ldr r0, [r3]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r6, [r0]
- ldrh r3, [r0, 0x2]
- ldr r1, [r4]
- ldrh r0, [r1]
- cmp r0, 0x45
- beq _08123956
- cmp r0, 0xCC
- beq _08123956
- b _08123ABE
-_08123956:
- adds r1, 0x7F
- movs r0, 0x1
- strb r0, [r1]
- b _08123ABE
- .pool
-_0812396C:
- ldr r2, =gMapHeader
- ldrb r1, [r2, 0x1A]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081239C8
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r5, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, [r4]
- ldrh r6, [r0, 0x28]
- ldrh r3, [r0, 0x2A]
- b _08123ABE
- .pool
-_081239C8:
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- movs r2, 0x1
- mov r9, r2
- movs r6, 0x1
- movs r3, 0x1
- b _08123ABE
- .pool
-_081239E4:
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- movs r0, 0x14
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x15]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldrb r1, [r5, 0x14]
- strh r1, [r0]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldr r0, [r4]
- ldrh r6, [r0, 0x18]
- ldrh r3, [r0, 0x1A]
- b _08123ABE
- .pool
-_08123A28:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r1, =gMapHeader
- ldrb r1, [r1, 0x14]
- strh r1, [r0]
- cmp r1, 0x57
- beq _08123A64
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r7, r0, 0
- adds r7, 0x24
- movs r0, 0
- ldrsb r0, [r7, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r7, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- b _08123A8A
- .pool
-_08123A64:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r7, r0, 0
- adds r7, 0x14
- ldrb r0, [r0, 0x14]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r7, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r5, r0, 0
- ldr r1, [r4]
- ldrb r0, [r5, 0x14]
- strh r0, [r1]
-_08123A8A:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldrb r0, [r0]
- bl sub_8123F74
- adds r1, r0, 0
- cmp r1, 0
- beq _08123AAC
- ldr r0, [r4]
- adds r0, 0x7F
- movs r1, 0x1
- b _08123AB0
- .pool
-_08123AAC:
- ldr r0, [r4]
- adds r0, 0x7F
-_08123AB0:
- strb r1, [r0]
- ldr r0, [r5]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r9, r0
- ldrh r6, [r7, 0x4]
- ldrh r3, [r7, 0x6]
-_08123ABE:
- str r6, [sp]
- ldr r5, =gRegionMapEntries
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- mov r10, r0
- ldrh r7, [r0]
- lsls r0, r7, 3
- adds r0, r5
- str r0, [sp, 0x4]
- ldrb r0, [r0, 0x2]
- mov r8, r0
- adds r0, r2, 0
- mov r1, r8
- str r3, [sp, 0x8]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp, 0x8]
- cmp r1, 0
- bne _08123AEA
- movs r1, 0x1
-_08123AEA:
- adds r0, r6, 0
- str r3, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp, 0x8]
- cmp r6, r8
- bcc _08123B04
- mov r0, r8
- subs r0, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123B04:
- ldr r2, [sp, 0x4]
- ldrb r4, [r2, 0x3]
- mov r0, r9
- adds r1, r4, 0
- str r3, [sp, 0x8]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp, 0x8]
- cmp r1, 0
- bne _08123B1E
- movs r1, 0x1
-_08123B1E:
- adds r0, r3, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r4
- bcc _08123B32
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-_08123B32:
- cmp r7, 0x29
- beq _08123B5E
- cmp r7, 0x29
- bgt _08123B4C
- cmp r7, 0x1D
- beq _08123B56
- cmp r7, 0x24
- beq _08123B94
- b _08123BC6
- .pool
-_08123B4C:
- cmp r7, 0x33
- beq _08123B5E
- cmp r7, 0xCC
- beq _08123BB8
- b _08123BC6
-_08123B56:
- cmp r3, 0
- beq _08123BC6
- movs r6, 0
- b _08123BC6
-_08123B5E:
- movs r6, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- ble _08123B6E
- movs r6, 0x1
-_08123B6E:
- cmp r0, 0x33
- ble _08123B78
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123B78:
- movs r3, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x25
- ble _08123B84
- movs r3, 0x1
-_08123B84:
- cmp r0, 0x38
- ble _08123BC6
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- b _08123BC6
- .pool
-_08123B94:
- movs r6, 0
- ldr r0, [sp]
- cmp r0, 0xE
- bls _08123B9E
- movs r6, 0x1
-_08123B9E:
- ldr r2, [sp]
- cmp r2, 0x1C
- bls _08123BAA
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08123BAA:
- ldr r0, [sp]
- cmp r0, 0x36
- bls _08123BC6
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- b _08123BC6
-_08123BB8:
- mov r0, r10
- adds r0, 0x54
- mov r1, r10
- adds r1, 0x56
- bl sub_8123F30
- b _08123BEC
-_08123BC6:
- ldr r0, =gUnknown_0203A144
- ldr r2, [r0]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0]
- adds r0, r6, r0
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r5
- ldrb r0, [r0, 0x1]
- adds r0, r3, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
-_08123BEC:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81238AC
-
- thumb_func_start sub_8123C00
-sub_8123C00: @ 8123C00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x1
- mov r5, sp
- adds r5, 0x2
- add r6, sp, 0x4
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl GetSSTidalLocation
- lsls r0, 24
- lsrs r0, 24
- mov r10, r5
- cmp r0, 0x4
- bhi _08123C94
- lsls r0, 2
- ldr r1, =_08123C40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08123C40:
- .4byte _08123C94
- .4byte _08123C54
- .4byte _08123C64
- .4byte _08123C74
- .4byte _08123C84
-_08123C54:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x8
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C64:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0xC
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C74:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x27
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C84:
- ldr r2, =gUnknown_0203A144
- ldr r1, [r2]
- movs r0, 0x2E
- strh r0, [r1]
- b _08123D10
- .pool
-_08123C94:
- mov r0, sp
- ldrb r0, [r0]
- ldrb r1, [r4]
- bl get_mapheader_by_bank_and_number
- ldr r1, =gUnknown_0203A144
- mov r9, r1
- ldr r2, [r1]
- ldrb r1, [r0, 0x14]
- strh r1, [r2]
- ldr r6, [r0]
- ldr r1, =gRegionMapEntries
- ldrh r0, [r2]
- lsls r0, 3
- adds r5, r0, r1
- ldrb r4, [r5, 0x2]
- ldr r0, [r6]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _08123CC6
- movs r1, 0x1
-_08123CC6:
- mov r2, r10
- movs r3, 0
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r8, r4
- bcc _08123CE2
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_08123CE2:
- ldrb r4, [r5, 0x3]
- ldr r0, [r6, 0x4]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _08123CF6
- movs r1, 0x1
-_08123CF6:
- mov r2, sp
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r2, r9
- cmp r7, r4
- bcc _08123D10
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_08123D10:
- ldr r0, [r2]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r2, [r2]
- ldr r3, =gRegionMapEntries
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0]
- add r0, r8
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r7, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123C00
-
- thumb_func_start get_flagnr_blue_points
-get_flagnr_blue_points: @ 8123D58
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x9
- beq _08123E18
- cmp r0, 0x9
- bgt _08123D9A
- cmp r0, 0x4
- beq _08123DF0
- cmp r0, 0x4
- bgt _08123D88
- cmp r0, 0x1
- beq _08123DD8
- cmp r0, 0x1
- bgt _08123D7E
- cmp r0, 0
- beq _08123DD0
- b _08123E94
-_08123D7E:
- cmp r0, 0x2
- beq _08123DDE
- cmp r0, 0x3
- beq _08123DE8
- b _08123E94
-_08123D88:
- cmp r0, 0x6
- beq _08123E00
- cmp r0, 0x6
- blt _08123DF8
- cmp r0, 0x7
- beq _08123E08
- cmp r0, 0x8
- beq _08123E10
- b _08123E94
-_08123D9A:
- cmp r0, 0xE
- beq _08123E40
- cmp r0, 0xE
- bgt _08123DB4
- cmp r0, 0xB
- beq _08123E28
- cmp r0, 0xB
- blt _08123E20
- cmp r0, 0xC
- beq _08123E30
- cmp r0, 0xD
- beq _08123E38
- b _08123E94
-_08123DB4:
- cmp r0, 0x3A
- beq _08123E60
- cmp r0, 0x3A
- bgt _08123DC2
- cmp r0, 0xF
- beq _08123E48
- b _08123E94
-_08123DC2:
- cmp r1, 0x49
- beq _08123E7C
- cmp r1, 0xD5
- beq _08123DCC
- b _08123E94
-_08123DCC:
- movs r0, 0
- b _08123E96
-_08123DD0:
- ldr r0, =0x0000086f
- b _08123E4A
- .pool
-_08123DD8:
- movs r0, 0x87
- lsls r0, 4
- b _08123E4A
-_08123DDE:
- ldr r0, =0x00000871
- b _08123E4A
- .pool
-_08123DE8:
- ldr r0, =0x00000872
- b _08123E4A
- .pool
-_08123DF0:
- ldr r0, =0x00000873
- b _08123E4A
- .pool
-_08123DF8:
- ldr r0, =0x00000874
- b _08123E4A
- .pool
-_08123E00:
- ldr r0, =0x00000875
- b _08123E4A
- .pool
-_08123E08:
- ldr r0, =0x00000876
- b _08123E4A
- .pool
-_08123E10:
- ldr r0, =0x00000877
- b _08123E4A
- .pool
-_08123E18:
- ldr r0, =0x00000878
- b _08123E4A
- .pool
-_08123E20:
- ldr r0, =0x00000879
- b _08123E4A
- .pool
-_08123E28:
- ldr r0, =0x0000087a
- b _08123E4A
- .pool
-_08123E30:
- ldr r0, =0x0000087b
- b _08123E4A
- .pool
-_08123E38:
- ldr r0, =0x0000087c
- b _08123E4A
- .pool
-_08123E40:
- ldr r0, =0x0000087d
- b _08123E4A
- .pool
-_08123E48:
- ldr r0, =0x0000087e
-_08123E4A:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _08123E58
- movs r1, 0x2
-_08123E58:
- adds r0, r1, 0
- b _08123E96
- .pool
-_08123E60:
- ldr r0, =0x000008a8
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- movs r1, 0x4
- ands r0, r1
- b _08123E96
- .pool
-_08123E7C:
- ldr r0, =0x000008a9
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _08123E96
- .pool
-_08123E94:
- movs r0, 0x1
-_08123E96:
- pop {r1}
- bx r1
- thumb_func_end get_flagnr_blue_points
-
- thumb_func_start sub_8123E9C
-sub_8123E9C: @ 8123E9C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl sub_812386C
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8123E9C
-
- thumb_func_start sub_8123EB4
-sub_8123EB4: @ 8123EB4
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r1, =gUnknown_085A1B84
-_08123EBE:
- ldrh r0, [r1]
- cmp r0, r3
- bne _08123ED4
- bl sub_8123F04
- lsls r0, 16
- lsrs r0, 16
- b _08123F00
- .pool
-_08123ED4:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x2
- bls _08123EBE
- ldr r1, =gUnknown_085A1B24
- ldrh r0, [r1]
- cmp r0, 0xD5
- beq _08123EFE
- adds r2, r1, 0
-_08123EE6:
- ldrh r0, [r2]
- cmp r0, r3
- bne _08123EF4
- ldrh r0, [r1, 0x2]
- b _08123F00
- .pool
-_08123EF4:
- adds r1, 0x4
- adds r2, 0x4
- ldrh r0, [r1]
- cmp r0, 0xD5
- bne _08123EE6
-_08123EFE:
- adds r0, r3, 0
-_08123F00:
- pop {r1}
- bx r1
- thumb_func_end sub_8123EB4
-
- thumb_func_start sub_8123F04
-sub_8123F04: @ 8123F04
- push {lr}
- ldr r0, =0x00004037
- bl VarGet
- subs r0, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08123F18
- movs r1, 0
-_08123F18:
- ldr r0, =gUnknown_085A1B8A
- lsls r1, 16
- asrs r1, 15
- adds r1, r0
- ldrh r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8123F04
-
- thumb_func_start sub_8123F30
-sub_8123F30: @ 8123F30
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, =0x00004037
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r2, =0xfff70000
- adds r0, r2
- lsrs r0, 16
- cmp r0, 0x7
- bls _08123F4C
- movs r1, 0x9
-_08123F4C:
- subs r1, 0x9
- lsls r1, 16
- ldr r0, =gUnknown_085A1BAC
- lsrs r1, 14
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r1, 0x2]
- adds r0, 0x2
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123F30
-
- thumb_func_start sub_8123F74
-sub_8123F74: @ 8123F74
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_085A1BCC
-_08123F7E:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08123F90
- movs r0, 0x1
- b _08123F98
- .pool
-_08123F90:
- adds r1, 0x1
- cmp r1, 0
- beq _08123F7E
- movs r0, 0
-_08123F98:
- pop {r1}
- bx r1
- thumb_func_end sub_8123F74
-
- thumb_func_start sub_8123F9C
-sub_8123F9C: @ 8123F9C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_8123EB4
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8123F9C
-
- thumb_func_start sub_8123FB0
-sub_8123FB0: @ 8123FB0
- push {r4-r6,lr}
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- ldrh r0, [r1]
- cmp r0, 0xD5
- bne _08123FC8
- movs r0, 0
- strb r0, [r1, 0x3]
- b _0812402E
- .pool
-_08123FC8:
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _08123FD8
- adds r0, r1, 0
- adds r0, 0x54
- b _08123FDC
-_08123FD8:
- adds r0, r1, 0
- adds r0, 0x64
-_08123FDC:
- ldrh r4, [r0]
- adds r0, 0x2
- ldrh r5, [r0]
- movs r6, 0
- b _08124008
-_08123FE6:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812386C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bne _08124008
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08124008:
- cmp r4, 0x1
- bhi _08123FE6
- adds r0, r5, 0
- bl sub_8124038
- lsls r0, 24
- cmp r0, 0
- beq _08124028
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0x1D
- b _08124008
- .pool
-_08124028:
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- strb r6, [r0, 0x3]
-_0812402E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8123FB0
-
- thumb_func_start sub_8124038
-sub_8124038: @ 8124038
- push {r4,r5,lr}
- lsls r0, 16
- ldr r1, =0xffff0000
- adds r0, r1
- lsrs r5, r0, 16
- ldr r0, =0x0000ffff
- cmp r5, r0
- bne _08124058
- b _0812407A
- .pool
-_08124054:
- movs r0, 0x1
- b _0812407C
-_08124058:
- movs r4, 0x1
-_0812405A:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812386C
- ldr r1, =gUnknown_0203A144
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- beq _08124054
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1C
- bls _0812405A
-_0812407A:
- movs r0, 0
-_0812407C:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8124038
-
- thumb_func_start sub_8124088
-sub_8124088: @ 8124088
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x7A
- movs r0, 0
- ldrsb r0, [r3, r0]
- cmp r0, 0
- beq _081240C6
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r4, [r2, 0x20]
- adds r0, r4
- strh r0, [r2, 0x20]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r1, [r2, 0x22]
- adds r0, r1
- strh r0, [r2, 0x22]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
-_081240C6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124088
-
- thumb_func_start TaskDummy8
-TaskDummy8: @ 81240D0
- bx lr
- thumb_func_end TaskDummy8
-
- thumb_func_start sub_81240D4
-sub_81240D4: @ 81240D4
- push {r4-r7,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, =gUnknown_085A1C00
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [sp, 0x20]
- str r2, [sp, 0x24]
- mov r2, sp
- ldr r1, =gUnknown_085A1C08
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- lsrs r3, r0, 16
- add r2, sp, 0x18
- ldrh r1, [r2, 0x4]
- orrs r1, r0
- str r1, [r2, 0x4]
- mov r0, sp
- strh r3, [r0]
- ldr r0, =gUnknown_0203A144
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x58
- strh r3, [r0]
- ldr r5, =0xffff0000
- add r1, sp, 0x20
- ldr r0, [r1, 0x4]
- ands r0, r5
- orrs r0, r6
- str r0, [r1, 0x4]
- mov r0, sp
- strh r6, [r0, 0x2]
- adds r3, r4, 0
- adds r0, r3, 0
- adds r0, 0x5A
- strh r6, [r0]
- adds r0, 0x1E
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- bne _08124158
- movs r1, 0xC2
- lsls r1, 1
- adds r0, r3, r1
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- subs r1, 0x84
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, =sub_8124088
- b _0812416E
- .pool
-_08124158:
- movs r3, 0xA1
- lsls r3, 2
- adds r0, r4, r3
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, =TaskDummy8
-_0812416E:
- str r0, [sp, 0x14]
- adds r0, r2, 0
- bl LoadSpriteSheet
- adds r0, r7, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x38
- movs r2, 0x48
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08124228
- ldr r4, =gUnknown_0203A144
- ldr r2, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r3, r0, r1
- str r3, [r2, 0x1C]
- adds r2, 0x78
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _081241DC
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r2, [r4]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x22]
- subs r0, 0x8
- strh r0, [r1, 0x22]
- ldr r0, [r2, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- b _08124204
- .pool
-_081241DC:
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x1C]
- adds r1, 0x56
- ldrh r0, [r1]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x22]
-_08124204:
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r1, [r0, 0x1C]
- movs r0, 0x2
- strh r0, [r1, 0x30]
- adds r0, r6, 0
- bl IndexOfSpritePaletteTag
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- lsls r0, 24
- lsrs r0, 20
- ldr r4, =0x00000101
- adds r0, r4
- strh r0, [r2, 0x32]
- ldr r1, [r1, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
-_08124228:
- add sp, 0x28
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81240D4
-
- thumb_func_start sub_8124238
-sub_8124238: @ 8124238
- push {r4,lr}
- ldr r4, =gUnknown_0203A144
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _0812425C
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_0812425C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124238
-
- thumb_func_start sub_8124268
-sub_8124268: @ 8124268
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
- bx lr
- .pool
- thumb_func_end sub_8124268
-
- thumb_func_start sub_8124278
-sub_8124278: @ 8124278
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x34]
- bx lr
- .pool
- thumb_func_end sub_8124278
-
- thumb_func_start sub_8124288
-sub_8124288: @ 8124288
- push {r4-r6,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gUnknown_085A084C
- str r2, [sp, 0x18]
- movs r2, 0x80
- add r6, sp, 0x18
- lsrs r3, r0, 16
- orrs r0, r2
- str r0, [r6, 0x4]
- ldr r0, =gUnknown_085A082C
- str r0, [sp, 0x20]
- ldr r2, =0xffff0000
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r5, 0
- strh r3, [r0]
- strh r1, [r0, 0x2]
- ldr r0, =gUnknown_085A1C20
- str r0, [sp, 0x4]
- ldr r0, =gUnknown_085A1C30
- str r0, [sp, 0x8]
- str r5, [sp, 0xC]
- ldr r0, =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, =SpriteCallbackDummy
- str r0, [sp, 0x14]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- bl sub_8124668
- cmp r0, 0
- beq _08124304
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- str r5, [r0, 0x20]
- b _081243A4
- .pool
-_08124304:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _08124316
- ldr r0, =gUnknown_085A08EC
- str r0, [sp, 0x18]
- ldr r0, =gUnknown_085A08CC
- str r0, [sp, 0x20]
-_08124316:
- adds r0, r6, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203A144
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- str r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _08124384
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, =sub_81244EC
- b _081243A2
- .pool
-_08124384:
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, =sub_812445C
-_081243A2:
- str r0, [r1, 0x1C]
-_081243A4:
- add sp, 0x28
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124288
-
- thumb_func_start sub_81243B0
-sub_81243B0: @ 81243B0
- push {lr}
- ldr r3, =gUnknown_0203A144
- ldr r0, [r3]
- ldr r2, [r0, 0x20]
- cmp r2, 0
- beq _081243CE
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r1, [r0, 0x20]
- ldr r0, =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_081243CE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81243B0
-
- thumb_func_start sub_81243DC
-sub_81243DC: @ 81243DC
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r3, [r0]
- ldr r1, [r3, 0x20]
- cmp r1, 0
- beq _08124452
- adds r0, r3, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0812441C
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r3, 0x20]
- ldr r0, =sub_812445C
- b _08124444
- .pool
-_0812441C:
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- movs r2, 0
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x24]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x26]
- ldr r1, [r3, 0x20]
- ldr r0, =sub_81244EC
-_08124444:
- str r0, [r1, 0x1C]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_08124452:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81243DC
-
- thumb_func_start sub_812445C
-sub_812445C: @ 812445C
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r4, 0
- ldrsh r2, [r0, r4]
- lsls r2, 1
- negs r2, r2
- strh r2, [r3, 0x24]
- adds r1, 0x5E
- movs r4, 0
- ldrsh r0, [r1, r4]
- lsls r0, 1
- negs r0, r0
- strh r0, [r3, 0x26]
- ldrh r1, [r3, 0x22]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x20]
- adds r1, r2
- adds r2, r3, 0
- adds r2, 0x28
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- adds r2, r1
- strh r2, [r3, 0x30]
- adds r0, 0x8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB0
- bhi _081244BC
- lsls r0, r2, 16
- asrs r2, r0, 16
- movs r0, 0x8
- negs r0, r0
- cmp r2, r0
- blt _081244BC
- cmp r2, 0xF8
- ble _081244C4
-_081244BC:
- movs r0, 0
- b _081244C6
- .pool
-_081244C4:
- movs r0, 0x1
-_081244C6:
- strh r0, [r3, 0x32]
- movs r1, 0x32
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _081244D8
- adds r0, r3, 0
- bl sub_81244F8
- b _081244E4
-_081244D8:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_081244E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812445C
-
- thumb_func_start sub_81244EC
-sub_81244EC: @ 81244EC
- push {lr}
- bl sub_81244F8
- pop {r0}
- bx r0
- thumb_func_end sub_81244EC
-
- thumb_func_start sub_81244F8
-sub_81244F8: @ 81244F8
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x7E
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812453C
- ldrh r0, [r2, 0x3C]
- adds r0, 0x1
- strh r0, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08124548
- movs r0, 0
- strh r0, [r2, 0x3C]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08124548
- .pool
-_0812453C:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_08124548:
- pop {r0}
- bx r0
- thumb_func_end sub_81244F8
-
- thumb_func_start sub_812454C
-sub_812454C: @ 812454C
- push {lr}
- ldr r0, =gUnknown_0203A144
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7F
- ldrb r0, [r0]
- cmp r0, 0
- beq _08124562
- adds r1, 0x7E
- movs r0, 0x1
- strb r0, [r1]
-_08124562:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812454C
-
- thumb_func_start GetMapName
-@ u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
-GetMapName: @ 812456C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- cmp r1, 0x56
- bne _08124584
- bl GetSecretBaseMapName
- adds r1, r0, 0
- b _081245B2
-_08124584:
- cmp r1, 0xD4
- bhi _081245A0
- ldr r0, =gRegionMapEntries
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
- adds r1, r0, 0
- b _081245B2
- .pool
-_081245A0:
- cmp r4, 0
- bne _081245A6
- movs r4, 0x12
-_081245A6:
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- bl StringFill
- b _081245D6
-_081245B2:
- cmp r4, 0
- beq _081245D4
- subs r0, r1, r5
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcs _081245D0
- movs r2, 0
-_081245C2:
- strb r2, [r1]
- adds r1, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcc _081245C2
-_081245D0:
- movs r0, 0xFF
- strb r0, [r1]
-_081245D4:
- adds r0, r1, 0
-_081245D6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetMapName
-
- thumb_func_start sub_81245DC
-sub_81245DC: @ 81245DC
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x56
- beq _081245F8
- cmp r1, 0x57
- bne _08124604
- ldr r1, =gText_Ferry
- bl StringCopy
- b _0812460A
- .pool
-_081245F8:
- ldr r1, =gText_SecretBase
- bl StringCopy
- b _0812460A
- .pool
-_08124604:
- movs r2, 0
- bl GetMapName
-_0812460A:
- pop {r1}
- bx r1
- thumb_func_end sub_81245DC
-
- thumb_func_start sub_8124610
-sub_8124610: @ 8124610
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x42
- beq _08124620
- bl sub_81245DC
- b _08124626
-_08124620:
- ldr r1, =gText_Hideout
- bl StringCopy
-_08124626:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8124610
-
- thumb_func_start sub_8124630
-sub_8124630: @ 8124630
- push {r4,r5,lr}
- ldr r5, [sp, 0xC]
- lsls r0, 16
- ldr r4, =gRegionMapEntries
- lsrs r0, 13
- adds r0, r4
- ldrb r4, [r0]
- strh r4, [r1]
- ldrb r1, [r0, 0x1]
- strh r1, [r2]
- ldrb r1, [r0, 0x2]
- strh r1, [r3]
- ldrb r0, [r0, 0x3]
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124630
-
- thumb_func_start sub_8124658
-sub_8124658: @ 8124658
- ldr r0, =gUnknown_0203A144
- ldr r0, [r0]
- adds r0, 0x78
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_8124658
-
- thumb_func_start sub_8124668
-sub_8124668: @ 8124668
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_085A1C34
-_08124672:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r2, r0
- bne _08124684
- movs r0, 0x1
- b _0812468C
- .pool
-_08124684:
- adds r1, 0x1
- cmp r1, 0x2
- bls _08124672
- movs r0, 0
-_0812468C:
- pop {r1}
- bx r1
- thumb_func_end sub_8124668
-
- thumb_func_start sub_8124690
-sub_8124690: @ 8124690
- push {r4,lr}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _081246A4
- b _081248AA
-_081246A4:
- lsls r0, 2
- ldr r1, =_081246B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081246B8:
- .4byte _081246E4
- .4byte _08124766
- .4byte _0812477C
- .4byte _0812478C
- .4byte _0812479C
- .4byte _081247E4
- .4byte _081247F8
- .4byte _0812480C
- .4byte _0812484C
- .4byte _08124852
- .4byte _0812486C
-_081246E4:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- ldr r4, =gUnknown_0203A148
- ldr r0, =0x00000a74
- bl Alloc
- str r0, [r4]
- cmp r0, 0
- bne _08124754
- ldr r0, =sub_8086194
- bl SetMainCallback2
- b _081248AA
- .pool
-_08124754:
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- b _0812489C
-_08124766:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085A1EE4
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- b _0812489C
- .pool
-_0812477C:
- ldr r0, =gUnknown_085A1EF0
- bl InitWindows
- bl DeactivateAllTextPrinters
- b _0812489C
- .pool
-_0812478C:
- movs r0, 0
- movs r1, 0x65
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- b _0812489C
-_0812479C:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- adds r0, 0x8
- movs r1, 0
- bl sub_8122CDC
- movs r0, 0
- movs r1, 0
- bl sub_81240D4
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8124288
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- strh r1, [r0, 0x6]
- ldr r1, =0x00000a4c
- adds r0, r1
- movs r1, 0
- movs r2, 0x10
- bl StringFill
- ldr r1, =gUnknown_03001180
- movs r0, 0x1
- str r0, [r1]
- bl sub_8124904
- b _0812489C
- .pool
-_081247E4:
- ldr r0, =gUnknown_085A1C58
- ldr r1, =0x0600c000
- bl LZ77UnCompVram
- b _0812489C
- .pool
-_081247F8:
- ldr r0, =gUnknown_085A1C90
- ldr r1, =0x0600f000
- bl LZ77UnCompVram
- b _0812489C
- .pool
-_0812480C:
- ldr r0, =gUnknown_085A1C38
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x2
- bl PutWindowTilemap
- movs r0, 0x2
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r2, =gText_FlyToWhere
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- b _0812489C
- .pool
-_0812484C:
- bl sub_8124A70
- b _0812489C
-_08124852:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81248C0
- bl SetVBlankCallback
- b _0812489C
- .pool
-_0812486C:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r0, =sub_8124D14
- bl sub_81248F4
- ldr r0, =sub_81248D4
- bl SetMainCallback2
-_0812489C:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081248AA:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124690
-
- thumb_func_start sub_81248C0
-sub_81248C0: @ 81248C0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81248C0
-
- thumb_func_start sub_81248D4
-sub_81248D4: @ 81248D4
- push {lr}
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81248D4
-
- thumb_func_start sub_81248F4
-sub_81248F4: @ 81248F4
- ldr r1, =gUnknown_0203A148
- ldr r1, [r1]
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0x4]
- bx lr
- .pool
- thumb_func_end sub_81248F4
-
- thumb_func_start sub_8124904
-sub_8124904: @ 8124904
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r2, =gUnknown_0203A148
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0812491A
- b _08124A2C
-_0812491A:
- movs r7, 0
- movs r3, 0
- ldr r0, =gUnknown_085A1EDC
- mov r12, r0
- adds r5, r2, 0
- movs r6, 0
-_08124926:
- ldr r0, [r5]
- lsls r1, r3, 3
- mov r2, r12
- adds r4, r1, r2
- ldrh r0, [r0, 0x8]
- ldrh r1, [r4, 0x4]
- cmp r0, r1
- bne _081249C4
- ldrh r0, [r4, 0x6]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081249CE
- ldr r0, [r5]
- ldrb r0, [r0, 0xB]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl StringLength
- movs r7, 0x1
- movs r0, 0
- movs r1, 0
- bl sub_8198070
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r2, [r5]
- adds r2, 0xC
- str r7, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r0, [r5]
- ldrb r0, [r0, 0xB]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x60
- bl GetStringRightAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x11
- str r0, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- adds r2, r4, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_03001180
- str r7, [r0]
- b _081249CE
- .pool
-_081249C4:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _08124926
-_081249CE:
- cmp r7, 0
- bne _08124A62
- ldr r0, =gUnknown_03001180
- ldr r0, [r0]
- cmp r0, 0x1
- bne _081249F4
- movs r0, 0x1
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
- b _081249FC
- .pool
-_081249F4:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
-_081249FC:
- ldr r0, =gUnknown_0203A148
- ldr r2, [r0]
- adds r2, 0xC
- movs r0, 0x1
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_03001180
- str r4, [r0]
- b _08124A62
- .pool
-_08124A2C:
- ldr r4, =gUnknown_03001180
- ldr r0, [r4]
- cmp r0, 0x1
- bne _08124A48
- movs r0, 0x1
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- movs r1, 0
- movs r2, 0x65
- movs r3, 0xD
- bl SetWindowBorderStyle
-_08124A48:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- str r0, [r4]
-_08124A62:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124904
-
- thumb_func_start sub_8124A70
-sub_8124A70: @ 8124A70
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_085A1D68
- ldr r5, =gUnknown_0203A148
- ldr r1, [r5]
- ldr r4, =0x0000088c
- adds r1, r4
- bl LZ77UnCompWram
- ldr r0, [r5]
- adds r0, r4
- str r0, [sp]
- ldr r1, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 1
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 10
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, =gUnknown_085A1F10
- bl LoadSpritePalette
- bl sub_8124AD4
- bl sub_8124BE4
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124A70
-
- thumb_func_start sub_8124AD4
-sub_8124AD4: @ 8124AD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, =0x0000086f
- str r0, [sp, 0xC]
- movs r1, 0
- mov r9, r1
- mov r2, sp
- adds r2, 0x6
- str r2, [sp, 0x14]
- mov r3, sp
- adds r3, 0xA
- str r3, [sp, 0x18]
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x10]
- add r1, sp, 0x4
- mov r10, r1
-_08124AFE:
- ldr r2, [sp, 0x18]
- str r2, [sp]
- mov r0, r9
- add r1, sp, 0x4
- mov r2, sp
- adds r2, 0x6
- ldr r3, [sp, 0x10]
- bl sub_8124630
- mov r3, r10
- ldrh r0, [r3]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r3]
- mov r1, sp
- ldrh r0, [r1, 0x6]
- adds r0, 0x2
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x6]
- ldr r2, [sp, 0x10]
- ldrh r0, [r2]
- cmp r0, 0x2
- bne _08124B38
- movs r7, 0x1
- b _08124B44
- .pool
-_08124B38:
- ldr r3, [sp, 0x18]
- ldrh r0, [r3]
- movs r7, 0
- cmp r0, 0x2
- bne _08124B44
- movs r7, 0x2
-_08124B44:
- mov r0, r10
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r3, [sp, 0x14]
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, =gUnknown_085A1F7C
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _08124BB8
- ldr r1, =gSprites
- mov r8, r1
- lsls r4, r5, 4
- adds r0, r4, r5
- lsls r6, r0, 2
- adds r2, r6, r1
- lsls r3, r7, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- ldr r0, [sp, 0xC]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08124B9C
- mov r0, r8
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =sub_8124CBC
- str r1, [r0]
- b _08124BA2
- .pool
-_08124B9C:
- adds r0, r7, 0x3
- lsls r0, 16
- lsrs r7, r0, 16
-_08124BA2:
- adds r4, r5
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- lsls r1, r7, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- mov r2, r9
- strh r2, [r4, 0x2E]
-_08124BB8:
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0xF
- bls _08124AFE
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124AD4
-
- thumb_func_start sub_8124BE4
-sub_8124BE4: @ 8124BE4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r8, r0
- ldr r6, =gUnknown_085A1F18
- ldrh r0, [r6, 0x2]
- cmp r0, 0xD5
- beq _08124C9C
- mov r5, sp
- adds r5, 0x6
- add r7, sp, 0x4
- ldr r1, =gSprites
- mov r9, r1
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_08124C0C:
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08124C84
- adds r0, r6, 0x2
- adds r0, r4, r0
- ldrh r6, [r0]
- mov r0, sp
- adds r0, 0xA
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- add r3, sp, 0x8
- bl sub_8124630
- ldrh r0, [r7]
- adds r0, 0x1
- lsls r0, 3
- strh r0, [r7]
- ldrh r0, [r5]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- movs r0, 0
- ldrsh r2, [r5, r0]
- ldr r0, =gUnknown_085A1F7C
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08124C84
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r1, r9
- adds r4, r2, r1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
- add r2, r10
- ldr r0, =sub_8124CBC
- str r0, [r2]
- adds r0, r4, 0
- movs r1, 0x6
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
-_08124C84:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r6, =gUnknown_085A1F18
- lsls r0, 2
- adds r1, r6, 0x2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xD5
- bne _08124C0C
-_08124C9C:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124BE4
-
- thumb_func_start sub_8124CBC
-sub_8124CBC: @ 8124CBC
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r1, [r0, 0x8]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _08124D00
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _08124D0E
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _08124D0E
- .pool
-_08124D00:
- movs r0, 0x10
- strh r0, [r2, 0x30]
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x15
- ands r0, r1
- strb r0, [r2]
-_08124D0E:
- pop {r0}
- bx r0
- thumb_func_end sub_8124CBC
-
- thumb_func_start sub_8124D14
-sub_8124D14: @ 8124D14
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- cmp r1, 0
- beq _08124D2C
- cmp r1, 0x1
- beq _08124D46
- b _08124D56
- .pool
-_08124D2C:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08124D56
-_08124D46:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08124D56
- ldr r0, =sub_8124D64
- bl sub_81248F4
-_08124D56:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124D14
-
- thumb_func_start sub_8124D64
-sub_8124D64: @ 8124D64
- push {r4,lr}
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _08124DF8
- bl sub_81230AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _08124DF8
- lsls r0, 2
- ldr r1, =_08124D90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08124D90:
- .4byte _08124DF8
- .4byte _08124DF8
- .4byte _08124DF8
- .4byte _08124DA8
- .4byte _08124DAE
- .4byte _08124DE0
-_08124DA8:
- bl sub_8124904
- b _08124DF8
-_08124DAE:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- cmp r0, 0x2
- beq _08124DBC
- cmp r0, 0x4
- bne _08124DF8
-_08124DBC:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, [r4]
- ldr r1, =0x00000a72
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, =sub_8124E0C
- bl sub_81248F4
- b _08124DF8
- .pool
-_08124DE0:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldr r1, =0x00000a72
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, =sub_8124E0C
- bl sub_81248F4
-_08124DF8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124D64
-
- thumb_func_start sub_8124E0C
-sub_8124E0C: @ 8124E0C
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- cmp r1, 0
- beq _08124E24
- cmp r1, 0x1
- beq _08124E3E
- b _08124F1A
- .pool
-_08124E24:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08124F1A
-_08124E3E:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08124F1A
- bl sub_812305C
- ldr r1, [r4]
- ldr r2, =0x00000a72
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08124F00
- ldrh r0, [r1, 0x8]
- cmp r0, 0xF
- beq _08124E98
- cmp r0, 0xF
- bgt _08124E6C
- cmp r0, 0
- beq _08124E84
- b _08124EBC
- .pool
-_08124E6C:
- cmp r0, 0x3A
- beq _08124E7C
- cmp r0, 0x49
- bne _08124EBC
- movs r0, 0x15
- bl sub_8084CCC
- b _08124EFA
-_08124E7C:
- movs r0, 0x16
- bl sub_8084CCC
- b _08124EFA
-_08124E84:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- movs r1, 0xD
- cmp r0, 0
- bne _08124EB0
- movs r1, 0xC
- b _08124EB0
- .pool
-_08124E98:
- ldr r0, =0x000008b4
- bl FlagGet
- lsls r0, 24
- movs r1, 0xB
- cmp r0, 0
- beq _08124EB0
- ldr r0, [r4]
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- bne _08124EB0
- movs r1, 0x14
-_08124EB0:
- adds r0, r1, 0
- bl sub_8084CCC
- b _08124EFA
- .pool
-_08124EBC:
- ldr r3, =gUnknown_085A1E3C
- ldr r0, =gUnknown_0203A148
- ldr r0, [r0]
- ldrh r1, [r0, 0x8]
- lsls r0, r1, 1
- adds r2, r0, r1
- adds r0, r3, 0x2
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _08124EE0
- bl sub_8084CCC
- b _08124EFA
- .pool
-_08124EE0:
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- bl warp1_set_2
-_08124EFA:
- bl sub_80B69DC
- b _08124F06
-_08124F00:
- ldr r0, =sub_81B58A8
- bl SetMainCallback2
-_08124F06:
- ldr r4, =gUnknown_0203A148
- ldr r0, [r4]
- cmp r0, 0
- beq _08124F16
- bl Free
- movs r0, 0
- str r0, [r4]
-_08124F16:
- bl FreeAllWindowBuffers
-_08124F1A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8124E0C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom4.s b/asm/rom4.s
index 3b6f87d84..3f59c2807 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -841,7 +841,7 @@ sub_8084CCC: @ 8084CCC
sub sp, 0x4
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r4, r0, 0
cmp r4, 0
beq _08084CFA
@@ -885,7 +885,7 @@ Overworld_SetHealLocationWarp: @ 8084D1C
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r5, r0, 0
cmp r5, 0
beq _08084D50
@@ -1187,7 +1187,7 @@ sub_8084F6C: @ 8084F6C
sub sp, 0x8
lsls r0, 24
lsrs r0, 24
- bl sub_8122CBC
+ bl GetHealLocationPointer
adds r5, r0, 0
cmp r5, 0
beq _08084FA0
diff --git a/asm/rom6.s b/asm/rom6.s
index 15c7acb95..f07689a86 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -263,7 +263,7 @@ sub_8135654: @ 8135654
cmp r0, 0
beq _0813568C
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -302,7 +302,7 @@ _081356AC:
thumb_func_start sub_81356C4
sub_81356C4: @ 81356C4
push {lr}
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -379,7 +379,7 @@ hm2_dig: @ 8135760
bl flagmods_08054D70
movs r0, 0x26
bl FieldEffectStart
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
@@ -3334,7 +3334,7 @@ sub_81370FC: @ 81370FC
cmp r0, 0
beq _08137134
ldr r4, =gSpecialVar_Result
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
@@ -3380,7 +3380,7 @@ hm2_flash: @ 8137178
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl brm_get_pokemon_selection
+ bl GetCursorSelectionMonId
ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 0e002d19a..3a3cf4269 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -1343,7 +1343,7 @@ ScriptGiveEgg: @ 80F92C8
lsrs r1, 16
mov r0, sp
movs r2, 0x1
- bl sub_8070954
+ bl CreateEgg
add r2, sp, 0x64
movs r0, 0x1
strb r0, [r2]
diff --git a/asm/trade.s b/asm/trade.s
index 57253154e..cbf980b74 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5112,7 +5112,7 @@ _08079DDE:
_08079DF0:
add r0, sp, 0xC
movs r1, 0
- bl sub_8070ECC
+ bl NameHasGenderSymbol
lsls r0, 24
movs r2, 0x83
cmp r0, 0
@@ -5122,7 +5122,7 @@ _08079DF0:
_08079E04:
add r0, sp, 0xC
movs r1, 0xFE
- bl sub_8070ECC
+ bl NameHasGenderSymbol
lsls r0, 24
movs r2, 0x83
cmp r0, 0
@@ -7948,7 +7948,7 @@ sub_807B4D0: @ 807B4D0
adds r1, r2
ldr r0, [r0]
adds r0, r1
- bl sub_80D439C
+ bl ClearMailStruct
_0807B52A:
ldr r4, =gUnknown_020322A0
ldr r0, [r4]
@@ -7985,7 +7985,7 @@ _0807B566:
ldr r0, =gUnknown_020321C0
adds r1, r0
adds r0, r7, 0
- bl sub_80D460C
+ bl GiveMailToMon2
_0807B57C:
mov r0, r9
bl sub_807B464
diff --git a/constants/flags.inc b/constants/flags.inc
index 0b375f9d6..2e4b60d73 100644
--- a/constants/flags.inc
+++ b/constants/flags.inc
@@ -131,7 +131,7 @@
.equiv FLAG_0x083, 0x83
.equiv FLAG_0x084, 0x84
.equiv FLAG_0x085, 0x85
- .equiv FLAG_0x086, 0x86
+ .equiv FLAG_PENDING_DAYCARE_EGG, 0x86
.equiv FLAG_0x087, 0x87
.equiv FLAG_0x088, 0x88
.equiv FLAG_0x089, 0x89
diff --git a/data/daycare.s b/data/daycare.s
deleted file mode 100644
index c249a668c..000000000
--- a/data/daycare.s
+++ /dev/null
@@ -1,24 +0,0 @@
-@ the third big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-
-@ 832ADD8
- .include "data/egg_moves.inc"
-
- .align 2
-gUnknown_0832B6C0:: @ 832B6C0
- .incbin "baserom.gba", 0x32b6c0, 0x20
-
-gUnknown_0832B6E0:: @ 832B6E0
- .incbin "baserom.gba", 0x32b6e0, 0x18
-
-gUnknown_0832B6F8:: @ 832B6F8
- .incbin "baserom.gba", 0x32b6f8, 0x10
-
-gEggName:: @ 832B708
- .string "タマゴ$" @ "tamago" ("egg" in Japanese)
diff --git a/data/egg_moves.inc b/data/egg_moves.inc
deleted file mode 100644
index 607f2aada..000000000
--- a/data/egg_moves.inc
+++ /dev/null
@@ -1,1306 +0,0 @@
- .align 2
-gEggMoves:: @ 832ADD8
- egg_moves_begin SPECIES_BULBASAUR
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CHARM
- .2byte MOVE_PETAL_DANCE
- .2byte MOVE_MAGICAL_LEAF
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CHARMANDER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_OUTRAGE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_SQUIRTLE
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_HAZE
- .2byte MOVE_MIST
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FLAIL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_PIDGEY
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_AIR_CUTTER
-
- egg_moves_begin SPECIES_RATTATA
- .2byte MOVE_SCREECH
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_BITE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_UPROAR
- .2byte MOVE_SWAGGER
-
- egg_moves_begin SPECIES_SPEAROW
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_TRI_ATTACK
- .2byte MOVE_ASTONISH
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_EKANS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLAM
- .2byte MOVE_SPITE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_POISON_FANG
-
- egg_moves_begin SPECIES_SANDSHREW
- .2byte MOVE_FLAIL
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_COUNTER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_NIDORAN_F
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DISABLE
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_CHARM
- .2byte MOVE_COUNTER
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_NIDORAN_M
- .2byte MOVE_COUNTER
- .2byte MOVE_DISABLE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_CONFUSION
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_VULPIX
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_FLAIL
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_HOWL
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_ZUBAT
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_ODDISH
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_FLAIL
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_CHARM
- .2byte MOVE_INGRAIN
-
- egg_moves_begin SPECIES_PARAS
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCREECH
- .2byte MOVE_COUNTER
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FLAIL
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PURSUIT
-
- egg_moves_begin SPECIES_VENONAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SCREECH
- .2byte MOVE_GIGA_DRAIN
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_DIGLETT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_SCREECH
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PURSUIT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_MEOWTH
- .2byte MOVE_SPITE
- .2byte MOVE_CHARM
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_AMNESIA
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_PSYDUCK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FORESIGHT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCHIC
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MANKEY
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MEDITATE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_REVENGE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_GROWLITHE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_HOWL
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_POLIWAG
- .2byte MOVE_MIST
- .2byte MOVE_SPLASH
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_HAZE
- .2byte MOVE_MIND_READER
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_ABRA
- .2byte MOVE_ENCORE
- .2byte MOVE_BARRIER
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MACHOP
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MEDITATE
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_ENCORE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_COUNTER
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_BELLSPROUT
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ENCORE
- .2byte MOVE_REFLECT
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_INGRAIN
- .2byte MOVE_MAGICAL_LEAF
-
- egg_moves_begin SPECIES_TENTACOOL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HAZE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_GEODUDE
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_PONYTA
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_THRASH
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_SLOWPOKE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_STOMP
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
-
- egg_moves_begin SPECIES_FARFETCH_D
- .2byte MOVE_STEEL_WING
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_GUST
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_DODUO
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDEAVOR
-
- egg_moves_begin SPECIES_SEEL
- .2byte MOVE_LICK
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_DISABLE
- .2byte MOVE_HORN_DRILL
- .2byte MOVE_SLAM
- .2byte MOVE_ENCORE
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GRIMER
- .2byte MOVE_HAZE
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_LICK
- .2byte MOVE_IMPRISON
- .2byte MOVE_CURSE
- .2byte MOVE_SHADOW_PUNCH
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_SHELLDER
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BARRIER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_SCREECH
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GASTLY
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_HAZE
- .2byte MOVE_ASTONISH
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_GRUDGE
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_ONIX
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_EXPLOSION
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_DROWZEE
- .2byte MOVE_BARRIER
- .2byte MOVE_ASSIST
- .2byte MOVE_ROLE_PLAY
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_KRABBY
- .2byte MOVE_DIG
- .2byte MOVE_HAZE
- .2byte MOVE_AMNESIA
- .2byte MOVE_FLAIL
- .2byte MOVE_SLAM
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_EXEGGCUTE
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_MOONLIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_INGRAIN
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CUBONE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SCREECH
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_LICKITUNG
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_CURSE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_KOFFING
- .2byte MOVE_SCREECH
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_RHYHORN
- .2byte MOVE_CRUNCH
- .2byte MOVE_REVERSAL
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_COUNTER
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_CHANSEY
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_AROMATHERAPY
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_TANGELA
- .2byte MOVE_FLAIL
- .2byte MOVE_CONFUSION
- .2byte MOVE_MEGA_DRAIN
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_KANGASKHAN
- .2byte MOVE_STOMP
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_DISABLE
- .2byte MOVE_COUNTER
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_HORSEA
- .2byte MOVE_FLAIL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_DISABLE
- .2byte MOVE_SPLASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_DRAGON_BREATH
-
- egg_moves_begin SPECIES_GOLDEEN
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HAZE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_MR_MIME
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_MIMIC
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_SCYTHER
- .2byte MOVE_COUNTER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BATON_PASS
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_ENDURE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_PINSIR
- .2byte MOVE_FURY_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_LAPRAS
- .2byte MOVE_FORESIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_REFRESH
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_HORN_DRILL
-
- egg_moves_begin SPECIES_EEVEE
- .2byte MOVE_CHARM
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDURE
- .2byte MOVE_CURSE
- .2byte MOVE_TICKLE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_OMANYTE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_KABUTO
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_DIG
- .2byte MOVE_FLAIL
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_AERODACTYL
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_PURSUIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_SNORLAX
- .2byte MOVE_LICK
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_DRATINI
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MIST
- .2byte MOVE_HAZE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIKORITA
- .2byte MOVE_VINE_WHIP
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_COUNTER
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_FLAIL
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_INGRAIN
- .2byte MOVE_GRASS_WHISTLE
-
- egg_moves_begin SPECIES_CYNDAQUIL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_REVERSAL
- .2byte MOVE_THRASH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_COVET
- .2byte MOVE_HOWL
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TOTODILE
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_DRAGON_CLAW
-
- egg_moves_begin SPECIES_SENTRET
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_REVERSAL
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_HOOTHOOT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_FEATHER_DANCE
-
- egg_moves_begin SPECIES_LEDYBA
- .2byte MOVE_PSYBEAM
- .2byte MOVE_BIDE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_SPINARAK
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DISABLE
- .2byte MOVE_SONIC_BOOM
- .2byte MOVE_BATON_PASS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_CHINCHOU
- .2byte MOVE_FLAIL
- .2byte MOVE_SCREECH
- .2byte MOVE_AMNESIA
-
- egg_moves_begin SPECIES_PICHU
- .2byte MOVE_REVERSAL
- .2byte MOVE_BIDE
- .2byte MOVE_PRESENT
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_WISH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_CLEFFA
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_AMNESIA
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SPLASH
- .2byte MOVE_MIMIC
- .2byte MOVE_WISH
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_IGGLYBUFF
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_PRESENT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WISH
- .2byte MOVE_FAKE_TEARS
-
- egg_moves_begin SPECIES_TOGEPI
- .2byte MOVE_PRESENT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_PECK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_NATU
- .2byte MOVE_HAZE
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_STEEL_WING
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MAREEP
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_SCREECH
- .2byte MOVE_REFLECT
- .2byte MOVE_ODOR_SLEUTH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_MARILL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PRESENT
- .2byte MOVE_AMNESIA
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SUDOWOODO
- .2byte MOVE_SELF_DESTRUCT
-
- egg_moves_begin SPECIES_HOPPIP
- .2byte MOVE_CONFUSION
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_AIPOM
- .2byte MOVE_COUNTER
- .2byte MOVE_SCREECH
- .2byte MOVE_PURSUIT
- .2byte MOVE_AGILITY
- .2byte MOVE_SPITE
- .2byte MOVE_SLAM
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_SUNKERN
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ENCORE
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_YANMA
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_SIGNAL_BEAM
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_WOOPER
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CURSE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
-
- egg_moves_begin SPECIES_MURKROW
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_PERISH_SONG
-
- egg_moves_begin SPECIES_MISDREAVUS
- .2byte MOVE_SCREECH
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_GIRAFARIG
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_WISH
- .2byte MOVE_MAGIC_COAT
-
- egg_moves_begin SPECIES_PINECO
- .2byte MOVE_REFLECT
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_FLAIL
- .2byte MOVE_SWIFT
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_DUNSPARCE
- .2byte MOVE_BIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_HEADBUTT
- .2byte MOVE_ASTONISH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_GLIGAR
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_SNUBBULL
- .2byte MOVE_METRONOME
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_REFLECT
- .2byte MOVE_PRESENT
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_SNORE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_QWILFISH
- .2byte MOVE_FLAIL
- .2byte MOVE_HAZE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_ASTONISH
-
- egg_moves_begin SPECIES_SHUCKLE
- .2byte MOVE_SWEET_SCENT
-
- egg_moves_begin SPECIES_HERACROSS
- .2byte MOVE_HARDEN
- .2byte MOVE_BIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_SNEASEL
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_BITE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_FAKE_OUT
-
- egg_moves_begin SPECIES_TEDDIURSA
- .2byte MOVE_CRUNCH
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_COUNTER
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_YAWN
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_SLUGMA
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_SWINUB
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BITE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_ICICLE_SPEAR
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_CORSOLA
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SCREECH
- .2byte MOVE_MIST
- .2byte MOVE_AMNESIA
- .2byte MOVE_BARRIER
- .2byte MOVE_INGRAIN
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_REMORAID
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_SCREECH
- .2byte MOVE_THUNDER_WAVE
- .2byte MOVE_ROCK_BLAST
-
- egg_moves_begin SPECIES_DELIBIRD
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SPLASH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_MANTINE
- .2byte MOVE_TWISTER
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_HAZE
- .2byte MOVE_SLAM
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_SKARMORY
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_PURSUIT
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_HOUNDOUR
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_RAGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_PHANPY
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SNORE
- .2byte MOVE_COUNTER
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_STANTLER
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_BITE
- .2byte MOVE_SWAGGER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_EXTRASENSORY
-
- egg_moves_begin SPECIES_TYROGUE
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HI_JUMP_KICK
- .2byte MOVE_MACH_PUNCH
- .2byte MOVE_MIND_READER
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SMOOCHUM
- .2byte MOVE_MEDITATE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_WISH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_ELEKID
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_BARRIER
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_MEDITATE
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MAGBY
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_BARRIER
- .2byte MOVE_SCREECH
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_THUNDER_PUNCH
-
- egg_moves_begin SPECIES_MILTANK
- .2byte MOVE_PRESENT
- .2byte MOVE_REVERSAL
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_ENDURE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_LARVITAR
- .2byte MOVE_PURSUIT
- .2byte MOVE_STOMP
- .2byte MOVE_OUTRAGE
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_TREECKO
- .2byte MOVE_CRUNCH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TORCHIC
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_ENDURE
- .2byte MOVE_SWAGGER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_MUDKIP
- .2byte MOVE_REFRESH
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_STOMP
- .2byte MOVE_ICE_BALL
- .2byte MOVE_MIRROR_COAT
-
- egg_moves_begin SPECIES_POOCHYENA
- .2byte MOVE_ASTONISH
- .2byte MOVE_POISON_FANG
- .2byte MOVE_COVET
- .2byte MOVE_LEER
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_ZIGZAGOON
- .2byte MOVE_CHARM
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_LOTAD
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_FLAIL
- .2byte MOVE_WATER_GUN
-
- egg_moves_begin SPECIES_SEEDOT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_AMNESIA
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_NINCADA
- .2byte MOVE_ENDURE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_TAILLOW
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_REFRESH
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_RAGE
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_SHROOMISH
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_SWAGGER
- .2byte MOVE_CHARM
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SPINDA
- .2byte MOVE_ENCORE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ASSIST
- .2byte MOVE_DISABLE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_WISH
- .2byte MOVE_TRICK
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_WINGULL
- .2byte MOVE_MIST
- .2byte MOVE_TWISTER
- .2byte MOVE_AGILITY
- .2byte MOVE_GUST
- .2byte MOVE_WATER_SPORT
-
- egg_moves_begin SPECIES_SURSKIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_MIND_READER
-
- egg_moves_begin SPECIES_WAILMER
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
- .2byte MOVE_SWAGGER
- .2byte MOVE_SNORE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SKITTY
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_WISH
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_KECLEON
- .2byte MOVE_DISABLE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_NOSEPASS
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_ROLLOUT
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_TORKOAL
- .2byte MOVE_ERUPTION
- .2byte MOVE_ENDURE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_SABLEYE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_RECOVER
- .2byte MOVE_MOONLIGHT
-
- egg_moves_begin SPECIES_BARBOACH
- .2byte MOVE_THRASH
- .2byte MOVE_WHIRLPOOL
- .2byte MOVE_SPARK
-
- egg_moves_begin SPECIES_LUVDISC
- .2byte MOVE_SPLASH
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_CORPHISH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
-
- egg_moves_begin SPECIES_FEEBAS
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_CARVANHA
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
-
- egg_moves_begin SPECIES_TRAPINCH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_GUST
-
- egg_moves_begin SPECIES_MAKUHITA
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DETECT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REVENGE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_ELECTRIKE
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEADBUTT
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_SWIFT
-
- egg_moves_begin SPECIES_NUMEL
- .2byte MOVE_HOWL
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROLLOUT
- .2byte MOVE_DEFENSE_CURL
- .2byte MOVE_STOMP
-
- egg_moves_begin SPECIES_SPHEAL
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_YAWN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_CACNEA
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ACID
- .2byte MOVE_TEETER_DANCE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_SNORUNT
- .2byte MOVE_BLOCK
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_AZURILL
- .2byte MOVE_ENCORE
- .2byte MOVE_SING
- .2byte MOVE_REFRESH
- .2byte MOVE_SLAM
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SPOINK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_PLUSLE
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MINUN
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MAWILE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_POISON_FANG
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_MEDITITE
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_DYNAMIC_PUNCH
-
- egg_moves_begin SPECIES_SWABLU
- .2byte MOVE_AGILITY
- .2byte MOVE_HAZE
- .2byte MOVE_PURSUIT
- .2byte MOVE_RAGE
-
- egg_moves_begin SPECIES_DUSKULL
- .2byte MOVE_IMPRISON
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_GRUDGE
- .2byte MOVE_MEMENTO
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_ROSELIA
- .2byte MOVE_SPIKES
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_COTTON_SPORE
-
- egg_moves_begin SPECIES_SLAKOTH
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SNORE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_GULPIN
- .2byte MOVE_DREAM_EATER
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_SMOG
- .2byte MOVE_PAIN_SPLIT
-
- egg_moves_begin SPECIES_TROPIUS
- .2byte MOVE_HEADBUTT
- .2byte MOVE_SLAM
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_WHISMUR
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SNORE
- .2byte MOVE_SWAGGER
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CLAMPERL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_BARRIER
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_ABSOL
- .2byte MOVE_BATON_PASS
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_CURSE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SHUPPET
- .2byte MOVE_DISABLE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_FORESIGHT
- .2byte MOVE_ASTONISH
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_SEVIPER
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_BODY_SLAM
-
- egg_moves_begin SPECIES_ZANGOOSE
- .2byte MOVE_FLAIL
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_ROAR
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_RELICANTH
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_AMNESIA
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ARON
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_STOMP
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CASTFORM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_VOLBEAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_ILLUMISE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_GROWTH
-
- egg_moves_begin SPECIES_LILEEP
- .2byte MOVE_BARRIER
- .2byte MOVE_RECOVER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ANORITH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_RALTS
- .2byte MOVE_DISABLE
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_MEMENTO
- .2byte MOVE_DESTINY_BOND
-
- egg_moves_begin SPECIES_BAGON
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_THRASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_TWISTER
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIMECHO
- .2byte MOVE_DISABLE
- .2byte MOVE_CURSE
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_DREAM_EATER
-
- .2byte -1
diff --git a/data/field_region_map.s b/data/field_region_map.s
deleted file mode 100644
index f179ba8ce..000000000
--- a/data/field_region_map.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085E5068:: @ 85E5068 struct BgTemplate
- .4byte 0x000001f0, 0x00002dca
-
- .align 2
-gUnknown_085E5070:: @ 85E5070
- window_template 0x00, 0x11, 0x11, 0x0c, 0x02, 0x0f, 0x0001
- window_template 0x00, 0x16, 0x01, 0x07, 0x02, 0x0f, 0x0019
- window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
diff --git a/data/heal_location.s b/data/heal_location.s
deleted file mode 100644
index 31aa1a351..000000000
--- a/data/heal_location.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859F534:: @ 859F534
- .incbin "baserom.gba", 0x59f534, 0x8
-
-gUnknown_0859F53C:: @ 859F53C
- .incbin "baserom.gba", 0x59f53c, 0xd0
diff --git a/data/menu_helpers.s b/data/menu_helpers.s
index b43af0bc4..8d0e12939 100644
--- a/data/menu_helpers.s
+++ b/data/menu_helpers.s
@@ -11,4 +11,4 @@ gUnknown_0859F51C:: @ 859F51C
.incbin "baserom.gba", 0x59f51c, 0x8
gUnknown_0859F524:: @ 859F524
- .incbin "baserom.gba", 0x59f524, 0x10
+ .incbin "baserom.gba", 0x59f524, 0x18
diff --git a/data/region_map.s b/data/region_map.s
deleted file mode 100644
index 78e6cec2f..000000000
--- a/data/region_map.s
+++ /dev/null
@@ -1,101 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859F60C:: @ 859F60C
- .incbin "baserom.gba", 0x59f60c, 0x44
-
-gUnknown_0859F650:: @ 859F650
- .incbin "baserom.gba", 0x59f650, 0xec
-
-gUnknown_0859F73C:: @ 859F73C
- .incbin "baserom.gba", 0x59f73c, 0x40
-
-gUnknown_0859F77C:: @ 859F77C
- .incbin "baserom.gba", 0x59f77c, 0xd64
-
-gUnknown_085A04E0:: @ 85A04E0
- .incbin "baserom.gba", 0x5a04e0, 0x34c
-
-gUnknown_085A082C:: @ 85A082C
- .incbin "baserom.gba", 0x5a082c, 0x20
-
-gUnknown_085A084C:: @ 85A084C
- .incbin "baserom.gba", 0x5a084c, 0x80
-
-gUnknown_085A08CC:: @ 85A08CC
- .incbin "baserom.gba", 0x5a08cc, 0x20
-
-gUnknown_085A08EC:: @ 85A08EC
- .incbin "baserom.gba", 0x5a08ec, 0x80
-
-gUnknown_085A096C:: @ 85A096C
- .incbin "baserom.gba", 0x5a096c, 0x1a4
-
-@ 85A0B10
- .include "data/region_map_entries.inc"
-
-gUnknown_085A1B24:: @ 85A1B24
- .incbin "baserom.gba", 0x5a1b24, 0x60
-
-gUnknown_085A1B84:: @ 85A1B84
- .incbin "baserom.gba", 0x5a1b84, 0x6
-
-gUnknown_085A1B8A:: @ 85A1B8A
- .incbin "baserom.gba", 0x5a1b8a, 0x22
-
-gUnknown_085A1BAC:: @ 85A1BAC
- .incbin "baserom.gba", 0x5a1bac, 0x20
-
-gUnknown_085A1BCC:: @ 85A1BCC
- .incbin "baserom.gba", 0x5a1bcc, 0x34
-
-gUnknown_085A1C00:: @ 85A1C00
- .incbin "baserom.gba", 0x5a1c00, 0x8
-
-gUnknown_085A1C08:: @ 85A1C08
- .incbin "baserom.gba", 0x5a1c08, 0x18
-
-gUnknown_085A1C20:: @ 85A1C20
- .incbin "baserom.gba", 0x5a1c20, 0x10
-
-gUnknown_085A1C30:: @ 85A1C30
- .incbin "baserom.gba", 0x5a1c30, 0x4
-
-gUnknown_085A1C34:: @ 85A1C34
- .incbin "baserom.gba", 0x5a1c34, 0x4
-
-gUnknown_085A1C38:: @ 85A1C38
- .incbin "baserom.gba", 0x5a1c38, 0x20
-
-gUnknown_085A1C58:: @ 85A1C58
- .incbin "baserom.gba", 0x5a1c58, 0x38
-
-gUnknown_085A1C90:: @ 85A1C90
- .incbin "baserom.gba", 0x5a1c90, 0xd8
-
-gUnknown_085A1D68:: @ 85A1D68
- .incbin "baserom.gba", 0x5a1d68, 0xd4
-
-gUnknown_085A1E3C:: @ 85A1E3C
- .incbin "baserom.gba", 0x5a1e3c, 0xa0
-
-gUnknown_085A1EDC:: @ 85A1EDC
- .incbin "baserom.gba", 0x5a1edc, 0x8
-
-gUnknown_085A1EE4:: @ 85A1EE4
- .incbin "baserom.gba", 0x5a1ee4, 0xc
-
-gUnknown_085A1EF0:: @ 85A1EF0
- .incbin "baserom.gba", 0x5a1ef0, 0x20
-
-gUnknown_085A1F10:: @ 85A1F10
- .incbin "baserom.gba", 0x5a1f10, 0x8
-
-gUnknown_085A1F18:: @ 85A1F18
- .incbin "baserom.gba", 0x5a1f18, 0x64
-
-gUnknown_085A1F7C:: @ 85A1F7C
- .incbin "baserom.gba", 0x5a1f7c, 0x18
diff --git a/data/region_map_entries.inc b/data/region_map_entries.inc
deleted file mode 100644
index ced01648c..000000000
--- a/data/region_map_entries.inc
+++ /dev/null
@@ -1,809 +0,0 @@
-gMapName_LittlerootTown:: @ 85A0B10
- .string "LITTLEROOT TOWN$"
-
-gMapName_OldaleTown:: @ 85A0B20
- .string "OLDALE TOWN$"
-
-gMapName_DewfordTown:: @ 85A0B2C
- .string "DEWFORD TOWN$"
-
-gMapName_LavaridgeTown:: @ 85A0B39
- .string "LAVARIDGE TOWN$"
-
-gMapName_FallarborTown:: @ 85A0B48
- .string "FALLARBOR TOWN$"
-
-gMapName_VerdanturfTown:: @ 85A0B57
- .string "VERDANTURF TOWN$"
-
-gMapName_PacifidlogTown:: @ 85A0B67
- .string "PACIFIDLOG TOWN$"
-
-gMapName_PetalburgCity:: @ 85A0B77
- .string "PETALBURG CITY$"
-
-gMapName_SlateportCity:: @ 85A0B86
- .string "SLATEPORT CITY$"
-
-gMapName_MauvilleCity:: @ 85A0B95
- .string "MAUVILLE CITY$"
-
-gMapName_RustboroCity:: @ 85A0BA3
- .string "RUSTBORO CITY$"
-
-gMapName_FortreeCity:: @ 85A0BB1
- .string "FORTREE CITY$"
-
-gMapName_LilycoveCity:: @ 85A0BBE
- .string "LILYCOVE CITY$"
-
-gMapName_MossdeepCity:: @ 85A0BCC
- .string "MOSSDEEP CITY$"
-
-gMapName_SootopolisCity:: @ 85A0BDA
- .string "SOOTOPOLIS CITY$"
-
-gMapName_EverGrandeCity:: @ 85A0BEA
- .string "EVER GRANDE CITY$"
-
-gMapName_Route101:: @ 85A0BFB
- .string "ROUTE 101$"
-
-gMapName_Route102:: @ 85A0C05
- .string "ROUTE 102$"
-
-gMapName_Route103:: @ 85A0C0F
- .string "ROUTE 103$"
-
-gMapName_Route104:: @ 85A0C19
- .string "ROUTE 104$"
-
-gMapName_Route105:: @ 85A0C23
- .string "ROUTE 105$"
-
-gMapName_Route106:: @ 85A0C2D
- .string "ROUTE 106$"
-
-gMapName_Route107:: @ 85A0C37
- .string "ROUTE 107$"
-
-gMapName_Route108:: @ 85A0C41
- .string "ROUTE 108$"
-
-gMapName_Route109:: @ 85A0C4B
- .string "ROUTE 109$"
-
-gMapName_Route110:: @ 85A0C55
- .string "ROUTE 110$"
-
-gMapName_Route111:: @ 85A0C5F
- .string "ROUTE 111$"
-
-gMapName_Route112:: @ 85A0C69
- .string "ROUTE 112$"
-
-gMapName_Route113:: @ 85A0C73
- .string "ROUTE 113$"
-
-gMapName_Route114:: @ 85A0C7D
- .string "ROUTE 114$"
-
-gMapName_Route115:: @ 85A0C87
- .string "ROUTE 115$"
-
-gMapName_Route116:: @ 85A0C91
- .string "ROUTE 116$"
-
-gMapName_Route117:: @ 85A0C9B
- .string "ROUTE 117$"
-
-gMapName_Route118:: @ 85A0CA5
- .string "ROUTE 118$"
-
-gMapName_Route119:: @ 85A0CAF
- .string "ROUTE 119$"
-
-gMapName_Route120:: @ 85A0CB9
- .string "ROUTE 120$"
-
-gMapName_Route121:: @ 85A0CC3
- .string "ROUTE 121$"
-
-gMapName_Route122:: @ 85A0CCD
- .string "ROUTE 122$"
-
-gMapName_Route123:: @ 85A0CD7
- .string "ROUTE 123$"
-
-gMapName_Route124:: @ 85A0CE1
- .string "ROUTE 124$"
-
-gMapName_Route125:: @ 85A0CEB
- .string "ROUTE 125$"
-
-gMapName_Route126:: @ 85A0CF5
- .string "ROUTE 126$"
-
-gMapName_Route127:: @ 85A0CFF
- .string "ROUTE 127$"
-
-gMapName_Route128:: @ 85A0D09
- .string "ROUTE 128$"
-
-gMapName_Route129:: @ 85A0D13
- .string "ROUTE 129$"
-
-gMapName_Route130:: @ 85A0D1D
- .string "ROUTE 130$"
-
-gMapName_Route131:: @ 85A0D27
- .string "ROUTE 131$"
-
-gMapName_Route132:: @ 85A0D31
- .string "ROUTE 132$"
-
-gMapName_Route133:: @ 85A0D3B
- .string "ROUTE 133$"
-
-gMapName_Route134:: @ 85A0D45
- .string "ROUTE 134$"
-
-gMapName_Underwater:: @ 85A0D4F
- .string "UNDERWATER$"
-
-gMapName_GraniteCave:: @ 85A0D5A
- .string "GRANITE CAVE$"
-
-gMapName_MtChimney:: @ 85A0D67
- .string "MT. CHIMNEY$"
-
-gMapName_SafariZone:: @ 85A0D73
- .string "SAFARI ZONE$"
-
-gMapName_BattleFrontier:: @ 85A0D7F
- .string "BATTLE FRONTIER$"
-
-gMapName_PetalburgWoods:: @ 85A0D8F
- .string "PETALBURG WOODS$"
-
-gMapName_RusturfTunnel:: @ 85A0D9F
- .string "RUSTURF TUNNEL$"
-
-gMapName_AbandonedShip:: @ 85A0DAE
- .string "ABANDONED SHIP$"
-
-gMapName_NewMauville:: @ 85A0DBD
- .string "NEW MAUVILLE$"
-
-gMapName_MeteorFalls:: @ 85A0DCA
- .string "METEOR FALLS$"
-
-gMapName_MtPyre:: @ 85A0DD7
- .string "MT. PYRE$"
-
-@ This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
-@ hideout in Emerald with their own new region map entries, and this name
-@ doesn't seem to be used anymore.
-gMapName_AquaHideoutOld:: @ 85A0DE0
- .string "{AQUA} HIDEOUT$"
-
-gMapName_ShoalCave:: @ 85A0DEB
- .string "SHOAL CAVE$"
-
-gMapName_SeafloorCavern:: @ 85A0DF6
- .string "SEAFLOOR CAVERN$"
-
-gMapName_VictoryRoad:: @ 85A0E06
- .string "VICTORY ROAD$"
-
-gMapName_MirageIsland:: @ 85A0E13
- .string "MIRAGE ISLAND$"
-
-gMapName_CaveOfOrigin:: @ 85A0E21
- .string "CAVE OF ORIGIN$"
-
-gMapName_SouthernIsland:: @ 85A0E30
- .string "SOUTHERN ISLAND$"
-
-gMapName_FieryPath:: @ 85A0E40
- .string "FIERY PATH$"
-
-gMapName_JaggedPass:: @ 85A0E4B
- .string "JAGGED PASS$"
-
-gMapName_SealedChamber:: @ 85A0E57
- .string "SEALED CHAMBER$"
-
-gMapName_ScorchedSlab:: @ 85A0E66
- .string "SCORCHED SLAB$"
-
-gMapName_IslandCave:: @ 85A0E74
- .string "ISLAND CAVE$"
-
-gMapName_DesertRuins:: @ 85A0E80
- .string "DESERT RUINS$"
-
-gMapName_AncientTomb:: @ 85A0E8D
- .string "ANCIENT TOMB$"
-
-gMapName_InsideOfTruck:: @ 85A0E9A
- .string "INSIDE OF TRUCK$"
-
-gMapName_SkyPillar:: @ 85A0EAA
- .string "SKY PILLAR$"
-
-gMapName_SecretBase:: @ 85A0EB5
- .string "SECRET BASE$"
-
-gMapName_None:: @ 85A0EC1
- .string "$"
-
-gMapName_PalletTown:: @ 85A0EC2
- .string "PALLET TOWN$"
-
-gMapName_ViridianCity:: @ 85A0ECE
- .string "VIRIDIAN CITY$"
-
-gMapName_PewterCity:: @ 85A0EDC
- .string "PEWTER CITY$"
-
-gMapName_CeruleanCity:: @ 85A0EE8
- .string "CERULEAN CITY$"
-
-gMapName_LavenderTown:: @ 85A0EF6
- .string "LAVENDER TOWN$"
-
-gMapName_VermilionCity:: @ 85A0F04
- .string "VERMILION CITY$"
-
-gMapName_CeladonCity:: @ 85A0F13
- .string "CELADON CITY$"
-
-gMapName_FuchsiaCity:: @ 85A0F20
- .string "FUCHSIA CITY$"
-
-gMapName_CinnabarIsland:: @ 85A0F2D
- .string "CINNABAR ISLAND$"
-
-gMapName_IndigoPlateau:: @ 85A0F3D
- .string "INDIGO PLATEAU$"
-
-gMapName_SaffronCity:: @ 85A0F4C
- .string "SAFFRON CITY$"
-
-gMapName_Route4:: @ 85A0F59
- .string "ROUTE 4$"
-
-gMapName_Route10:: @ 85A0F61
- .string "ROUTE 10$"
-
-gMapName_Route1:: @ 85A0F6A
- .string "ROUTE 1$"
-
-gMapName_Route2:: @ 85A0F72
- .string "ROUTE 2$"
-
-gMapName_Route3:: @ 85A0F7A
- .string "ROUTE 3$"
-
-gMapName_Route4_2:: @ 85A0F82
- .string "ROUTE 4$"
-
-gMapName_Route5:: @ 85A0F8A
- .string "ROUTE 5$"
-
-gMapName_Route6:: @ 85A0F92
- .string "ROUTE 6$"
-
-gMapName_Route7:: @ 85A0F9A
- .string "ROUTE 7$"
-
-gMapName_Route8:: @ 85A0FA2
- .string "ROUTE 8$"
-
-gMapName_Route9:: @ 85A0FAA
- .string "ROUTE 9$"
-
-gMapName_Route10_2:: @ 85A0FB2
- .string "ROUTE 10$"
-
-gMapName_Route11:: @ 85A0FBB
- .string "ROUTE 11$"
-
-gMapName_Route12:: @ 85A0FC4
- .string "ROUTE 12$"
-
-gMapName_Route13:: @ 85A0FCD
- .string "ROUTE 13$"
-
-gMapName_Route14:: @ 85A0FD6
- .string "ROUTE 14$"
-
-gMapName_Route15:: @ 85A0FDF
- .string "ROUTE 15$"
-
-gMapName_Route16:: @ 85A0FE8
- .string "ROUTE 16$"
-
-gMapName_Route17:: @ 85A0FF1
- .string "ROUTE 17$"
-
-gMapName_Route18:: @ 85A0FFA
- .string "ROUTE 18$"
-
-gMapName_Route19:: @ 85A1003
- .string "ROUTE 19$"
-
-gMapName_Route20:: @ 85A100C
- .string "ROUTE 20$"
-
-gMapName_Route21:: @ 85A1015
- .string "ROUTE 21$"
-
-gMapName_Route22:: @ 85A101E
- .string "ROUTE 22$"
-
-gMapName_Route23:: @ 85A1027
- .string "ROUTE 23$"
-
-gMapName_Route24:: @ 85A1030
- .string "ROUTE 24$"
-
-gMapName_Route25:: @ 85A1039
- .string "ROUTE 25$"
-
-gMapName_ViridianForest:: @ 85A1042
- .string "VIRIDIAN FOREST$"
-
-gMapName_MtMoon:: @ 85A1052
- .string "MT. MOON$"
-
-gMapName_SSAnne:: @ 85A105B
- .string "S.S. ANNE$"
-
-gMapName_UndergroundPath:: @ 85A1065
- .string "UNDERGROUND PATH$"
-
-gMapName_UndergroundPath2:: @ 85A1076
- .string "UNDERGROUND PATH$"
-
-gMapName_DiglettsCave:: @ 85A1087
- .string "DIGLETT’S CAVE$"
-
-gMapName_KantoVictoryRoad:: @ 85A1096
- .string "VICTORY ROAD$"
-
-gMapName_RocketHideout:: @ 85A10A3
- .string "ROCKET HIDEOUT$"
-
-gMapName_SilphCo:: @ 85A10B2
- .string "SILPH CO.$"
-
-gMapName_PokemonMansion:: @ 85A10BC
- .string "POKéMON MANSION$"
-
-gMapName_KantoSafariZone:: @ 85A10CC
- .string "SAFARI ZONE$"
-
-gMapName_PokemonLeague:: @ 85A10D8
- .string "POKéMON LEAGUE$"
-
-gMapName_RockTunnel:: @ 85A10E7
- .string "ROCK TUNNEL$"
-
-gMapName_SeafoamIslands:: @ 85A10F3
- .string "SEAFOAM ISLANDS$"
-
-gMapName_PokemonTower:: @ 85A1103
- .string "POKéMON TOWER$"
-
-gMapName_CeruleanCave:: @ 85A1111
- .string "CERULEAN CAVE$"
-
-gMapName_PowerPlant:: @ 85A111F
- .string "POWER PLANT$"
-
-gMapName_OneIsland:: @ 85A112B
- .string "ONE ISLAND$"
-
-gMapName_TwoIsland:: @ 85A1136
- .string "TWO ISLAND$"
-
-gMapName_ThreeIsland:: @ 85A1141
- .string "THREE ISLAND$"
-
-gMapName_FourIsland:: @ 85A114E
- .string "FOUR ISLAND$"
-
-gMapName_FiveIsland:: @ 85A115A
- .string "FIVE ISLAND$"
-
-gMapName_SevenIsland:: @ 85A1166
- .string "SEVEN ISLAND$"
-
-gMapName_SixIsland:: @ 85A1173
- .string "SIX ISLAND$"
-
-gMapName_KindleRoad:: @ 85A117E
- .string "KINDLE ROAD$"
-
-gMapName_TreasureBeach:: @ 85A118A
- .string "TREASURE BEACH$"
-
-gMapName_CapeBrink:: @ 85A1199
- .string "CAPE BRINK$"
-
-gMapName_BondBridge:: @ 85A11A4
- .string "BOND BRIDGE$"
-
-gMapName_ThreeIslePort:: @ 85A11B0
- .string "THREE ISLE PORT$"
-
-gMapName_SeviiIsle6:: @ 85A11C0
- .string "SEVII ISLE 6$"
-
-gMapName_SeviiIsle7:: @ 85A11CD
- .string "SEVII ISLE 7$"
-
-gMapName_SeviiIsle8:: @ 85A11DA
- .string "SEVII ISLE 8$"
-
-gMapName_SeviiIsle9:: @ 85A11E7
- .string "SEVII ISLE 9$"
-
-gMapName_ResortGorgeous:: @ 85A11F4
- .string "RESORT GORGEOUS$"
-
-gMapName_WaterLabyrinth:: @ 85A1204
- .string "WATER LABYRINTH$"
-
-gMapName_FiveIsleMeadow:: @ 85A1214
- .string "FIVE ISLE MEADOW$"
-
-gMapName_MemorialPillar:: @ 85A1225
- .string "MEMORIAL PILLAR$"
-
-gMapName_OutcastIsland:: @ 85A1235
- .string "OUTCAST ISLAND$"
-
-gMapName_GreenPath:: @ 85A1244
- .string "GREEN PATH$"
-
-gMapName_WaterPath:: @ 85A124F
- .string "WATER PATH$"
-
-gMapName_RuinValley:: @ 85A125A
- .string "RUIN VALLEY$"
-
-gMapName_TrainerTower:: @ 85A1266
- .string "TRAINER TOWER$"
-
-gMapName_CanyonEntrance:: @ 85A1274
- .string "CANYON ENTRANCE$"
-
-gMapName_SevaultCanyon:: @ 85A1284
- .string "SEVAULT CANYON$"
-
-gMapName_TanobyRuins:: @ 85A1293
- .string "TANOBY RUINS$"
-
-gMapName_SeviiIsle22:: @ 85A12A0
- .string "SEVII ISLE 22$"
-
-gMapName_SeviiIsle23:: @ 85A12AE
- .string "SEVII ISLE 23$"
-
-gMapName_SeviiIsle24:: @ 85A12BC
- .string "SEVII ISLE 24$"
-
-gMapName_NavelRock:: @ 85A12CA
- .string "NAVEL ROCK$"
-
-gMapName_MtEmber:: @ 85A12D5
- .string "MT. EMBER$"
-
-gMapName_BerryForest:: @ 85A12DF
- .string "BERRY FOREST$"
-
-gMapName_IcefallCave:: @ 85A12EC
- .string "ICEFALL CAVE$"
-
-gMapName_RocketWarehouse:: @ 85A12F9
- .string "ROCKET WAREHOUSE$"
-
-gMapName_TrainerTower2:: @ 85A130A
- .string "TRAINER TOWER$"
-
-gMapName_DottedHole:: @ 85A1318
- .string "DOTTED HOLE$"
-
-gMapName_LostCave:: @ 85A1324
- .string "LOST CAVE$"
-
-gMapName_PatternBush:: @ 85A132E
- .string "PATTERN BUSH$"
-
-gMapName_AlteringCave:: @ 85A133B
- .string "ALTERING CAVE$"
-
-gMapName_TanobyChambers:: @ 85A1349
- .string "TANOBY CHAMBERS$"
-
-gMapName_ThreeIslePath:: @ 85A1359
- .string "THREE ISLE PATH$"
-
-gMapName_TanobyKey:: @ 85A1369
- .string "TANOBY KEY$"
-
-gMapName_BirthIsland:: @ 85A1374
- .string "BIRTH ISLAND$"
-
-gMapName_MoneanChamber:: @ 85A1381
- .string "MONEAN CHAMBER$"
-
-gMapName_LiptooChamber:: @ 85A1390
- .string "LIPTOO CHAMBER$"
-
-gMapName_WeepthChamber:: @ 85A139F
- .string "WEEPTH CHAMBER$"
-
-gMapName_DilfordChamber:: @ 85A13AE
- .string "DILFORD CHAMBER$"
-
-gMapName_ScufibChamber:: @ 85A13BE
- .string "SCUFIB CHAMBER$"
-
-gMapName_RixyChamber:: @ 85A13CD
- .string "RIXY CHAMBER$"
-
-gMapName_ViapoisChamber:: @ 85A13DA
- .string "VIAPOIS CHAMBER$"
-
-gMapName_EmberSpa:: @ 85A13EA
- .string "EMBER SPA$"
-
-gMapName_SpecialArea:: @ 85A13F4
- .string "SPECIAL AREA$"
-
-gMapName_AquaHideout:: @ 85A1401
- .string "AQUA HIDEOUT$"
-
-gMapName_MagmaHideout:: @ 85A140E
- .string "MAGMA HIDEOUT$"
-
-gMapName_MirageTower:: @ 85A141C
- .string "MIRAGE TOWER$"
-
-gMapName_FarawayIsland:: @ 85A1429
- .string "FARAWAY ISLAND$"
-
-gMapName_ArtisanCave:: @ 85A1438
- .string "ARTISAN CAVE$"
-
-gMapName_MarineCave:: @ 85A1445
- .string "MARINE CAVE$"
-
-gMapName_TerraCave:: @ 85A1451
- .string "TERRA CAVE$"
-
-gMapName_DesertUnderpass:: @ 85A145C
- .string "DESERT UNDERPASS$"
-
-gMapName_TrainerHill:: @ 85A146D
- .string "TRAINER HILL$"
-
- .align 2
-gRegionMapEntries:: @ 85A147C
- region_map_entry 4, 11, 1, 1, LittlerootTown
- region_map_entry 4, 9, 1, 1, OldaleTown
- region_map_entry 2, 14, 1, 1, DewfordTown
- region_map_entry 5, 3, 1, 1, LavaridgeTown
- region_map_entry 3, 0, 1, 1, FallarborTown
- region_map_entry 4, 6, 1, 1, VerdanturfTown
- region_map_entry 17, 10, 1, 1, PacifidlogTown
- region_map_entry 1, 9, 1, 1, PetalburgCity
- region_map_entry 8, 10, 1, 2, SlateportCity
- region_map_entry 8, 6, 2, 1, MauvilleCity
- region_map_entry 0, 5, 1, 2, RustboroCity
- region_map_entry 12, 0, 1, 1, FortreeCity
- region_map_entry 18, 3, 2, 1, LilycoveCity
- region_map_entry 24, 5, 2, 1, MossdeepCity
- region_map_entry 21, 7, 1, 1, SootopolisCity
- region_map_entry 27, 8, 1, 2, EverGrandeCity
- region_map_entry 4, 10, 1, 1, Route101
- region_map_entry 2, 9, 2, 1, Route102
- region_map_entry 4, 8, 4, 1, Route103
- region_map_entry 0, 7, 1, 3, Route104
- region_map_entry 0, 10, 1, 3, Route105
- region_map_entry 0, 13, 2, 1, Route106
- region_map_entry 3, 14, 3, 1, Route107
- region_map_entry 6, 14, 2, 1, Route108
- region_map_entry 8, 12, 1, 3, Route109
- region_map_entry 8, 7, 1, 3, Route110
- region_map_entry 8, 0, 1, 6, Route111
- region_map_entry 6, 3, 2, 1, Route112
- region_map_entry 4, 0, 4, 1, Route113
- region_map_entry 1, 0, 2, 3, Route114
- region_map_entry 0, 2, 1, 3, Route115
- region_map_entry 1, 5, 4, 1, Route116
- region_map_entry 5, 6, 3, 1, Route117
- region_map_entry 10, 6, 2, 1, Route118
- region_map_entry 11, 0, 1, 6, Route119
- region_map_entry 13, 0, 1, 4, Route120
- region_map_entry 14, 3, 4, 1, Route121
- region_map_entry 16, 4, 1, 2, Route122
- region_map_entry 12, 6, 5, 1, Route123
- region_map_entry 20, 3, 4, 3, Route124
- region_map_entry 24, 3, 2, 2, Route125
- region_map_entry 20, 6, 3, 3, Route126
- region_map_entry 23, 6, 3, 3, Route127
- region_map_entry 23, 9, 4, 1, Route128
- region_map_entry 24, 10, 2, 1, Route129
- region_map_entry 21, 10, 3, 1, Route130
- region_map_entry 18, 10, 3, 1, Route131
- region_map_entry 15, 10, 2, 1, Route132
- region_map_entry 12, 10, 3, 1, Route133
- region_map_entry 9, 10, 3, 1, Route134
- region_map_entry 20, 3, 4, 3, Underwater
- region_map_entry 20, 6, 3, 3, Underwater
- region_map_entry 23, 6, 3, 3, Underwater
- region_map_entry 23, 9, 4, 1, Underwater
- region_map_entry 21, 7, 1, 1, Underwater
- region_map_entry 1, 13, 1, 1, GraniteCave
- region_map_entry 6, 2, 1, 1, MtChimney
- region_map_entry 16, 2, 1, 1, SafariZone
- region_map_entry 22, 12, 1, 1, BattleFrontier
- region_map_entry 0, 8, 1, 1, PetalburgWoods
- region_map_entry 2, 5, 1, 1, RusturfTunnel
- region_map_entry 6, 14, 1, 1, AbandonedShip
- region_map_entry 8, 7, 1, 1, NewMauville
- region_map_entry 0, 3, 1, 1, MeteorFalls
- region_map_entry 1, 2, 1, 1, MeteorFalls
- region_map_entry 16, 4, 1, 1, MtPyre
- region_map_entry 19, 3, 1, 1, AquaHideoutOld
- region_map_entry 24, 4, 1, 1, ShoalCave
- region_map_entry 24, 9, 1, 1, SeafloorCavern
- region_map_entry 24, 9, 1, 1, Underwater
- region_map_entry 27, 9, 1, 1, VictoryRoad
- region_map_entry 17, 10, 1, 1, MirageIsland
- region_map_entry 21, 7, 1, 1, CaveOfOrigin
- region_map_entry 12, 14, 1, 1, SouthernIsland
- region_map_entry 6, 3, 1, 1, FieryPath
- region_map_entry 7, 3, 1, 1, FieryPath
- region_map_entry 6, 3, 1, 1, JaggedPass
- region_map_entry 7, 2, 1, 1, JaggedPass
- region_map_entry 11, 10, 1, 1, SealedChamber
- region_map_entry 11, 10, 1, 1, Underwater
- region_map_entry 13, 0, 1, 1, ScorchedSlab
- region_map_entry 0, 10, 1, 1, IslandCave
- region_map_entry 8, 3, 1, 1, DesertRuins
- region_map_entry 13, 2, 1, 1, AncientTomb
- region_map_entry 0, 0, 1, 1, InsideOfTruck
- region_map_entry 19, 10, 1, 1, SkyPillar
- region_map_entry 0, 0, 1, 1, SecretBase
- region_map_entry 0, 0, 1, 1, None
- region_map_entry 0, 0, 1, 1, PalletTown
- region_map_entry 0, 0, 1, 1, ViridianCity
- region_map_entry 0, 0, 1, 1, PewterCity
- region_map_entry 0, 0, 1, 1, CeruleanCity
- region_map_entry 0, 0, 1, 1, LavenderTown
- region_map_entry 0, 0, 1, 1, VermilionCity
- region_map_entry 0, 0, 1, 1, CeladonCity
- region_map_entry 0, 0, 1, 1, FuchsiaCity
- region_map_entry 0, 0, 1, 1, CinnabarIsland
- region_map_entry 0, 0, 1, 1, IndigoPlateau
- region_map_entry 0, 0, 1, 1, SaffronCity
- region_map_entry 0, 0, 1, 1, Route4
- region_map_entry 0, 0, 1, 1, Route10
- region_map_entry 0, 0, 1, 1, Route1
- region_map_entry 0, 0, 1, 1, Route2
- region_map_entry 0, 0, 1, 1, Route3
- region_map_entry 0, 0, 1, 1, Route4_2
- region_map_entry 0, 0, 1, 1, Route5
- region_map_entry 0, 0, 1, 1, Route6
- region_map_entry 0, 0, 1, 1, Route7
- region_map_entry 0, 0, 1, 1, Route8
- region_map_entry 0, 0, 1, 1, Route9
- region_map_entry 0, 0, 1, 1, Route10_2
- region_map_entry 0, 0, 1, 1, Route11
- region_map_entry 0, 0, 1, 1, Route12
- region_map_entry 0, 0, 1, 1, Route13
- region_map_entry 0, 0, 1, 1, Route14
- region_map_entry 0, 0, 1, 1, Route15
- region_map_entry 0, 0, 1, 1, Route16
- region_map_entry 0, 0, 1, 1, Route17
- region_map_entry 0, 0, 1, 1, Route18
- region_map_entry 0, 0, 1, 1, Route19
- region_map_entry 0, 0, 1, 1, Route20
- region_map_entry 0, 0, 1, 1, Route21
- region_map_entry 0, 0, 1, 1, Route22
- region_map_entry 0, 0, 1, 1, Route23
- region_map_entry 0, 0, 1, 1, Route24
- region_map_entry 0, 0, 1, 1, Route25
- region_map_entry 0, 0, 1, 1, ViridianForest
- region_map_entry 0, 0, 1, 1, MtMoon
- region_map_entry 0, 0, 1, 1, SSAnne
- region_map_entry 0, 0, 1, 1, UndergroundPath
- region_map_entry 0, 0, 1, 1, UndergroundPath2
- region_map_entry 0, 0, 1, 1, DiglettsCave
- region_map_entry 0, 0, 1, 1, KantoVictoryRoad
- region_map_entry 0, 0, 1, 1, RocketHideout
- region_map_entry 0, 0, 1, 1, SilphCo
- region_map_entry 0, 0, 1, 1, PokemonMansion
- region_map_entry 0, 0, 1, 1, KantoSafariZone
- region_map_entry 0, 0, 1, 1, PokemonLeague
- region_map_entry 0, 0, 1, 1, RockTunnel
- region_map_entry 0, 0, 1, 1, SeafoamIslands
- region_map_entry 0, 0, 1, 1, PokemonTower
- region_map_entry 0, 0, 1, 1, CeruleanCave
- region_map_entry 0, 0, 1, 1, PowerPlant
- region_map_entry 0, 0, 1, 1, OneIsland
- region_map_entry 0, 0, 1, 1, TwoIsland
- region_map_entry 0, 0, 1, 1, ThreeIsland
- region_map_entry 0, 0, 1, 1, FourIsland
- region_map_entry 0, 0, 1, 1, FiveIsland
- region_map_entry 0, 0, 1, 1, SevenIsland
- region_map_entry 0, 0, 1, 1, SixIsland
- region_map_entry 0, 0, 1, 1, KindleRoad
- region_map_entry 0, 0, 1, 1, TreasureBeach
- region_map_entry 0, 0, 1, 1, CapeBrink
- region_map_entry 0, 0, 1, 1, BondBridge
- region_map_entry 0, 0, 1, 1, ThreeIslePort
- region_map_entry 0, 0, 1, 1, SeviiIsle6
- region_map_entry 0, 0, 1, 1, SeviiIsle7
- region_map_entry 0, 0, 1, 1, SeviiIsle8
- region_map_entry 0, 0, 1, 1, SeviiIsle9
- region_map_entry 0, 0, 1, 1, ResortGorgeous
- region_map_entry 0, 0, 1, 1, WaterLabyrinth
- region_map_entry 0, 0, 1, 1, FiveIsleMeadow
- region_map_entry 0, 0, 1, 1, MemorialPillar
- region_map_entry 0, 0, 1, 1, OutcastIsland
- region_map_entry 0, 0, 1, 1, GreenPath
- region_map_entry 0, 0, 1, 1, WaterPath
- region_map_entry 0, 0, 1, 1, RuinValley
- region_map_entry 0, 0, 1, 1, TrainerTower
- region_map_entry 0, 0, 1, 1, CanyonEntrance
- region_map_entry 0, 0, 1, 1, SevaultCanyon
- region_map_entry 0, 0, 1, 1, TanobyRuins
- region_map_entry 0, 0, 1, 1, SeviiIsle22
- region_map_entry 0, 0, 1, 1, SeviiIsle23
- region_map_entry 0, 0, 1, 1, SeviiIsle24
- region_map_entry 0, 0, 1, 1, NavelRock
- region_map_entry 0, 0, 1, 1, MtEmber
- region_map_entry 0, 0, 1, 1, BerryForest
- region_map_entry 0, 0, 1, 1, IcefallCave
- region_map_entry 0, 0, 1, 1, RocketWarehouse
- region_map_entry 0, 0, 1, 1, TrainerTower2
- region_map_entry 0, 0, 1, 1, DottedHole
- region_map_entry 0, 0, 1, 1, LostCave
- region_map_entry 0, 0, 1, 1, PatternBush
- region_map_entry 0, 0, 1, 1, AlteringCave
- region_map_entry 0, 0, 1, 1, TanobyChambers
- region_map_entry 0, 0, 1, 1, ThreeIslePath
- region_map_entry 0, 0, 1, 1, TanobyKey
- region_map_entry 0, 0, 1, 1, BirthIsland
- region_map_entry 0, 0, 1, 1, MoneanChamber
- region_map_entry 0, 0, 1, 1, LiptooChamber
- region_map_entry 0, 0, 1, 1, WeepthChamber
- region_map_entry 0, 0, 1, 1, DilfordChamber
- region_map_entry 0, 0, 1, 1, ScufibChamber
- region_map_entry 0, 0, 1, 1, RixyChamber
- region_map_entry 0, 0, 1, 1, ViapoisChamber
- region_map_entry 0, 0, 1, 1, EmberSpa
- region_map_entry 0, 0, 1, 1, SpecialArea
- region_map_entry 19, 3, 1, 1, AquaHideout
- region_map_entry 6, 3, 1, 1, MagmaHideout
- region_map_entry 8, 2, 1, 1, MirageTower
- region_map_entry 0, 0, 1, 1, BirthIsland
- region_map_entry 0, 0, 1, 1, FarawayIsland
- region_map_entry 22, 12, 1, 1, ArtisanCave
- region_map_entry 0, 0, 1, 1, MarineCave
- region_map_entry 0, 0, 1, 1, Underwater
- region_map_entry 0, 0, 1, 1, TerraCave
- region_map_entry 0, 10, 1, 3, Underwater
- region_map_entry 24, 3, 2, 2, Underwater
- region_map_entry 24, 10, 2, 1, Underwater
- region_map_entry 2, 0, 1, 1, DesertUnderpass
- region_map_entry 6, 8, 1, 1, AlteringCave
- region_map_entry 0, 0, 1, 1, NavelRock
- region_map_entry 8, 4, 1, 1, TrainerHill
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index c38305f20..71e3303b5 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -1058,7 +1058,7 @@ OldaleTown_PokemonCenter_2F_EventScript_27759F:: @ 827759F
end
OldaleTown_PokemonCenter_2F_EventScript_277626:: @ 8277626
- specialvar VAR_RESULT, sub_80C7008
+ specialvar VAR_RESULT, CountPartyNonEggMons
compare_var_to_value VAR_RESULT, 2
goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_27764C
specialvar VAR_RESULT, sub_80F9370
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index 63ebafe4f..27e617128 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -1,8 +1,8 @@
Route117_EventScript_291C18:: @ 8291C18
lock
faceplayer
- special sp0B5_daycare
- specialvar VAR_RESULT, sp0B6_daycare
+ special GetDaycareMonNicknames
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_291C4D
compare_var_to_value VAR_RESULT, 2
@@ -21,8 +21,8 @@ Route117_EventScript_291C4D:: @ 8291C4D
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_291C83
msgbox Route117_Text_292149, 4
- clearflag FLAG_0x086
- special sub_8070728
+ clearflag FLAG_PENDING_DAYCARE_EGG
+ special RejectEggFromDayCare
release
end
@@ -40,8 +40,8 @@ Route117_EventScript_291C9D:: @ 8291C9D
waitfanfare
waitbuttonpress
msgbox Route117_Text_2921CF, 4
- special sp0B8_daycare
- clearflag FLAG_0x086
+ special GiveEggFromDaycare
+ clearflag FLAG_PENDING_DAYCARE_EGG
release
end
@@ -56,7 +56,7 @@ Route117_EventScript_291CC8:: @ 8291CC8
return
Route117_EventScript_291CD1:: @ 8291CD1
- special sp0B5_daycare
+ special GetDaycareMonNicknames
msgbox Route117_Text_292114, 4
setvar VAR_0x8004, 0
call Route117_EventScript_291CB7
@@ -64,9 +64,9 @@ Route117_EventScript_291CD1:: @ 8291CD1
end
Route117_EventScript_291CE8:: @ 8291CE8
- special sp0B5_daycare
+ special GetDaycareMonNicknames
msgbox Route117_Text_292299, 4
- special sp0B9_daycare_relationship_comment
+ special SetDaycareCompatibilityString
special sub_8138AC0
waitmessage
waitbuttonpress
@@ -80,7 +80,7 @@ Route117_EventScript_291CE8:: @ 8291CE8
Route117_PokemonDayCare_EventScript_291D11:: @ 8291D11
lock
faceplayer
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_PokemonDayCare_EventScript_291E0B
compare_var_to_value VAR_RESULT, 2
@@ -95,7 +95,7 @@ Route117_PokemonDayCare_EventScript_291D11:: @ 8291D11
end
Route117_PokemonDayCare_EventScript_291D56:: @ 8291D56
- specialvar VAR_RESULT, sub_80C7008
+ specialvar VAR_RESULT, CountPartyNonEggMons
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_PokemonDayCare_EventScript_291DED
specialvar VAR_RESULT, sub_80722E0
@@ -103,21 +103,21 @@ Route117_PokemonDayCare_EventScript_291D56:: @ 8291D56
goto_eq Route117_PokemonDayCare_EventScript_291E01
msgbox Route117_PokemonDayCare_Text_292349, 4
fadescreen 1
- special sub_8071330
+ special ChooseSendDaycareMon
waitstate
compare_var_to_value VAR_0x8004, 255
goto_eq Route117_PokemonDayCare_EventScript_291DCA
- specialvar VAR_RESULT, sub_80C70AC
+ specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
compare_var_to_value VAR_RESULT, 0
goto_eq Route117_PokemonDayCare_EventScript_291DF7
- specialvar VAR_0x8005, sub_8070C58
+ specialvar VAR_0x8005, GetSelectedMonNickAndSpecies
waitse
playmoncry VAR_0x8005, 0
msgbox Route117_PokemonDayCare_Text_292370, 4
waitmoncry
- special daycare_send_selected_pokemon
+ special StoreSelectedPokemonInDaycare
incrementgamestat 47
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291DD4
release
@@ -160,7 +160,7 @@ Route117_PokemonDayCare_EventScript_291E15:: @ 8291E15
return
Route117_PokemonDayCare_EventScript_291E1E:: @ 8291E1E
- specialvar VAR_RESULT, sub_806FF30
+ specialvar VAR_RESULT, GetNumLevelsGainedFromDaycare
compare_var_to_value VAR_RESULT, 0
call_if 5, Route117_PokemonDayCare_EventScript_291E15
return
@@ -182,11 +182,11 @@ Route117_PokemonDayCare_EventScript_291E6D:: @ 8291E6D
specialvar VAR_RESULT, CalculatePlayerPartyCount
compare_var_to_value VAR_RESULT, 6
goto_eq Route117_PokemonDayCare_EventScript_291F3D
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
setvar VAR_0x8004, 0
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291EAC
- special sub_80712C0
+ special ShowDaycareLevelMenu
waitstate
copyvar VAR_0x8004, VAR_RESULT
compare_var_to_value VAR_RESULT, 2
@@ -195,7 +195,7 @@ Route117_PokemonDayCare_EventScript_291E6D:: @ 8291E6D
end
Route117_PokemonDayCare_EventScript_291EAC:: @ 8291EAC
- special sub_806FED8
+ special GetDaycareCost
msgbox Route117_PokemonDayCare_Text_292549, 5
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_PokemonDayCare_EventScript_291EC8
@@ -213,7 +213,7 @@ Route117_PokemonDayCare_EventScript_291EC8:: @ 8291EC8
Route117_PokemonDayCare_EventScript_291EE2:: @ 8291EE2
applymovement 1, Route117_PokemonDayCare_Movement_291F47
waitmovement 0
- specialvar VAR_RESULT, sub_806FDC4
+ specialvar VAR_RESULT, TakePokemonFromDaycare
special SubtractMoneyFromVar0x8005
playse SE_REGI
msgbox Route117_PokemonDayCare_Text_292575, 4
@@ -221,7 +221,7 @@ Route117_PokemonDayCare_EventScript_291EE2:: @ 8291EE2
playmoncry VAR_RESULT, 0
msgbox Route117_PokemonDayCare_Text_292593, 4
waitmoncry
- specialvar VAR_RESULT, sp0B6_daycare
+ specialvar VAR_RESULT, GetDaycareState
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291F24
goto Route117_PokemonDayCare_EventScript_291DCA
@@ -278,12 +278,12 @@ Route117_PokemonDayCare_EventScript_291F5C:: @ 8291F5C
end
Route117_PokemonDayCare_EventScript_291F95:: @ 8291F95
- special sub_80712C0
+ special ShowDaycareLevelMenu
waitstate
compare_var_to_value VAR_RESULT, 2
goto_eq Route117_PokemonDayCare_EventScript_291DCA
copyvar VAR_0x8004, VAR_RESULT
- specialvar VAR_RESULT, sub_806FDC4
+ specialvar VAR_RESULT, TakePokemonFromDaycare
msgbox Route117_PokemonDayCare_Text_292575, 4
msgbox Route117_PokemonDayCare_Text_292476, 4
release
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 23551d372..01463516b 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -7,7 +7,7 @@ Route117_MapScript1_1F3983: @ 81F3983
end
Route117_EventScript_1F3989:: @ 81F3989
- checkflag FLAG_0x086
+ checkflag FLAG_PENDING_DAYCARE_EGG
goto_if 0, Route117_EventScript_1F3999
setobjectxyperm 3, 47, 6
diff --git a/data/specials.inc b/data/specials.inc
index 49f6b91a0..51bb34dff 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -142,8 +142,8 @@ gSpecials:: @ 81DBA64
def_special sub_8122A30
def_special sub_80D6EDC
def_special CalculatePlayerPartyCount
- def_special sub_80C7008
- def_special sub_80C70AC
+ def_special CountPartyNonEggMons
+ def_special CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
def_special sub_80F88E8
def_special sub_80F88DC
def_special sub_80F8864
@@ -191,18 +191,18 @@ gSpecials:: @ 81DBA64
def_special GabbyAndTyGetLastBattleTrivia
def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds
def_special sub_8138B80
- def_special sp0B5_daycare
- def_special sp0B6_daycare
- def_special sub_8070728
- def_special sp0B8_daycare
- def_special sp0B9_daycare_relationship_comment
- def_special sub_8070C58
- def_special daycare_send_selected_pokemon
- def_special sub_8071330
- def_special sub_80712C0
- def_special sub_806FF30
- def_special sub_806FED8
- def_special sub_806FDC4
+ def_special GetDaycareMonNicknames
+ def_special GetDaycareState
+ def_special RejectEggFromDayCare
+ def_special GiveEggFromDaycare
+ def_special SetDaycareCompatibilityString
+ def_special GetSelectedMonNickAndSpecies
+ def_special StoreSelectedPokemonInDaycare
+ def_special ChooseSendDaycareMon
+ def_special ShowDaycareLevelMenu
+ def_special GetNumLevelsGainedFromDaycare
+ def_special GetDaycareCost
+ def_special TakePokemonFromDaycare
def_special ScriptHatchMon
def_special EggHatch
def_special sub_8071614
@@ -534,4 +534,3 @@ gSpecials:: @ 81DBA64
def_special sub_813C5A0
def_special sub_8139C10
def_special sub_80B3BC4
-
diff --git a/data/strings.s b/data/strings.s
index 42dcc2316..484c26d6e 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -3149,10 +3149,10 @@ gText_SelectTheAnswer:: @ 85EC752
gText_LyricsCantBeDeleted:: @ 85EC765
.string "The lyrics can’t be deleted.$"
-gUnknown_085EC782:: @ 85EC782
+gText_PokemonLeague:: @ 85EC782
.string "POKéMON LEAGUE$"
-gUnknown_085EC791:: @ 85EC791
+gText_PokemonCenter:: @ 85EC791
.string "POKéMON CENTER$"
gText_GetsAPokeBlockQuestion:: @ 85EC7A0
@@ -5121,16 +5121,16 @@ gText_YouDontHaveThreeCoins:: @ 85EF734
gText_ReelTimeHelp:: @ 85EF750
.string "REEL TIME\nHere’s your chance to take\naim and nail marks!\nReel Time continues for the\nawarded number of spins.\nIt all ends on a Big Bonus.$"
-gUnknown_085EF7DA:: @ 85EF7DA
+gDaycareText_GetAlongVeryWell:: @ 85EF7DA
.string "The two seem to get along\nvery well.$"
-gUnknown_085EF7FF:: @ 85EF7FF
+gDaycareText_GetAlong:: @ 85EF7FF
.string "The two seem to get along.$"
-gUnknown_085EF81A:: @ 85EF81A
+gDaycareText_DontLikeOther:: @ 85EF81A
.string "The two don’t seem to like\neach other much.$"
-gUnknown_085EF846:: @ 85EF846
+gDaycareText_PlayOther:: @ 85EF846
.string "The two prefer to play with other\nPOKéMON than each other.$"
gText_NewLine2:: @ 85EF881
diff --git a/data/trade.s b/data/trade.s
index 601b597ed..3150269b0 100644
--- a/data/trade.s
+++ b/data/trade.s
@@ -19,13 +19,13 @@ gUnknown_0832D2BC:: @ 832D2BC
gUnknown_0832DABC:: @ 832DABC
.incbin "baserom.gba", 0x32dabc, 0xb
-gUnknown_0832DAC7:: @ 832DAC7
- .incbin "baserom.gba", 0x32dac7, 0x2
+gText_MaleSymbol4:: @ 832DAC7
+ .string "♂$"
-gUnknown_0832DAC9:: @ 832DAC9
- .incbin "baserom.gba", 0x32dac9, 0x2
+gText_FemaleSymbol4:: @ 832DAC9
+ .string "♀$"
-gUnknown_0832DACB:: @ 832DACB
+gText_GenderlessSymbol:: @ 832DACB
.incbin "baserom.gba", 0x32dacb, 0x7
gUnknown_0832DAD2:: @ 832DAD2
diff --git a/graphics/pokenav/brendan_icon.pal b/graphics/pokenav/brendan_icon.pal
new file mode 100644
index 000000000..a83ed903f
--- /dev/null
+++ b/graphics/pokenav/brendan_icon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 213 180
+255 197 148
+222 148 115
+123 65 65
+57 74 123
+41 57 98
+24 41 82
+16 32 57
+222 230 238
+115 205 115
+74 148 82
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/pokenav/brendan_icon.png b/graphics/pokenav/brendan_icon.png
new file mode 100644
index 000000000..19e39bb29
--- /dev/null
+++ b/graphics/pokenav/brendan_icon.png
Binary files differ
diff --git a/graphics/pokenav/cursor.pal b/graphics/pokenav/cursor.pal
new file mode 100644
index 000000000..b35568acf
--- /dev/null
+++ b/graphics/pokenav/cursor.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 156 0
+255 255 255
+255 255 255
+230 230 246
+205 205 230
+180 180 222
+156 156 205
+131 131 197
+98 98 180
+74 74 164
+49 49 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokenav/cursor_large.png b/graphics/pokenav/cursor_large.png
new file mode 100644
index 000000000..eeda68a0e
--- /dev/null
+++ b/graphics/pokenav/cursor_large.png
Binary files differ
diff --git a/graphics/pokenav/cursor_small.png b/graphics/pokenav/cursor_small.png
new file mode 100644
index 000000000..031e7ed16
--- /dev/null
+++ b/graphics/pokenav/cursor_small.png
Binary files differ
diff --git a/graphics/pokenav/fly_target_icons.pal b/graphics/pokenav/fly_target_icons.pal
new file mode 100644
index 000000000..c0f2cc4e9
--- /dev/null
+++ b/graphics/pokenav/fly_target_icons.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 0 0
+0 0 0
+0 0 0
+205 205 205
+0 0 0
+0 0 0
+255 213 222
+255 164 197
+197 98 115
+131 131 123
+98 90 90
+49 49 65
+0 0 0
+0 0 0
+255 255 255
diff --git a/graphics/pokenav/fly_target_icons.png b/graphics/pokenav/fly_target_icons.png
new file mode 100644
index 000000000..7a997afc5
--- /dev/null
+++ b/graphics/pokenav/fly_target_icons.png
Binary files differ
diff --git a/graphics/pokenav/map_frame.bin b/graphics/pokenav/map_frame.bin
new file mode 100644
index 000000000..eb8e9ee62
--- /dev/null
+++ b/graphics/pokenav/map_frame.bin
Binary files differ
diff --git a/graphics/pokenav/map_frame.png b/graphics/pokenav/map_frame.png
new file mode 100644
index 000000000..f64171746
--- /dev/null
+++ b/graphics/pokenav/map_frame.png
Binary files differ
diff --git a/graphics/pokenav/may_icon.pal b/graphics/pokenav/may_icon.pal
new file mode 100644
index 000000000..2833b2613
--- /dev/null
+++ b/graphics/pokenav/may_icon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+222 164 148
+205 131 115
+123 90 82
+98 98 115
+41 57 65
+164 106 82
+74 49 57
+205 205 222
+106 213 65
+65 172 32
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/pokenav/may_icon.png b/graphics/pokenav/may_icon.png
new file mode 100644
index 000000000..5e1809fa5
--- /dev/null
+++ b/graphics/pokenav/may_icon.png
Binary files differ
diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal
new file mode 100644
index 000000000..78ffc009a
--- /dev/null
+++ b/graphics/pokenav/region_map.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+156 213 255
+164 180 255
+123 180 213
+74 156 230
+41 131 230
+65 106 205
+0 115 172
+32 74 197
+0 57 139
+213 255 123
+172 238 49
+98 213 0
+57 172 8
+0 115 0
+205 205 148
+0 0 0
+255 255 255
+238 230 172
+238 230 115
+238 189 57
+246 213 82
+230 164 0
+255 172 16
+255 57 16
+246 0 0
+148 0 0
+205 205 205
+98 98 98
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/pokenav/region_map.png b/graphics/pokenav/region_map.png
new file mode 100644
index 000000000..08df6eb29
--- /dev/null
+++ b/graphics/pokenav/region_map.png
Binary files differ
diff --git a/graphics/pokenav/region_map_map.bin b/graphics/pokenav/region_map_map.bin
new file mode 100644
index 000000000..889fd6d36
--- /dev/null
+++ b/graphics/pokenav/region_map_map.bin
Binary files differ
diff --git a/graphics/pokenav/region_map_section_layout.bin b/graphics/pokenav/region_map_section_layout.bin
new file mode 100644
index 000000000..4700e08b6
--- /dev/null
+++ b/graphics/pokenav/region_map_section_layout.bin
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index b14d94559..38806bbd3 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -4,6 +4,8 @@ monfrontdir := graphics/pokemon/anim_front_pics
monpaldir := graphics/pokemon/palettes
INTROGFXDIR := graphics/intro
interfacedir := graphics/interface
+PKNAVGFXDIR := graphics/pokenav
+MISCGFXDIR := graphics/misc
$(monstillfrontdir)/castform_still_front_pic.4bpp: $(monstillfrontdir)/castform_normal_form_still_front_pic.4bpp \
$(monstillfrontdir)/castform_sunny_form_still_front_pic.4bpp \
@@ -291,5 +293,7 @@ $(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png
$(interfacedir)/pkmnjump_bg.4bpp: $(interfacedir)/pkmnjump_bg.png
$(GFX) $< $@ -num_tiles 63
-graphics/misc/japanese_hof.4bpp: graphics/misc/japanese_hof.png
+$(PKNAVGFXDIR)/region_map.8bpp: $(PKNAVGFXDIR)/region_map.png
+ $(GFX) $< $@ -num_tiles 233
+$(MISCGFXDIR)/japanese_hof.4bpp: $(MISCGFXDIR)/japanese_hof.png
$(GFX) $< $@ -num_tiles 29
diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h
new file mode 100644
index 000000000..3d74868b4
--- /dev/null
+++ b/include/data/pokemon/egg_moves.h
@@ -0,0 +1,1315 @@
+#ifndef POKEEMERALD_DAYCARE_H
+#define POKEEMERALD_DAYCARE_H
+
+#define EGG_MOVES_SPECIES_OFFSET 20000
+#define EGG_MOVES_TERMINATOR 0xFFFF
+#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
+
+#endif // POKEEMERALD_DAYCARE_H
+
+const u16 gEggMoves[] = {
+ egg_moves(BULBASAUR,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SKULL_BASH,
+ MOVE_SAFEGUARD,
+ MOVE_CHARM,
+ MOVE_PETAL_DANCE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_GRASS_WHISTLE,
+ MOVE_CURSE),
+
+ egg_moves(CHARMANDER,
+ MOVE_BELLY_DRUM,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_OUTRAGE,
+ MOVE_BEAT_UP,
+ MOVE_SWORDS_DANCE,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(SQUIRTLE,
+ MOVE_MIRROR_COAT,
+ MOVE_HAZE,
+ MOVE_MIST,
+ MOVE_FORESIGHT,
+ MOVE_FLAIL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_YAWN),
+
+ egg_moves(PIDGEY,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_AIR_CUTTER),
+
+ egg_moves(RATTATA,
+ MOVE_SCREECH,
+ MOVE_FLAME_WHEEL,
+ MOVE_FURY_SWIPES,
+ MOVE_BITE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_UPROAR,
+ MOVE_SWAGGER),
+
+ egg_moves(SPEAROW,
+ MOVE_FAINT_ATTACK,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCARY_FACE,
+ MOVE_QUICK_ATTACK,
+ MOVE_TRI_ATTACK,
+ MOVE_ASTONISH,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(EKANS,
+ MOVE_PURSUIT,
+ MOVE_SLAM,
+ MOVE_SPITE,
+ MOVE_BEAT_UP,
+ MOVE_POISON_FANG),
+
+ egg_moves(SANDSHREW,
+ MOVE_FLAIL,
+ MOVE_SAFEGUARD,
+ MOVE_COUNTER,
+ MOVE_RAPID_SPIN,
+ MOVE_ROCK_SLIDE,
+ MOVE_METAL_CLAW,
+ MOVE_SWORDS_DANCE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(NIDORAN_F,
+ MOVE_SUPERSONIC,
+ MOVE_DISABLE,
+ MOVE_TAKE_DOWN,
+ MOVE_FOCUS_ENERGY,
+ MOVE_CHARM,
+ MOVE_COUNTER,
+ MOVE_BEAT_UP),
+
+ egg_moves(NIDORAN_M,
+ MOVE_COUNTER,
+ MOVE_DISABLE,
+ MOVE_SUPERSONIC,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_CONFUSION,
+ MOVE_BEAT_UP),
+
+ egg_moves(VULPIX,
+ MOVE_FAINT_ATTACK,
+ MOVE_HYPNOSIS,
+ MOVE_FLAIL,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_HOWL,
+ MOVE_PSYCH_UP,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(ZUBAT,
+ MOVE_QUICK_ATTACK,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_WHIRLWIND,
+ MOVE_CURSE),
+
+ egg_moves(ODDISH,
+ MOVE_SWORDS_DANCE,
+ MOVE_RAZOR_LEAF,
+ MOVE_FLAIL,
+ MOVE_SYNTHESIS,
+ MOVE_CHARM,
+ MOVE_INGRAIN),
+
+ egg_moves(PARAS,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCREECH,
+ MOVE_COUNTER,
+ MOVE_PSYBEAM,
+ MOVE_FLAIL,
+ MOVE_SWEET_SCENT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PURSUIT),
+
+ egg_moves(VENONAT,
+ MOVE_BATON_PASS,
+ MOVE_SCREECH,
+ MOVE_GIGA_DRAIN,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(DIGLETT,
+ MOVE_FAINT_ATTACK,
+ MOVE_SCREECH,
+ MOVE_ANCIENT_POWER,
+ MOVE_PURSUIT,
+ MOVE_BEAT_UP,
+ MOVE_UPROAR,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(MEOWTH,
+ MOVE_SPITE,
+ MOVE_CHARM,
+ MOVE_HYPNOSIS,
+ MOVE_AMNESIA,
+ MOVE_PSYCH_UP,
+ MOVE_ASSIST),
+
+ egg_moves(PSYDUCK,
+ MOVE_HYPNOSIS,
+ MOVE_PSYBEAM,
+ MOVE_FORESIGHT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCHIC,
+ MOVE_CROSS_CHOP,
+ MOVE_REFRESH),
+
+ egg_moves(MANKEY,
+ MOVE_ROCK_SLIDE,
+ MOVE_FORESIGHT,
+ MOVE_MEDITATE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_REVENGE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(GROWLITHE,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_FIRE_SPIN,
+ MOVE_HOWL,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(POLIWAG,
+ MOVE_MIST,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_HAZE,
+ MOVE_MIND_READER,
+ MOVE_WATER_SPORT,
+ MOVE_ICE_BALL),
+
+ egg_moves(ABRA,
+ MOVE_ENCORE,
+ MOVE_BARRIER,
+ MOVE_KNOCK_OFF,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MACHOP,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MEDITATE,
+ MOVE_ROLLING_KICK,
+ MOVE_ENCORE,
+ MOVE_SMELLING_SALT,
+ MOVE_COUNTER,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(BELLSPROUT,
+ MOVE_SWORDS_DANCE,
+ MOVE_ENCORE,
+ MOVE_REFLECT,
+ MOVE_SYNTHESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_INGRAIN,
+ MOVE_MAGICAL_LEAF),
+
+ egg_moves(TENTACOOL,
+ MOVE_AURORA_BEAM,
+ MOVE_MIRROR_COAT,
+ MOVE_RAPID_SPIN,
+ MOVE_HAZE,
+ MOVE_SAFEGUARD,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(GEODUDE,
+ MOVE_MEGA_PUNCH,
+ MOVE_ROCK_SLIDE,
+ MOVE_BLOCK),
+
+ egg_moves(PONYTA,
+ MOVE_FLAME_WHEEL,
+ MOVE_THRASH,
+ MOVE_DOUBLE_KICK,
+ MOVE_HYPNOSIS,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(SLOWPOKE,
+ MOVE_SAFEGUARD,
+ MOVE_BELLY_DRUM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_STOMP,
+ MOVE_MUD_SPORT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE),
+
+ egg_moves(FARFETCHD,
+ MOVE_STEEL_WING,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_MOVE,
+ MOVE_GUST,
+ MOVE_QUICK_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FEATHER_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(DODUO,
+ MOVE_QUICK_ATTACK,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_FAINT_ATTACK,
+ MOVE_FLAIL,
+ MOVE_ENDEAVOR),
+
+ egg_moves(SEEL,
+ MOVE_LICK,
+ MOVE_PERISH_SONG,
+ MOVE_DISABLE,
+ MOVE_HORN_DRILL,
+ MOVE_SLAM,
+ MOVE_ENCORE,
+ MOVE_FAKE_OUT,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GRIMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_LICK,
+ MOVE_IMPRISON,
+ MOVE_CURSE,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXPLOSION),
+
+ egg_moves(SHELLDER,
+ MOVE_BUBBLE_BEAM,
+ MOVE_TAKE_DOWN,
+ MOVE_BARRIER,
+ MOVE_RAPID_SPIN,
+ MOVE_SCREECH,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GASTLY,
+ MOVE_PSYWAVE,
+ MOVE_PERISH_SONG,
+ MOVE_HAZE,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_GRUDGE,
+ MOVE_EXPLOSION),
+
+ egg_moves(ONIX,
+ MOVE_ROCK_SLIDE,
+ MOVE_FLAIL,
+ MOVE_EXPLOSION,
+ MOVE_BLOCK),
+
+ egg_moves(DROWZEE,
+ MOVE_BARRIER,
+ MOVE_ASSIST,
+ MOVE_ROLE_PLAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(KRABBY,
+ MOVE_DIG,
+ MOVE_HAZE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_SLAM,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(EXEGGCUTE,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_REFLECT,
+ MOVE_ANCIENT_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_INGRAIN,
+ MOVE_CURSE),
+
+ egg_moves(CUBONE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_BELLY_DRUM,
+ MOVE_SCREECH,
+ MOVE_SKULL_BASH,
+ MOVE_PERISH_SONG,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(LICKITUNG,
+ MOVE_BELLY_DRUM,
+ MOVE_MAGNITUDE,
+ MOVE_BODY_SLAM,
+ MOVE_CURSE,
+ MOVE_SMELLING_SALT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(KOFFING,
+ MOVE_SCREECH,
+ MOVE_PSYWAVE,
+ MOVE_PSYBEAM,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(RHYHORN,
+ MOVE_CRUNCH,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_MAGNITUDE,
+ MOVE_SWORDS_DANCE,
+ MOVE_CURSE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(CHANSEY,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_HEAL_BELL,
+ MOVE_AROMATHERAPY,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(TANGELA,
+ MOVE_FLAIL,
+ MOVE_CONFUSION,
+ MOVE_MEGA_DRAIN,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(KANGASKHAN,
+ MOVE_STOMP,
+ MOVE_FORESIGHT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_SAFEGUARD,
+ MOVE_DISABLE,
+ MOVE_COUNTER,
+ MOVE_CRUSH_CLAW,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(HORSEA,
+ MOVE_FLAIL,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_DISABLE,
+ MOVE_SPLASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH),
+
+ egg_moves(GOLDEEN,
+ MOVE_PSYBEAM,
+ MOVE_HAZE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SLEEP_TALK,
+ MOVE_MUD_SPORT),
+
+ egg_moves(MR_MIME,
+ MOVE_FUTURE_SIGHT,
+ MOVE_HYPNOSIS,
+ MOVE_MIMIC,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_TRICK),
+
+ egg_moves(SCYTHER,
+ MOVE_COUNTER,
+ MOVE_SAFEGUARD,
+ MOVE_BATON_PASS,
+ MOVE_RAZOR_WIND,
+ MOVE_REVERSAL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_ENDURE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(PINSIR,
+ MOVE_FURY_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(LAPRAS,
+ MOVE_FORESIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_REFRESH,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK,
+ MOVE_HORN_DRILL),
+
+ egg_moves(EEVEE,
+ MOVE_CHARM,
+ MOVE_FLAIL,
+ MOVE_ENDURE,
+ MOVE_CURSE,
+ MOVE_TICKLE,
+ MOVE_WISH),
+
+ egg_moves(OMANYTE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_ROCK_SLIDE,
+ MOVE_SPIKES),
+
+ egg_moves(KABUTO,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_RAPID_SPIN,
+ MOVE_DIG,
+ MOVE_FLAIL,
+ MOVE_KNOCK_OFF,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(AERODACTYL,
+ MOVE_WHIRLWIND,
+ MOVE_PURSUIT,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_DRAGON_BREATH,
+ MOVE_CURSE),
+
+ egg_moves(SNORLAX,
+ MOVE_LICK,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(DRATINI,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MIST,
+ MOVE_HAZE,
+ MOVE_SUPERSONIC,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIKORITA,
+ MOVE_VINE_WHIP,
+ MOVE_LEECH_SEED,
+ MOVE_COUNTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_FLAIL,
+ MOVE_NATURE_POWER,
+ MOVE_INGRAIN,
+ MOVE_GRASS_WHISTLE),
+
+ egg_moves(CYNDAQUIL,
+ MOVE_FURY_SWIPES,
+ MOVE_QUICK_ATTACK,
+ MOVE_REVERSAL,
+ MOVE_THRASH,
+ MOVE_FORESIGHT,
+ MOVE_COVET,
+ MOVE_HOWL,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TOTODILE,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_HYDRO_PUMP,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_MUD_SPORT,
+ MOVE_WATER_SPORT,
+ MOVE_DRAGON_CLAW),
+
+ egg_moves(SENTRET,
+ MOVE_DOUBLE_EDGE,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_REVERSAL,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK,
+ MOVE_ASSIST),
+
+ egg_moves(HOOTHOOT,
+ MOVE_MIRROR_MOVE,
+ MOVE_SUPERSONIC,
+ MOVE_FAINT_ATTACK,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_FEATHER_DANCE),
+
+ egg_moves(LEDYBA,
+ MOVE_PSYBEAM,
+ MOVE_BIDE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(SPINARAK,
+ MOVE_PSYBEAM,
+ MOVE_DISABLE,
+ MOVE_SONIC_BOOM,
+ MOVE_BATON_PASS,
+ MOVE_PURSUIT,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(CHINCHOU,
+ MOVE_FLAIL,
+ MOVE_SCREECH,
+ MOVE_AMNESIA),
+
+ egg_moves(PICHU,
+ MOVE_REVERSAL,
+ MOVE_BIDE,
+ MOVE_PRESENT,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_WISH,
+ MOVE_CHARGE),
+
+ egg_moves(CLEFFA,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_AMNESIA,
+ MOVE_BELLY_DRUM,
+ MOVE_SPLASH,
+ MOVE_MIMIC,
+ MOVE_WISH,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(IGGLYBUFF,
+ MOVE_PERISH_SONG,
+ MOVE_PRESENT,
+ MOVE_FAINT_ATTACK,
+ MOVE_WISH,
+ MOVE_FAKE_TEARS),
+
+ egg_moves(TOGEPI,
+ MOVE_PRESENT,
+ MOVE_MIRROR_MOVE,
+ MOVE_PECK,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_PSYCH_UP),
+
+ egg_moves(NATU,
+ MOVE_HAZE,
+ MOVE_DRILL_PECK,
+ MOVE_QUICK_ATTACK,
+ MOVE_FAINT_ATTACK,
+ MOVE_STEEL_WING,
+ MOVE_PSYCH_UP,
+ MOVE_FEATHER_DANCE,
+ MOVE_REFRESH),
+
+ egg_moves(MAREEP,
+ MOVE_TAKE_DOWN,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_SCREECH,
+ MOVE_REFLECT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_CHARGE),
+
+ egg_moves(MARILL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PRESENT,
+ MOVE_AMNESIA,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BELLY_DRUM,
+ MOVE_PERISH_SONG,
+ MOVE_SUPERSONIC,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SUDOWOODO,
+ MOVE_SELF_DESTRUCT),
+
+ egg_moves(HOPPIP,
+ MOVE_CONFUSION,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_EDGE,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP),
+
+ egg_moves(AIPOM,
+ MOVE_COUNTER,
+ MOVE_SCREECH,
+ MOVE_PURSUIT,
+ MOVE_AGILITY,
+ MOVE_SPITE,
+ MOVE_SLAM,
+ MOVE_DOUBLE_SLAP,
+ MOVE_BEAT_UP),
+
+ egg_moves(SUNKERN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ENCORE,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(YANMA,
+ MOVE_WHIRLWIND,
+ MOVE_REVERSAL,
+ MOVE_LEECH_LIFE,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND),
+
+ egg_moves(WOOPER,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SAFEGUARD,
+ MOVE_CURSE,
+ MOVE_MUD_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP),
+
+ egg_moves(MURKROW,
+ MOVE_WHIRLWIND,
+ MOVE_DRILL_PECK,
+ MOVE_MIRROR_MOVE,
+ MOVE_WING_ATTACK,
+ MOVE_SKY_ATTACK,
+ MOVE_CONFUSE_RAY,
+ MOVE_FEATHER_DANCE,
+ MOVE_PERISH_SONG),
+
+ egg_moves(MISDREAVUS,
+ MOVE_SCREECH,
+ MOVE_DESTINY_BOND,
+ MOVE_PSYCH_UP,
+ MOVE_IMPRISON),
+
+ egg_moves(GIRAFARIG,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BEAT_UP,
+ MOVE_PSYCH_UP,
+ MOVE_WISH,
+ MOVE_MAGIC_COAT),
+
+ egg_moves(PINECO,
+ MOVE_REFLECT,
+ MOVE_PIN_MISSILE,
+ MOVE_FLAIL,
+ MOVE_SWIFT,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(DUNSPARCE,
+ MOVE_BIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_HEADBUTT,
+ MOVE_ASTONISH,
+ MOVE_CURSE),
+
+ egg_moves(GLIGAR,
+ MOVE_METAL_CLAW,
+ MOVE_WING_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(SNUBBULL,
+ MOVE_METRONOME,
+ MOVE_FAINT_ATTACK,
+ MOVE_REFLECT,
+ MOVE_PRESENT,
+ MOVE_CRUNCH,
+ MOVE_HEAL_BELL,
+ MOVE_SNORE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(QWILFISH,
+ MOVE_FLAIL,
+ MOVE_HAZE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_SUPERSONIC,
+ MOVE_ASTONISH),
+
+ egg_moves(SHUCKLE,
+ MOVE_SWEET_SCENT),
+
+ egg_moves(HERACROSS,
+ MOVE_HARDEN,
+ MOVE_BIDE,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(SNEASEL,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_FORESIGHT,
+ MOVE_REFLECT,
+ MOVE_BITE,
+ MOVE_CRUSH_CLAW,
+ MOVE_FAKE_OUT),
+
+ egg_moves(TEDDIURSA,
+ MOVE_CRUNCH,
+ MOVE_TAKE_DOWN,
+ MOVE_SEISMIC_TOSS,
+ MOVE_COUNTER,
+ MOVE_METAL_CLAW,
+ MOVE_FAKE_TEARS,
+ MOVE_YAWN,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(SLUGMA,
+ MOVE_ACID_ARMOR,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(SWINUB,
+ MOVE_TAKE_DOWN,
+ MOVE_BITE,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_MUD_SHOT,
+ MOVE_ICICLE_SPEAR,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(CORSOLA,
+ MOVE_ROCK_SLIDE,
+ MOVE_SCREECH,
+ MOVE_MIST,
+ MOVE_AMNESIA,
+ MOVE_BARRIER,
+ MOVE_INGRAIN,
+ MOVE_CONFUSE_RAY,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(REMORAID,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_SCREECH,
+ MOVE_THUNDER_WAVE,
+ MOVE_ROCK_BLAST),
+
+ egg_moves(DELIBIRD,
+ MOVE_AURORA_BEAM,
+ MOVE_QUICK_ATTACK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SPLASH,
+ MOVE_RAPID_SPIN,
+ MOVE_ICE_BALL),
+
+ egg_moves(MANTINE,
+ MOVE_TWISTER,
+ MOVE_HYDRO_PUMP,
+ MOVE_HAZE,
+ MOVE_SLAM,
+ MOVE_MUD_SPORT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(SKARMORY,
+ MOVE_DRILL_PECK,
+ MOVE_PURSUIT,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_CURSE),
+
+ egg_moves(HOUNDOUR,
+ MOVE_FIRE_SPIN,
+ MOVE_RAGE,
+ MOVE_PURSUIT,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(PHANPY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SNORE,
+ MOVE_COUNTER,
+ MOVE_FISSURE),
+
+ egg_moves(STANTLER,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_BITE,
+ MOVE_SWAGGER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTRASENSORY),
+
+ egg_moves(TYROGUE,
+ MOVE_RAPID_SPIN,
+ MOVE_HI_JUMP_KICK,
+ MOVE_MACH_PUNCH,
+ MOVE_MIND_READER,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SMOOCHUM,
+ MOVE_MEDITATE,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_WISH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(ELEKID,
+ MOVE_KARATE_CHOP,
+ MOVE_BARRIER,
+ MOVE_ROLLING_KICK,
+ MOVE_MEDITATE,
+ MOVE_CROSS_CHOP,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MAGBY,
+ MOVE_KARATE_CHOP,
+ MOVE_MEGA_PUNCH,
+ MOVE_BARRIER,
+ MOVE_SCREECH,
+ MOVE_CROSS_CHOP,
+ MOVE_THUNDER_PUNCH),
+
+ egg_moves(MILTANK,
+ MOVE_PRESENT,
+ MOVE_REVERSAL,
+ MOVE_SEISMIC_TOSS,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(LARVITAR,
+ MOVE_PURSUIT,
+ MOVE_STOMP,
+ MOVE_OUTRAGE,
+ MOVE_FOCUS_ENERGY,
+ MOVE_ANCIENT_POWER,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(TREECKO,
+ MOVE_CRUNCH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_LEECH_SEED,
+ MOVE_DRAGON_BREATH,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TORCHIC,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_ENDURE,
+ MOVE_SWAGGER,
+ MOVE_ROCK_SLIDE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(MUDKIP,
+ MOVE_REFRESH,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_STOMP,
+ MOVE_ICE_BALL,
+ MOVE_MIRROR_COAT),
+
+ egg_moves(POOCHYENA,
+ MOVE_ASTONISH,
+ MOVE_POISON_FANG,
+ MOVE_COVET,
+ MOVE_LEER,
+ MOVE_YAWN),
+
+ egg_moves(ZIGZAGOON,
+ MOVE_CHARM,
+ MOVE_PURSUIT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_TRICK),
+
+ egg_moves(LOTAD,
+ MOVE_SYNTHESIS,
+ MOVE_RAZOR_LEAF,
+ MOVE_SWEET_SCENT,
+ MOVE_LEECH_SEED,
+ MOVE_FLAIL,
+ MOVE_WATER_GUN),
+
+ egg_moves(SEEDOT,
+ MOVE_LEECH_SEED,
+ MOVE_AMNESIA,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_TAKE_DOWN,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(NINCADA,
+ MOVE_ENDURE,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_SILVER_WIND),
+
+ egg_moves(TAILLOW,
+ MOVE_PURSUIT,
+ MOVE_SUPERSONIC,
+ MOVE_REFRESH,
+ MOVE_MIRROR_MOVE,
+ MOVE_RAGE,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(SHROOMISH,
+ MOVE_FAKE_TEARS,
+ MOVE_SWAGGER,
+ MOVE_CHARM,
+ MOVE_FALSE_SWIPE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SPINDA,
+ MOVE_ENCORE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ASSIST,
+ MOVE_DISABLE,
+ MOVE_BATON_PASS,
+ MOVE_WISH,
+ MOVE_TRICK,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(WINGULL,
+ MOVE_MIST,
+ MOVE_TWISTER,
+ MOVE_AGILITY,
+ MOVE_GUST,
+ MOVE_WATER_SPORT),
+
+ egg_moves(SURSKIT,
+ MOVE_FORESIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_PSYBEAM,
+ MOVE_HYDRO_PUMP,
+ MOVE_MIND_READER),
+
+ egg_moves(WAILMER,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_SLEEP_TALK,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_TICKLE),
+
+ egg_moves(SKITTY,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP,
+ MOVE_UPROAR,
+ MOVE_FAKE_TEARS,
+ MOVE_WISH,
+ MOVE_BATON_PASS,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE),
+
+ egg_moves(KECLEON,
+ MOVE_DISABLE,
+ MOVE_MAGIC_COAT,
+ MOVE_TRICK),
+
+ egg_moves(NOSEPASS,
+ MOVE_MAGNITUDE,
+ MOVE_ROLLOUT,
+ MOVE_EXPLOSION),
+
+ egg_moves(TORKOAL,
+ MOVE_ERUPTION,
+ MOVE_ENDURE,
+ MOVE_SLEEP_TALK,
+ MOVE_YAWN),
+
+ egg_moves(SABLEYE,
+ MOVE_PSYCH_UP,
+ MOVE_RECOVER,
+ MOVE_MOONLIGHT),
+
+ egg_moves(BARBOACH,
+ MOVE_THRASH,
+ MOVE_WHIRLPOOL,
+ MOVE_SPARK),
+
+ egg_moves(LUVDISC,
+ MOVE_SPLASH,
+ MOVE_SUPERSONIC,
+ MOVE_WATER_SPORT,
+ MOVE_MUD_SPORT),
+
+ egg_moves(CORPHISH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER),
+
+ egg_moves(FEEBAS,
+ MOVE_MIRROR_COAT,
+ MOVE_DRAGON_BREATH,
+ MOVE_MUD_SPORT,
+ MOVE_HYPNOSIS,
+ MOVE_LIGHT_SCREEN,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(CARVANHA,
+ MOVE_HYDRO_PUMP,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH),
+
+ egg_moves(TRAPINCH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_QUICK_ATTACK,
+ MOVE_GUST),
+
+ egg_moves(MAKUHITA,
+ MOVE_FAINT_ATTACK,
+ MOVE_DETECT,
+ MOVE_FORESIGHT,
+ MOVE_HELPING_HAND,
+ MOVE_CROSS_CHOP,
+ MOVE_REVENGE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(ELECTRIKE,
+ MOVE_CRUNCH,
+ MOVE_HEADBUTT,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_SWIFT),
+
+ egg_moves(NUMEL,
+ MOVE_HOWL,
+ MOVE_SCARY_FACE,
+ MOVE_BODY_SLAM,
+ MOVE_ROLLOUT,
+ MOVE_DEFENSE_CURL,
+ MOVE_STOMP),
+
+ egg_moves(SPHEAL,
+ MOVE_WATER_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_YAWN,
+ MOVE_ROCK_SLIDE,
+ MOVE_CURSE,
+ MOVE_FISSURE),
+
+ egg_moves(CACNEA,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ACID,
+ MOVE_TEETER_DANCE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(SNORUNT,
+ MOVE_BLOCK,
+ MOVE_SPIKES),
+
+ egg_moves(AZURILL,
+ MOVE_ENCORE,
+ MOVE_SING,
+ MOVE_REFRESH,
+ MOVE_SLAM,
+ MOVE_TICKLE),
+
+ egg_moves(SPOINK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_EXTRASENSORY,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK),
+
+ egg_moves(PLUSLE,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MINUN,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MAWILE,
+ MOVE_SWORDS_DANCE,
+ MOVE_FALSE_SWIPE,
+ MOVE_POISON_FANG,
+ MOVE_PSYCH_UP,
+ MOVE_ANCIENT_POWER,
+ MOVE_TICKLE),
+
+ egg_moves(MEDITITE,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_FORESIGHT,
+ MOVE_FAKE_OUT,
+ MOVE_BATON_PASS,
+ MOVE_DYNAMIC_PUNCH),
+
+ egg_moves(SWABLU,
+ MOVE_AGILITY,
+ MOVE_HAZE,
+ MOVE_PURSUIT,
+ MOVE_RAGE),
+
+ egg_moves(DUSKULL,
+ MOVE_IMPRISON,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_GRUDGE,
+ MOVE_MEMENTO,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(ROSELIA,
+ MOVE_SPIKES,
+ MOVE_SYNTHESIS,
+ MOVE_PIN_MISSILE,
+ MOVE_COTTON_SPORE),
+
+ egg_moves(SLAKOTH,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_BODY_SLAM,
+ MOVE_SNORE,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(GULPIN,
+ MOVE_DREAM_EATER,
+ MOVE_ACID_ARMOR,
+ MOVE_SMOG,
+ MOVE_PAIN_SPLIT),
+
+ egg_moves(TROPIUS,
+ MOVE_HEADBUTT,
+ MOVE_SLAM,
+ MOVE_RAZOR_WIND,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(WHISMUR,
+ MOVE_TAKE_DOWN,
+ MOVE_SNORE,
+ MOVE_SWAGGER,
+ MOVE_EXTRASENSORY,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CLAMPERL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_BODY_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_BARRIER,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(ABSOL,
+ MOVE_BATON_PASS,
+ MOVE_FAINT_ATTACK,
+ MOVE_DOUBLE_EDGE,
+ MOVE_MAGIC_COAT,
+ MOVE_CURSE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SHUPPET,
+ MOVE_DISABLE,
+ MOVE_DESTINY_BOND,
+ MOVE_FORESIGHT,
+ MOVE_ASTONISH,
+ MOVE_IMPRISON),
+
+ egg_moves(SEVIPER,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_BODY_SLAM),
+
+ egg_moves(ZANGOOSE,
+ MOVE_FLAIL,
+ MOVE_DOUBLE_KICK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_ROAR,
+ MOVE_CURSE),
+
+ egg_moves(RELICANTH,
+ MOVE_MAGNITUDE,
+ MOVE_SKULL_BASH,
+ MOVE_WATER_SPORT,
+ MOVE_AMNESIA,
+ MOVE_SLEEP_TALK,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ARON,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_STOMP,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CASTFORM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCH_UP),
+
+ egg_moves(VOLBEAT,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_TRICK),
+
+ egg_moves(ILLUMISE,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_GROWTH),
+
+ egg_moves(LILEEP,
+ MOVE_BARRIER,
+ MOVE_RECOVER,
+ MOVE_MIRROR_COAT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ANORITH,
+ MOVE_RAPID_SPIN,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(RALTS,
+ MOVE_DISABLE,
+ MOVE_WILL_O_WISP,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_DESTINY_BOND),
+
+ egg_moves(BAGON,
+ MOVE_HYDRO_PUMP,
+ MOVE_THRASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_TWISTER,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIMECHO,
+ MOVE_DISABLE,
+ MOVE_CURSE,
+ MOVE_HYPNOSIS,
+ MOVE_DREAM_EATER),
+
+ EGG_MOVES_TERMINATOR
+};
diff --git a/include/data/region_map/region_map_entries.h b/include/data/region_map/region_map_entries.h
new file mode 100644
index 000000000..73599c704
--- /dev/null
+++ b/include/data/region_map/region_map_entries.h
@@ -0,0 +1,421 @@
+#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+
+static const u8 gMapName_LittlerootTown[] = _("LITTLEROOT TOWN");
+static const u8 gMapName_OldaleTown[] = _("OLDALE TOWN");
+static const u8 gMapName_DewfordTown[] = _("DEWFORD TOWN");
+static const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE TOWN");
+static const u8 gMapName_FallarborTown[] = _("FALLARBOR TOWN");
+static const u8 gMapName_VerdanturfTown[] = _("VERDANTURF TOWN");
+static const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN");
+static const u8 gMapName_PetalburgCity[] = _("PETALBURG CITY");
+static const u8 gMapName_SlateportCity[] = _("SLATEPORT CITY");
+static const u8 gMapName_MauvilleCity[] = _("MAUVILLE CITY");
+static const u8 gMapName_RustboroCity[] = _("RUSTBORO CITY");
+static const u8 gMapName_FortreeCity[] = _("FORTREE CITY");
+static const u8 gMapName_LilycoveCity[] = _("LILYCOVE CITY");
+static const u8 gMapName_MossdeepCity[] = _("MOSSDEEP CITY");
+static const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS CITY");
+static const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE CITY");
+static const u8 gMapName_Route101[] = _("ROUTE 101");
+static const u8 gMapName_Route102[] = _("ROUTE 102");
+static const u8 gMapName_Route103[] = _("ROUTE 103");
+static const u8 gMapName_Route104[] = _("ROUTE 104");
+static const u8 gMapName_Route105[] = _("ROUTE 105");
+static const u8 gMapName_Route106[] = _("ROUTE 106");
+static const u8 gMapName_Route107[] = _("ROUTE 107");
+static const u8 gMapName_Route108[] = _("ROUTE 108");
+static const u8 gMapName_Route109[] = _("ROUTE 109");
+static const u8 gMapName_Route110[] = _("ROUTE 110");
+static const u8 gMapName_Route111[] = _("ROUTE 111");
+static const u8 gMapName_Route112[] = _("ROUTE 112");
+static const u8 gMapName_Route113[] = _("ROUTE 113");
+static const u8 gMapName_Route114[] = _("ROUTE 114");
+static const u8 gMapName_Route115[] = _("ROUTE 115");
+static const u8 gMapName_Route116[] = _("ROUTE 116");
+static const u8 gMapName_Route117[] = _("ROUTE 117");
+static const u8 gMapName_Route118[] = _("ROUTE 118");
+static const u8 gMapName_Route119[] = _("ROUTE 119");
+static const u8 gMapName_Route120[] = _("ROUTE 120");
+static const u8 gMapName_Route121[] = _("ROUTE 121");
+static const u8 gMapName_Route122[] = _("ROUTE 122");
+static const u8 gMapName_Route123[] = _("ROUTE 123");
+static const u8 gMapName_Route124[] = _("ROUTE 124");
+static const u8 gMapName_Route125[] = _("ROUTE 125");
+static const u8 gMapName_Route126[] = _("ROUTE 126");
+static const u8 gMapName_Route127[] = _("ROUTE 127");
+static const u8 gMapName_Route128[] = _("ROUTE 128");
+static const u8 gMapName_Route129[] = _("ROUTE 129");
+static const u8 gMapName_Route130[] = _("ROUTE 130");
+static const u8 gMapName_Route131[] = _("ROUTE 131");
+static const u8 gMapName_Route132[] = _("ROUTE 132");
+static const u8 gMapName_Route133[] = _("ROUTE 133");
+static const u8 gMapName_Route134[] = _("ROUTE 134");
+static const u8 gMapName_Underwater[] = _("UNDERWATER");
+static const u8 gMapName_GraniteCave[] = _("GRANITE CAVE");
+static const u8 gMapName_MtChimney[] = _("MT. CHIMNEY");
+static const u8 gMapName_SafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_BattleFrontier[] = _("BATTLE FRONTIER");
+static const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS");
+static const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
+static const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP");
+static const u8 gMapName_NewMauville[] = _("NEW MAUVILLE");
+static const u8 gMapName_MeteorFalls[] = _("METEOR FALLS");
+static const u8 gMapName_MtPyre[] = _("MT. PYRE");
+// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
+// hideout in Emerald with their own new region map entries, and this name
+// doesn't seem to be used anymore.
+static const u8 gMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT");
+static const u8 gMapName_ShoalCave[] = _("SHOAL CAVE");
+static const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
+static const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND");
+static const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
+static const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
+static const u8 gMapName_FieryPath[] = _("FIERY PATH");
+static const u8 gMapName_JaggedPass[] = _("JAGGED PASS");
+static const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER");
+static const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB");
+static const u8 gMapName_IslandCave[] = _("ISLAND CAVE");
+static const u8 gMapName_DesertRuins[] = _("DESERT RUINS");
+static const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB");
+static const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
+static const u8 gMapName_SkyPillar[] = _("SKY PILLAR");
+static const u8 gMapName_SecretBase[] = _("SECRET BASE");
+static const u8 gMapName_None[] = _("");
+static const u8 gMapName_PalletTown[] = _("PALLET TOWN");
+static const u8 gMapName_ViridianCity[] = _("VIRIDIAN CITY");
+static const u8 gMapName_PewterCity[] = _("PEWTER CITY");
+static const u8 gMapName_CeruleanCity[] = _("CERULEAN CITY");
+static const u8 gMapName_LavenderTown[] = _("LAVENDER TOWN");
+static const u8 gMapName_VermilionCity[] = _("VERMILION CITY");
+static const u8 gMapName_CeladonCity[] = _("CELADON CITY");
+static const u8 gMapName_FuchsiaCity[] = _("FUCHSIA CITY");
+static const u8 gMapName_CinnabarIsland[] = _("CINNABAR ISLAND");
+static const u8 gMapName_IndigoPlateau[] = _("INDIGO PLATEAU");
+static const u8 gMapName_SaffronCity[] = _("SAFFRON CITY");
+static const u8 gMapName_Route4[] = _("ROUTE 4");
+static const u8 gMapName_Route10[] = _("ROUTE 10");
+static const u8 gMapName_Route1[] = _("ROUTE 1");
+static const u8 gMapName_Route2[] = _("ROUTE 2");
+static const u8 gMapName_Route3[] = _("ROUTE 3");
+static const u8 gMapName_Route4_2[] = _("ROUTE 4");
+static const u8 gMapName_Route5[] = _("ROUTE 5");
+static const u8 gMapName_Route6[] = _("ROUTE 6");
+static const u8 gMapName_Route7[] = _("ROUTE 7");
+static const u8 gMapName_Route8[] = _("ROUTE 8");
+static const u8 gMapName_Route9[] = _("ROUTE 9");
+static const u8 gMapName_Route10_2[] = _("ROUTE 10");
+static const u8 gMapName_Route11[] = _("ROUTE 11");
+static const u8 gMapName_Route12[] = _("ROUTE 12");
+static const u8 gMapName_Route13[] = _("ROUTE 13");
+static const u8 gMapName_Route14[] = _("ROUTE 14");
+static const u8 gMapName_Route15[] = _("ROUTE 15");
+static const u8 gMapName_Route16[] = _("ROUTE 16");
+static const u8 gMapName_Route17[] = _("ROUTE 17");
+static const u8 gMapName_Route18[] = _("ROUTE 18");
+static const u8 gMapName_Route19[] = _("ROUTE 19");
+static const u8 gMapName_Route20[] = _("ROUTE 20");
+static const u8 gMapName_Route21[] = _("ROUTE 21");
+static const u8 gMapName_Route22[] = _("ROUTE 22");
+static const u8 gMapName_Route23[] = _("ROUTE 23");
+static const u8 gMapName_Route24[] = _("ROUTE 24");
+static const u8 gMapName_Route25[] = _("ROUTE 25");
+static const u8 gMapName_ViridianForest[] = _("VIRIDIAN FOREST");
+static const u8 gMapName_MtMoon[] = _("MT. MOON");
+static const u8 gMapName_SSAnne[] = _("S.S. ANNE");
+static const u8 gMapName_UndergroundPath[] = _("UNDERGROUND PATH");
+static const u8 gMapName_UndergroundPath2[] = _("UNDERGROUND PATH");
+static const u8 gMapName_DiglettsCave[] = _("DIGLETT’S CAVE");
+static const u8 gMapName_KantoVictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_RocketHideout[] = _("ROCKET HIDEOUT");
+static const u8 gMapName_SilphCo[] = _("SILPH CO.");
+static const u8 gMapName_PokemonMansion[] = _("POKéMON MANSION");
+static const u8 gMapName_KantoSafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_PokemonLeague[] = _("POKéMON LEAGUE");
+static const u8 gMapName_RockTunnel[] = _("ROCK TUNNEL");
+static const u8 gMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
+static const u8 gMapName_PokemonTower[] = _("POKéMON TOWER");
+static const u8 gMapName_CeruleanCave[] = _("CERULEAN CAVE");
+static const u8 gMapName_PowerPlant[] = _("POWER PLANT");
+static const u8 gMapName_OneIsland[] = _("ONE ISLAND");
+static const u8 gMapName_TwoIsland[] = _("TWO ISLAND");
+static const u8 gMapName_ThreeIsland[] = _("THREE ISLAND");
+static const u8 gMapName_FourIsland[] = _("FOUR ISLAND");
+static const u8 gMapName_FiveIsland[] = _("FIVE ISLAND");
+static const u8 gMapName_SevenIsland[] = _("SEVEN ISLAND");
+static const u8 gMapName_SixIsland[] = _("SIX ISLAND");
+static const u8 gMapName_KindleRoad[] = _("KINDLE ROAD");
+static const u8 gMapName_TreasureBeach[] = _("TREASURE BEACH");
+static const u8 gMapName_CapeBrink[] = _("CAPE BRINK");
+static const u8 gMapName_BondBridge[] = _("BOND BRIDGE");
+static const u8 gMapName_ThreeIslePort[] = _("THREE ISLE PORT");
+static const u8 gMapName_SeviiIsle6[] = _("SEVII ISLE 6");
+static const u8 gMapName_SeviiIsle7[] = _("SEVII ISLE 7");
+static const u8 gMapName_SeviiIsle8[] = _("SEVII ISLE 8");
+static const u8 gMapName_SeviiIsle9[] = _("SEVII ISLE 9");
+static const u8 gMapName_ResortGorgeous[] = _("RESORT GORGEOUS");
+static const u8 gMapName_WaterLabyrinth[] = _("WATER LABYRINTH");
+static const u8 gMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
+static const u8 gMapName_MemorialPillar[] = _("MEMORIAL PILLAR");
+static const u8 gMapName_OutcastIsland[] = _("OUTCAST ISLAND");
+static const u8 gMapName_GreenPath[] = _("GREEN PATH");
+static const u8 gMapName_WaterPath[] = _("WATER PATH");
+static const u8 gMapName_RuinValley[] = _("RUIN VALLEY");
+static const u8 gMapName_TrainerTower[] = _("TRAINER TOWER");
+static const u8 gMapName_CanyonEntrance[] = _("CANYON ENTRANCE");
+static const u8 gMapName_SevaultCanyon[] = _("SEVAULT CANYON");
+static const u8 gMapName_TanobyRuins[] = _("TANOBY RUINS");
+static const u8 gMapName_SeviiIsle22[] = _("SEVII ISLE 22");
+static const u8 gMapName_SeviiIsle23[] = _("SEVII ISLE 23");
+static const u8 gMapName_SeviiIsle24[] = _("SEVII ISLE 24");
+static const u8 gMapName_NavelRock[] = _("NAVEL ROCK");
+static const u8 gMapName_MtEmber[] = _("MT. EMBER");
+static const u8 gMapName_BerryForest[] = _("BERRY FOREST");
+static const u8 gMapName_IcefallCave[] = _("ICEFALL CAVE");
+static const u8 gMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
+static const u8 gMapName_TrainerTower2[] = _("TRAINER TOWER");
+static const u8 gMapName_DottedHole[] = _("DOTTED HOLE");
+static const u8 gMapName_LostCave[] = _("LOST CAVE");
+static const u8 gMapName_PatternBush[] = _("PATTERN BUSH");
+static const u8 gMapName_AlteringCave[] = _("ALTERING CAVE");
+static const u8 gMapName_TanobyChambers[] = _("TANOBY CHAMBERS");
+static const u8 gMapName_ThreeIslePath[] = _("THREE ISLE PATH");
+static const u8 gMapName_TanobyKey[] = _("TANOBY KEY");
+static const u8 gMapName_BirthIsland[] = _("BIRTH ISLAND");
+static const u8 gMapName_MoneanChamber[] = _("MONEAN CHAMBER");
+static const u8 gMapName_LiptooChamber[] = _("LIPTOO CHAMBER");
+static const u8 gMapName_WeepthChamber[] = _("WEEPTH CHAMBER");
+static const u8 gMapName_DilfordChamber[] = _("DILFORD CHAMBER");
+static const u8 gMapName_ScufibChamber[] = _("SCUFIB CHAMBER");
+static const u8 gMapName_RixyChamber[] = _("RIXY CHAMBER");
+static const u8 gMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
+static const u8 gMapName_EmberSpa[] = _("EMBER SPA");
+static const u8 gMapName_SpecialArea[] = _("SPECIAL AREA");
+static const u8 gMapName_AquaHideout[] = _("AQUA HIDEOUT");
+static const u8 gMapName_MagmaHideout[] = _("MAGMA HIDEOUT");
+static const u8 gMapName_MirageTower[] = _("MIRAGE TOWER");
+static const u8 gMapName_FarawayIsland[] = _("FARAWAY ISLAND");
+static const u8 gMapName_ArtisanCave[] = _("ARTISAN CAVE");
+static const u8 gMapName_MarineCave[] = _("MARINE CAVE");
+static const u8 gMapName_TerraCave[] = _("TERRA CAVE");
+static const u8 gMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
+static const u8 gMapName_TrainerHill[] = _("TRAINER HILL");
+
+const struct RegionMapLocation gRegionMapEntries[] = {
+ { 4, 11, 1, 1, gMapName_LittlerootTown},
+ { 4, 9, 1, 1, gMapName_OldaleTown},
+ { 2, 14, 1, 1, gMapName_DewfordTown},
+ { 5, 3, 1, 1, gMapName_LavaridgeTown},
+ { 3, 0, 1, 1, gMapName_FallarborTown},
+ { 4, 6, 1, 1, gMapName_VerdanturfTown},
+ {17, 10, 1, 1, gMapName_PacifidlogTown},
+ { 1, 9, 1, 1, gMapName_PetalburgCity},
+ { 8, 10, 1, 2, gMapName_SlateportCity},
+ { 8, 6, 2, 1, gMapName_MauvilleCity},
+ { 0, 5, 1, 2, gMapName_RustboroCity},
+ {12, 0, 1, 1, gMapName_FortreeCity},
+ {18, 3, 2, 1, gMapName_LilycoveCity},
+ {24, 5, 2, 1, gMapName_MossdeepCity},
+ {21, 7, 1, 1, gMapName_SootopolisCity},
+ {27, 8, 1, 2, gMapName_EverGrandeCity},
+ { 4, 10, 1, 1, gMapName_Route101},
+ { 2, 9, 2, 1, gMapName_Route102},
+ { 4, 8, 4, 1, gMapName_Route103},
+ { 0, 7, 1, 3, gMapName_Route104},
+ { 0, 10, 1, 3, gMapName_Route105},
+ { 0, 13, 2, 1, gMapName_Route106},
+ { 3, 14, 3, 1, gMapName_Route107},
+ { 6, 14, 2, 1, gMapName_Route108},
+ { 8, 12, 1, 3, gMapName_Route109},
+ { 8, 7, 1, 3, gMapName_Route110},
+ { 8, 0, 1, 6, gMapName_Route111},
+ { 6, 3, 2, 1, gMapName_Route112},
+ { 4, 0, 4, 1, gMapName_Route113},
+ { 1, 0, 2, 3, gMapName_Route114},
+ { 0, 2, 1, 3, gMapName_Route115},
+ { 1, 5, 4, 1, gMapName_Route116},
+ { 5, 6, 3, 1, gMapName_Route117},
+ {10, 6, 2, 1, gMapName_Route118},
+ {11, 0, 1, 6, gMapName_Route119},
+ {13, 0, 1, 4, gMapName_Route120},
+ {14, 3, 4, 1, gMapName_Route121},
+ {16, 4, 1, 2, gMapName_Route122},
+ {12, 6, 5, 1, gMapName_Route123},
+ {20, 3, 4, 3, gMapName_Route124},
+ {24, 3, 2, 2, gMapName_Route125},
+ {20, 6, 3, 3, gMapName_Route126},
+ {23, 6, 3, 3, gMapName_Route127},
+ {23, 9, 4, 1, gMapName_Route128},
+ {24, 10, 2, 1, gMapName_Route129},
+ {21, 10, 3, 1, gMapName_Route130},
+ {18, 10, 3, 1, gMapName_Route131},
+ {15, 10, 2, 1, gMapName_Route132},
+ {12, 10, 3, 1, gMapName_Route133},
+ { 9, 10, 3, 1, gMapName_Route134},
+ {20, 3, 4, 3, gMapName_Underwater},
+ {20, 6, 3, 3, gMapName_Underwater},
+ {23, 6, 3, 3, gMapName_Underwater},
+ {23, 9, 4, 1, gMapName_Underwater},
+ {21, 7, 1, 1, gMapName_Underwater},
+ { 1, 13, 1, 1, gMapName_GraniteCave},
+ { 6, 2, 1, 1, gMapName_MtChimney},
+ {16, 2, 1, 1, gMapName_SafariZone},
+ {22, 12, 1, 1, gMapName_BattleFrontier},
+ { 0, 8, 1, 1, gMapName_PetalburgWoods},
+ { 2, 5, 1, 1, gMapName_RusturfTunnel},
+ { 6, 14, 1, 1, gMapName_AbandonedShip},
+ { 8, 7, 1, 1, gMapName_NewMauville},
+ { 0, 3, 1, 1, gMapName_MeteorFalls},
+ { 1, 2, 1, 1, gMapName_MeteorFalls},
+ {16, 4, 1, 1, gMapName_MtPyre},
+ {19, 3, 1, 1, gMapName_AquaHideoutOld},
+ {24, 4, 1, 1, gMapName_ShoalCave},
+ {24, 9, 1, 1, gMapName_SeafloorCavern},
+ {24, 9, 1, 1, gMapName_Underwater},
+ {27, 9, 1, 1, gMapName_VictoryRoad},
+ {17, 10, 1, 1, gMapName_MirageIsland},
+ {21, 7, 1, 1, gMapName_CaveOfOrigin},
+ {12, 14, 1, 1, gMapName_SouthernIsland},
+ { 6, 3, 1, 1, gMapName_FieryPath},
+ { 7, 3, 1, 1, gMapName_FieryPath},
+ { 6, 3, 1, 1, gMapName_JaggedPass},
+ { 7, 2, 1, 1, gMapName_JaggedPass},
+ {11, 10, 1, 1, gMapName_SealedChamber},
+ {11, 10, 1, 1, gMapName_Underwater},
+ {13, 0, 1, 1, gMapName_ScorchedSlab},
+ { 0, 10, 1, 1, gMapName_IslandCave},
+ { 8, 3, 1, 1, gMapName_DesertRuins},
+ {13, 2, 1, 1, gMapName_AncientTomb},
+ { 0, 0, 1, 1, gMapName_InsideOfTruck},
+ {19, 10, 1, 1, gMapName_SkyPillar},
+ { 0, 0, 1, 1, gMapName_SecretBase},
+ { 0, 0, 1, 1, gMapName_None},
+ { 0, 0, 1, 1, gMapName_PalletTown},
+ { 0, 0, 1, 1, gMapName_ViridianCity},
+ { 0, 0, 1, 1, gMapName_PewterCity},
+ { 0, 0, 1, 1, gMapName_CeruleanCity},
+ { 0, 0, 1, 1, gMapName_LavenderTown},
+ { 0, 0, 1, 1, gMapName_VermilionCity},
+ { 0, 0, 1, 1, gMapName_CeladonCity},
+ { 0, 0, 1, 1, gMapName_FuchsiaCity},
+ { 0, 0, 1, 1, gMapName_CinnabarIsland},
+ { 0, 0, 1, 1, gMapName_IndigoPlateau},
+ { 0, 0, 1, 1, gMapName_SaffronCity},
+ { 0, 0, 1, 1, gMapName_Route4},
+ { 0, 0, 1, 1, gMapName_Route10},
+ { 0, 0, 1, 1, gMapName_Route1},
+ { 0, 0, 1, 1, gMapName_Route2},
+ { 0, 0, 1, 1, gMapName_Route3},
+ { 0, 0, 1, 1, gMapName_Route4_2},
+ { 0, 0, 1, 1, gMapName_Route5},
+ { 0, 0, 1, 1, gMapName_Route6},
+ { 0, 0, 1, 1, gMapName_Route7},
+ { 0, 0, 1, 1, gMapName_Route8},
+ { 0, 0, 1, 1, gMapName_Route9},
+ { 0, 0, 1, 1, gMapName_Route10_2},
+ { 0, 0, 1, 1, gMapName_Route11},
+ { 0, 0, 1, 1, gMapName_Route12},
+ { 0, 0, 1, 1, gMapName_Route13},
+ { 0, 0, 1, 1, gMapName_Route14},
+ { 0, 0, 1, 1, gMapName_Route15},
+ { 0, 0, 1, 1, gMapName_Route16},
+ { 0, 0, 1, 1, gMapName_Route17},
+ { 0, 0, 1, 1, gMapName_Route18},
+ { 0, 0, 1, 1, gMapName_Route19},
+ { 0, 0, 1, 1, gMapName_Route20},
+ { 0, 0, 1, 1, gMapName_Route21},
+ { 0, 0, 1, 1, gMapName_Route22},
+ { 0, 0, 1, 1, gMapName_Route23},
+ { 0, 0, 1, 1, gMapName_Route24},
+ { 0, 0, 1, 1, gMapName_Route25},
+ { 0, 0, 1, 1, gMapName_ViridianForest},
+ { 0, 0, 1, 1, gMapName_MtMoon},
+ { 0, 0, 1, 1, gMapName_SSAnne},
+ { 0, 0, 1, 1, gMapName_UndergroundPath},
+ { 0, 0, 1, 1, gMapName_UndergroundPath2},
+ { 0, 0, 1, 1, gMapName_DiglettsCave},
+ { 0, 0, 1, 1, gMapName_KantoVictoryRoad},
+ { 0, 0, 1, 1, gMapName_RocketHideout},
+ { 0, 0, 1, 1, gMapName_SilphCo},
+ { 0, 0, 1, 1, gMapName_PokemonMansion},
+ { 0, 0, 1, 1, gMapName_KantoSafariZone},
+ { 0, 0, 1, 1, gMapName_PokemonLeague},
+ { 0, 0, 1, 1, gMapName_RockTunnel},
+ { 0, 0, 1, 1, gMapName_SeafoamIslands},
+ { 0, 0, 1, 1, gMapName_PokemonTower},
+ { 0, 0, 1, 1, gMapName_CeruleanCave},
+ { 0, 0, 1, 1, gMapName_PowerPlant},
+ { 0, 0, 1, 1, gMapName_OneIsland},
+ { 0, 0, 1, 1, gMapName_TwoIsland},
+ { 0, 0, 1, 1, gMapName_ThreeIsland},
+ { 0, 0, 1, 1, gMapName_FourIsland},
+ { 0, 0, 1, 1, gMapName_FiveIsland},
+ { 0, 0, 1, 1, gMapName_SevenIsland},
+ { 0, 0, 1, 1, gMapName_SixIsland},
+ { 0, 0, 1, 1, gMapName_KindleRoad},
+ { 0, 0, 1, 1, gMapName_TreasureBeach},
+ { 0, 0, 1, 1, gMapName_CapeBrink},
+ { 0, 0, 1, 1, gMapName_BondBridge},
+ { 0, 0, 1, 1, gMapName_ThreeIslePort},
+ { 0, 0, 1, 1, gMapName_SeviiIsle6},
+ { 0, 0, 1, 1, gMapName_SeviiIsle7},
+ { 0, 0, 1, 1, gMapName_SeviiIsle8},
+ { 0, 0, 1, 1, gMapName_SeviiIsle9},
+ { 0, 0, 1, 1, gMapName_ResortGorgeous},
+ { 0, 0, 1, 1, gMapName_WaterLabyrinth},
+ { 0, 0, 1, 1, gMapName_FiveIsleMeadow},
+ { 0, 0, 1, 1, gMapName_MemorialPillar},
+ { 0, 0, 1, 1, gMapName_OutcastIsland},
+ { 0, 0, 1, 1, gMapName_GreenPath},
+ { 0, 0, 1, 1, gMapName_WaterPath},
+ { 0, 0, 1, 1, gMapName_RuinValley},
+ { 0, 0, 1, 1, gMapName_TrainerTower},
+ { 0, 0, 1, 1, gMapName_CanyonEntrance},
+ { 0, 0, 1, 1, gMapName_SevaultCanyon},
+ { 0, 0, 1, 1, gMapName_TanobyRuins},
+ { 0, 0, 1, 1, gMapName_SeviiIsle22},
+ { 0, 0, 1, 1, gMapName_SeviiIsle23},
+ { 0, 0, 1, 1, gMapName_SeviiIsle24},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 0, 0, 1, 1, gMapName_MtEmber},
+ { 0, 0, 1, 1, gMapName_BerryForest},
+ { 0, 0, 1, 1, gMapName_IcefallCave},
+ { 0, 0, 1, 1, gMapName_RocketWarehouse},
+ { 0, 0, 1, 1, gMapName_TrainerTower2},
+ { 0, 0, 1, 1, gMapName_DottedHole},
+ { 0, 0, 1, 1, gMapName_LostCave},
+ { 0, 0, 1, 1, gMapName_PatternBush},
+ { 0, 0, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_TanobyChambers},
+ { 0, 0, 1, 1, gMapName_ThreeIslePath},
+ { 0, 0, 1, 1, gMapName_TanobyKey},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_MoneanChamber},
+ { 0, 0, 1, 1, gMapName_LiptooChamber},
+ { 0, 0, 1, 1, gMapName_WeepthChamber},
+ { 0, 0, 1, 1, gMapName_DilfordChamber},
+ { 0, 0, 1, 1, gMapName_ScufibChamber},
+ { 0, 0, 1, 1, gMapName_RixyChamber},
+ { 0, 0, 1, 1, gMapName_ViapoisChamber},
+ { 0, 0, 1, 1, gMapName_EmberSpa},
+ { 0, 0, 1, 1, gMapName_SpecialArea},
+ {19, 3, 1, 1, gMapName_AquaHideout},
+ { 6, 3, 1, 1, gMapName_MagmaHideout},
+ { 8, 2, 1, 1, gMapName_MirageTower},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_FarawayIsland},
+ {22, 12, 1, 1, gMapName_ArtisanCave},
+ { 0, 0, 1, 1, gMapName_MarineCave},
+ { 0, 0, 1, 1, gMapName_Underwater},
+ { 0, 0, 1, 1, gMapName_TerraCave},
+ { 0, 10, 1, 3, gMapName_Underwater},
+ {24, 3, 2, 2, gMapName_Underwater},
+ {24, 10, 2, 1, gMapName_Underwater},
+ { 2, 0, 1, 1, gMapName_DesertUnderpass},
+ { 6, 8, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 8, 4, 1, 1, gMapName_TrainerHill}
+};
+
+#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
diff --git a/include/daycare.h b/include/daycare.h
new file mode 100644
index 000000000..7db44e024
--- /dev/null
+++ b/include/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_H
+#define GUARD_DAYCARE_H
+
+#define EGG_HATCH_LEVEL 5
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
+u8 CountPokemonInDaycare(struct DayCare *daycare);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
+void StoreSelectedPokemonInDaycare(void);
+u16 TakePokemonFromDaycare(void);
+void GetDaycareCost(void);
+u8 GetNumLevelsGainedFromDaycare(void);
+void TriggerPendingDaycareEgg(void);
+void RejectEggFromDayCare(void);
+void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation);
+void GiveEggFromDaycare(void);
+bool8 DoEggActions_CheckHatch(void);
+u16 GetSelectedMonNickAndSpecies(void);
+void GetDaycareMonNicknames(void);
+u8 GetDaycareState(void);
+void SetDaycareCompatibilityString(void);
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
+void ShowDaycareLevelMenu(void);
+void ChooseSendDaycareMon(void);
+
+#endif // GUARD_DAYCARE_H
diff --git a/include/egg_hatch.h b/include/egg_hatch.h
new file mode 100644
index 000000000..862d33947
--- /dev/null
+++ b/include/egg_hatch.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EGG_HATCH_H
+#define GUARD_EGG_HATCH_H
+
+void ScriptHatchMon(void);
+bool8 sub_8071614(void);
+void EggHatch(void);
+u8 GetEggStepsToSubtract(void);
+u16 sub_80722E0(void);
+
+#endif // GUARD_EGG_HATCH_H
diff --git a/include/field_effect.h b/include/field_effect.h
index aa3f7eba0..629ae07c7 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -69,9 +69,10 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
+extern u32 gFieldEffectArguments[8];
+
u8 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
-
-extern u32 gFieldEffectArguments[8];
+void sub_80B69DC(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/flags.h b/include/flags.h
index e0bb121f6..a891cc13f 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -1,108 +1,114 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
+#define FLAG_PENDING_DAYCARE_EGG 0x86
+
#define FLAG_TRAINER_FLAG_START 0x500
+
#define TRAINERS_FLAG_NO 0x356
#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
-#define FLAG_SYS_POKEMON_GET CODE_FLAGS + 0
-#define FLAG_SYS_POKEDEX_GET CODE_FLAGS + 1
-#define FLAG_SYS_POKENAV_GET CODE_FLAGS + 2
+#define FLAG_SYS_POKEMON_GET (CODE_FLAGS + 0)
+#define FLAG_SYS_POKEDEX_GET (CODE_FLAGS + 1)
+#define FLAG_SYS_POKENAV_GET (CODE_FLAGS + 2)
// third one appears unused
-#define FLAG_SYS_GAME_CLEAR CODE_FLAGS + 4
-#define FLAG_SYS_CHAT_USED CODE_FLAGS + 5
-#define FLAG_SYS_HIPSTER_MEET CODE_FLAGS + 6
+#define FLAG_SYS_GAME_CLEAR (CODE_FLAGS + 4)
+#define FLAG_SYS_CHAT_USED (CODE_FLAGS + 5)
+#define FLAG_SYS_HIPSTER_MEET (CODE_FLAGS + 6)
// badges
-#define FLAG_BADGE01_GET CODE_FLAGS + 7
-#define FLAG_BADGE02_GET CODE_FLAGS + 8
-#define FLAG_BADGE03_GET CODE_FLAGS + 9
-#define FLAG_BADGE04_GET CODE_FLAGS + 0xA
-#define FLAG_BADGE05_GET CODE_FLAGS + 0xB
-#define FLAG_BADGE06_GET CODE_FLAGS + 0xC
-#define FLAG_BADGE07_GET CODE_FLAGS + 0xD
-#define FLAG_BADGE08_GET CODE_FLAGS + 0xE
+#define FLAG_BADGE01_GET (CODE_FLAGS + 7)
+#define FLAG_BADGE02_GET (CODE_FLAGS + 8)
+#define FLAG_BADGE03_GET (CODE_FLAGS + 9)
+#define FLAG_BADGE04_GET (CODE_FLAGS + 0xA)
+#define FLAG_BADGE05_GET (CODE_FLAGS + 0xB)
+#define FLAG_BADGE06_GET (CODE_FLAGS + 0xC)
+#define FLAG_BADGE07_GET (CODE_FLAGS + 0xD)
+#define FLAG_BADGE08_GET (CODE_FLAGS + 0xE)
// cities and towns
-#define FLAG_VISITED_LITTLEROOT_TOWN CODE_FLAGS + 0xF
-#define FLAG_VISITED_OLDALE_TOWN CODE_FLAGS + 0x10
-#define FLAG_VISITED_DEWFORD_TOWN CODE_FLAGS + 0x11
-#define FLAG_VISITED_LAVARIDGE_TOWN CODE_FLAGS + 0x12
-#define FLAG_VISITED_FALLARBOR_TOWN CODE_FLAGS + 0x13
-#define FLAG_VISITED_VERDANTURF_TOWN CODE_FLAGS + 0x14
-#define FLAG_VISITED_PACIFIDLOG_TOWN CODE_FLAGS + 0x15
-#define FLAG_VISITED_PETALBURG_CITY CODE_FLAGS + 0x16
-#define FLAG_VISITED_SLATEPORT_CITY CODE_FLAGS + 0x17
-#define FLAG_VISITED_MAUVILLE_CITY CODE_FLAGS + 0x18
-#define FLAG_VISITED_RUSTBORO_CITY CODE_FLAGS + 0x19
-#define FLAG_VISITED_FORTREE_CITY CODE_FLAGS + 0x1A
-#define FLAG_VISITED_LILYCOVE_CITY CODE_FLAGS + 0x1B
-#define FLAG_VISITED_MOSSDEEP_CITY CODE_FLAGS + 0x1C
-#define FLAG_VISITED_SOOTOPOLIS_CITY CODE_FLAGS + 0x1D
-#define FLAG_VISITED_EVER_GRANDE_CITY CODE_FLAGS + 0x1E
-
-#define FLAG_SYS_UNKNOWN_880 CODE_FLAGS + 0x20
-
-#define FLAG_SYS_USE_FLASH CODE_FLAGS + 0x28
-#define FLAG_SYS_USE_STRENGTH CODE_FLAGS + 0x29
-#define FLAG_SYS_WEATHER_CTRL CODE_FLAGS + 0x2A
-#define FLAG_SYS_CYCLING_ROAD CODE_FLAGS + 0x2B
-#define FLAG_SYS_SAFARI_MODE CODE_FLAGS + 0x2C
-#define FLAG_SYS_CRUISE_MODE CODE_FLAGS + 0x2D
-
-#define FLAG_SYS_TV_HOME CODE_FLAGS + 0x30
-#define FLAG_SYS_TV_WATCH CODE_FLAGS + 0x31
-#define FLAG_SYS_TV_START CODE_FLAGS + 0x32
-#define FLAG_SYS_POPWORD_INPUT CODE_FLAGS + 0x33
-#define FLAG_SYS_MIX_RECORD CODE_FLAGS + 0x34
-#define FLAG_SYS_CLOCK_SET CODE_FLAGS + 0x35
-#define FLAG_SYS_NATIONAL_DEX CODE_FLAGS + 0x36
-#define FLAG_SYS_CAVE_SHIP CODE_FLAGS + 0x37
-#define FLAG_SYS_CAVE_WONDER CODE_FLAGS + 0x38
-#define FLAG_SYS_CAVE_BATTLE CODE_FLAGS + 0x39
-#define FLAG_SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
-#define FLAG_SYS_RIBBON_GET CODE_FLAGS + 0x3B
-
-#define FLAG_SYS_PC_LANETTE CODE_FLAGS + 0x4B
-#define FLAG_SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
-#define FLAG_SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
-#define FLAG_SYS_ENC_DOWN_ITEM CODE_FLAGS + 0x4E
-#define FLAG_SYS_BRAILLE_DIG CODE_FLAGS + 0x4F
-#define FLAG_SYS_BRAILLE_STRENGTH CODE_FLAGS + 0x50
-#define FLAG_SYS_BRAILLE_WAIT CODE_FLAGS + 0x51
-#define FLAG_SYS_BRAILLE_FLY CODE_FLAGS + 0x52
-#define FLAG_SYS_HAS_EON_TICKET CODE_FLAGS + 0x53
-
-#define FLAG_SYS_POKEMON_LEAGUE_FLY CODE_FLAGS + 0x54
-
-#define FLAG_SYS_TV_LATI CODE_FLAGS + 0x5D
-
-#define FLAG_SYS_SHOAL_ITEM CODE_FLAGS + 0x5F
-#define FLAG_SYS_B_DASH CODE_FLAGS + 0x60 // got Running Shoes
-#define FLAG_SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
-#define FLAG_SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
-
-#define FLAG_SYS_TOWER_SILVER CODE_FLAGS + 0x64
-#define FLAG_SYS_TOWER_GOLD CODE_FLAGS + 0x65
-#define FLAG_SYS_DOME_SILVER CODE_FLAGS + 0x66
-#define FLAG_SYS_DOME_GOLD CODE_FLAGS + 0x67
-#define FLAG_SYS_PALACE_SILVER CODE_FLAGS + 0x68
-#define FLAG_SYS_PALACE_GOLD CODE_FLAGS + 0x69
-#define FLAG_SYS_ARENA_SILVER CODE_FLAGS + 0x6A
-#define FLAG_SYS_ARENA_GOLD CODE_FLAGS + 0x6B
-#define FLAG_SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
-#define FLAG_SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
-#define FLAG_SYS_PIKE_SILVER CODE_FLAGS + 0x6E
-#define FLAG_SYS_PIKE_GOLD CODE_FLAGS + 0x6F
-#define FLAG_SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
-#define FLAG_SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
-#define FLAG_SYS_FRONTIER_PASS CODE_FLAGS + 0x72
-
-#define FLAG_SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
-
-#define FLAG_SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
+#define FLAG_VISITED_LITTLEROOT_TOWN (CODE_FLAGS + 0xF)
+#define FLAG_VISITED_OLDALE_TOWN (CODE_FLAGS + 0x10)
+#define FLAG_VISITED_DEWFORD_TOWN (CODE_FLAGS + 0x11)
+#define FLAG_VISITED_LAVARIDGE_TOWN (CODE_FLAGS + 0x12)
+#define FLAG_VISITED_FALLARBOR_TOWN (CODE_FLAGS + 0x13)
+#define FLAG_VISITED_VERDANTURF_TOWN (CODE_FLAGS + 0x14)
+#define FLAG_VISITED_PACIFIDLOG_TOWN (CODE_FLAGS + 0x15)
+#define FLAG_VISITED_PETALBURG_CITY (CODE_FLAGS + 0x16)
+#define FLAG_VISITED_SLATEPORT_CITY (CODE_FLAGS + 0x17)
+#define FLAG_VISITED_MAUVILLE_CITY (CODE_FLAGS + 0x18)
+#define FLAG_VISITED_RUSTBORO_CITY (CODE_FLAGS + 0x19)
+#define FLAG_VISITED_FORTREE_CITY (CODE_FLAGS + 0x1A)
+#define FLAG_VISITED_LILYCOVE_CITY (CODE_FLAGS + 0x1B)
+#define FLAG_VISITED_MOSSDEEP_CITY (CODE_FLAGS + 0x1C)
+#define FLAG_VISITED_SOOTOPOLIS_CITY (CODE_FLAGS + 0x1D)
+#define FLAG_VISITED_EVER_GRANDE_CITY (CODE_FLAGS + 0x1E)
+
+#define FLAG_SYS_UNKNOWN_880 (CODE_FLAGS + 0x20)
+
+#define FLAG_SYS_USE_FLASH (CODE_FLAGS + 0x28)
+#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
+#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
+#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
+#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
+#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
+
+#define FLAG_SYS_TV_HOME (CODE_FLAGS + 0x30)
+#define FLAG_SYS_TV_WATCH (CODE_FLAGS + 0x31)
+#define FLAG_SYS_TV_START (CODE_FLAGS + 0x32)
+#define FLAG_SYS_POPWORD_INPUT (CODE_FLAGS + 0x33)
+#define FLAG_SYS_MIX_RECORD (CODE_FLAGS + 0x34)
+#define FLAG_SYS_CLOCK_SET (CODE_FLAGS + 0x35)
+#define FLAG_SYS_NATIONAL_DEX (CODE_FLAGS + 0x36)
+#define FLAG_SYS_CAVE_SHIP (CODE_FLAGS + 0x37)
+#define FLAG_SYS_CAVE_WONDER (CODE_FLAGS + 0x38)
+#define FLAG_SYS_CAVE_BATTLE (CODE_FLAGS + 0x39)
+#define FLAG_SYS_SHOAL_TIDE (CODE_FLAGS + 0x3A)
+#define FLAG_SYS_RIBBON_GET (CODE_FLAGS + 0x3B)
+
+#define FLAG_UNLOCK_BATTLE_FRONTIER (CODE_FLAGS + 0x48)
+#define FLAG_UNLOCK_SOUTHERN_ISLAND (CODE_FLAGS + 0x49)
+
+#define FLAG_SYS_PC_LANETTE (CODE_FLAGS + 0x4B)
+#define FLAG_SYS_MYSTERY_EVENT_ENABLE (CODE_FLAGS + 0x4C)
+#define FLAG_SYS_ENC_UP_ITEM (CODE_FLAGS + 0x4D)
+#define FLAG_SYS_ENC_DOWN_ITEM (CODE_FLAGS + 0x4E)
+#define FLAG_SYS_BRAILLE_DIG (CODE_FLAGS + 0x4F)
+#define FLAG_SYS_BRAILLE_STRENGTH (CODE_FLAGS + 0x50)
+#define FLAG_SYS_BRAILLE_WAIT (CODE_FLAGS + 0x51)
+#define FLAG_SYS_BRAILLE_FLY (CODE_FLAGS + 0x52)
+#define FLAG_SYS_HAS_EON_TICKET (CODE_FLAGS + 0x53)
+
+#define FLAG_SYS_POKEMON_LEAGUE_FLY (CODE_FLAGS + 0x54)
+
+#define FLAG_SYS_TV_LATI (CODE_FLAGS + 0x5D)
+
+#define FLAG_SYS_SHOAL_ITEM (CODE_FLAGS + 0x5F)
+#define FLAG_SYS_B_DASH (CODE_FLAGS + 0x60) // got Running Shoes
+#define FLAG_SYS_CTRL_OBJ_DELETE (CODE_FLAGS + 0x61)
+#define FLAG_SYS_RESET_RTC_ENABLE (CODE_FLAGS + 0x62)
+
+#define FLAG_SYS_TOWER_SILVER (CODE_FLAGS + 0x64)
+#define FLAG_SYS_TOWER_GOLD (CODE_FLAGS + 0x65)
+#define FLAG_SYS_DOME_SILVER (CODE_FLAGS + 0x66)
+#define FLAG_SYS_DOME_GOLD (CODE_FLAGS + 0x67)
+#define FLAG_SYS_PALACE_SILVER (CODE_FLAGS + 0x68)
+#define FLAG_SYS_PALACE_GOLD (CODE_FLAGS + 0x69)
+#define FLAG_SYS_ARENA_SILVER (CODE_FLAGS + 0x6A)
+#define FLAG_SYS_ARENA_GOLD (CODE_FLAGS + 0x6B)
+#define FLAG_SYS_FACTORY_SILVER (CODE_FLAGS + 0x6C)
+#define FLAG_SYS_FACTORY_GOLD (CODE_FLAGS + 0x6D)
+#define FLAG_SYS_PIKE_SILVER (CODE_FLAGS + 0x6E)
+#define FLAG_SYS_PIKE_GOLD (CODE_FLAGS + 0x6F)
+#define FLAG_SYS_PYRAMID_SILVER (CODE_FLAGS + 0x70)
+#define FLAG_SYS_PYRAMID_GOLD (CODE_FLAGS + 0x71)
+#define FLAG_SYS_FRONTIER_PASS (CODE_FLAGS + 0x72)
+
+#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (CODE_FLAGS + 0x77)
+
+#define FLAG_SYS_MYSTERY_GIFT_ENABLE (CODE_FLAGS + 0x7B)
// SPECIAL FLAGS (unknown purpose)
diff --git a/include/global.h b/include/global.h
index 3421517d7..070f8c0d3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -426,30 +426,52 @@ struct ContestWinner
u8 contestRank;
};
-struct DaycareMon
+struct DaycareMiscMon
{
- struct BoxPokemon mon;
struct MailStruct mail;
u8 OT_name[OT_NAME_LENGTH + 1];
- u8 monName[11];
- u8 language_maybe : 4;
- u8 unknown : 4;
- u32 stepsTaken;
+ u8 monName[POKEMON_NAME_LENGTH + 1];
+ u8 gameLanguage:4;
+ u8 monLanguage:4;
};
-struct DaycareData
+struct DaycareMon
+{
+ struct BoxPokemon mon;
+ struct DaycareMiscMon misc;
+ u32 steps;
+};
+
+#define DAYCARE_MON_COUNT 2
+
+struct DayCare
{
- struct DaycareMon mons[2];
+ struct DaycareMon mons[DAYCARE_MON_COUNT];
u32 offspringPersonality;
u8 stepCounter;
};
+struct DayCareMail
+{
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
+};
+
+struct RecordMixingDayCareMail
+{
+ struct DayCareMail mail[DAYCARE_MON_COUNT];
+ u32 numDaycareMons;
+ bool16 holdsItem[DAYCARE_MON_COUNT];
+};
+
#define MAP_OBJECTS_COUNT 16
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 300
#define VARS_COUNT 256
+#define MAIL_COUNT 16
-enum {
+enum
+{
LILYCOVE_LADY_QUIZ,
LILYCOVE_LADY_FAVOUR,
LILYCOVE_LADY_CONTEST
@@ -579,15 +601,14 @@ struct SaveBlock1
/*0x2BB0*/ u16 unk2BB0[6];
/*0x2BBC*/ u16 unk2BBC[6];
/*0x2BC8*/ u16 unk2BC8[6];
- /*0x2BD4*/ u16 unk2BD4[3];
- /*0x2BE0*/ struct MailStruct mail[16];
+ /*0x2BD4*/ u16 unk2BD4[6];
+ /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
- /*0x2e8c*/ u8 filler_2E8C[0x4];
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
- /*0x3030*/ struct DaycareData daycare;
+ /*0x3030*/ struct DayCare daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x31A0*/ u8 unk_31A0;
/*0x31A1*/ u8 filler_31A1[7];
diff --git a/include/heal_location.h b/include/heal_location.h
new file mode 100644
index 000000000..1f966f1ae
--- /dev/null
+++ b/include/heal_location.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_HEAL_LOCATION_H
+#define GUARD_HEAL_LOCATION_H
+
+// Exported type declarations
+
+struct UnkStruct_0859F534 {
+ const union AffineAnimCmd *const *const affineAnims;
+ void (* callback)(struct Sprite *sprite);
+};
+
+struct HealLocation
+{
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+const struct HealLocation *GetHealLocationPointer(u32 loc);
+
+#endif //GUARD_HEAL_LOCATION_H
diff --git a/include/items.h b/include/items.h
index 69515f18e..1f6c288c5 100644
--- a/include/items.h
+++ b/include/items.h
@@ -386,4 +386,7 @@ enum
ITEM_OLD_SEA_MAP, // 0x178
};
+#define NUM_TECHNICAL_MACHINES 50
+#define NUM_HIDDEN_MACHINES 8
+
#endif // GUARD_ITEMS_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 93005e482..0249b06af 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -5,31 +5,33 @@
// Exported RAM declarations
-struct ListMenuItem {
+struct ListMenuItem
+{
const u8 *unk_00;
s32 unk_04;
};
struct ListMenu;
-struct ListMenuTemplate {
- struct ListMenuItem *unk_00;
+struct ListMenuTemplate
+{
+ const struct ListMenuItem *items;
void (* unk_04)(u32, bool8, struct ListMenu *);
void (* unk_08)(u8, s32, u8);
- u16 unk_0c;
- u16 unk_0e;
+ u16 totalItems;
+ u16 maxShowed;
u8 unk_10;
u8 unk_11;
u8 unk_12;
- u8 unk_13;
- u32 unk_14_0:4;
- u32 unk_14_4:4;
- u32 unk_15_0:4;
- u32 unk_15_4:4;
- u32 unk_16_0:1;
- u32 unk_16_1:6;
- u32 unk_16_7:1;
- u32 unk_17_0:6;
+ u8 cursor_Y;
+ u32 upText_Y:4; // x1, x2, x4, x8 = xF
+ u32 cursorColor:4; // x10, x20, x40, x80 = xF0
+ u32 fillColor:4; // x100, x200, x400, x800 = xF00
+ u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000
+ u32 unk_16_0:1; // x10000
+ u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
+ u32 unk_16_7:1; // x800000
+ u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
};
struct ListMenu {
diff --git a/include/mail.h b/include/mail.h
index 16ca1f676..1a29d73b5 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -16,4 +16,10 @@
|| itemId == ITEM_FAB_MAIL \
|| itemId == ITEM_RETRO_MAIL))
+
+bool8 MonHasMail(struct Pokemon *mon);
+void TakeMailFromMon(struct Pokemon *mon);
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
+void ClearMailStruct(struct MailStruct *mail);
+
#endif // GUARD_MAIL_H
diff --git a/include/menu.h b/include/menu.h
index d8b2afc5c..e93d688e4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -29,5 +29,7 @@ bool8 free_temp_tile_data_buffers_if_possible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
s8 sub_8198C58(void);
+void do_scheduled_bg_tilemap_copies_to_vram(void);
+void clear_scheduled_bg_copies_to_vram(void);
#endif // GUARD_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 19bcaaf01..ea3d27319 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -53,13 +53,16 @@ void Overworld_ChangeMusicTo(u16);
bool32 is_c1_link_related_active(void);
void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
+const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void c2_exit_to_overworld_2_switch(void);
bool32 sub_8087598(void);
void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
void warp_in(void);
+u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
+void sub_8086194(void);
+void sub_8084CCC(u8 spawn);
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
diff --git a/include/party_menu.h b/include/party_menu.h
index c93f63a6d..7a7d59cd0 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -2,6 +2,7 @@
#define GUARD_PARTY_MENU_H
bool8 pokemon_has_move(struct Pokemon *, u16);
+void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 69b9e71d5..1eb052f4e 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -509,9 +509,11 @@ struct Evolution
u16 targetSpecies;
};
+#define EVOS_PER_MON 5
+
struct EvolutionData
{
- struct Evolution evolutions[5];
+ struct Evolution evolutions[EVOS_PER_MON];
};
extern u8 gPlayerPartyCount;
@@ -648,6 +650,9 @@ u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
void sub_806A1C0(u16 arg0, u8 bankIdentity);
void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
u8 GetSecretBaseTrainerPicIndex(void);
+bool8 TryIncrementMonLevel(struct Pokemon *mon);
+void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
+u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
#include "sprite.h"
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 49680793d..9fcfdba96 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -1,8 +1,13 @@
#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
#define GUARD_POKEMON_STORAGE_SYSTEM_H
+#define TOTAL_BOXES_COUNT 14
+#define IN_BOX_COUNT 30
+
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
+void CompactPartySlots(void);
+u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/region_map.h b/include/region_map.h
index 52e7376be..91384d166 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,227 +1,314 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
+#include "bg.h"
+
// Exported type declarations
enum {
- REGION_MAP_LITTLEROOT_TOWN,
- REGION_MAP_OLDALE_TOWN,
- REGION_MAP_DEWFORD_TOWN,
- REGION_MAP_LAVARIDGE_TOWN,
- REGION_MAP_FALLARBOR_TOWN,
- REGION_MAP_VERDANTURF_TOWN,
- REGION_MAP_PACIFIDLOG_TOWN,
- REGION_MAP_PETALBURG_CITY,
- REGION_MAP_SLATEPORT_CITY,
- REGION_MAP_MAUVILLE_CITY,
- REGION_MAP_RUSTBORO_CITY,
- REGION_MAP_FORTREE_CITY,
- REGION_MAP_LILYCOVE_CITY,
- REGION_MAP_MOSSDEEP_CITY,
- REGION_MAP_SOOTOPOLIS_CITY,
- REGION_MAP_EVER_GRANDE_CITY,
- REGION_MAP_ROUTE_101,
- REGION_MAP_ROUTE_102,
- REGION_MAP_ROUTE_103,
- REGION_MAP_ROUTE_104,
- REGION_MAP_ROUTE_105,
- REGION_MAP_ROUTE_106,
- REGION_MAP_ROUTE_107,
- REGION_MAP_ROUTE_108,
- REGION_MAP_ROUTE_109,
- REGION_MAP_ROUTE_110,
- REGION_MAP_ROUTE_111,
- REGION_MAP_ROUTE_112,
- REGION_MAP_ROUTE_113,
- REGION_MAP_ROUTE_114,
- REGION_MAP_ROUTE_115,
- REGION_MAP_ROUTE_116,
- REGION_MAP_ROUTE_117,
- REGION_MAP_ROUTE_118,
- REGION_MAP_ROUTE_119,
- REGION_MAP_ROUTE_120,
- REGION_MAP_ROUTE_121,
- REGION_MAP_ROUTE_122,
- REGION_MAP_ROUTE_123,
- REGION_MAP_ROUTE_124,
- REGION_MAP_ROUTE_125,
- REGION_MAP_ROUTE_126,
- REGION_MAP_ROUTE_127,
- REGION_MAP_ROUTE_128,
- REGION_MAP_ROUTE_129,
- REGION_MAP_ROUTE_130,
- REGION_MAP_ROUTE_131,
- REGION_MAP_ROUTE_132,
- REGION_MAP_ROUTE_133,
- REGION_MAP_ROUTE_134,
- REGION_MAP_UNDERWATER_124,
- REGION_MAP_UNDERWATER_125,
- REGION_MAP_UNDERWATER_126,
- REGION_MAP_UNDERWATER_127,
- REGION_MAP_UNDERWATER_128,
- REGION_MAP_GRANITE_CAVE,
- REGION_MAP_MT_CHIMNEY,
- REGION_MAP_SAFARI_ZONE,
- REGION_MAP_BATTLE_FRONTIER,
- REGION_MAP_PETALBURG_WOODS,
- REGION_MAP_RUSTURF_TUNNEL,
- REGION_MAP_ABANDONED_SHIP,
- REGION_MAP_NEW_MAUVILLE,
- REGION_MAP_METEOR_FALLS,
- REGION_MAP_METEOR_FALLS2,
- REGION_MAP_MT_PYRE,
- REGION_MAP_AQUA_HIDEOUT_OLD,
- REGION_MAP_SHOAL_CAVE,
- REGION_MAP_SEAFLOOR_CAVERN,
- REGION_MAP_UNDERWATER,
- REGION_MAP_VICTORY_ROAD,
- REGION_MAP_MIRAGE_ISLAND,
- REGION_MAP_CAVE_OF_ORIGIN,
- REGION_MAP_SOUTHERN_ISLAND,
- REGION_MAP_FIERY_PATH,
- REGION_MAP_FIERY_PATH2,
- REGION_MAP_JAGGED_PASS,
- REGION_MAP_JAGGED_PASS2,
- REGION_MAP_SEALED_CHAMBER,
- REGION_MAP_UNDERWATER_SEALED_CHAMBER,
- REGION_MAP_SCORCHED_SLAB,
- REGION_MAP_ISLAND_CAVE,
- REGION_MAP_DESERT_RUINS,
- REGION_MAP_ANCIENT_TOMB,
- REGION_MAP_INSIDE_OF_TRUCK,
- REGION_MAP_SKY_PILLAR,
- REGION_MAP_SECRET_BASE,
- REGION_MAP_NONE,
- REGION_MAP_PALLET_TOWN,
- REGION_MAP_VIRIDIAN_CITY,
- REGION_MAP_PEWTER_CITY,
- REGION_MAP_CERULEAN_CITY,
- REGION_MAP_LAVENDER_TOWN,
- REGION_MAP_VERMILION_CITY,
- REGION_MAP_CELADON_CITY,
- REGION_MAP_FUCHSIA_CITY,
- REGION_MAP_CINNABAR_ISLAND,
- REGION_MAP_INDIGO_PLATEAU,
- REGION_MAP_SAFFRON_CITY,
- REGION_MAP_ROUTE_4,
- REGION_MAP_ROUTE_10,
- REGION_MAP_ROUTE_1,
- REGION_MAP_ROUTE_2,
- REGION_MAP_ROUTE_3,
- REGION_MAP_ROUTE_4_2,
- REGION_MAP_ROUTE_5,
- REGION_MAP_ROUTE_6,
- REGION_MAP_ROUTE_7,
- REGION_MAP_ROUTE_8,
- REGION_MAP_ROUTE_9,
- REGION_MAP_ROUTE_10_2,
- REGION_MAP_ROUTE_11,
- REGION_MAP_ROUTE_12,
- REGION_MAP_ROUTE_13,
- REGION_MAP_ROUTE_14,
- REGION_MAP_ROUTE_15,
- REGION_MAP_ROUTE_16,
- REGION_MAP_ROUTE_17,
- REGION_MAP_ROUTE_18,
- REGION_MAP_ROUTE_19,
- REGION_MAP_ROUTE_20,
- REGION_MAP_ROUTE_21,
- REGION_MAP_ROUTE_22,
- REGION_MAP_ROUTE_23,
- REGION_MAP_ROUTE_24,
- REGION_MAP_ROUTE_25,
- REGION_MAP_VIRIDIAN_FOREST,
- REGION_MAP_MT_MOON,
- REGION_MAP_S_S_ANNE,
- REGION_MAP_UNDERGROUND_PATH,
- REGION_MAP_UNDERGROUND_PATH_2,
- REGION_MAP_DIGLETTS_CAVE,
- REGION_MAP_KANTO_VICTORY_ROAD,
- REGION_MAP_ROCKET_HIDEOUT,
- REGION_MAP_SILPH_CO,
- REGION_MAP_POKEMON_MANSION,
- REGION_MAP_KANTO_SAFARI_ZONE,
- REGION_MAP_POKEMON_LEAGUE,
- REGION_MAP_ROCK_TUNNEL,
- REGION_MAP_SEAFOAM_ISLANDS,
- REGION_MAP_POKEMON_TOWER,
- REGION_MAP_CERULEAN_CAVE,
- REGION_MAP_POWER_PLANT,
- REGION_MAP_ONE_ISLAND,
- REGION_MAP_TWO_ISLAND,
- REGION_MAP_THREE_ISLAND,
- REGION_MAP_FOUR_ISLAND,
- REGION_MAP_FIVE_ISLAND,
- REGION_MAP_SEVEN_ISLAND,
- REGION_MAP_SIX_ISLAND,
- REGION_MAP_KINDLE_ROAD,
- REGION_MAP_TREASURE_BEACH,
- REGION_MAP_CAPE_BRINK,
- REGION_MAP_BOND_BRIDGE,
- REGION_MAP_THREE_ISLE_PORT,
- REGION_MAP_SEVII_ISLE_6,
- REGION_MAP_SEVII_ISLE_7,
- REGION_MAP_SEVII_ISLE_8,
- REGION_MAP_SEVII_ISLE_9,
- REGION_MAP_RESORT_GORGEOUS,
- REGION_MAP_WATER_LABYRINTH,
- REGION_MAP_FIVE_ISLE_MEADOW,
- REGION_MAP_MEMORIAL_PILLAR,
- REGION_MAP_OUTCAST_ISLAND,
- REGION_MAP_GREEN_PATH,
- REGION_MAP_WATER_PATH,
- REGION_MAP_RUIN_VALLEY,
- REGION_MAP_TRAINER_TOWER,
- REGION_MAP_CANYON_ENTRANCE,
- REGION_MAP_SEVAULT_CANYON,
- REGION_MAP_TANOBY_RUINS,
- REGION_MAP_SEVII_ISLE_22,
- REGION_MAP_SEVII_ISLE_23,
- REGION_MAP_SEVII_ISLE_24,
- REGION_MAP_NAVEL_ROCK,
- REGION_MAP_MT_EMBER,
- REGION_MAP_BERRY_FOREST,
- REGION_MAP_ICEFALL_CAVE,
- REGION_MAP_ROCKET_WAREHOUSE,
- REGION_MAP_TRAINER_TOWER_2,
- REGION_MAP_DOTTED_HOLE,
- REGION_MAP_LOST_CAVE,
- REGION_MAP_PATTERN_BUSH,
- REGION_MAP_ALTERING_CAVE,
- REGION_MAP_TANOBY_CHAMBERS,
- REGION_MAP_THREE_ISLE_PATH,
- REGION_MAP_TANOBY_KEY,
- REGION_MAP_BIRTH_ISLAND,
- REGION_MAP_MONEAN_CHAMBER,
- REGION_MAP_LIPTOO_CHAMBER,
- REGION_MAP_WEEPTH_CHAMBER,
- REGION_MAP_DILFORD_CHAMBER,
- REGION_MAP_SCUFIB_CHAMBER,
- REGION_MAP_RIXY_CHAMBER,
- REGION_MAP_VIAPOIS_CHAMBER,
- REGION_MAP_EMBER_SPA,
- REGION_MAP_SPECIAL_AREA,
- REGION_MAP_AQUA_HIDEOUT,
- REGION_MAP_MAGMA_HIDEOUT,
- REGION_MAP_MIRAGE_TOWER,
- REGION_MAP_BIRTH_ISLAND_2,
- REGION_MAP_FARAWAY_ISLAND,
- REGION_MAP_ARTISAN_CAVE,
- REGION_MAP_MARINE_CAVE,
- REGION_MAP_UNDERWATER_MARINE_CAVE,
- REGION_MAP_TERRA_CAVE,
- REGION_MAP_UNDERWATER_TERRA_CAVE,
- REGION_MAP_UNDERWATER_UNK1,
- REGION_MAP_UNDERWATER_UNK2,
- REGION_MAP_DESERT_UNDERPASS,
- REGION_MAP_ALTERING_CAVE_2,
- REGION_MAP_NAVEL_ROCK2,
- REGION_MAP_TRAINER_HILL
+ MAPSEC_LITTLEROOT_TOWN,
+ MAPSEC_OLDALE_TOWN,
+ MAPSEC_DEWFORD_TOWN,
+ MAPSEC_LAVARIDGE_TOWN,
+ MAPSEC_FALLARBOR_TOWN,
+ MAPSEC_VERDANTURF_TOWN,
+ MAPSEC_PACIFIDLOG_TOWN,
+ MAPSEC_PETALBURG_CITY,
+ MAPSEC_SLATEPORT_CITY,
+ MAPSEC_MAUVILLE_CITY,
+ MAPSEC_RUSTBORO_CITY,
+ MAPSEC_FORTREE_CITY,
+ MAPSEC_LILYCOVE_CITY,
+ MAPSEC_MOSSDEEP_CITY,
+ MAPSEC_SOOTOPOLIS_CITY,
+ MAPSEC_EVER_GRANDE_CITY,
+ MAPSEC_ROUTE_101,
+ MAPSEC_ROUTE_102,
+ MAPSEC_ROUTE_103,
+ MAPSEC_ROUTE_104,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_106,
+ MAPSEC_ROUTE_107,
+ MAPSEC_ROUTE_108,
+ MAPSEC_ROUTE_109,
+ MAPSEC_ROUTE_110,
+ MAPSEC_ROUTE_111,
+ MAPSEC_ROUTE_112,
+ MAPSEC_ROUTE_113,
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_117,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_119,
+ MAPSEC_ROUTE_120,
+ MAPSEC_ROUTE_121,
+ MAPSEC_ROUTE_122,
+ MAPSEC_ROUTE_123,
+ MAPSEC_ROUTE_124,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_126,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_128,
+ MAPSEC_ROUTE_129,
+ MAPSEC_ROUTE_130,
+ MAPSEC_ROUTE_131,
+ MAPSEC_ROUTE_132,
+ MAPSEC_ROUTE_133,
+ MAPSEC_ROUTE_134,
+ MAPSEC_UNDERWATER_124,
+ MAPSEC_UNDERWATER_125,
+ MAPSEC_UNDERWATER_126,
+ MAPSEC_UNDERWATER_127,
+ MAPSEC_UNDERWATER_SOOTOPOLIS,
+ MAPSEC_GRANITE_CAVE,
+ MAPSEC_MT_CHIMNEY,
+ MAPSEC_SAFARI_ZONE,
+ MAPSEC_BATTLE_FRONTIER,
+ MAPSEC_PETALBURG_WOODS,
+ MAPSEC_RUSTURF_TUNNEL,
+ MAPSEC_ABANDONED_SHIP,
+ MAPSEC_NEW_MAUVILLE,
+ MAPSEC_METEOR_FALLS,
+ MAPSEC_METEOR_FALLS2,
+ MAPSEC_MT_PYRE,
+ MAPSEC_AQUA_HIDEOUT_OLD,
+ MAPSEC_SHOAL_CAVE,
+ MAPSEC_SEAFLOOR_CAVERN,
+ MAPSEC_UNDERWATER_128,
+ MAPSEC_VICTORY_ROAD,
+ MAPSEC_MIRAGE_ISLAND,
+ MAPSEC_CAVE_OF_ORIGIN,
+ MAPSEC_SOUTHERN_ISLAND,
+ MAPSEC_FIERY_PATH,
+ MAPSEC_FIERY_PATH2,
+ MAPSEC_JAGGED_PASS,
+ MAPSEC_JAGGED_PASS2,
+ MAPSEC_SEALED_CHAMBER,
+ MAPSEC_UNDERWATER_SEALED_CHAMBER,
+ MAPSEC_SCORCHED_SLAB,
+ MAPSEC_ISLAND_CAVE,
+ MAPSEC_DESERT_RUINS,
+ MAPSEC_ANCIENT_TOMB,
+ MAPSEC_INSIDE_OF_TRUCK,
+ MAPSEC_SKY_PILLAR,
+ MAPSEC_SECRET_BASE,
+ MAPSEC_DYNAMIC,
+ MAPSEC_PALLET_TOWN,
+ MAPSEC_VIRIDIAN_CITY,
+ MAPSEC_PEWTER_CITY,
+ MAPSEC_CERULEAN_CITY,
+ MAPSEC_LAVENDER_TOWN,
+ MAPSEC_VERMILION_CITY,
+ MAPSEC_CELADON_CITY,
+ MAPSEC_FUCHSIA_CITY,
+ MAPSEC_CINNABAR_ISLAND,
+ MAPSEC_INDIGO_PLATEAU,
+ MAPSEC_SAFFRON_CITY,
+ MAPSEC_ROUTE_4,
+ MAPSEC_ROUTE_10,
+ MAPSEC_ROUTE_1,
+ MAPSEC_ROUTE_2,
+ MAPSEC_ROUTE_3,
+ MAPSEC_ROUTE_4_2,
+ MAPSEC_ROUTE_5,
+ MAPSEC_ROUTE_6,
+ MAPSEC_ROUTE_7,
+ MAPSEC_ROUTE_8,
+ MAPSEC_ROUTE_9,
+ MAPSEC_ROUTE_10_2,
+ MAPSEC_ROUTE_11,
+ MAPSEC_ROUTE_12,
+ MAPSEC_ROUTE_13,
+ MAPSEC_ROUTE_14,
+ MAPSEC_ROUTE_15,
+ MAPSEC_ROUTE_16,
+ MAPSEC_ROUTE_17,
+ MAPSEC_ROUTE_18,
+ MAPSEC_ROUTE_19,
+ MAPSEC_ROUTE_20,
+ MAPSEC_ROUTE_21,
+ MAPSEC_ROUTE_22,
+ MAPSEC_ROUTE_23,
+ MAPSEC_ROUTE_24,
+ MAPSEC_ROUTE_25,
+ MAPSEC_VIRIDIAN_FOREST,
+ MAPSEC_MT_MOON,
+ MAPSEC_S_S_ANNE,
+ MAPSEC_UNDERGROUND_PATH,
+ MAPSEC_UNDERGROUND_PATH_2,
+ MAPSEC_DIGLETTS_CAVE,
+ MAPSEC_KANTO_VICTORY_ROAD,
+ MAPSEC_ROCKET_HIDEOUT,
+ MAPSEC_SILPH_CO,
+ MAPSEC_POKEMON_MANSION,
+ MAPSEC_KANTO_SAFARI_ZONE,
+ MAPSEC_POKEMON_LEAGUE,
+ MAPSEC_ROCK_TUNNEL,
+ MAPSEC_SEAFOAM_ISLANDS,
+ MAPSEC_POKEMON_TOWER,
+ MAPSEC_CERULEAN_CAVE,
+ MAPSEC_POWER_PLANT,
+ MAPSEC_ONE_ISLAND,
+ MAPSEC_TWO_ISLAND,
+ MAPSEC_THREE_ISLAND,
+ MAPSEC_FOUR_ISLAND,
+ MAPSEC_FIVE_ISLAND,
+ MAPSEC_SEVEN_ISLAND,
+ MAPSEC_SIX_ISLAND,
+ MAPSEC_KINDLE_ROAD,
+ MAPSEC_TREASURE_BEACH,
+ MAPSEC_CAPE_BRINK,
+ MAPSEC_BOND_BRIDGE,
+ MAPSEC_THREE_ISLE_PORT,
+ MAPSEC_SEVII_ISLE_6,
+ MAPSEC_SEVII_ISLE_7,
+ MAPSEC_SEVII_ISLE_8,
+ MAPSEC_SEVII_ISLE_9,
+ MAPSEC_RESORT_GORGEOUS,
+ MAPSEC_WATER_LABYRINTH,
+ MAPSEC_FIVE_ISLE_MEADOW,
+ MAPSEC_MEMORIAL_PILLAR,
+ MAPSEC_OUTCAST_ISLAND,
+ MAPSEC_GREEN_PATH,
+ MAPSEC_WATER_PATH,
+ MAPSEC_RUIN_VALLEY,
+ MAPSEC_TRAINER_TOWER,
+ MAPSEC_CANYON_ENTRANCE,
+ MAPSEC_SEVAULT_CANYON,
+ MAPSEC_TANOBY_RUINS,
+ MAPSEC_SEVII_ISLE_22,
+ MAPSEC_SEVII_ISLE_23,
+ MAPSEC_SEVII_ISLE_24,
+ MAPSEC_NAVEL_ROCK,
+ MAPSEC_MT_EMBER,
+ MAPSEC_BERRY_FOREST,
+ MAPSEC_ICEFALL_CAVE,
+ MAPSEC_ROCKET_WAREHOUSE,
+ MAPSEC_TRAINER_TOWER_2,
+ MAPSEC_DOTTED_HOLE,
+ MAPSEC_LOST_CAVE,
+ MAPSEC_PATTERN_BUSH,
+ MAPSEC_ALTERING_CAVE,
+ MAPSEC_TANOBY_CHAMBERS,
+ MAPSEC_THREE_ISLE_PATH,
+ MAPSEC_TANOBY_KEY,
+ MAPSEC_BIRTH_ISLAND,
+ MAPSEC_MONEAN_CHAMBER,
+ MAPSEC_LIPTOO_CHAMBER,
+ MAPSEC_WEEPTH_CHAMBER,
+ MAPSEC_DILFORD_CHAMBER,
+ MAPSEC_SCUFIB_CHAMBER,
+ MAPSEC_RIXY_CHAMBER,
+ MAPSEC_VIAPOIS_CHAMBER,
+ MAPSEC_EMBER_SPA,
+ MAPSEC_SPECIAL_AREA,
+ MAPSEC_AQUA_HIDEOUT,
+ MAPSEC_MAGMA_HIDEOUT,
+ MAPSEC_MIRAGE_TOWER,
+ MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_FARAWAY_ISLAND,
+ MAPSEC_ARTISAN_CAVE,
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_TERRA_CAVE,
+ MAPSEC_UNDERWATER_TERRA_CAVE,
+ MAPSEC_UNDERWATER_UNK1,
+ MAPSEC_UNDERWATER_129,
+ MAPSEC_DESERT_UNDERPASS,
+ MAPSEC_ALTERING_CAVE_2,
+ MAPSEC_NAVEL_ROCK2,
+ MAPSEC_TRAINER_HILL,
+ MAPSEC_NONE
+};
+
+enum
+{
+ INPUT_EVENT_NONE,
+ INPUT_EVENT_MOVE_START,
+ INPUT_EVENT_MOVE_CONT,
+ INPUT_EVENT_MOVE_END,
+ INPUT_EVENT_A_BUTTON,
+ INPUT_EVENT_B_BUTTON,
};
+enum {
+ MAPSECTYPE_NONE,
+ MAPSECTYPE_PLAIN,
+ MAPSECTYPE_CITY_CANFLY,
+ MAPSECTYPE_CITY_CANTFLY,
+ MAPSECTYPE_BATTLE_FRONTIER
+};
+
+struct RegionMap {
+ /*0x000*/ u16 mapSecId;
+ /*0x002*/ u8 iconDrawType;
+ /*0x003*/ u8 posWithinMapSec;
+ /*0x004*/ u8 mapSecName[0x14];
+ /*0x018*/ u8 (*inputCallback)(void);
+ /*0x01c*/ struct Sprite *cursorSprite;
+ /*0x020*/ struct Sprite *playerIconSprite;
+ /*0x024*/ s32 bg2x;
+ /*0x028*/ s32 bg2y;
+ /*0x02c*/ u32 bg2pa;
+ /*0x034*/ u32 bg2pc;
+ /*0x030*/ u32 bg2pb;
+ /*0x038*/ u32 bg2pd;
+ /*0x03c*/ s32 unk_03c;
+ /*0x040*/ s32 unk_040;
+ /*0x044*/ s32 unk_044;
+ /*0x048*/ s32 unk_048;
+ /*0x04c*/ s32 unk_04c;
+ /*0x050*/ s32 unk_050;
+ /*0x054*/ u16 cursorPosX;
+ /*0x056*/ u16 cursorPosY;
+ /*0x058*/ u16 cursorTileTag;
+ /*0x05a*/ u16 cursorPaletteTag;
+ /*0x05c*/ s16 scrollX;
+ /*0x05e*/ s16 scrollY;
+ /*0x060*/ s16 unk_060;
+ /*0x062*/ s16 unk_062;
+ /*0x064*/ u16 zoomedCursorPosX;
+ /*0x066*/ u16 zoomedCursorPosY;
+ /*0x068*/ s16 zoomedCursorDeltaY;
+ /*0x06a*/ s16 zoomedCursorDeltaX;
+ /*0x06c*/ u16 zoomedCursorMovementFrameCounter;
+ /*0x06e*/ u16 unk_06e;
+ /*0x070*/ u16 playerIconTileTag;
+ /*0x072*/ u16 playerIconPaletteTag;
+ /*0x074*/ u16 playerIconSpritePosX;
+ /*0x076*/ u16 playerIconSpritePosY;
+ /*0x078*/ bool8 zoomed;
+ /*0x079*/ u8 initStep;
+ /*0x07a*/ s8 cursorMovementFrameCounter;
+ /*0x07b*/ s8 cursorDeltaX;
+ /*0x07c*/ s8 cursorDeltaY;
+ /*0x07d*/ bool8 needUpdateVideoRegs;
+ /*0x07e*/ bool8 blinkPlayerIcon;
+ /*0x07f*/ bool8 playerIsInCave;
+ /*0x080*/ u8 bgNum;
+ /*0x081*/ u8 charBaseIdx;
+ /*0x082*/ u8 mapBaseIdx;
+ /*0x083*/ bool8 bgManaged;
+ /*0x084*/ u8 filler_084[0x100];
+ /*0x184*/ u8 cursorSmallImage[0x100];
+ /*0x284*/ u8 cursorLargeImage[0x600];
+}; // size = 0x884
+
// Exported RAM declarations
// Exported ROM declarations
-void GetMapName(u8 *, u16, u16);
+void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
+bool8 sub_8122DB0(void);
+void UpdateRegionMapVideoRegs(void);
+void InitRegionMap(struct RegionMap *regionMap, u8 argument);
+u8 sub_81230AC(void);
+bool8 sub_8123514(void);
+void FreeRegionMapIconResources(void);
+u16 GetRegionMapSectionIdAt(u16 x, u16 y);
+void CreateRegionMapPlayerIcon(u16 x, u16 y);
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
+u8 *GetMapName(u8 *, u16, u16);
+bool32 sub_8124668(u8 mapSecId);
#endif //GUARD_REGION_MAP_H
diff --git a/include/rom6.h b/include/rom6.h
index a6aab998c..b4a972794 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -3,6 +3,7 @@
void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
+u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
#endif //GUARD_ROM6_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 14defff26..630a36773 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -8,5 +8,6 @@
// Exported ROM declarations
void sub_80E9578(void);
void sub_80E980C(void);
+u8 *GetSecretBaseMapName(u8 *dest);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/strings.h b/include/strings.h
index fcdb1eca4..08e2b4bba 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -70,6 +70,13 @@ extern const u8 gText_Cushion[];
extern const u8 gText_Decorate[];
extern const u8 gText_PutAway[];
extern const u8 gText_Toss2[];
+extern const u8 gText_Hoenn[];
+extern const u8 gText_Ferry[];
+extern const u8 gText_SecretBase[];
+extern const u8 gText_Hideout[];
+extern const u8 gText_FlyToWhere[];
+extern const u8 gText_PokemonLeague[];
+extern const u8 gText_PokemonCenter[];
extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
diff --git a/include/vars.h b/include/vars.h
index c097faff7..f8057d4b5 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -29,13 +29,14 @@
#define VAR_POISON_STEP_COUNTER 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_0x4037 0x4037
#define VAR_DAYS 0x4040
#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_STORAGE_UNKNOWN 0x4036
#define VAR_POKELOT_PRIZE 0x4045
#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
+#define VAR_SEEDOT_SIZE_RECORD 0x4047
#define VAR_ASH_GATHER_COUNT 0x4048
#define VAR_BIRCH_STATE 0x4049
#define VAR_CRUISE_STEP_COUNT 0x404A
diff --git a/ld_script.txt b/ld_script.txt
index 218f6157b..c6ee53feb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -77,7 +77,7 @@ SECTIONS {
src/rng.o(.text);
src/util.o(.text);
src/blend_palette.o(.text);
- asm/daycare.o(.text);
+ src/daycare.o(.text);
src/egg_hatch.o(.text);
src/battle_interface.o(.text);
asm/smokescreen.o(.text);
@@ -130,6 +130,7 @@ SECTIONS {
asm/option_menu.o(.text);
asm/pokedex.o(.text);
asm/trainer_card.o(.text);
+ src/pokemon_storage_system.o(.text);
asm/pokemon_storage_system.o(.text);
asm/pokemon_icon.o(.text);
asm/script_movement.o(.text);
@@ -168,8 +169,8 @@ SECTIONS {
src/mail.o(.text);
asm/menu_helpers.o(.text);
asm/dewford_trend.o(.text);
- asm/heal_location.o(.text);
- asm/region_map.o(.text);
+ src/heal_location.o(.text);
+ src/region_map.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
asm/slot_machine.o(.text);
@@ -213,7 +214,7 @@ SECTIONS {
asm/player_pc.o(.text);
asm/intro.o(.text);
src/reset_save_heap.o(.text);
- asm/field_region_map.o(.text);
+ src/field_region_map.o(.text);
asm/battle_anim_8170478.o(.text);
src/hall_of_fame.o(.text);
asm/credits.o(.text);
@@ -343,7 +344,7 @@ SECTIONS {
data/data2c.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
- data/daycare.o(.rodata);
+ src/daycare.o(.rodata);
src/egg_hatch.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
src/battle_interface.o(.rodata);
@@ -415,8 +416,8 @@ SECTIONS {
data/mauville_old_man.o(.rodata);
src/mail.o(.rodata);
data/menu_helpers.o(.rodata);
- data/heal_location.o(.rodata);
- data/region_map.o(.rodata);
+ src/heal_location.o(.rodata);
+ src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/decoration.o(.rodata);
data/slot_machine.o(.rodata);
@@ -440,7 +441,7 @@ SECTIONS {
src/battle_controller_wally.o(.rodata);
data/player_pc.o(.rodata);
data/intro.o(.rodata);
- data/field_region_map.o(.rodata);
+ src/field_region_map.o(.rodata);
data/battle_anim_8170478.o(.rodata);
src/hall_of_fame.o(.rodata);
data/credits.o(.rodata);
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index c8055470a..85b2bc509 100755
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -13,7 +13,7 @@ extern void DrawWholeMapView(); // field_camera
extern void SetCameraPanningCallback(void ( *callback)()); // field_camera
extern void InstallCameraPanAheadCallback(void);
extern void SetCameraPanning(s16 x, s16 y);
-extern u8 brm_get_pokemon_selection(void);
+extern u8 GetCursorSelectionMonId(void);
extern void FieldEffectActiveListRemove(u8 id); // field_effect
extern u8 oei_task_add(void);
@@ -220,7 +220,7 @@ bool8 ShouldDoBrailleStrengthEffect(void)
void sub_8179834(void)
{
- gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
@@ -256,7 +256,7 @@ bool8 ShouldDoBrailleFlyEffect(void)
void sub_8179918(void)
{
- gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
diff --git a/src/daycare.c b/src/daycare.c
new file mode 100644
index 000000000..8dd45863a
--- /dev/null
+++ b/src/daycare.c
@@ -0,0 +1,1318 @@
+#include "global.h"
+#include "pokemon.h"
+#include "daycare.h"
+#include "string_util.h"
+#include "species.h"
+#include "items.h"
+#include "mail.h"
+#include "pokemon_storage_system.h"
+#include "event_data.h"
+#include "rng.h"
+#include "main.h"
+#include "moves.h"
+#include "egg_hatch.h"
+#include "text.h"
+#include "menu.h"
+#include "international_string_util.h"
+#include "script.h"
+#include "task.h"
+#include "window.h"
+#include "list_menu.h"
+
+#define EGG_MOVES_ARRAY_COUNT 10
+#define EGG_LVL_UP_MOVES_ARRAY_COUNT 50
+
+extern u16 gMoveToLearn;
+
+// text
+extern const u8 gText_MaleSymbol4[];
+extern const u8 gText_FemaleSymbol4[];
+extern const u8 gText_GenderlessSymbol[];
+extern const u8 gText_NewLine2[];
+extern const u8 gText_Exit4[];
+extern const u8 gText_Lv[];
+extern const u8 gExpandedPlaceholder_Empty[];
+extern const u8 gText_Exit[];
+extern const u8 gDaycareText_GetAlongVeryWell[];
+extern const u8 gDaycareText_GetAlong[];
+extern const u8 gDaycareText_DontLikeOther[];
+extern const u8 gDaycareText_PlayOther[];
+
+extern u8 GetCursorSelectionMonId(void);
+extern u16 ItemIdToBattleMoveId(u16);
+extern s32 ListMenuHandleInput(u8);
+extern void sub_81AE6C8(u8, u16*, u16*);
+extern void sub_819746C(u8, bool8);
+extern void sub_81973FC(u8, bool8);
+extern void sub_81B9328(void);
+extern void sub_81AF078(u32, bool8, struct ListMenu *);
+extern void c2_exit_to_overworld_2_switch(void);
+
+// this file's functions
+static void ClearDaycareMonMisc(struct DaycareMiscMon *misc);
+static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
+static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
+static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
+
+// RAM buffers used to assist with BuildEggMoveset()
+EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
+EWRAM_DATA static u16 sHatchedEggFatherMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggFinalMoves[4] = {0};
+EWRAM_DATA static u16 sHatchedEggEggMoves[EGG_MOVES_ARRAY_COUNT] = {0};
+EWRAM_DATA static u16 sHatchedEggMotherMoves[4] = {0};
+
+#include "data/pokemon/egg_moves.h"
+
+static const struct WindowTemplate sDaycareLevelMenuWindowTemplate = {0, 0xF, 1, 0xE, 6, 0xF, 8};
+
+static const struct ListMenuItem sLevelMenuItems[] =
+{
+ {gExpandedPlaceholder_Empty, 0},
+ {gExpandedPlaceholder_Empty, 1},
+ {gText_Exit, 5}
+};
+
+static const struct ListMenuTemplate sDaycareListMenuLevelTemplate =
+{
+ .items = sLevelMenuItems,
+ .unk_04 = sub_81AF078,
+ .unk_08 = DaycarePrintMonInfo,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .unk_10 = 0,
+ .unk_11 = 0,
+ .unk_12 = 8,
+ .cursor_Y = 0,
+ .upText_Y = 1,
+ .cursorColor = 2,
+ .fillColor = 1,
+ .cursorShadowColor = 3,
+ .unk_16_0 = TRUE,
+ .spaceBetweenItems = 0,
+ .unk_16_7 = FALSE,
+ .unk_17_0 = 1
+};
+
+static const u8 *const sCompatibilityMessages[] =
+{
+ gDaycareText_GetAlongVeryWell,
+ gDaycareText_GetAlong,
+ gDaycareText_DontLikeOther,
+ gDaycareText_PlayOther
+};
+
+static const u8 sJapaneseEggNickname[] = _("タマゴ"); // "tamago" ("egg" in Japanese)
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
+{
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
+{
+ u8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 CountPokemonInDaycare(struct DayCare *daycare)
+{
+ u8 i, count;
+ count = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) != 0)
+ count++;
+ }
+
+ return count;
+}
+
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail)
+{
+ u8 i;
+ u8 numDaycareMons = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ numDaycareMons++;
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM) == ITEM_NONE)
+ {
+ daycareMail->holdsItem[i] = FALSE;
+ }
+ else
+ {
+ daycareMail->holdsItem[i] = TRUE;
+ }
+ }
+ else
+ {
+ daycareMail->holdsItem[i] = TRUE;
+ }
+ }
+
+ daycareMail->numDaycareMons = numDaycareMons;
+}
+
+static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
+{
+ u8 i;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycareMon)
+{
+ if (MonHasMail(mon))
+ {
+ u8 mailId;
+
+ StringCopy(daycareMon->misc.OT_name, gSaveBlock2Ptr->playerName);
+ GetMonNick(mon, daycareMon->misc.monName);
+ StripExtCtrlCodes(daycareMon->misc.monName);
+ daycareMon->misc.gameLanguage = LANGUAGE_ENGLISH;
+ daycareMon->misc.monLanguage = GetMonData(mon, MON_DATA_LANGUAGE);
+ mailId = GetMonData(mon, MON_DATA_MAIL);
+ daycareMon->misc.mail = gSaveBlock1Ptr->mail[mailId];
+ TakeMailFromMon(mon);
+ }
+
+ daycareMon->mon = mon->box;
+ BoxMonRestorePP(&daycareMon->mon);
+ daycareMon->steps = 0;
+ ZeroMonData(mon);
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+}
+
+static void StorePokemonInEmptyDaycareSlot(struct Pokemon *mon, struct DayCare *daycare)
+{
+ s8 slotId = Daycare_FindEmptySpot(daycare);
+ StorePokemonInDaycare(mon, &daycare->mons[slotId]);
+}
+
+void StoreSelectedPokemonInDaycare(void)
+{
+ u8 monId = GetCursorSelectionMonId();
+ StorePokemonInEmptyDaycareSlot(&gPlayerParty[monId], &gSaveBlock1Ptr->daycare);
+}
+
+// Shifts the second daycare pokemon slot into the first slot.
+static void ShiftDaycareSlots(struct DayCare *daycare)
+{
+ // This condition is only satisfied when the player takes out the first pokemon from the daycare.
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0
+ && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == 0)
+ {
+ daycare->mons[0].mon = daycare->mons[1].mon;
+ ZeroBoxMonData(&daycare->mons[1].mon);
+
+ daycare->mons[0].misc = daycare->mons[1].misc;
+ daycare->mons[0].steps = daycare->mons[1].steps;
+ daycare->mons[1].steps = 0;
+ ClearDaycareMonMisc(&daycare->mons[1].misc);
+ }
+}
+
+static void ApplyDaycareExperience(struct Pokemon *mon)
+{
+ s32 i;
+ bool8 firstMove;
+ u16 learnedMove;
+
+ for (i = 0; i < MAX_MON_LEVEL; i++)
+ {
+ // Add the mon's gained daycare experience level by level until it can't level up anymore.
+ if (TryIncrementMonLevel(mon))
+ {
+ // Teach the mon new moves it learned while in the daycare.
+ firstMove = TRUE;
+ while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0)
+ {
+ firstMove = FALSE;
+ if (learnedMove == 0xFFFF)
+ {
+ // Mon already knows 4 moves.
+ DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ // Re-calculate the mons stats at its new level.
+ CalculateMonStats(mon);
+}
+
+static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
+{
+ u16 species;
+ u32 experience;
+ struct Pokemon pokemon;
+
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ species = GetBoxMonData(&daycareMon->mon, MON_DATA_SPECIES);
+ BoxMonToMon(&daycareMon->mon, &pokemon);
+
+ if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_MON_LEVEL)
+ {
+ experience = GetMonData(&pokemon, MON_DATA_EXP) + daycareMon->steps;
+ SetMonData(&pokemon, MON_DATA_EXP, &experience);
+ ApplyDaycareExperience(&pokemon);
+ }
+
+ gPlayerParty[PARTY_SIZE - 1] = pokemon;
+ if (daycareMon->misc.mail.itemId)
+ {
+ GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycareMon->misc.mail);
+ ClearDaycareMonMisc(&daycareMon->misc);
+ }
+
+ ZeroBoxMonData(&daycareMon->mon);
+ daycareMon->steps = 0;
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+ return species;
+}
+
+static u16 TakeSelectedPokemonMonFromDaycareShiftSlots(struct DayCare *daycare, u8 slotId)
+{
+ u16 species = TakeSelectedPokemonFromDaycare(&daycare->mons[slotId]);
+ ShiftDaycareSlots(daycare);
+ return species;
+}
+
+u16 TakePokemonFromDaycare(void)
+{
+ return TakeSelectedPokemonMonFromDaycareShiftSlots(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
+}
+
+static u8 GetLevelAfterDaycareSteps(struct BoxPokemon *mon, u32 steps)
+{
+ struct BoxPokemon tempMon = *mon;
+
+ u32 experience = GetBoxMonData(mon, MON_DATA_EXP) + steps;
+ SetBoxMonData(&tempMon, MON_DATA_EXP, &experience);
+ return GetLevelFromBoxMonExp(&tempMon);
+}
+
+static u8 GetNumLevelsGainedFromSteps(struct DaycareMon *daycareMon)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareMon->mon);
+ levelAfter = GetLevelAfterDaycareSteps(&daycareMon->mon, daycareMon->steps);
+ return levelAfter - levelBefore;
+}
+
+static u8 GetNumLevelsGainedForDaycareMon(struct DaycareMon *daycareMon)
+{
+ u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
+ ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2);
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ return numLevelsGained;
+}
+
+static u32 GetDaycareCostForSelectedMon(struct DaycareMon *daycareMon)
+{
+ u32 cost;
+
+ u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycareMon);
+ GetBoxMonNick(&daycareMon->mon, gStringVar1);
+ cost = 100 + 100 * numLevelsGained;
+ ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
+ return cost;
+}
+
+static u16 GetDaycareCostForMon(struct DayCare *daycare, u8 slotId)
+{
+ return GetDaycareCostForSelectedMon(&daycare->mons[slotId]);
+}
+
+void GetDaycareCost(void)
+{
+ gSpecialVar_0x8005 = GetDaycareCostForMon(&gSaveBlock1Ptr->daycare, gSpecialVar_0x8004);
+}
+
+static void Debug_AddDaycareSteps(u16 numSteps)
+{
+ gSaveBlock1Ptr->daycare.mons[0].steps += numSteps;
+ gSaveBlock1Ptr->daycare.mons[1].steps += numSteps;
+}
+
+u8 GetNumLevelsGainedFromDaycare(void)
+{
+ if (GetBoxMonData(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0)
+ return GetNumLevelsGainedForDaycareMon(&gSaveBlock1Ptr->daycare.mons[gSpecialVar_0x8004]);
+
+ return 0;
+}
+
+static void ClearDaycareMonMisc(struct DaycareMiscMon *misc)
+{
+ s32 i;
+
+ for (i = 0; i < OT_NAME_LENGTH + 1; i++)
+ misc->OT_name[i] = 0;
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
+ misc->monName[i] = 0;
+
+ ClearMailStruct(&misc->mail);
+}
+
+static void ClearDaycareMon(struct DaycareMon *daycareMon)
+{
+ ZeroBoxMonData(&daycareMon->mon);
+ daycareMon->steps = 0;
+ ClearDaycareMonMisc(&daycareMon->misc);
+}
+
+static void ClearAllDaycareData(struct DayCare *daycare)
+{
+ u8 i;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ ClearDaycareMon(&daycare->mons[i]);
+
+ daycare->offspringPersonality = 0;
+ daycare->stepCounter = 0;
+}
+
+// Determines what the species of an Egg would be based on the given species.
+// It determines this by working backwards through the evolution chain of the
+// given species.
+static u16 GetEggSpecies(u16 species)
+{
+ int i, j, k;
+ bool8 found;
+
+ // Working backwards up to 5 times seems arbitrary, since the maximum number
+ // of times would only be 3 for 3-stage evolutions.
+ for (i = 0; i < EVOS_PER_MON; i++)
+ {
+ found = FALSE;
+ for (j = 1; j < NUM_SPECIES; j++)
+ {
+ for (k = 0; k < EVOS_PER_MON; k++)
+ {
+ if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ {
+ species = j;
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (found)
+ break;
+ }
+
+ if (j == NUM_SPECIES)
+ break;
+ }
+
+ return species;
+}
+
+static s32 GetSlotToInheritNature(struct DayCare *daycare)
+{
+ u32 species[DAYCARE_MON_COUNT];
+ s32 i;
+ s32 dittoCount;
+ s32 slot = -1;
+
+ // search for female gender
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
+ slot = i;
+ }
+
+ // search for ditto
+ for (dittoCount = 0, i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ dittoCount++, slot = i;
+ }
+
+ // coin flip on ...two Dittos
+ if (dittoCount == 2)
+ {
+ if (Random() >= USHRT_MAX / 2)
+ slot = 0;
+ else
+ slot = 1;
+ }
+
+ // nature inheritance only if holds everstone
+ if (GetBoxMonData(&daycare->mons[slot].mon, MON_DATA_HELD_ITEM) != ITEM_EVERSTONE
+ || Random() >= USHRT_MAX / 2)
+ {
+ return -1;
+ }
+
+ return slot;
+}
+
+static void _TriggerPendingDaycareEgg(struct DayCare *daycare)
+{
+ s32 natureSlot;
+ s32 natureTries = 0;
+
+ SeedRng2(gMain.vblankCounter2);
+ natureSlot = GetSlotToInheritNature(daycare);
+
+ if (natureSlot < 0)
+ {
+ daycare->offspringPersonality = (Random2() << 0x10) | ((Random() % 0xfffe) + 1);
+ }
+ else
+ {
+ u8 wantedNature = GetNatureFromPersonality(GetBoxMonData(&daycare->mons[natureSlot].mon, MON_DATA_PERSONALITY, NULL));
+ u32 personality;
+
+ do
+ {
+ personality = (Random2() << 0x10) | (Random());
+ if (wantedNature == GetNatureFromPersonality(personality) && personality != 0)
+ break; // we found a personality with the same nature
+
+ natureTries++;
+ } while (natureTries <= 2400);
+
+ daycare->offspringPersonality = personality;
+ }
+
+ FlagSet(FLAG_PENDING_DAYCARE_EGG);
+}
+
+static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare)
+{
+ daycare->offspringPersonality = (Random()) | (0x8000);
+ FlagSet(FLAG_PENDING_DAYCARE_EGG);
+}
+
+void TriggerPendingDaycareEgg(void)
+{
+ _TriggerPendingDaycareEgg(&gSaveBlock1Ptr->daycare);
+}
+
+static void TriggerPendingDaycareMaleEgg(void)
+{
+ _TriggerPendingDaycareMaleEgg(&gSaveBlock1Ptr->daycare);
+}
+
+// Removes the selected index from the given IV list and shifts the remaining
+// elements to the left.
+static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
+{
+ s32 i, j;
+ u8 temp[NUM_STATS];
+
+ ivs[selectedIv] = 0xff;
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ temp[i] = ivs[i];
+ }
+
+ j = 0;
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ if (temp[i] != 0xff)
+ ivs[j++] = temp[i];
+ }
+}
+
+static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
+{
+ u8 i;
+ u8 selectedIvs[3];
+ u8 availableIVs[NUM_STATS];
+ u8 whichParent[ARRAY_COUNT(selectedIvs)];
+ u8 iv;
+
+ // Initialize a list of IV indices.
+ for (i = 0; i < NUM_STATS; i++)
+ {
+ availableIVs[i] = i;
+ }
+
+ // Select the 3 IVs that will be inherited.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ // Randomly pick an IV from the available list.
+ selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
+
+ // Remove the selected IV index from the available IV indices.
+ RemoveIVIndexFromList(availableIVs, i);
+ }
+
+ // Determine which parent each of the selected IVs should inherit from.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ whichParent[i] = Random() % 2;
+ }
+
+ // Set each of inherited IVs on the egg mon.
+ for (i = 0; i < ARRAY_COUNT(selectedIvs); i++)
+ {
+ switch (selectedIvs[i])
+ {
+ case 0:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_HP_IV);
+ SetMonData(egg, MON_DATA_HP_IV, &iv);
+ break;
+ case 1:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_ATK_IV);
+ SetMonData(egg, MON_DATA_ATK_IV, &iv);
+ break;
+ case 2:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_DEF_IV);
+ SetMonData(egg, MON_DATA_DEF_IV, &iv);
+ break;
+ case 3:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPEED_IV);
+ SetMonData(egg, MON_DATA_SPEED_IV, &iv);
+ break;
+ case 4:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPATK_IV);
+ SetMonData(egg, MON_DATA_SPATK_IV, &iv);
+ break;
+ case 5:
+ iv = GetBoxMonData(&daycare->mons[whichParent[i]].mon, MON_DATA_SPDEF_IV);
+ SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
+ break;
+ }
+ }
+}
+
+// Counts the number of egg moves a pokemon learns and stores the moves in
+// the given array.
+static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
+{
+ u16 eggMoveIdx;
+ u16 numEggMoves;
+ u16 species;
+ u16 i;
+
+ numEggMoves = 0;
+ eggMoveIdx = 0;
+ species = GetMonData(pokemon, MON_DATA_SPECIES);
+ for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++)
+ {
+ if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
+ {
+ eggMoveIdx = i + 1;
+ break;
+ }
+ }
+
+ for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
+ {
+ if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
+ {
+ // TODO: the curly braces around this if statement are required for a matching build.
+ break;
+ }
+
+ eggMoves[i] = gEggMoves[eggMoveIdx + i];
+ numEggMoves++;
+ }
+
+ return numEggMoves;
+}
+
+static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother)
+{
+ u16 numSharedParentMoves;
+ u32 numLevelUpMoves;
+ u16 numEggMoves;
+ u16 i, j;
+
+ numSharedParentMoves = 0;
+ for (i = 0; i < 4; i++)
+ {
+ sHatchedEggMotherMoves[i] = 0;
+ sHatchedEggFatherMoves[i] = 0;
+ sHatchedEggFinalMoves[i] = 0;
+ }
+ for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
+ sHatchedEggEggMoves[i] = 0;
+ for (i = 0; i < EGG_LVL_UP_MOVES_ARRAY_COUNT; i++)
+ sHatchedEggLevelUpMoves[i] = 0;
+
+ numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), sHatchedEggLevelUpMoves);
+ for (i = 0; i < 4; i++)
+ {
+ sHatchedEggFatherMoves[i] = GetBoxMonData(father, MON_DATA_MOVE1 + i);
+ sHatchedEggMotherMoves[i] = GetBoxMonData(mother, MON_DATA_MOVE1 + i);
+ }
+
+ numEggMoves = GetEggMoves(egg, sHatchedEggEggMoves);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] != MOVE_NONE)
+ {
+ for (j = 0; j < numEggMoves; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == sHatchedEggEggMoves[j])
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
+ break;
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] != MOVE_NONE)
+ {
+ for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFatherMoves[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < 4; j++)
+ {
+ if (sHatchedEggFatherMoves[i] == sHatchedEggMotherMoves[j] && sHatchedEggFatherMoves[i] != MOVE_NONE)
+ sHatchedEggFinalMoves[numSharedParentMoves++] = sHatchedEggFatherMoves[i];
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sHatchedEggFinalMoves[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < numLevelUpMoves; j++)
+ {
+ if (sHatchedEggLevelUpMoves[j] != MOVE_NONE && sHatchedEggFinalMoves[i] == sHatchedEggLevelUpMoves[j])
+ {
+ if (GiveMoveToMon(egg, sHatchedEggFinalMoves[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFinalMoves[i]);
+ break;
+ }
+ }
+ }
+}
+
+static void RemoveEggFromDayCare(struct DayCare *daycare)
+{
+ daycare->offspringPersonality = 0;
+ daycare->stepCounter = 0;
+}
+
+void RejectEggFromDayCare(void)
+{
+ RemoveEggFromDayCare(&gSaveBlock1Ptr->daycare);
+}
+
+static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare)
+{
+ u16 motherItem, fatherItem;
+ if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL)
+ {
+ motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM);
+ fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM);
+ if (*species == SPECIES_WYNAUT && motherItem != ITEM_LAX_INCENSE && fatherItem != ITEM_LAX_INCENSE)
+ {
+ *species = SPECIES_WOBBUFFET;
+ }
+
+ if (*species == SPECIES_AZURILL && motherItem != ITEM_SEA_INCENSE && fatherItem != ITEM_SEA_INCENSE)
+ {
+ *species = SPECIES_MARILL;
+ }
+ }
+}
+
+static void GiveVoltTackleIfLightBall(struct Pokemon *mon, struct DayCare *daycare)
+{
+ u32 motherItem = GetBoxMonData(&daycare->mons[0].mon, MON_DATA_HELD_ITEM);
+ u32 fatherItem = GetBoxMonData(&daycare->mons[1].mon, MON_DATA_HELD_ITEM);
+
+ if (motherItem == ITEM_LIGHT_BALL || fatherItem == ITEM_LIGHT_BALL)
+ {
+ if (GiveMoveToMon(mon, MOVE_VOLT_TACKLE) == 0xFFFF)
+ DeleteFirstMoveAndGiveMoveToMon(mon, MOVE_VOLT_TACKLE);
+ }
+}
+
+static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots)
+{
+ u16 i;
+ u16 species[2];
+ u16 eggSpecies;
+
+ // Determine which of the daycare mons is the mother and father of the egg.
+ // The 0th index of the parentSlots array is considered the mother slot, and the
+ // 1st index is the father slot.
+ for (i = 0; i < 2; i++)
+ {
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ {
+ parentSlots[0] = i ^ 1;
+ parentSlots[1] = i;
+ }
+ else if (GetBoxMonGender(&daycare->mons[i].mon) == MON_FEMALE)
+ {
+ parentSlots[0] = i;
+ parentSlots[1] = i ^ 1;
+ }
+ }
+
+ eggSpecies = GetEggSpecies(species[parentSlots[0]]);
+ if (eggSpecies == SPECIES_NIDORAN_F && daycare->offspringPersonality & 0x8000)
+ {
+ eggSpecies = SPECIES_NIDORAN_M;
+ }
+ if (eggSpecies == SPECIES_ILLUMISE && daycare->offspringPersonality & 0x8000)
+ {
+ eggSpecies = SPECIES_VOLBEAT;
+ }
+
+ // Make Ditto the "mother" slot if the other daycare mon is male.
+ if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]].mon) != MON_FEMALE)
+ {
+ u8 temp = parentSlots[1];
+ parentSlots[1] = parentSlots[0];
+ parentSlots[0] = temp;
+ }
+
+ return eggSpecies;
+}
+
+static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg
+{
+ struct Pokemon egg;
+ u16 species;
+ u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father"
+ bool8 isEgg;
+
+ species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots);
+ AlterEggSpeciesWithIncenseItem(&species, daycare);
+ SetInitialEggData(&egg, species, daycare);
+ InheritIVs(&egg, daycare);
+ BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]].mon, &daycare->mons[parentSlots[0]].mon);
+
+ if (species == SPECIES_PICHU)
+ GiveVoltTackleIfLightBall(&egg, daycare);
+
+ isEgg = TRUE;
+ SetMonData(&egg, MON_DATA_IS_EGG, &isEgg);
+ gPlayerParty[PARTY_SIZE - 1] = egg;
+ CompactPartySlots();
+ CalculatePlayerPartyCount();
+ RemoveEggFromDayCare(daycare);
+}
+
+void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
+{
+ u8 metLevel;
+ u16 ball;
+ u8 language;
+ u8 metLocation;
+ u8 isEgg;
+
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, FALSE, 0, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, &ball);
+ SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+ if (setHotSpringsLocation)
+ {
+ metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo
+ SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
+ }
+
+ isEgg = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+}
+
+static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare)
+{
+ u32 personality;
+ u16 ball;
+ u8 metLevel;
+ u8 language;
+
+ personality = daycare->offspringPersonality;
+ CreateMon(mon, species, EGG_HATCH_LEVEL, 0x20, TRUE, personality, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, &ball);
+ SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+}
+
+void GiveEggFromDaycare(void)
+{
+ _GiveEggFromDaycare(&gSaveBlock1Ptr->daycare);
+}
+
+static bool8 _DoEggActions_CheckHatch(struct DayCare *daycare)
+{
+ u32 i, validEggs = 0;
+
+ for (i = 0; i < DAYCARE_MON_COUNT; i++)
+ {
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SANITY_BIT2))
+ daycare->mons[i].steps++, validEggs++;
+ }
+
+ // try to trigger poke sex
+ if (daycare->offspringPersonality == 0 && validEggs == 2 && (daycare->mons[1].steps & 0xFF) == 0xFF)
+ {
+ u8 loveScore = GetDaycareCompatibilityScore(daycare);
+ if (loveScore > (Random() * 100u) / USHRT_MAX)
+ TriggerPendingDaycareEgg();
+ }
+
+ if (++daycare->stepCounter == 255) // hatch an egg
+ {
+ u32 steps;
+ u8 toSub = GetEggStepsToSubtract();
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ continue;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT1))
+ continue;
+
+ steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
+ if (steps != 0) // subtract needed steps
+ {
+ if (steps >= toSub)
+ steps -= toSub;
+ else
+ steps -= 1;
+
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps);
+ }
+ else // hatch the egg
+ {
+ gSpecialVar_0x8004 = i;
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // no hatching
+}
+
+bool8 DoEggActions_CheckHatch(void)
+{
+ return _DoEggActions_CheckHatch(&gSaveBlock1Ptr->daycare);
+}
+
+static bool8 IsEggPending(struct DayCare *daycare)
+{
+ return (daycare->offspringPersonality != 0);
+}
+
+// gStringVar1 = first mon's nickname
+// gStringVar2 = second mon's nickname
+// gStringVar3 = first mon trainer's name
+static void _GetDaycareMonNicknames(struct DayCare *daycare)
+{
+ u8 text[12];
+ if (GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&daycare->mons[0].mon, gStringVar1);
+ GetBoxMonData(&daycare->mons[0].mon, MON_DATA_OT_NAME, text);
+ StringCopy(gStringVar3, text);
+ }
+
+ if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&daycare->mons[1].mon, gStringVar2);
+ }
+}
+
+u16 GetSelectedMonNickAndSpecies(void)
+{
+ GetBoxMonNick(&gPlayerParty[GetCursorSelectionMonId()].box, gStringVar1);
+ return GetBoxMonData(&gPlayerParty[GetCursorSelectionMonId()].box, MON_DATA_SPECIES);
+}
+
+void GetDaycareMonNicknames(void)
+{
+ _GetDaycareMonNicknames(&gSaveBlock1Ptr->daycare);
+}
+
+u8 GetDaycareState(void)
+{
+ // The daycare can be in 4 possible states:
+ // 0: default state--no deposited mons, no egg
+ // 1: there is an egg waiting for the player to pick it up
+ // 2: there is a single pokemon in the daycare
+ // 3: there are two pokemon in the daycare, no egg
+
+ u8 numMons;
+ if (IsEggPending(&gSaveBlock1Ptr->daycare))
+ {
+ // There is an Egg waiting for the player.
+ return 1;
+ }
+
+ numMons = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
+ if (numMons != 0)
+ {
+ return numMons + 1;
+ }
+
+ return 0;
+}
+
+static u8 GetDaycarePokemonCount(void)
+{
+ u8 ret = CountPokemonInDaycare(&gSaveBlock1Ptr->daycare);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2)
+{
+ // Determine if the two given egg group lists contain any of the
+ // same egg groups.
+ s32 i, j;
+
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < 2; j++)
+ {
+ if (eggGroups1[i] == eggGroups2[j])
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
+{
+ u32 i;
+ u16 eggGroups[2][2];
+ u16 species[2];
+ u32 trainerIds[2];
+ u32 genders[2];
+
+ for (i = 0; i < 2; i++)
+ {
+ u32 personality;
+
+ species[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES);
+ trainerIds[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_OT_ID);
+ personality = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_PERSONALITY);
+ genders[i] = GetGenderFromSpeciesAndPersonality(species[i], personality);
+ eggGroups[i][0] = gBaseStats[species[i]].eggGroup1;
+ eggGroups[i][1] = gBaseStats[species[i]].eggGroup2;
+ }
+
+ // check unbreedable egg group
+ if (eggGroups[0][0] == EGG_GROUP_UNDISCOVERED || eggGroups[1][0] == EGG_GROUP_UNDISCOVERED)
+ return 0;
+ // two Ditto can't breed
+ if (eggGroups[0][0] == EGG_GROUP_DITTO && eggGroups[1][0] == EGG_GROUP_DITTO)
+ return 0;
+
+ // now that we checked, one ditto can breed with any other mon
+ if (eggGroups[0][0] == EGG_GROUP_DITTO || eggGroups[1][0] == EGG_GROUP_DITTO)
+ {
+ if (trainerIds[0] == trainerIds[1]) // same trainer
+ return 20;
+
+ return 50; // different trainers, more chance of poke sex
+ }
+ else
+ {
+ if (genders[0] == genders[1]) // no homo
+ return 0;
+ if (genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
+ return 0;
+ if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) // not compatible with each other
+ return 0;
+
+ if (species[0] == species[1]) // same species
+ {
+ if (trainerIds[0] == trainerIds[1]) // same species and trainer
+ return 50;
+
+ return 70; // different trainers, same species
+ }
+ else
+ {
+ if (trainerIds[0] != trainerIds[1]) // different trainers, different species
+ return 50;
+
+ return 20; // different species, same trainer
+ }
+ }
+}
+
+static u8 GetDaycareCompatibilityScoreFromSave(void)
+{
+ return GetDaycareCompatibilityScore(&gSaveBlock1Ptr->daycare);
+}
+
+void SetDaycareCompatibilityString(void)
+{
+ u8 whichString;
+ u8 relationshipScore;
+
+ relationshipScore = GetDaycareCompatibilityScoreFromSave();
+ whichString = 0;
+ if (relationshipScore == 0)
+ whichString = 3;
+ if (relationshipScore == 20)
+ whichString = 2;
+ if (relationshipScore == 50)
+ whichString = 1;
+ if (relationshipScore == 70)
+ whichString = 0;
+
+ StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
+}
+
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ u8 i;
+ u8 symbolsCount[2]; // male, female
+ symbolsCount[0] = symbolsCount[1] = 0;
+
+ for (i = 0; name[i] != EOS; i++)
+ {
+ if (name[i] == CHAR_MALE)
+ symbolsCount[0]++;
+ if (name[i] == CHAR_FEMALE)
+ symbolsCount[1]++;
+ }
+
+ if (genderRatio == MON_MALE && symbolsCount[0] != 0 && symbolsCount[1] == 0)
+ return TRUE;
+ if (genderRatio == MON_FEMALE && symbolsCount[1] != 0 && symbolsCount[0] == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+static u8 *AppendGenderSymbol(u8 *name, u8 gender)
+{
+ if (gender == MON_MALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_MALE))
+ return StringAppend(name, gText_MaleSymbol4);
+ }
+ else if (gender == MON_FEMALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_FEMALE))
+ return StringAppend(name, gText_FemaleSymbol4);
+ }
+
+ return StringAppend(name, gText_GenderlessSymbol);
+}
+
+static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
+{
+ return AppendGenderSymbol(name, GetBoxMonGender(boxMon));
+}
+
+static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest)
+{
+ u8 monNames[2][20];
+ u8 i;
+
+ *dest = EOS;
+ for (i = 0; i < 2; i++)
+ {
+ GetBoxMonNick(&daycare->mons[i].mon, monNames[i]);
+ AppendMonGenderSymbol(monNames[i], &daycare->mons[i].mon);
+ }
+
+ StringCopy(dest, monNames[0]);
+ StringAppend(dest, gText_NewLine2);
+ StringAppend(dest, monNames[1]);
+ StringAppend(dest, gText_NewLine2);
+ StringAppend(dest, gText_Exit4);
+}
+
+static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest)
+{
+ u8 i;
+ u8 level;
+ u8 text[20];
+
+ *dest = EOS;
+ for (i = 0; i < 2; i++)
+ {
+ StringAppend(dest, gText_Lv);
+ level = GetLevelAfterDaycareSteps(&daycare->mons[i].mon, daycare->mons[i].steps);
+ ConvertIntToDecimalStringN(text, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(dest, text);
+ StringAppend(dest, gText_NewLine2);
+ }
+}
+
+static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = text;
+ printer.windowId = windowId;
+ printer.fontId = 1;
+ printer.x = x;
+ printer.y = y;
+ printer.currentX = x;
+ printer.currentY = y;
+ printer.fontColor_l = 0;
+ gTextFlags.flag_1 = 0;
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 1;
+ printer.fontColor_h = 2;
+ printer.bgColor = 1;
+ printer.shadowColor = 3;
+
+ AddTextPrinter(&printer, 0xFF, NULL);
+}
+
+static void DaycarePrintMonNick(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+{
+ u8 nick[POKEMON_NAME_LENGTH * 2];
+
+ GetBoxMonNick(&daycare->mons[daycareSlotId].mon, nick);
+ AppendMonGenderSymbol(nick, &daycare->mons[daycareSlotId].mon);
+ DaycareAddTextPrinter(windowId, nick, 8, y);
+}
+
+static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycareSlotId, u32 y)
+{
+ u8 level;
+ u32 x;
+ u8 lvlText[12];
+ u8 intText[8];
+
+ StringCopy(lvlText, gText_Lv);
+ level = GetLevelAfterDaycareSteps(&daycare->mons[daycareSlotId].mon, daycare->mons[daycareSlotId].steps);
+ ConvertIntToDecimalStringN(intText, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(lvlText, intText);
+ x = GetStringRightAlignXOffset(1, lvlText, 112);
+ DaycareAddTextPrinter(windowId, lvlText, x, y);
+}
+
+static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
+{
+ if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
+ {
+ DaycarePrintMonNick(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ DaycarePrintMonLvl(&gSaveBlock1Ptr->daycare, windowId, daycareSlotId, y);
+ }
+}
+
+#define tMenuListTaskId data[0]
+#define tWindowId data[1]
+
+static void Task_HandleDaycareLevelMenuInput(u8 taskId)
+{
+ u32 var = ListMenuHandleInput(gTasks[taskId].tMenuListTaskId);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ switch (var)
+ {
+ case 0:
+ case 1:
+ gSpecialVar_Result = var;
+ break;
+ case 5:
+ gSpecialVar_Result = 2;
+ break;
+ }
+ sub_81AE6C8(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ RemoveWindow(gTasks[taskId].tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gSpecialVar_Result = 2;
+ sub_81AE6C8(gTasks[taskId].tMenuListTaskId, NULL, NULL);
+ sub_819746C(gTasks[taskId].tWindowId, TRUE);
+ RemoveWindow(gTasks[taskId].tWindowId);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+void ShowDaycareLevelMenu(void)
+{
+ struct ListMenuTemplate menuTemplate;
+ u8 windowId;
+ u8 listMenuTaskId;
+ u8 daycareMenuTaskId;
+
+ windowId = AddWindow(&sDaycareLevelMenuWindowTemplate);
+ sub_81973FC(windowId, FALSE);
+
+ menuTemplate = sDaycareListMenuLevelTemplate;
+ menuTemplate.unk_10 = windowId;
+ listMenuTaskId = ListMenuInit(&menuTemplate, 0, 0);
+
+ CopyWindowToVram(windowId, 3);
+
+ daycareMenuTaskId = CreateTask(Task_HandleDaycareLevelMenuInput, 3);
+ gTasks[daycareMenuTaskId].tMenuListTaskId = listMenuTaskId;
+ gTasks[daycareMenuTaskId].tWindowId = windowId;
+}
+
+#undef tMenuListTaskId
+#undef tWindowId
+
+void ChooseSendDaycareMon(void)
+{
+ sub_81B9328();
+ gMain.savedCallback = c2_exit_to_overworld_2_switch;
+}
diff --git a/src/decoration.c b/src/decoration.c
index 37cabf652..adcdc583b 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,5 +1,3 @@
-
-// Includes
#include "global.h"
#include "decompress.h"
#include "malloc.h"
@@ -68,27 +66,27 @@ struct DecorRearrangementDataBuffer {
// Static RAM declarations
EWRAM_DATA u8 *gCurDecorInventoryItems = NULL;
-EWRAM_DATA u8 sSecretBasePCMenuCursorPos = 0;
-EWRAM_DATA u8 sCurDecorCatCount = 0;
-EWRAM_DATA u8 sSecretBaseItemsIndicesBuffer[16] = {};
-EWRAM_DATA u8 sPlayerRoomItemsIndicesBuffer[12] = {};
-EWRAM_DATA u16 sSecretBasePCSelectDecorLineNo = 0;
-EWRAM_DATA u16 sSecretBasePCSelectDecorPageNo = 0;
+EWRAM_DATA static u8 sSecretBasePCMenuCursorPos = 0;
+EWRAM_DATA static u8 sCurDecorCatCount = 0;
+EWRAM_DATA static u8 sSecretBaseItemsIndicesBuffer[16] = {};
+EWRAM_DATA static u8 sPlayerRoomItemsIndicesBuffer[12] = {};
+EWRAM_DATA static u16 sSecretBasePCSelectDecorLineNo = 0;
+EWRAM_DATA static u16 sSecretBasePCSelectDecorPageNo = 0;
EWRAM_DATA u8 gCurDecorationIndex = 0;
-EWRAM_DATA u8 sCurDecorationCategory = DECORCAT_DESK;
-EWRAM_DATA u32 filler_0203a174[2] = {};
+EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK;
+EWRAM_DATA static u32 filler_0203a174[2] = {};
EWRAM_DATA struct DecorPCPointers gUnknown_0203A17C = {};
-EWRAM_DATA u8 sDecorMenuWindowIndices[4] = {};
+EWRAM_DATA static u8 sDecorMenuWindowIndices[4] = {};
EWRAM_DATA struct DecorPCBuffer *sDecorPCBuffer = NULL;
EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
-EWRAM_DATA u16 sCurDecorMapX = 0;
-EWRAM_DATA u16 sCurDecorMapY = 0;
-EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx1 = 0;
-EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx2 = 0;
-EWRAM_DATA u8 sDecorationLastDirectionMoved = 0;
-EWRAM_DATA struct OamData sDecorSelectorOam = {};
-EWRAM_DATA struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
-EWRAM_DATA u8 sCurDecorSelectedInRearrangement = 0;
+EWRAM_DATA static u16 sCurDecorMapX = 0;
+EWRAM_DATA static u16 sCurDecorMapY = 0;
+EWRAM_DATA static u8 sDecor_CameraSpriteObjectIdx1 = 0;
+EWRAM_DATA static u8 sDecor_CameraSpriteObjectIdx2 = 0;
+EWRAM_DATA static u8 sDecorationLastDirectionMoved = 0;
+EWRAM_DATA static struct OamData sDecorSelectorOam = {};
+EWRAM_DATA static struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
+EWRAM_DATA static u8 sCurDecorSelectedInRearrangement = 0;
// Static ROM declarations
@@ -800,9 +798,9 @@ void sub_8127330(u8 taskId)
sDecorPCBuffer->items[i].unk_04 = -2;
gUnknown_03006310 = gUnknown_085A6BD0;
gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1];
- gUnknown_03006310.unk_0c = sDecorPCBuffer->unk_520;
- gUnknown_03006310.unk_00 = sDecorPCBuffer->items;
- gUnknown_03006310.unk_0e = sDecorPCBuffer->unk_521;
+ gUnknown_03006310.totalItems = sDecorPCBuffer->unk_520;
+ gUnknown_03006310.items = sDecorPCBuffer->items;
+ gUnknown_03006310.maxShowed = sDecorPCBuffer->unk_521;
}
void sub_8127454(u8 *dest, u16 decorId)
@@ -1603,7 +1601,7 @@ void sub_81289F0(u8 taskId)
ScriptContext1_SetupScript(EventScript_275D1F);
}
gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
- if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
{
TV_PutSecretBaseVisitOnTheAir();
}
@@ -2222,7 +2220,7 @@ void sub_81298EC(u8 taskId)
{
StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
- if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
{
TV_PutSecretBaseVisitOnTheAir();
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 589e8901d..a3f7c2ab0 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "pokemon.h"
+#include "egg_hatch.h"
#include "pokedex.h"
#include "items.h"
#include "script.h"
@@ -23,6 +24,7 @@
#include "m4a.h"
#include "window.h"
#include "abilities.h"
+#include "daycare.h"
#include "battle.h" // to get rid of later
struct EggHatchData
@@ -75,7 +77,7 @@ extern void CreateYesNoMenu(const struct WindowTemplate*, u16, u8, u8);
extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback);
extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str);
extern u16 sub_80D22D0(void);
-extern u8 sub_80C7050(u8);
+extern u8 CountPartyAliveNonEggMonsExcept(u8);
static void Task_EggHatch(u8 taskID);
static void CB2_EggHatch_0(void);
@@ -327,7 +329,7 @@ static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
- CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0);
+ CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, 0, 0);
for (i = 0; i < 4; i++)
{
@@ -393,19 +395,19 @@ void ScriptHatchMon(void)
AddHatchedMonToParty(gSpecialVar_0x8004);
}
-static bool8 sub_807158C(struct DaycareData* daycare, u8 daycareId)
+static bool8 sub_807158C(struct DayCare *daycare, u8 daycareId)
{
u8 nick[0x20];
- struct DaycareMon* daycareMon = &daycare->mons[daycareId];
+ struct DaycareMon *daycareMon = &daycare->mons[daycareId];
GetBoxMonNick(&daycareMon->mon, nick);
- if (daycareMon->mail.itemId != 0
- && (StringCompareWithoutExtCtrlCodes(nick, daycareMon->monName) != 0
- || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->OT_name) != 0))
+ if (daycareMon->misc.mail.itemId != 0
+ && (StringCompareWithoutExtCtrlCodes(nick, daycareMon->misc.monName) != 0
+ || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->misc.OT_name) != 0))
{
StringCopy(gStringVar1, nick);
- TVShowConvertInternationalString(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
- TVShowConvertInternationalString(gStringVar3, daycareMon->monName, daycareMon->unknown);
+ TVShowConvertInternationalString(gStringVar2, daycareMon->misc.OT_name, daycareMon->misc.gameLanguage);
+ TVShowConvertInternationalString(gStringVar3, daycareMon->misc.monName, daycareMon->misc.monLanguage);
return TRUE;
}
return FALSE;
@@ -888,6 +890,6 @@ u8 GetEggStepsToSubtract(void)
u16 sub_80722E0(void)
{
u16 value = sub_80D22D0();
- value += sub_80C7050(6);
+ value += CountPartyAliveNonEggMonsExcept(6);
return value;
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
new file mode 100644
index 000000000..b7d677c90
--- /dev/null
+++ b/src/field_region_map.c
@@ -0,0 +1,193 @@
+
+// Includes
+#include "global.h"
+#include "main.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "palette.h"
+#include "menu.h"
+#include "strings.h"
+#include "international_string_util.h"
+#include "region_map.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+static EWRAM_DATA struct {
+ MainCallback callback;
+ u32 filler_004;
+ struct RegionMap regionMap;
+ u16 state;
+} *sFieldRegionMapHandler = NULL;
+
+// Static ROM declarations
+
+static void MCB2_InitRegionMapRegisters(void);
+static void VBCB_FieldUpdateRegionMap(void);
+static void MCB2_FieldUpdateRegionMap(void);
+static void FieldUpdateRegionMap(void);
+static void PrintRegionMapSecName(void);
+
+// .rodata
+
+static const struct BgTemplate gUnknown_085E5068[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 28,
+ .screenSize = 2,
+ .paletteMode = 1,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_085E5070[] = {
+ { 0, 17, 17, 12, 2, 15, 0x0001 },
+ { 0, 22, 1, 7, 2, 15, 0x0019 },
+ DUMMY_WIN_TEMPLATE
+};
+
+// .text
+
+void sub_817018C(MainCallback callback)
+{
+ SetVBlankCallback(NULL);
+ sFieldRegionMapHandler = malloc(sizeof(*sFieldRegionMapHandler));
+ sFieldRegionMapHandler->state = 0;
+ sFieldRegionMapHandler->callback = callback;
+ SetMainCallback2(MCB2_InitRegionMapRegisters);
+}
+
+static void MCB2_InitRegionMapRegisters(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, gUnknown_085E5068, 2);
+ InitWindows(gUnknown_085E5070);
+ DeactivateAllTextPrinters();
+ sub_809882C(0, 0x27, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ SetMainCallback2(MCB2_FieldUpdateRegionMap);
+ SetVBlankCallback(VBCB_FieldUpdateRegionMap);
+}
+
+static void VBCB_FieldUpdateRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MCB2_FieldUpdateRegionMap(void)
+{
+ FieldUpdateRegionMap();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ do_scheduled_bg_tilemap_copies_to_vram();
+}
+
+static void FieldUpdateRegionMap(void)
+{
+ u8 offset;
+
+ switch (sFieldRegionMapHandler->state)
+ {
+ case 0:
+ InitRegionMap(&sFieldRegionMapHandler->regionMap, 0);
+ CreateRegionMapPlayerIcon(0, 0);
+ CreateRegionMapCursor(1, 1);
+ sFieldRegionMapHandler->state++;
+ break;
+ case 1:
+ SetWindowBorderStyle(1, 0, 0x27, 0xd);
+ offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38);
+ PrintTextOnWindow(1, 1, gText_Hoenn, offset, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ SetWindowBorderStyle(0, 0, 0x27, 0xd);
+ PrintRegionMapSecName();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ sFieldRegionMapHandler->state++;
+ break;
+ case 2:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(2);
+ sFieldRegionMapHandler->state++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sFieldRegionMapHandler->state++;
+ }
+ break;
+ case 4:
+ switch (sub_81230AC())
+ {
+ case INPUT_EVENT_MOVE_END:
+ PrintRegionMapSecName();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ case INPUT_EVENT_B_BUTTON:
+ sFieldRegionMapHandler->state++;
+ break;
+ }
+ break;
+ case 5:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ sFieldRegionMapHandler->state++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ FreeRegionMapIconResources();
+ SetMainCallback2(sFieldRegionMapHandler->callback);
+ if (sFieldRegionMapHandler != NULL)
+ {
+ free(sFieldRegionMapHandler);
+ sFieldRegionMapHandler = NULL;
+ }
+ FreeAllWindowBuffers();
+ }
+ break;
+ }
+}
+
+static void PrintRegionMapSecName(void)
+{
+ if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE)
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ PrintTextOnWindow(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+ else
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ CopyWindowToVram(0, 3);
+ }
+}
diff --git a/src/heal_location.c b/src/heal_location.c
new file mode 100644
index 000000000..efc534170
--- /dev/null
+++ b/src/heal_location.c
@@ -0,0 +1,83 @@
+
+// Includes
+#include "global.h"
+#include "map_constants.h"
+#include "heal_location.h"
+
+#define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y}
+
+// Static type declarations
+
+// Static RAM declarations
+
+// Static ROM declarations
+
+// .rodata
+
+static const struct HealLocation sHealLocations[] = {
+ HEAL_LOCATION(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2),
+ HEAL_LOCATION(LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2),
+ HEAL_LOCATION(PETALBURG_CITY, 20, 17),
+ HEAL_LOCATION(SLATEPORT_CITY, 19, 20),
+ HEAL_LOCATION(MAUVILLE_CITY, 22, 6),
+ HEAL_LOCATION(RUSTBORO_CITY, 16, 39),
+ HEAL_LOCATION(FORTREE_CITY, 5, 7),
+ HEAL_LOCATION(LILYCOVE_CITY, 24, 15),
+ HEAL_LOCATION(MOSSDEEP_CITY, 28, 17),
+ HEAL_LOCATION(SOOTOPOLIS_CITY, 43, 32),
+ HEAL_LOCATION(EVER_GRANDE_CITY, 27, 49),
+ HEAL_LOCATION(LITTLEROOT_TOWN, 5, 9),
+ HEAL_LOCATION(LITTLEROOT_TOWN, 14, 9),
+ HEAL_LOCATION(OLDALE_TOWN, 6, 17),
+ HEAL_LOCATION(DEWFORD_TOWN, 2, 11),
+ HEAL_LOCATION(LAVARIDGE_TOWN, 9, 7),
+ HEAL_LOCATION(FALLARBOR_TOWN, 14, 8),
+ HEAL_LOCATION(VERDANTURF_TOWN, 16, 4),
+ HEAL_LOCATION(PACIFIDLOG_TOWN, 8, 16),
+ HEAL_LOCATION(EVER_GRANDE_CITY, 18, 6),
+ HEAL_LOCATION(SOUTHERN_ISLAND_EXTERIOR, 15, 20),
+ HEAL_LOCATION(BATTLE_FRONTIER_OUTSIDE_EAST, 3, 52)
+};
+
+#define NUM_HEAL_LOCATIONS (ARRAY_COUNT(sHealLocations))
+
+// .text
+
+static u32 GetHealLocationIndexFromMapGroupAndNum(u16 mapGroup, u16 mapNum)
+{
+ u32 i;
+
+ for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
+ {
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
+ {
+ return i + 1;
+ }
+ }
+ return 0;
+}
+
+const struct HealLocation *GetHealLocationPointerFromMapGroupAndNum(u16 mapGroup, u16 mapNum)
+{
+ u32 loc;
+
+ loc = GetHealLocationIndexFromMapGroupAndNum(mapGroup, mapNum);
+ if (loc == 0)
+ {
+ return NULL;
+ }
+ return &sHealLocations[loc - 1];
+}
+
+const struct HealLocation *GetHealLocationPointer(u32 loc)
+{
+ if (loc == 0)
+ {
+ return NULL;
+ }
+ if (loc > NUM_HEAL_LOCATIONS)
+ {
+ return NULL;
+ }
+ return &sHealLocations[loc - 1];
+}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 3e409244c..f82a52d38 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1,15 +1,122 @@
-
-// Includes
#include "global.h"
+#include "pokemon_storage_system.h"
+#include "pokemon.h"
+#include "species.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "text.h"
-// Static type declarations
+IWRAM_DATA u8 gUnknown_03000F78[0x188];
-// Static RAM declarations
+u8 CountMonsInBox(u8 boxId)
+{
+ u16 i, count;
-IWRAM_DATA u8 gUnknown_03000F78[0x188];
+ for (i = 0, count = 0; i < IN_BOX_COUNT; i++)
+ {
+ if (GetBoxMonDataFromAnyBox(boxId, i, MON_DATA_SPECIES) != SPECIES_NONE)
+ count++;
+ }
+
+ return count;
+}
+
+s16 GetFirstFreeBoxSpot(u8 boxId)
+{
+ u16 i;
+
+ for (i = 0; i < IN_BOX_COUNT; i++)
+ {
+ if (GetBoxMonDataFromAnyBox(boxId, i, MON_DATA_SPECIES) == SPECIES_NONE)
+ return i;
+ }
+
+ return -1; // all spots are taken
+}
+
+u8 CountPartyNonEggMons(void)
+{
+ u16 i, count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore)
+{
+ u16 i, count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != slotToIgnore
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
+ && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+u16 CountPartyAliveNonEggMons_IgnoreVar0x8004Slot(void)
+{
+ return CountPartyAliveNonEggMonsExcept(gSpecialVar_0x8004);
+}
+
+u8 CountPartyMons(void)
+{
+ u16 i, count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ count++;
+ }
+ }
+
+ return count;
+}
+
+static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n)
+{
+ u8 *str;
+
+ for (str = StringCopy(dst, src); str < dst + n; str++)
+ *str = CHAR_SPACE;
+
+ *str = EOS;
+ return str;
+}
-// Static ROM declarations
+/* can't match
+static void sub_80C7128(u16 *dst, u16 dstToAdd, u16 dstToMul, const u16 *src, u16 srcToAdd, u16 srcToMul, u32 size, u16 count, u16 srcBy)
+{
+ u16 i;
-// .rodata
+ size <<= 0x11;
+ dst += (dstToMul * 32) + dstToAdd;
+ src += (srcToMul * srcBy) + srcToAdd;
-// .text
+ i = 0;
+ if (i < count)
+ {
+ size >>= 1;
+ for (i = 0; i < count; i++)
+ {
+ CpuSet(src, dst, size >> 0x10);
+ dst += 0x20;
+ src += srcBy;
+ }
+ }
+}*/
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 838e91d90..d09cbc407 100755
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -97,7 +97,6 @@ extern u8 gUnknown_08D97D0C;
extern void reset_temp_tile_data_buffers();
extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d);
extern u8 free_temp_tile_data_buffers_if_possible();
-extern void sub_8069004(struct BoxPokemon* a, void* b);
extern void sub_81C1E20(u8 taskId);
extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
extern u16 SpeciesToPokedexNum(u16 species);
@@ -667,7 +666,7 @@ void sub_81C0098(struct Pokemon *mon)
else
{
struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon;
- sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], mon);
+ BoxMonToMon(&boxMon[gUnknown_0203CF1C->unk40BE], mon);
}
}
@@ -1810,7 +1809,7 @@ void sub_81C171C(u8 taskId)
void sub_81C174C(u8 taskId)
{
s16* data = gTasks[taskId].data;
-
+
if (sub_81221EC() != 1)
{
if (gPaletteFade.active != 1)
@@ -1857,7 +1856,7 @@ void sub_81C174C(u8 taskId)
gUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4;
sub_81C044C(taskId);
- }
+ }
}
}
}
@@ -1907,7 +1906,7 @@ void sub_81C1940(u8 taskId)
{
if (gUnknown_0203CF1C->unk40C0 != 2)
{
-
+
ClearWindowTilemap(19);
if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
ClearWindowTilemap(13);
@@ -2224,7 +2223,7 @@ void sub_81C1E20(u8 taskId)
{
if (gUnknown_0203CF1C->unk40C0 == 2)
PutWindowTilemap(14);
-
+
}
else
{
@@ -2277,7 +2276,7 @@ void sub_81C1F80(u8 taskId)
PutWindowTilemap(15);
sub_81C240C(data[2]);
}
- else
+ else
{
if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
{
@@ -3645,7 +3644,7 @@ void sub_81C3D54(u8 taskId)
{
s16 *data = gTasks[taskId].data;
s16 dataa = data[0] - 1;
-
+
switch (dataa)
{
case 0:
@@ -3676,4 +3675,4 @@ void sub_81C3D54(u8 taskId)
return;
}
data[0]++;
-} \ No newline at end of file
+}
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..da96475c0
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,1949 @@
+
+// Includes
+#include "global.h"
+#include "main.h"
+#include "menu.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "trig.h"
+#include "map_constants.h"
+#include "overworld.h"
+#include "flags.h"
+#include "event_data.h"
+#include "rom6.h"
+#include "secret_base.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+#include "songs.h"
+#include "m4a.h"
+#include "field_effect.h"
+#include "region_map.h"
+
+#define MAP_WIDTH 28
+#define MAP_HEIGHT 15
+#define MAPCURSOR_X_MIN 1
+#define MAPCURSOR_Y_MIN 2
+#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
+#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
+
+// Static type declarations
+
+struct RegionMapLocation
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ const u8 *name;
+};
+
+// Static RAM declarations
+
+static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
+static EWRAM_DATA struct {
+ /*0x000*/ void (*unk_000)(void);
+ /*0x004*/ u16 unk_004;
+ /*0x006*/ u16 mapSecId;
+ /*0x008*/ struct RegionMap regionMap;
+ /*0x88c*/ u8 unk_88c[0x1c0];
+ /*0xa4c*/ u8 unk_a4c[0x26];
+ /*0xa72*/ bool8 unk_a72;
+} *gUnknown_0203A148 = NULL; // a74
+
+static bool32 gUnknown_03001180;
+static bool32 gUnknown_03001184;
+
+// Static ROM declarations
+
+static u8 ProcessRegionMapInput_Full(void);
+static u8 MoveRegionMapCursor_Full(void);
+static u8 ProcessRegionMapInput_Zoomed(void);
+static u8 MoveRegionMapCursor_Zoomed(void);
+static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation);
+static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y);
+static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y);
+static void RegionMap_InitializeStateBasedOnPlayerLocation(void);
+static void RegionMap_InitializeStateBasedOnSSTidalLocation(void);
+static u8 get_flagnr_blue_points(u16 mapSecId);
+static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId);
+static u16 RegionMap_GetTerraCaveMapSecId(void);
+static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y);
+static bool32 RegionMap_IsPlayerInCave(u8 mapSecId);
+static void RegionMap_GetPositionOfCursorWithinMapSection(void);
+static bool8 RegionMap_IsMapSecIdInNextRow(u16 y);
+static void SpriteCallback_CursorFull(struct Sprite *sprite);
+static void FreeRegionMapCursorSprite(void);
+static void HideRegionMapPlayerIcon(void);
+static void UnhideRegionMapPlayerIcon(void);
+static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite);
+static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite);
+static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite);
+static void sub_81248C0(void);
+static void sub_81248D4(void);
+static void sub_81248F4(void callback(void));
+static void sub_8124904(void);
+static void sub_8124A70(void);
+static void sub_8124AD4(void);
+static void sub_8124BE4(void);
+static void sub_8124CBC(struct Sprite *sprite);
+static void sub_8124D14(void);
+static void sub_8124D64(void);
+static void sub_8124E0C(void);
+
+// .rodata
+
+static const u16 sRegionMapCursorPal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
+static const u8 sRegionMapCursorSmallGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz");
+static const u8 sRegionMapCursorLargeGfxLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz");
+static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
+static const u8 sRegionMapBkgnd_GfxLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
+static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
+static const u16 sRegionMapPlayerIcon_BrendanPal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
+static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
+static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
+static const u8 sRegionMapPlayerIcon_MayGfx[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp");
+
+static const u8 sRegionMap_MapSectionLayout[] = INCBIN_U8("graphics/pokenav/region_map_section_layout.bin");
+
+#include "data/region_map/region_map_entries.h"
+
+static const u16 sRegionMap_SpecialPlaceLocations[][2] = {
+ {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105},
+ {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129},
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129},
+ {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
+ {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112},
+ {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
+ {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
+ {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
+ {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
+ {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
+ {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111},
+ {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111},
+ {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114},
+ {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103},
+ {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103},
+ {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108},
+ {MAPSEC_NONE, MAPSEC_NONE}
+};
+
+static const u16 sRegionMap_MarineCaveMapSecIds[] = {
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE
+};
+
+static const u16 sTerraCaveMapSectionIds[] = {
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_129,
+ MAPSEC_ROUTE_129
+};
+
+static const struct UCoords16 sTerraCaveLocationCoords[] = {
+ {0x00, 0x0a},
+ {0x00, 0x0c},
+ {0x18, 0x03},
+ {0x19, 0x04},
+ {0x19, 0x06},
+ {0x19, 0x07},
+ {0x18, 0x0a},
+ {0x18, 0x0a}
+};
+
+static const u8 sRegionMap_MapSecAquaHideoutOld[] = {
+ MAPSEC_AQUA_HIDEOUT_OLD
+};
+
+static const struct OamData sRegionMapCursorOam = {
+ .size = 1, .priority = 1
+};
+
+static const union AnimCmd sRegionMapCursorAnim1[] = {
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sRegionMapCursorAnim2[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sRegionMapCursorAnimTable[] = {
+ sRegionMapCursorAnim1,
+ sRegionMapCursorAnim2
+};
+
+static const struct SpritePalette sRegionMapCursorSpritePalette = { sRegionMapCursorPal, 0 };
+
+static const struct SpriteTemplate sRegionMapCursorSpriteTemplate = {
+ 0,
+ 0,
+ &sRegionMapCursorOam,
+ sRegionMapCursorAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallback_CursorFull
+};
+
+static const struct OamData sRegionMapPlayerIconOam = {
+ .size = 1, .priority = 2
+};
+
+static const union AnimCmd sRegionMapPlayerIconAnim1[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] = {
+ sRegionMapPlayerIconAnim1
+};
+
+static const u8 sRegionMapEventSectionIds[] = {
+ MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_FARAWAY_ISLAND,
+ MAPSEC_NAVEL_ROCK2
+};
+
+static const u16 sRegionMapFramePal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
+
+static const u8 sRegionMapFrameGfxLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
+
+static const u8 sRegionMapFrameTilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
+
+static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
+
+static const u8 gUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
+
+static const u8 gUnknown_085A1E3C[][3] = {
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 1},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 14},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 15},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 16},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 17},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 18},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 19},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 3},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 4},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 5},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 6},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 8},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 9},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 10},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 11},
+ {MAP_GROUP_ROUTE101, MAP_ID_ROUTE101, 0},
+ {MAP_GROUP_ROUTE102, MAP_ID_ROUTE102, 0},
+ {MAP_GROUP_ROUTE103, MAP_ID_ROUTE103, 0},
+ {MAP_GROUP_ROUTE104, MAP_ID_ROUTE104, 0},
+ {MAP_GROUP_ROUTE105, MAP_ID_ROUTE105, 0},
+ {MAP_GROUP_ROUTE106, MAP_ID_ROUTE106, 0},
+ {MAP_GROUP_ROUTE107, MAP_ID_ROUTE107, 0},
+ {MAP_GROUP_ROUTE108, MAP_ID_ROUTE108, 0},
+ {MAP_GROUP_ROUTE109, MAP_ID_ROUTE109, 0},
+ {MAP_GROUP_ROUTE110, MAP_ID_ROUTE110, 0},
+ {MAP_GROUP_ROUTE111, MAP_ID_ROUTE111, 0},
+ {MAP_GROUP_ROUTE112, MAP_ID_ROUTE112, 0},
+ {MAP_GROUP_ROUTE113, MAP_ID_ROUTE113, 0},
+ {MAP_GROUP_ROUTE114, MAP_ID_ROUTE114, 0},
+ {MAP_GROUP_ROUTE115, MAP_ID_ROUTE115, 0},
+ {MAP_GROUP_ROUTE116, MAP_ID_ROUTE116, 0},
+ {MAP_GROUP_ROUTE117, MAP_ID_ROUTE117, 0},
+ {MAP_GROUP_ROUTE118, MAP_ID_ROUTE118, 0},
+ {MAP_GROUP_ROUTE119, MAP_ID_ROUTE119, 0},
+ {MAP_GROUP_ROUTE120, MAP_ID_ROUTE120, 0},
+ {MAP_GROUP_ROUTE121, MAP_ID_ROUTE121, 0},
+ {MAP_GROUP_ROUTE122, MAP_ID_ROUTE122, 0},
+ {MAP_GROUP_ROUTE123, MAP_ID_ROUTE123, 0},
+ {MAP_GROUP_ROUTE124, MAP_ID_ROUTE124, 0},
+ {MAP_GROUP_ROUTE125, MAP_ID_ROUTE125, 0},
+ {MAP_GROUP_ROUTE126, MAP_ID_ROUTE126, 0},
+ {MAP_GROUP_ROUTE127, MAP_ID_ROUTE127, 0},
+ {MAP_GROUP_ROUTE128, MAP_ID_ROUTE128, 0},
+ {MAP_GROUP_ROUTE129, MAP_ID_ROUTE129, 0},
+ {MAP_GROUP_ROUTE130, MAP_ID_ROUTE130, 0},
+ {MAP_GROUP_ROUTE131, MAP_ID_ROUTE131, 0},
+ {MAP_GROUP_ROUTE132, MAP_ID_ROUTE132, 0},
+ {MAP_GROUP_ROUTE133, MAP_ID_ROUTE133, 0},
+ {MAP_GROUP_ROUTE134, MAP_ID_ROUTE134, 0}
+};
+
+static const u8 *const gUnknown_085A1ED4[] = {
+ gText_PokemonLeague,
+ gText_PokemonCenter
+};
+
+static const struct {
+ const u8 *const *name;
+ u16 mapSecId;
+ u16 flag;
+} gUnknown_085A1EDC[] = {
+ gUnknown_085A1ED4,
+ MAPSEC_EVER_GRANDE_CITY,
+ FLAG_SYS_POKEMON_LEAGUE_FLY
+};
+
+static const struct BgTemplate gUnknown_085A1EE4[] = {
+ { .bg = 0, .charBaseIndex = 0, .mapBaseIndex = 31, .screenSize = 0, .paletteMode = 0, .priority = 0 },
+ { .bg = 1, .charBaseIndex = 3, .mapBaseIndex = 30, .screenSize = 0, .paletteMode = 0, .priority = 1 },
+ { .bg = 2, .charBaseIndex = 2, .mapBaseIndex = 28, .screenSize = 2, .paletteMode = 1, .priority = 2 }
+};
+
+static const struct WindowTemplate gUnknown_085A1EF0[] = {
+ { 0, 17, 17, 12, 2, 15, 0x01 },
+ { 0, 17, 15, 12, 4, 15, 0x19 },
+ { 0, 1, 18, 14, 2, 15, 0x49 },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct SpritePalette gUnknown_085A1F10 = {
+ Unknown_085A1D48, 2
+};
+
+static const u16 gUnknown_085A1F18[][2] = {
+ {FLAG_UNLOCK_BATTLE_FRONTIER, MAPSEC_BATTLE_FRONTIER},
+ {-1, MAPSEC_NONE}
+};
+
+static const struct OamData gOamData_085A1F20 = {
+ .priority = 2
+};
+
+static const union AnimCmd gUnknown_085A1F28[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F30[] = {
+ ANIMCMD_FRAME( 1, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F38[] = {
+ ANIMCMD_FRAME( 3, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F40[] = {
+ ANIMCMD_FRAME( 5, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F48[] = {
+ ANIMCMD_FRAME( 6, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F50[] = {
+ ANIMCMD_FRAME( 8, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gUnknown_085A1F58[] = {
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_085A1F60[] = {
+ gUnknown_085A1F28,
+ gUnknown_085A1F30,
+ gUnknown_085A1F38,
+ gUnknown_085A1F40,
+ gUnknown_085A1F48,
+ gUnknown_085A1F50,
+ gUnknown_085A1F58
+};
+
+static const struct SpriteTemplate gUnknown_085A1F7C = {
+ 2,
+ 2,
+ &gOamData_085A1F20,
+ gUnknown_085A1F60,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+// .text
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
+{
+ sub_8122CF8(regionMap, NULL, zoomed);
+ while (sub_8122DB0());
+}
+
+void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed)
+{
+ gRegionMap = regionMap;
+ gRegionMap->initStep = 0;
+ gRegionMap->zoomed = zoomed;
+ gRegionMap->inputCallback = zoomed == TRUE ? ProcessRegionMapInput_Zoomed : ProcessRegionMapInput_Full;
+ if (template != NULL)
+ {
+ gRegionMap->bgNum = template->bg;
+ gRegionMap->charBaseIdx = template->charBaseIndex;
+ gRegionMap->mapBaseIdx = template->mapBaseIndex;
+ gRegionMap->bgManaged = TRUE;
+ }
+ else
+ {
+ gRegionMap->bgNum = 2;
+ gRegionMap->charBaseIdx = 2;
+ gRegionMap->mapBaseIdx = 28;
+ gRegionMap->bgManaged = FALSE;
+ }
+}
+
+void sub_8122D88(struct RegionMap *regionMap)
+{
+ gRegionMap = regionMap;
+ RegionMap_InitializeStateBasedOnPlayerLocation();
+ gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
+ gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
+}
+
+bool8 sub_8122DB0(void)
+{
+ switch (gRegionMap->initStep)
+ {
+ case 0:
+ if (gRegionMap->bgManaged)
+ {
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0);
+ }
+ else
+ {
+ LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
+ }
+ break;
+ case 1:
+ if (gRegionMap->bgManaged)
+ {
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1);
+ }
+ }
+ else
+ {
+ LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
+ }
+ break;
+ case 2:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60);
+ }
+ break;
+ case 3:
+ LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage);
+ break;
+ case 4:
+ LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage);
+ break;
+ case 5:
+ RegionMap_InitializeStateBasedOnPlayerLocation();
+ gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
+ gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
+ gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId);
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ break;
+ case 6:
+ if (gRegionMap->zoomed == FALSE)
+ {
+ CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
+ }
+ else
+ {
+ gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 0x34;
+ gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 0x44;
+ gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
+ gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
+ }
+ break;
+ case 7:
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ UpdateRegionMapVideoRegs();
+ gRegionMap->cursorSprite = NULL;
+ gRegionMap->playerIconSprite = NULL;
+ gRegionMap->cursorMovementFrameCounter = 0;
+ gRegionMap->blinkPlayerIcon = FALSE;
+ if (gRegionMap->bgManaged)
+ {
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_MAPBASEINDEX, 2);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_VISIBLE, gRegionMap->charBaseIdx);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_CHARBASEINDEX, gRegionMap->mapBaseIdx);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_PRIORITY, 1);
+ SetBgAttribute(gRegionMap->bgNum, BG_CTRL_ATTR_SCREENSIZE, 1);
+ }
+ gRegionMap->initStep++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ gRegionMap->initStep++;
+ return TRUE;
+}
+
+void sub_8123030(u16 a0, u32 a1)
+{
+ BlendPalettes(0x380, a1, a0);
+ CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60);
+}
+
+void FreeRegionMapIconResources(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ DestroySprite(gRegionMap->playerIconSprite);
+ FreeSpriteTilesByTag(gRegionMap->playerIconTileTag);
+ FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag);
+ }
+}
+
+u8 sub_81230AC(void)
+{
+ return gRegionMap->inputCallback();
+}
+
+static u8 ProcessRegionMapInput_Full(void)
+{
+ u8 input;
+
+ input = INPUT_EVENT_NONE;
+ gRegionMap->cursorDeltaX = 0;
+ gRegionMap->cursorDeltaY = 0;
+ if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
+ {
+ gRegionMap->cursorDeltaY = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
+ {
+ gRegionMap->cursorDeltaY = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
+ {
+ gRegionMap->cursorDeltaX = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
+ {
+ gRegionMap->cursorDeltaX = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ input = INPUT_EVENT_A_BUTTON;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ input = INPUT_EVENT_B_BUTTON;
+ }
+ if (input == INPUT_EVENT_MOVE_START)
+ {
+ gRegionMap->cursorMovementFrameCounter = 4;
+ gRegionMap->inputCallback = MoveRegionMapCursor_Full;
+ }
+ return input;
+}
+
+static u8 MoveRegionMapCursor_Full(void)
+{
+ u16 mapSecId;
+
+ if (gRegionMap->cursorMovementFrameCounter != 0)
+ {
+ return INPUT_EVENT_MOVE_CONT;
+ }
+ if (gRegionMap->cursorDeltaX > 0)
+ {
+ gRegionMap->cursorPosX++;
+ }
+ if (gRegionMap->cursorDeltaX < 0)
+ {
+ gRegionMap->cursorPosX--;
+ }
+ if (gRegionMap->cursorDeltaY > 0)
+ {
+ gRegionMap->cursorPosY++;
+ }
+ if (gRegionMap->cursorDeltaY < 0)
+ {
+ gRegionMap->cursorPosY--;
+ }
+ mapSecId = GetRegionMapSectionIdAt_Internal(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ gRegionMap->inputCallback = ProcessRegionMapInput_Full;
+ return INPUT_EVENT_MOVE_END;
+}
+
+static u8 ProcessRegionMapInput_Zoomed(void)
+{
+ u8 input;
+
+ input = INPUT_EVENT_NONE;
+ gRegionMap->zoomedCursorDeltaX = 0;
+ gRegionMap->zoomedCursorDeltaY = 0;
+ if (gMain.heldKeys & DPAD_UP && gRegionMap->scrollY > -0x34)
+ {
+ gRegionMap->zoomedCursorDeltaY = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_DOWN && gRegionMap->scrollY < 0x3c)
+ {
+ gRegionMap->zoomedCursorDeltaY = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_LEFT && gRegionMap->scrollX > -0x2c)
+ {
+ gRegionMap->zoomedCursorDeltaX = -1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->scrollX < 0xac)
+ {
+ gRegionMap->zoomedCursorDeltaX = +1;
+ input = INPUT_EVENT_MOVE_START;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ input = INPUT_EVENT_A_BUTTON;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ input = INPUT_EVENT_B_BUTTON;
+ }
+ if (input == INPUT_EVENT_MOVE_START)
+ {
+ gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed;
+ gRegionMap->zoomedCursorMovementFrameCounter = 0;
+ }
+ return input;
+}
+
+static u8 MoveRegionMapCursor_Zoomed(void)
+{
+ u16 x;
+ u16 y;
+ u16 mapSecId;
+
+ gRegionMap->scrollY += gRegionMap->zoomedCursorDeltaY;
+ gRegionMap->scrollX += gRegionMap->zoomedCursorDeltaX;
+ RegionMap_SetBG2XAndBG2Y(gRegionMap->scrollX, gRegionMap->scrollY);
+ gRegionMap->zoomedCursorMovementFrameCounter++;
+ if (gRegionMap->zoomedCursorMovementFrameCounter == 8)
+ {
+ x = (gRegionMap->scrollX + 0x2c) / 8 + 1;
+ y = (gRegionMap->scrollY + 0x34) / 8 + 2;
+ if (x != gRegionMap->zoomedCursorPosX || y != gRegionMap->zoomedCursorPosY)
+ {
+ gRegionMap->zoomedCursorPosX = x;
+ gRegionMap->zoomedCursorPosY = y;
+ mapSecId = GetRegionMapSectionIdAt_Internal(x, y);
+ gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ RegionMap_GetPositionOfCursorWithinMapSection();
+ }
+ gRegionMap->zoomedCursorMovementFrameCounter = 0;
+ gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed;
+ return INPUT_EVENT_MOVE_END;
+ }
+ return INPUT_EVENT_MOVE_CONT;
+}
+
+void sub_8123418(void)
+{
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->scrollY = 0;
+ gRegionMap->scrollX = 0;
+ gRegionMap->unk_040 = 0;
+ gRegionMap->unk_03c = 0;
+ gRegionMap->unk_060 = gRegionMap->cursorPosX * 8 - 0x34;
+ gRegionMap->unk_062 = gRegionMap->cursorPosY * 8 - 0x44;
+ gRegionMap->unk_044 = (gRegionMap->unk_060 << 8) / 16;
+ gRegionMap->unk_048 = (gRegionMap->unk_062 << 8) / 16;
+ gRegionMap->zoomedCursorPosX = gRegionMap->cursorPosX;
+ gRegionMap->zoomedCursorPosY = gRegionMap->cursorPosY;
+ gRegionMap->unk_04c = 0x10000;
+ gRegionMap->unk_050 = -0x800;
+ }
+ else
+ {
+ gRegionMap->unk_03c = gRegionMap->scrollX * 0x100;
+ gRegionMap->unk_040 = gRegionMap->scrollY * 0x100;
+ gRegionMap->unk_060 = 0;
+ gRegionMap->unk_062 = 0;
+ gRegionMap->unk_044 = -(gRegionMap->unk_03c / 16);
+ gRegionMap->unk_048 = -(gRegionMap->unk_040 / 16);
+ gRegionMap->cursorPosX = gRegionMap->zoomedCursorPosX;
+ gRegionMap->cursorPosY = gRegionMap->zoomedCursorPosY;
+ gRegionMap->unk_04c = 0x8000;
+ gRegionMap->unk_050 = 0x800;
+ }
+ gRegionMap->unk_06e = 0;
+ FreeRegionMapCursorSprite();
+ HideRegionMapPlayerIcon();
+}
+
+bool8 sub_8123514(void)
+{
+ bool8 retVal;
+
+ if (gRegionMap->unk_06e >= 16)
+ {
+ return 0;
+ }
+ gRegionMap->unk_06e++;
+ if (gRegionMap->unk_06e == 16)
+ {
+ gRegionMap->unk_044 = 0;
+ gRegionMap->unk_048 = 0;
+ gRegionMap->scrollX = gRegionMap->unk_060;
+ gRegionMap->scrollY = gRegionMap->unk_062;
+ gRegionMap->unk_04c = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8);
+ gRegionMap->zoomed = !gRegionMap->zoomed;
+ gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? ProcessRegionMapInput_Full : ProcessRegionMapInput_Zoomed;
+ CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag);
+ UnhideRegionMapPlayerIcon();
+ retVal = FALSE;
+ }
+ else
+ {
+ gRegionMap->unk_03c += gRegionMap->unk_044;
+ gRegionMap->unk_040 += gRegionMap->unk_048;
+ gRegionMap->scrollX = gRegionMap->unk_03c >> 8;
+ gRegionMap->scrollY = gRegionMap->unk_040 >> 8;
+ gRegionMap->unk_04c += gRegionMap->unk_050;
+ if ((gRegionMap->unk_044 < 0 && gRegionMap->scrollX < gRegionMap->unk_060) || (gRegionMap->unk_044 > 0 && gRegionMap->scrollX > gRegionMap->unk_060))
+ {
+ gRegionMap->scrollX = gRegionMap->unk_060;
+ gRegionMap->unk_044 = 0;
+ }
+ if ((gRegionMap->unk_048 < 0 && gRegionMap->scrollY < gRegionMap->unk_062) || (gRegionMap->unk_048 > 0 && gRegionMap->scrollY > gRegionMap->unk_062))
+ {
+ gRegionMap->scrollY = gRegionMap->unk_062;
+ gRegionMap->unk_048 = 0;
+ }
+ if (gRegionMap->zoomed == FALSE)
+ {
+ if (gRegionMap->unk_04c < (128 << 8))
+ {
+ gRegionMap->unk_04c = (128 << 8);
+ gRegionMap->unk_050 = 0;
+ }
+ }
+ else
+ {
+ if (gRegionMap->unk_04c > (256 << 8))
+ {
+ gRegionMap->unk_04c = (256 << 8);
+ gRegionMap->unk_050 = 0;
+ }
+ }
+ retVal = TRUE;
+ }
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk_04c >> 8, gRegionMap->unk_04c >> 8, 0);
+ return retVal;
+}
+
+static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation)
+{
+ s32 var1;
+ s32 var2;
+ s32 var3;
+ s32 var4;
+
+ gRegionMap->bg2pa = e * gSineTable[rotation + 64] >> 8;
+ gRegionMap->bg2pc = e * -gSineTable[rotation] >> 8;
+ gRegionMap->bg2pb = f * gSineTable[rotation] >> 8;
+ gRegionMap->bg2pd = f * gSineTable[rotation + 64] >> 8;
+
+ var1 = (scrollX << 8) + (c << 8);
+ var2 = d * gRegionMap->bg2pb + gRegionMap->bg2pa * c;
+ gRegionMap->bg2x = var1 - var2;
+
+ var3 = (scrollY << 8) + (d << 8);
+ var4 = gRegionMap->bg2pd * d + gRegionMap->bg2pc * c;
+ gRegionMap->bg2y = var3 - var4;
+
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y)
+{
+ gRegionMap->bg2x = (x << 8) + 0x1c00;
+ gRegionMap->bg2y = (y << 8) + 0x2400;
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+void UpdateRegionMapVideoRegs(void)
+{
+ if (gRegionMap->needUpdateVideoRegs)
+ {
+ SetGpuReg(REG_OFFSET_BG2PA, gRegionMap->bg2pa);
+ SetGpuReg(REG_OFFSET_BG2PB, gRegionMap->bg2pb);
+ SetGpuReg(REG_OFFSET_BG2PC, gRegionMap->bg2pc);
+ SetGpuReg(REG_OFFSET_BG2PD, gRegionMap->bg2pd);
+ SetGpuReg(REG_OFFSET_BG2X_L, gRegionMap->bg2x);
+ SetGpuReg(REG_OFFSET_BG2X_H, gRegionMap->bg2x >> 16);
+ SetGpuReg(REG_OFFSET_BG2Y_L, gRegionMap->bg2y);
+ SetGpuReg(REG_OFFSET_BG2Y_H, gRegionMap->bg2y >> 16);
+ gRegionMap->needUpdateVideoRegs = FALSE;
+ }
+}
+
+void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y)
+{
+ CalcZoomScrollParams(x, y, 0x38, 0x48, 0x100, 0x100, 0);
+ UpdateRegionMapVideoRegs();
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->pos2.x = -x;
+ gRegionMap->playerIconSprite->pos2.y = -y;
+ }
+}
+
+static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y)
+{
+ if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
+ {
+ return MAPSEC_NONE;
+ }
+ y -= MAPCURSOR_Y_MIN;
+ x -= MAPCURSOR_X_MIN;
+ return sRegionMap_MapSectionLayout[x + y * MAP_WIDTH];
+}
+
+static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
+{
+ const struct MapHeader *mapHeader;
+ u16 mapWidth;
+ u16 mapHeight;
+ u16 x;
+ u16 y;
+ u16 dimensionScale;
+ u16 xOnMap;
+ struct WarpData *storedWarp;
+
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SS_TIDAL_CORRIDOR
+ && (gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR
+ || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK
+ || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_ROOMS))
+ {
+ RegionMap_InitializeStateBasedOnSSTidalLocation();
+ return;
+ }
+
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
+ {
+ default:
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 6:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = gMapHeader.mapData->width;
+ mapHeight = gMapHeader.mapData->height;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
+ {
+ gRegionMap->playerIsInCave = TRUE;
+ }
+ break;
+ case 4:
+ case 7:
+ if (gMapHeader.flags & 0x02)
+ {
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1Ptr->warp4.x;
+ y = gSaveBlock1Ptr->warp4.y;
+ }
+ else
+ {
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = 1;
+ mapHeight = 1;
+ x = 1;
+ y = 1;
+ }
+ break;
+ case 9:
+ mapHeader = get_mapheader_by_bank_and_number((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1Ptr->warp2.x;
+ y = gSaveBlock1Ptr->warp2.y;
+ break;
+ case 8:
+
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
+ {
+ storedWarp = &gSaveBlock1Ptr->warp4;
+ mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum);
+ }
+ else
+ {
+ storedWarp = &gSaveBlock1Ptr->warp2;
+ mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ }
+ if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
+ {
+ gRegionMap->playerIsInCave = TRUE;
+ }
+ else
+ {
+ gRegionMap->playerIsInCave = FALSE;
+ }
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = storedWarp->x;
+ y = storedWarp->y;
+ break;
+ }
+
+ xOnMap = x;
+
+ dimensionScale = mapWidth / gRegionMapEntries[gRegionMap->mapSecId].width;
+ if (dimensionScale == 0)
+ {
+ dimensionScale = 1;
+ }
+ x /= dimensionScale;
+ if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
+ {
+ x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
+ }
+
+ dimensionScale = mapHeight / gRegionMapEntries[gRegionMap->mapSecId].height;
+ if (dimensionScale == 0)
+ {
+ dimensionScale = 1;
+ }
+ y /= dimensionScale;
+ if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
+ {
+ y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
+ }
+
+ switch (gRegionMap->mapSecId)
+ {
+ case MAPSEC_ROUTE_114:
+ if (y != 0)
+ {
+ x = 0;
+ }
+ break;
+ case MAPSEC_ROUTE_126:
+ case MAPSEC_UNDERWATER_125:
+ x = 0;
+ if (gSaveBlock1Ptr->pos.x > 32)
+ {
+ x = 1;
+ }
+ if (gSaveBlock1Ptr->pos.x > 0x33)
+ {
+ x++;
+ }
+ y = 0;
+ if (gSaveBlock1Ptr->pos.y > 0x25)
+ {
+ y = 1;
+ }
+ if (gSaveBlock1Ptr->pos.y > 0x38)
+ {
+ y++;
+ }
+ break;
+ case MAPSEC_ROUTE_121:
+ x = 0;
+ if (xOnMap > 14)
+ {
+ x = 1;
+ }
+ if (xOnMap > 0x1C)
+ {
+ x++;
+ }
+ if (xOnMap > 0x36)
+ {
+ x++;
+ }
+ break;
+ case MAPSEC_UNDERWATER_MARINE_CAVE:
+ RegionMap_GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY);
+ return;
+ }
+ gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
+{
+ u16 y;
+ u16 x;
+ u8 mapGroup;
+ u8 mapNum;
+ u16 dimensionScale;
+ s16 xOnMap;
+ s16 yOnMap;
+ const struct MapHeader *mapHeader;
+
+ y = 0;
+ x = 0;
+ switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap))
+ {
+ case 1:
+ gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ break;
+ case 2:
+ gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ break;
+ case 3:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ break;
+ case 4:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ break;
+ default:
+ case 0:
+ mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
+ if (dimensionScale == 0)
+ dimensionScale = 1;
+ x = xOnMap / dimensionScale;
+ if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
+ x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
+
+ dimensionScale = mapHeader->mapData->height / gRegionMapEntries[gRegionMap->mapSecId].height;
+ if (dimensionScale == 0)
+ dimensionScale = 1;
+ y = yOnMap / dimensionScale;
+ if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
+ y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
+ break;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static u8 get_flagnr_blue_points(u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_NONE:
+ return MAPSECTYPE_NONE;
+ case MAPSEC_LITTLEROOT_TOWN:
+ return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_OLDALE_TOWN:
+ return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_DEWFORD_TOWN:
+ return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LAVARIDGE_TOWN:
+ return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FALLARBOR_TOWN:
+ return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_VERDANTURF_TOWN:
+ return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PACIFIDLOG_TOWN:
+ return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PETALBURG_CITY:
+ return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SLATEPORT_CITY:
+ return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MAUVILLE_CITY:
+ return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_RUSTBORO_CITY:
+ return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FORTREE_CITY:
+ return FlagGet(FLAG_VISITED_FORTREE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LILYCOVE_CITY:
+ return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MOSSDEEP_CITY:
+ return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SOOTOPOLIS_CITY:
+ return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_EVER_GRANDE_CITY:
+ return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_BATTLE_FRONTIER:
+ return FlagGet(FLAG_UNLOCK_BATTLE_FRONTIER) ? MAPSECTYPE_BATTLE_FRONTIER : MAPSECTYPE_NONE;
+ case MAPSEC_SOUTHERN_ISLAND:
+ return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? MAPSECTYPE_PLAIN : MAPSECTYPE_NONE;
+ default:
+ return MAPSECTYPE_PLAIN;
+ }
+}
+
+u16 GetRegionMapSectionIdAt(u16 x, u16 y)
+{
+ return GetRegionMapSectionIdAt_Internal(x, y);
+}
+
+static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (sRegionMap_MarineCaveMapSecIds[i] == mapSecId)
+ {
+ return RegionMap_GetTerraCaveMapSecId();
+ }
+ }
+ for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i++)
+ {
+ if (sRegionMap_SpecialPlaceLocations[i][0] == mapSecId)
+ {
+ return sRegionMap_SpecialPlaceLocations[i][1];
+ }
+ }
+ return mapSecId;
+}
+
+static u16 RegionMap_GetTerraCaveMapSecId(void)
+{
+ s16 idx;
+
+ idx = VarGet(VAR_0x4037) - 1;
+ if (idx < 0 || idx > 15)
+ {
+ idx = 0;
+ }
+ return sTerraCaveMapSectionIds[idx];
+}
+
+static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
+{
+ u16 idx;
+
+ idx = VarGet(VAR_0x4037);
+ if (idx < 9 || idx > 16)
+ {
+ idx = 9;
+ }
+ idx -= 9;
+ *x = sTerraCaveLocationCoords[idx].x + MAPCURSOR_X_MIN;
+ *y = sTerraCaveLocationCoords[idx].y + MAPCURSOR_Y_MIN;
+}
+
+static bool32 RegionMap_IsPlayerInCave(u8 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 1; i++)
+ {
+ if (sRegionMap_MapSecAquaHideoutOld[i] == mapSecId)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+u16 CorrectSpecialMapSecId(u16 mapSecId)
+{
+ return CorrectSpecialMapSecId_Internal(mapSecId);
+}
+
+static void RegionMap_GetPositionOfCursorWithinMapSection(void)
+{
+ u16 x;
+ u16 y;
+ u16 posWithinMapSec;
+
+ if (gRegionMap->mapSecId == MAPSEC_NONE)
+ {
+ gRegionMap->posWithinMapSec = 0;
+ return;
+ }
+ if (!gRegionMap->zoomed)
+ {
+ x = gRegionMap->cursorPosX;
+ y = gRegionMap->cursorPosY;
+ }
+ else
+ {
+ x = gRegionMap->zoomedCursorPosX;
+ y = gRegionMap->zoomedCursorPosY;
+ }
+ posWithinMapSec = 0;
+ while (1)
+ {
+ if (x <= MAPCURSOR_X_MIN)
+ {
+ if (RegionMap_IsMapSecIdInNextRow(y))
+ {
+ y--;
+ x = MAPCURSOR_X_MAX + 1;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ x--;
+ if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ {
+ posWithinMapSec++;
+ }
+ }
+ }
+ gRegionMap->posWithinMapSec = posWithinMapSec;
+}
+
+static bool8 RegionMap_IsMapSecIdInNextRow(u16 y)
+{
+ u16 x;
+
+ if (y-- == 0)
+ {
+ return FALSE;
+ }
+ for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++)
+ {
+ if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void SpriteCallback_CursorFull(struct Sprite *sprite)
+{
+ if (gRegionMap->cursorMovementFrameCounter != 0)
+ {
+ sprite->pos1.x += 2 * gRegionMap->cursorDeltaX;
+ sprite->pos1.y += 2 * gRegionMap->cursorDeltaY;
+ gRegionMap->cursorMovementFrameCounter--;
+ }
+}
+
+static void SpriteCallback_CursorZoomed(struct Sprite *sprite)
+{
+
+}
+
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteTemplate template;
+ struct SpritePalette palette;
+ struct SpriteSheet sheet;
+
+ palette = sRegionMapCursorSpritePalette;
+ template = sRegionMapCursorSpriteTemplate;
+ sheet.tag = tileTag;
+ template.tileTag = tileTag;
+ gRegionMap->cursorTileTag = tileTag;
+ palette.tag = paletteTag;
+ template.paletteTag = paletteTag;
+ gRegionMap->cursorPaletteTag = paletteTag;
+ if (!gRegionMap->zoomed)
+ {
+ sheet.data = gRegionMap->cursorSmallImage;
+ sheet.size = sizeof(gRegionMap->cursorSmallImage);
+ template.callback = SpriteCallback_CursorFull;
+ }
+ else
+ {
+ sheet.data = gRegionMap->cursorLargeImage;
+ sheet.size = sizeof(gRegionMap->cursorLargeImage);
+ template.callback = SpriteCallback_CursorZoomed;
+ }
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 0x38, 0x48, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ gRegionMap->cursorSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->cursorSprite->oam.size = 2;
+ gRegionMap->cursorSprite->pos1.x -= 8;
+ gRegionMap->cursorSprite->pos1.y -= 8;
+ StartSpriteAnim(gRegionMap->cursorSprite, 1);
+ }
+ else
+ {
+ gRegionMap->cursorSprite->oam.size = 1;
+ gRegionMap->cursorSprite->pos1.x = 8 * gRegionMap->cursorPosX + 4;
+ gRegionMap->cursorSprite->pos1.y = 8 * gRegionMap->cursorPosY + 4;
+ }
+ gRegionMap->cursorSprite->data1 = 2;
+ gRegionMap->cursorSprite->data2 = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101;
+ gRegionMap->cursorSprite->data3 = TRUE;
+ }
+}
+
+static void FreeRegionMapCursorSprite(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+}
+
+void sub_8124268(void)
+{
+ gRegionMap->cursorSprite->data3 = TRUE;
+}
+
+void sub_8124278(void)
+{
+ gRegionMap->cursorSprite->data3 = FALSE;
+}
+
+void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet sheet = {sRegionMapPlayerIcon_BrendanGfx, 0x80, tileTag};
+ struct SpritePalette palette = {sRegionMapPlayerIcon_BrendanPal, paletteTag};
+ struct SpriteTemplate template = {tileTag, paletteTag, &sRegionMapPlayerIconOam, sRegionMapPlayerIconAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+
+ if (sub_8124668(gMapHeader.regionMapSectionId))
+ {
+ gRegionMap->playerIconSprite = NULL;
+ return;
+ }
+ if (gSaveBlock2Ptr->playerGender == FEMALE)
+ {
+ sheet.data = sRegionMapPlayerIcon_MayGfx;
+ palette.data = sRegionMapPlayerIcon_MayPal;
+ }
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&palette);
+ spriteId = CreateSprite(&template, 0, 0, 1);
+ gRegionMap->playerIconSprite = &gSprites[spriteId];
+ if (!gRegionMap->zoomed)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ }
+}
+
+static void HideRegionMapPlayerIcon(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->invisible = TRUE;
+ gRegionMap->playerIconSprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void UnhideRegionMapPlayerIcon(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->pos2.x = 0;
+ gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ }
+}
+
+static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
+{
+ sprite->pos2.x = -2 * gRegionMap->scrollX;
+ sprite->pos2.y = -2 * gRegionMap->scrollY;
+ sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ if (sprite->data0 < -8 || sprite->data0 > 0xa8 || sprite->data1 < -8 || sprite->data1 > 0xf8)
+ {
+ sprite->data2 = FALSE;
+ }
+ else
+ {
+ sprite->data2 = TRUE;
+ }
+ if (sprite->data2 == TRUE)
+ {
+ RegionMapPlayerIconSpriteCallback(sprite);
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ }
+}
+
+static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite)
+{
+ RegionMapPlayerIconSpriteCallback(sprite);
+}
+
+static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite)
+{
+ if (gRegionMap->blinkPlayerIcon)
+ {
+ if (++sprite->data7 > 16)
+ {
+ sprite->data7 = 0;
+ sprite->invisible = sprite->invisible ? FALSE : TRUE;
+ }
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+void sub_812454C(void)
+{
+ if (gRegionMap->playerIsInCave)
+ {
+ gRegionMap->blinkPlayerIcon = TRUE;
+ }
+}
+
+u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
+{
+ u8 *str;
+ u16 i;
+
+ if (regionMapId == MAPSEC_SECRET_BASE)
+ {
+ str = GetSecretBaseMapName(dest);
+ }
+ else if (regionMapId < MAPSEC_NONE)
+ {
+ str = StringCopy(dest, gRegionMapEntries[regionMapId].name);
+ }
+ else
+ {
+ if (padLength == 0)
+ {
+ padLength = 18;
+ }
+ return StringFill(dest, CHAR_SPACE, padLength);
+ }
+ if (padLength != 0)
+ {
+ for (i = str - dest; i < padLength; i++)
+ {
+ *str++ = CHAR_SPACE;
+ }
+ *str = EOS;
+ }
+ return str;
+}
+
+u8 *sub_81245DC(u8 *dest, u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_DYNAMIC:
+ return StringCopy(dest, gText_Ferry);
+ case MAPSEC_SECRET_BASE:
+ return StringCopy(dest, gText_SecretBase);
+ default:
+ return GetMapName(dest, mapSecId, 0);
+ }
+}
+
+u8 *sub_8124610(u8 *dest, u16 mapSecId)
+{
+ if (mapSecId == MAPSEC_AQUA_HIDEOUT_OLD)
+ {
+ return StringCopy(dest, gText_Hideout);
+ }
+ else
+ {
+ return sub_81245DC(dest, mapSecId);
+ }
+}
+
+void sub_8124630(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+{
+ *x = gRegionMapEntries[mapSecId].x;
+ *y = gRegionMapEntries[mapSecId].y;
+ *width = gRegionMapEntries[mapSecId].width;
+ *height = gRegionMapEntries[mapSecId].height;
+}
+
+bool8 sub_8124658(void)
+{
+ return gRegionMap->zoomed;
+}
+
+bool32 sub_8124668(u8 mapSecId)
+{
+ u32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (mapSecId == sRegionMapEventSectionIds[i])
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void MCB2_FlyMap(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ gUnknown_0203A148 = malloc(sizeof(*gUnknown_0203A148));
+ if (gUnknown_0203A148 == NULL)
+ {
+ SetMainCallback2(sub_8086194);
+ }
+ else
+ {
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ gMain.state++;
+ }
+ break;
+ case 1:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, gUnknown_085A1EE4, 3);
+ gMain.state++;
+ break;
+ case 2:
+ InitWindows(gUnknown_085A1EF0);
+ DeactivateAllTextPrinters();
+ gMain.state++;
+ break;
+ case 3:
+ sub_809882C(0, 0x65, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 4:
+ InitRegionMap(&gUnknown_0203A148->regionMap, FALSE);
+ CreateRegionMapCursor(0, 0);
+ CreateRegionMapPlayerIcon(1, 1);
+ gUnknown_0203A148->mapSecId = gUnknown_0203A148->regionMap.mapSecId;
+ StringFill(gUnknown_0203A148->unk_a4c, CHAR_SPACE, 16);
+ gUnknown_03001180 = TRUE;
+ sub_8124904();
+ gMain.state++;
+ break;
+ case 5:
+ LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3));
+ gMain.state++;
+ break;
+ case 6:
+ LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30));
+ gMain.state++;
+ break;
+ case 7:
+ LoadPalette(sRegionMapFramePal, 0x10, 0x20);
+ PutWindowTilemap(2);
+ FillWindowPixelBuffer(2, 0x00);
+ PrintTextOnWindow(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gMain.state++;
+ break;
+ case 8:
+ sub_8124A70();
+ gMain.state++;
+ break;
+ case 9:
+ BlendPalettes(-1, 16, 0);
+ SetVBlankCallback(sub_81248C0);
+ gMain.state++;
+ break;
+ case 10:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ sub_81248F4(sub_8124D14);
+ SetMainCallback2(sub_81248D4);
+ gMain.state++;
+ break;
+ }
+}
+
+static void sub_81248C0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_81248D4(void)
+{
+ gUnknown_0203A148->unk_000();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+}
+
+static void sub_81248F4(void callback(void))
+{
+ gUnknown_0203A148->unk_000 = callback;
+ gUnknown_0203A148->unk_004 = 0;
+}
+
+static void sub_8124904(void)
+{
+ u16 i;
+ bool32 flag;
+ const u8 *name;
+
+ if (gUnknown_0203A148->regionMap.iconDrawType > MAPSECTYPE_NONE && gUnknown_0203A148->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER)
+ {
+ flag = FALSE;
+ for (i = 0; i < 1; i++)
+ {
+ if (gUnknown_0203A148->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId)
+ {
+ if (FlagGet(gUnknown_085A1EDC[i].flag))
+ {
+ StringLength(gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec]);
+ flag = TRUE;
+ sub_8198070(0, FALSE);
+ SetWindowBorderStyle(1, FALSE, 0x65, 0x0d);
+ PrintTextOnWindow(1, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL);
+ name = gUnknown_085A1EDC[i].name[gUnknown_0203A148->regionMap.posWithinMapSec];
+ PrintTextOnWindow(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = TRUE;
+ }
+ break;
+ }
+ }
+ if (!flag)
+ {
+ if (gUnknown_03001180 == TRUE)
+ {
+ sub_8198070(1, FALSE);
+ SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ }
+ else
+ {
+ FillWindowPixelBuffer(0, 0x11);
+ }
+ PrintTextOnWindow(0, 1, gUnknown_0203A148->regionMap.mapSecName, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = FALSE;
+ }
+ }
+ else
+ {
+ if (gUnknown_03001180 == TRUE)
+ {
+ sub_8198070(1, FALSE);
+ SetWindowBorderStyle(0, FALSE, 0x65, 0x0d);
+ }
+ FillWindowPixelBuffer(0, 0x11);
+ CopyWindowToVram(0, 2);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gUnknown_03001180 = FALSE;
+ }
+}
+
+
+static void sub_8124A70(void)
+{
+ struct SpriteSheet sheet;
+
+ LZ77UnCompWram(gUnknown_085A1D68, gUnknown_0203A148->unk_88c);
+ sheet.data = gUnknown_0203A148->unk_88c;
+ sheet.size = 0x1c0;
+ sheet.tag = 2;
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&gUnknown_085A1F10);
+ sub_8124AD4();
+ sub_8124BE4();
+}
+
+static void sub_8124AD4(void)
+{
+ u16 canFlyFlag;
+ u16 i;
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 shape;
+ u8 spriteId;
+
+ canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN;
+ for (i = 0; i < 16; i++)
+ {
+ sub_8124630(i, &x, &y, &width, &height);
+ x = (x + MAPCURSOR_X_MIN) * 8 + 4;
+ y = (y + MAPCURSOR_Y_MIN) * 8 + 4;
+ if (width == 2)
+ {
+ shape = ST_OAM_H_RECTANGLE;
+ }
+ else if (height == 2)
+ {
+ shape = ST_OAM_V_RECTANGLE;
+ }
+ else
+ {
+ shape = ST_OAM_SQUARE;
+ }
+ spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.shape = shape;
+ if (FlagGet(canFlyFlag))
+ {
+ gSprites[spriteId].callback = sub_8124CBC;
+ }
+ else
+ {
+ shape += 3;
+ }
+ StartSpriteAnim(&gSprites[spriteId], shape);
+ gSprites[spriteId].data0 = i;
+ }
+ canFlyFlag++;
+ }
+}
+
+static void sub_8124BE4(void)
+{
+ u16 i;
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 mapSecId;
+ u8 spriteId;
+
+ for (i = 0; gUnknown_085A1F18[i][1] != MAPSEC_NONE; i++)
+ {
+ if (FlagGet(gUnknown_085A1F18[i][0]))
+ {
+ mapSecId = gUnknown_085A1F18[i][1];
+ sub_8124630(mapSecId, &x, &y, &width, &height);
+ x = (x + MAPCURSOR_X_MIN) * 8;
+ y = (y + MAPCURSOR_Y_MIN) * 8;
+ spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.size = 1;
+ gSprites[spriteId].callback = sub_8124CBC;
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data0 = mapSecId;
+ }
+ }
+ }
+}
+
+static void sub_8124CBC(struct Sprite *sprite)
+{
+ if (gUnknown_0203A148->regionMap.mapSecId == sprite->data0)
+ {
+ if (++sprite->data1 > 16)
+ {
+ sprite->data1 = 0;
+ sprite->invisible = sprite->invisible ? FALSE : TRUE;
+ }
+ }
+ else
+ {
+ sprite->data1 = 16;
+ sprite->invisible = FALSE;
+ }
+}
+
+static void sub_8124D14(void)
+{
+ switch (gUnknown_0203A148->unk_004)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gUnknown_0203A148->unk_004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ sub_81248F4(sub_8124D64);
+ }
+ break;
+ }
+}
+
+static void sub_8124D64(void)
+{
+ if (gUnknown_0203A148->unk_004 == 0)
+ {
+ switch (sub_81230AC())
+ {
+ case INPUT_EVENT_NONE:
+ case INPUT_EVENT_MOVE_START:
+ case INPUT_EVENT_MOVE_CONT:
+ break;
+ case INPUT_EVENT_MOVE_END:
+ sub_8124904();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ if (gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || gUnknown_0203A148->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER)
+ {
+ m4aSongNumStart(SE_SELECT);
+ gUnknown_0203A148->unk_a72 = TRUE;
+ sub_81248F4(sub_8124E0C);
+ }
+ break;
+ case INPUT_EVENT_B_BUTTON:
+ m4aSongNumStart(SE_SELECT);
+ gUnknown_0203A148->unk_a72 = FALSE;
+ sub_81248F4(sub_8124E0C);
+ break;
+ }
+ }
+}
+
+static void sub_8124E0C(void)
+{
+ switch (gUnknown_0203A148->unk_004)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_0203A148->unk_004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ if (gUnknown_0203A148->unk_a72)
+ {
+ switch (gUnknown_0203A148->regionMap.mapSecId)
+ {
+ case MAPSEC_SOUTHERN_ISLAND:
+ sub_8084CCC(0x15);
+ break;
+ case MAPSEC_BATTLE_FRONTIER:
+ sub_8084CCC(0x16);
+ break;
+ case MAPSEC_LITTLEROOT_TOWN:
+ sub_8084CCC(gSaveBlock2Ptr->playerGender == MALE ? 0x0C : 0x0D);
+ break;
+ case MAPSEC_EVER_GRANDE_CITY:
+ sub_8084CCC(FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && gUnknown_0203A148->regionMap.posWithinMapSec == 0 ? 0x14 : 0x0B);
+ break;
+ default:
+ if (gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2] != 0)
+ {
+ sub_8084CCC(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][2]);
+ }
+ else
+ {
+ warp1_set_2(gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][0], gUnknown_085A1E3C[gUnknown_0203A148->regionMap.mapSecId][1], -1);
+ }
+ break;
+ }
+ sub_80B69DC();
+ }
+ else
+ {
+ SetMainCallback2(sub_81B58A8);
+ }
+ if (gUnknown_0203A148 != NULL)
+ {
+ free(gUnknown_0203A148);
+ gUnknown_0203A148 = NULL;
+ }
+ FreeAllWindowBuffers();
+ }
+ break;
+ }
+}
diff --git a/src/secret_base.c b/src/secret_base.c
index 89e276e80..de2b7221a 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1099,9 +1099,9 @@ void game_continue(u8 taskId)
}
gUnknown_03006310 = gUnknown_0858D07C;
gUnknown_03006310.unk_10 = data[6];
- gUnknown_03006310.unk_0c = data[0];
- gUnknown_03006310.unk_00 = gUnknown_0203A020->items;
- gUnknown_03006310.unk_0e = data[3];
+ gUnknown_03006310.totalItems = data[0];
+ gUnknown_03006310.items = gUnknown_0203A020->items;
+ gUnknown_03006310.maxShowed = data[3];
}
void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu)
@@ -1866,7 +1866,7 @@ void sub_80EAF80(void *records, size_t recordSize, u8 linkIdx)
{
struct SecretBaseRecordMixer mixers[3];
u16 i;
-
+
if (FlagGet(0x60))
{
switch (GetLinkPlayerCount())
diff --git a/src/tv.c b/src/tv.c
index 2cb1d4384..c1d648652 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -6432,10 +6432,10 @@ void DoTVShowTodaysRivalTrainer(void)
default:
sTVShowState = 7;
break;
- case REGION_MAP_SECRET_BASE:
+ case MAPSEC_SECRET_BASE:
sTVShowState = 8;
break;
- case REGION_MAP_NONE:
+ case MAPSEC_DYNAMIC:
switch (show->rivalTrainer.mapDataId)
{
case 0x115 ... 0x117:
@@ -6633,7 +6633,7 @@ void DoTVShowHoennTreasureInvestigators(void)
{
case 0:
StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
- if (show->treasureInvestigators.location == REGION_MAP_NONE)
+ if (show->treasureInvestigators.location == MAPSEC_DYNAMIC)
{
switch (show->treasureInvestigators.mapDataId)
{
diff --git a/sym_bss.txt b/sym_bss.txt
index 7cd6fdf50..e2f03b8f3 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -34,8 +34,7 @@ gUnknown_03001178: @ 3001178
gUnknown_0300117C: @ 300117C
.space 0x4
-gUnknown_03001180: @ 3001180
- .space 0x8
+ .include "src/region_map.o"
gUnknown_03001188: @ 3001188
.space 0x68
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b2c1d62cb..f037d9ace 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -544,23 +544,7 @@ gUnknown_020249B4: @ 20249B4
.space 0x8
.include "src/rng.o"
-
- .align 2
-gUnknown_020249C4: @ 20249C4
- .space 0x64
-
-gUnknown_02024A28: @ 2024A28
- .space 0x8
-
-gUnknown_02024A30: @ 2024A30
- .space 0x8
-
-gUnknown_02024A38: @ 2024A38
- .space 0x14
-
-gUnknown_02024A4C: @ 2024A4C
- .space 0x8
-
+ .include "src/daycare.o"
.include "src/load_save.o"
gUnknown_02031C58: @ 2031C58
@@ -1105,12 +1089,7 @@ gUnknown_0203A138: @ 203A138
gUnknown_0203A140: @ 203A140
.space 0x4
-gUnknown_0203A144: @ 203A144
- .space 0x4
-
-gUnknown_0203A148: @ 203A148
- .space 0x4
-
+ .include "src/region_map.o"
.include "src/decoration.o"
.align 2
@@ -1398,8 +1377,7 @@ gUnknown_0203BCC8: @ 203BCC8
gUnknown_0203BCCC: @ 203BCCC
.space 0x4
-gUnknown_0203BCD0: @ 203BCD0
- .space 0x4
+ .include "src/field_region_map.o"
gUnknown_0203BCD4: @ 203BCD4
.space 0x4