summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-10-24 11:42:45 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-10-24 11:42:45 -0400
commit0d73967f6c97e1743c7ef3e0b20a9bc31a5a4ebd (patch)
tree440fbec620ef44ff85702f0f62436e4f6e66db66
parent779d6187c613ce4491533bf0c24e9f60ddf697b4 (diff)
field_specials through Special_BattleCardAction; field_specials rodata
-rw-r--r--asm/field_specials.s256
-rw-r--r--baserom.ipsbin636332 -> 635220 bytes
-rw-r--r--data/field_specials.s392
-rw-r--r--data/field_specials/unk_83F6206.pal19
-rw-r--r--data/field_specials/unk_83F6226.pal19
-rw-r--r--data/field_specials/unk_83F6246.pal19
-rw-r--r--data/field_specials/unk_83F6266.pal19
-rw-r--r--data/field_specials/unk_83F6286.pal19
-rw-r--r--data/field_specials/unk_83F62A6.pal19
-rw-r--r--data/field_specials/unk_83F62C6.pal19
-rw-r--r--data/field_specials/unk_83F62E6.pal19
-rw-r--r--data/field_specials/unk_83F6306.pal19
-rw-r--r--data/field_specials/unk_83F6326.pal19
-rw-r--r--data/field_specials/unk_83F6346.pal19
-rw-r--r--include/mevent.h1
-rw-r--r--include/overworld.h1
-rw-r--r--include/strings.h39
-rw-r--r--src/field_specials.c431
18 files changed, 718 insertions, 611 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
index df5af36d3..919622482 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -5,262 +5,6 @@
.text
- thumb_func_start sub_80CC59C
-sub_80CC59C: @ 80CC59C
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, _080CC5F8 @ =0x0000404d
- bl VarGet
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r6, _080CC5FC @ =0xffffff00
- ldr r0, [sp, 0x4]
- ands r0, r6
- ldr r4, _080CC600 @ =0xffff00ff
- ands r0, r4
- str r0, [sp, 0x4]
- ldr r0, _080CC604 @ =0x00000808
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080CC5C4
- b _080CC71E
-_080CC5C4:
- cmp r5, 0x5
- bne _080CC61C
- ldr r0, _080CC608 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- adds r7, r0, 0
- cmp r1, 0xF
- bne _080CC67C
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, 0
- beq _080CC5E2
- cmp r0, 0x3
- bne _080CC67C
-_080CC5E2:
- ldr r1, [sp, 0x4]
- ands r1, r6
- movs r0, 0x66
- orrs r1, r0
- str r1, [sp, 0x4]
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, 0
- bne _080CC60C
- lsls r0, r5, 8
- b _080CC610
- .align 2, 0
-_080CC5F8: .4byte 0x0000404d
-_080CC5FC: .4byte 0xffffff00
-_080CC600: .4byte 0xffff00ff
-_080CC604: .4byte 0x00000808
-_080CC608: .4byte gSaveBlock1Ptr
-_080CC60C:
- movs r0, 0xC0
- lsls r0, 3
-_080CC610:
- ands r1, r4
- orrs r1, r0
- str r1, [sp, 0x4]
- add r1, sp, 0x4
- movs r0, 0x23
- b _080CC66C
-_080CC61C:
- ldr r7, _080CC65C @ =gSaveBlock1Ptr
- cmp r5, 0x3
- bne _080CC67C
- ldr r1, [r7]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x3
- bne _080CC67C
- ldrb r0, [r1, 0x5]
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080CC67C
- ldr r1, _080CC660 @ =gUnknown_83F5D58
- ldrh r0, [r1, 0x18]
- ldrh r1, [r1, 0x1A]
- bl get_mapheader_by_bank_and_number
- ldrb r0, [r0, 0x14]
- add r1, sp, 0x4
- strb r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r6, r1, 0
- cmp r0, 0x29
- bne _080CC664
- strb r5, [r6, 0x1]
- b _080CC668
- .align 2, 0
-_080CC65C: .4byte gSaveBlock1Ptr
-_080CC660: .4byte gUnknown_83F5D58
-_080CC664:
- movs r0, 0x4
- strb r0, [r6, 0x1]
-_080CC668:
- movs r0, 0x23
- adds r1, r6, 0
-_080CC66C:
- bl sub_8113550
- ldr r0, _080CC678 @ =0x00000808
- bl FlagClear
- b _080CC71E
- .align 2, 0
-_080CC678: .4byte 0x00000808
-_080CC67C:
- ldr r3, [r7]
- movs r2, 0x4
- ldrsb r2, [r3, r2]
- ldr r1, _080CC6D0 @ =gUnknown_83F5D58
- lsls r0, r5, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0x4]
- cmp r2, r0
- bne _080CC71E
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- ldrh r2, [r1, 0x6]
- cmp r0, r2
- bne _080CC71E
- ldrh r0, [r1]
- ldrh r1, [r1, 0x2]
- bl get_mapheader_by_bank_and_number
- ldrb r1, [r0, 0x14]
- add r0, sp, 0x4
- strb r1, [r0]
- strb r5, [r0, 0x1]
- adds r6, r0, 0
- cmp r5, 0x16
- bne _080CC6D4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0xF
- bne _080CC6F6
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0x1A
- beq _080CC6FC
- b _080CC6F6
- .align 2, 0
-_080CC6D0: .4byte gUnknown_83F5D58
-_080CC6D4:
- cmp r5, 0x2A
- bne _080CC6FC
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x43
- bne _080CC6F6
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- beq _080CC6FC
-_080CC6F6:
- ldrb r0, [r6, 0x1]
- adds r0, 0x1
- strb r0, [r6, 0x1]
-_080CC6FC:
- movs r0, 0x23
- adds r1, r6, 0
- bl sub_8113550
- ldr r4, _080CC728 @ =0x00000808
- adds r0, r4, 0
- bl FlagClear
- cmp r5, 0x23
- bne _080CC71E
- ldr r0, _080CC72C @ =0x0000404d
- movs r1, 0x20
- bl VarSet
- adds r0, r4, 0
- bl FlagSet
-_080CC71E:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080CC728: .4byte 0x00000808
-_080CC72C: .4byte 0x0000404d
- thumb_func_end sub_80CC59C
-
- thumb_func_start Special_BattleCardAction
-Special_BattleCardAction: @ 80CC730
- push {lr}
- ldr r0, _080CC744 @ =gSpecialVar_Result
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080CC77C
- lsls r0, 2
- ldr r1, _080CC748 @ =_080CC74C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080CC744: .4byte gSpecialVar_Result
-_080CC748: .4byte _080CC74C
- .align 2, 0
-_080CC74C:
- .4byte _080CC760
- .4byte _080CC764
- .4byte _080CC768
- .4byte _080CC76C
- .4byte _080CC770
-_080CC760:
- movs r0, 0x3
- b _080CC772
-_080CC764:
- movs r0, 0x4
- b _080CC772
-_080CC768:
- movs r0, 0
- b _080CC772
-_080CC76C:
- movs r0, 0x1
- b _080CC772
-_080CC770:
- movs r0, 0x2
-_080CC772:
- bl sub_81445C0
- lsls r0, 16
- lsrs r0, 16
- b _080CC78A
-_080CC77C:
- @ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scr_tool.c", 3873)
- ldr r0, _080CC790 @ =gUnknown_83F5EF0 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scr_tool.c"
- ldr r1, _080CC794 @ =0x00000f21
- ldr r2, _080CC798 @ =gUnknown_83F5F24 "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0
-_080CC78A:
- pop {r1}
- bx r1
- .align 2, 0
-_080CC790: .4byte gUnknown_83F5EF0
-_080CC794: .4byte 0x00000f21
-_080CC798: .4byte gUnknown_83F5F24
- thumb_func_end Special_BattleCardAction
-
thumb_func_start set_unknown_box_id
set_unknown_box_id: @ 80CC79C
ldr r1, _080CC7A4 @ =gUnknown_2039A1A
diff --git a/baserom.ips b/baserom.ips
index 928218e45..f619a0841 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/field_specials.s b/data/field_specials.s
index 35c70a476..6c38b46a6 100644
--- a/data/field_specials.s
+++ b/data/field_specials.s
@@ -6,335 +6,6 @@
.section .rodata
.align 2
-gUnknown_83F5AF8:: @ 83F5AF8
- .4byte gStringVar1
- .4byte gStringVar2
- .4byte gStringVar3
-
-gUnknown_83F5B04::
- .incbin "baserom.gba", 0x3F5B04, 0x16
-
-sSlotMachineIndices:: @ 83F5B1A
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 1
- .byte 1
- .byte 2
- .byte 2
- .byte 2
- .byte 3
- .byte 3
- .byte 3
- .byte 4
- .byte 4
- .byte 5
-
- .align 1
-sResortGorgeousDeluxeRewards:: @ 83F5B30
- .2byte ITEM_BIG_PEARL
- .2byte ITEM_PEARL
- .2byte ITEM_STARDUST
- .2byte ITEM_STAR_PIECE
- .2byte ITEM_NUGGET
- .2byte ITEM_RARE_CANDY
-
- .align 2
-sElevatorCurrentFloorWindowTemplate:: @ 83F5B3C
- .byte 0, 22, 1, 7, 4, 15
- .2byte 0x0008
-
-sFloorNamePointers:: @ 83F5B44
- .4byte gUnknown_8418069
- .4byte gUnknown_8418065
- .4byte gUnknown_8418061
- .4byte gUnknown_841805D
- .4byte gUnknown_841803A
- .4byte gUnknown_841803D
- .4byte gUnknown_8418040
- .4byte gUnknown_8418043
- .4byte gUnknown_8418046
- .4byte gUnknown_8418049
- .4byte gUnknown_841804C
- .4byte gUnknown_841804F
- .4byte gUnknown_8418052
- .4byte gUnknown_8418055
- .4byte gUnknown_8418059
- .4byte gUnknown_841806D
-
-gUnknown_83F5B84::
- .byte 26
- .byte 26
- .byte 26
- .byte 26
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 30
- .byte 26
- .byte 26
- .byte 18
-
- .align 1
-sElevatorWindowMetatilesGoingUp:: @ 83F5B94
- .2byte 0x02e8, 0x02e9, 0x02ea
- .2byte 0x02f0, 0x02f1, 0x02f2
- .2byte 0x02f8, 0x02f9, 0x02fa
-
- .align 1
-sElevatorWindowMetatilesGoingDown:: @ 83F5BA6
- .2byte 0x02e8, 0x02ea, 0x02e9
- .2byte 0x02f0, 0x02f2, 0x02f1
- .2byte 0x02f8, 0x02fa, 0x02f9
-
-sElevatorAnimationDuration:: @ 83F5BB8
- .byte 8
- .byte 16
- .byte 24
- .byte 32
- .byte 38
- .byte 46
- .byte 53
- .byte 56
- .byte 57
-
-sElevatorWindowAnimDuration:: @ 83F5BC1
- .byte 3
- .byte 6
- .byte 9
- .byte 12
- .byte 15
- .byte 18
- .byte 21
- .byte 24
- .byte 27
-
- .align 2
-gUnknown_83F5BCC:: @ 83F5BCC
- .4byte gUnknown_8417FD9
- .4byte gUnknown_8417FE6
- .4byte gUnknown_8417FF3
- .4byte gUnknown_8418000
- .4byte gUnknown_841800D
- .4byte gUnknown_8418017
- .4byte gUnknown_8418022
- .4byte gUnknown_841802F
- .4byte gOtherText_Exit
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- .4byte gUnknown_8418059
- .4byte gUnknown_8418055
- .4byte gUnknown_8418052
- .4byte gUnknown_841804F
- .4byte gUnknown_841804C
- .4byte gUnknown_8418049
- .4byte gUnknown_8418046
- .4byte gUnknown_8418043
- .4byte gUnknown_8418040
- .4byte gUnknown_841803D
- .4byte gUnknown_841803A
- .4byte gOtherText_Exit
-
- .4byte gUnknown_841805D
- .4byte gUnknown_8418061
- .4byte gUnknown_8418069
- .4byte gOtherText_Exit
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- .4byte gUnknown_8418046
- .4byte gUnknown_8418043
- .4byte gUnknown_8418040
- .4byte gUnknown_841803D
- .4byte gUnknown_841803A
- .4byte gOtherText_Exit
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- .4byte gUnknown_841807D
- .4byte gUnknown_841808E
- .4byte gUnknown_841809C
- .4byte gOtherText_Quit
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- .4byte gUnknown_84180A7
- .4byte gUnknown_84180BC
- .4byte gUnknown_84180D0
- .4byte gUnknown_84180E4
- .4byte gUnknown_84180FA
- .4byte gUnknown_841810D
- .4byte gUnknown_841811D
- .4byte gUnknown_841812F
- .4byte gUnknown_8418142
- .4byte gUnknown_8418152
- .4byte gUnknown_8418163
- .4byte gOtherText_Exit
-
- .4byte gUnknown_841806D
- .4byte gUnknown_841805D
- .4byte gOtherText_Exit
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
-gUnknown_83F5D1C:: @ 83F5D1C
- .byte 2 @ firstArrowType
- .byte 0 @ firstX
- .byte 0 @ firstY
- .byte 3 @ secondArrowType
- .byte 0 @ secondX
- .byte 0 @ secondY
- .2byte 0 @ fullyUpThreshold
- .2byte 0 @ fullyDownThreshold
- .2byte 2000 @ tileTag
- .2byte 100 @ palTag
- .byte 0 @ palNum
-
- .align 2
- .align 1
-sStarterMon:: @ 83F5D2C
- .2byte SPECIES_BULBASAUR
- .2byte SPECIES_SQUIRTLE
- .2byte SPECIES_CHARMANDER
-
-gUnknown_83F5D32:: @ 83F5D32
- .byte MAP_GROUP(VIRIDIAN_CITY_MART), MAP_NUM(VIRIDIAN_CITY_MART), 1
- .byte MAP_GROUP(PEWTER_CITY_MART), MAP_NUM(PEWTER_CITY_MART), 3
- .byte MAP_GROUP(CERULEAN_CITY_MART), MAP_NUM(CERULEAN_CITY_MART), 1
- .byte MAP_GROUP(LAVENDER_TOWN_MART), MAP_NUM(LAVENDER_TOWN_MART), 1
- .byte MAP_GROUP(VERMILION_CITY_MART), MAP_NUM(VERMILION_CITY_MART), 1
- .byte MAP_GROUP(FUCHSIA_CITY_MART), MAP_NUM(FUCHSIA_CITY_MART), 1
- .byte MAP_GROUP(CINNABAR_ISLAND_MART), MAP_NUM(CINNABAR_ISLAND_MART), 1
- .byte MAP_GROUP(SAFFRON_CITY_MART), MAP_NUM(SAFFRON_CITY_MART), 1
- .byte MAP_GROUP(THREE_ISLAND_MART), MAP_NUM(THREE_ISLAND_MART), 1
- .byte MAP_GROUP(FOUR_ISLAND_MART), MAP_NUM(FOUR_ISLAND_MART), 1
- .byte MAP_GROUP(SEVEN_ISLAND_MART), MAP_NUM(SEVEN_ISLAND_MART), 1
- .byte MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1
-
- .align 2
-gUnknown_83F5D58:: @ 83F5D58
- .2byte MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F), 0x03, 0x00
- .2byte MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB), 0x03, 0x00
- .2byte MAP_GROUP(VIRIDIAN_CITY_GYM), MAP_NUM(VIRIDIAN_CITY_GYM), 0x03, 0x01
- .2byte MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), 0x03, 0x29
- .2byte MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), 0x03, 0x2a
- .2byte MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 0x0f, 0x00
- .2byte MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 0x0f, 0x03
- .2byte MAP_GROUP(PEWTER_CITY_MUSEUM_1F), MAP_NUM(PEWTER_CITY_MUSEUM_1F), 0x03, 0x02
- .2byte MAP_GROUP(PEWTER_CITY_GYM), MAP_NUM(PEWTER_CITY_GYM), 0x03, 0x02
- .2byte MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 0x03, 0x16
- .2byte MAP_GROUP(MT_MOON_B1F), MAP_NUM(MT_MOON_B1F), 0x03, 0x16
- .2byte MAP_GROUP(CERULEAN_CITY_GYM), MAP_NUM(CERULEAN_CITY_GYM), 0x03, 0x03
- .2byte MAP_GROUP(CERULEAN_CITY_BIKE_SHOP), MAP_NUM(CERULEAN_CITY_BIKE_SHOP), 0x03, 0x03
- .2byte MAP_GROUP(ROUTE25_SEA_COTTAGE), MAP_NUM(ROUTE25_SEA_COTTAGE), 0x03, 0x2c
- .2byte MAP_GROUP(ROUTE5_POKEMON_DAY_CARE), MAP_NUM(ROUTE5_POKEMON_DAY_CARE), 0x03, 0x17
- .2byte MAP_GROUP(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE), 0x03, 0x17
- .2byte MAP_GROUP(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_SOUTH_ENTRANCE), 0x03, 0x18
- .2byte MAP_GROUP(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_NUM(VERMILION_CITY_POKEMON_FAN_CLUB), 0x03, 0x05
- .2byte MAP_GROUP(VERMILION_CITY_GYM), MAP_NUM(VERMILION_CITY_GYM), 0x03, 0x05
- .2byte MAP_GROUP(SSANNE_1F_CORRIDOR), MAP_NUM(SSANNE_1F_CORRIDOR), 0x03, 0x05
- .2byte MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), 0x03, 0x14
- .2byte MAP_GROUP(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_SOUTH_ENTRANCE), 0x03, 0x1d
- .2byte MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 0x03, 0x1c
- .2byte MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 0x03, 0x1c
- .2byte MAP_GROUP(POWER_PLANT), MAP_NUM(POWER_PLANT), 0x03, 0x1c
- .2byte MAP_GROUP(POKEMON_TOWER_1F), MAP_NUM(POKEMON_TOWER_1F), 0x03, 0x04
- .2byte MAP_GROUP(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_NUM(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), 0x03, 0x04
- .2byte MAP_GROUP(LAVENDER_TOWN_HOUSE2), MAP_NUM(LAVENDER_TOWN_HOUSE2), 0x03, 0x04
- .2byte MAP_GROUP(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE), 0x03, 0x1a
- .2byte MAP_GROUP(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_WEST_ENTRANCE), 0x03, 0x19
- .2byte MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F), 0x03, 0x06
- .2byte MAP_GROUP(CELADON_CITY_CONDOMINIUMS_1F), MAP_NUM(CELADON_CITY_CONDOMINIUMS_1F), 0x03, 0x06
- .2byte MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER), 0x03, 0x06
- .2byte MAP_GROUP(CELADON_CITY_GYM), MAP_NUM(CELADON_CITY_GYM), 0x03, 0x06
- .2byte MAP_GROUP(CELADON_CITY_RESTAURANT), MAP_NUM(CELADON_CITY_RESTAURANT), 0x03, 0x06
- .2byte MAP_GROUP(ROCKET_HIDEOUT_B1F), MAP_NUM(ROCKET_HIDEOUT_B1F), 0x0a, 0x0e
- .2byte MAP_GROUP(SAFARI_ZONE_CENTER), MAP_NUM(SAFARI_ZONE_CENTER), 0x0b, 0x00
- .2byte MAP_GROUP(FUCHSIA_CITY_GYM), MAP_NUM(FUCHSIA_CITY_GYM), 0x03, 0x07
- .2byte MAP_GROUP(FUCHSIA_CITY_BUILDING1), MAP_NUM(FUCHSIA_CITY_BUILDING1), 0x03, 0x07
- .2byte MAP_GROUP(SAFFRON_CITY_DOJO), MAP_NUM(SAFFRON_CITY_DOJO), 0x03, 0x0a
- .2byte MAP_GROUP(SAFFRON_CITY_GYM), MAP_NUM(SAFFRON_CITY_GYM), 0x03, 0x0a
- .2byte MAP_GROUP(SILPH_CO_1F), MAP_NUM(SILPH_CO_1F), 0x03, 0x0a
- .2byte MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 0x03, 0x26
- .2byte MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 0x03, 0x26
- .2byte MAP_GROUP(POKEMON_MANSION_1F), MAP_NUM(POKEMON_MANSION_1F), 0x03, 0x08
- .2byte MAP_GROUP(CINNABAR_ISLAND_GYM), MAP_NUM(CINNABAR_ISLAND_GYM), 0x03, 0x08
- .2byte MAP_GROUP(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_NUM(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), 0x03, 0x08
- .2byte MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), 0x03, 0x2a
- .2byte MAP_GROUP(VICTORY_ROAD_2F), MAP_NUM(VICTORY_ROAD_2F), 0x03, 0x2a
- .2byte MAP_GROUP(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_NUM(INDIGO_PLATEAU_POKEMON_CENTER_1F), 0x03, 0x09
- .2byte MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), 0x03, 0x03
-
- .align 2
-gUnknown_83F5EF0:: @ 83F5EF0
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scr_tool.c"
-
- .align 2
-gUnknown_83F5F24:: @ 83F5F24
- .asciz "0"
-
- .align 1
-gUnknown_83F5F26:: @ 83F5F26
- .2byte 0x0504
- .2byte 0x0605
- .2byte 0x0703
- .2byte 0x0800
- .2byte 0x0901
- .2byte 0x0a0c
- .2byte 0x0b05
- .2byte 0x0c05
- .2byte 0x0d00
- .2byte 0x0e06
- .2byte 0x1000
- .2byte 0x1500
- .2byte 0x2000
- .2byte 0x2102
- .2byte 0x2201
- .2byte 0x2301
- .2byte 0x2400
- .2byte 0x1f03
- .2byte 0x2500
- .2byte 0x0004
- .2byte 0xffff
-
gUnknown_83F5F50:: @ 83F5F50
.incbin "data/field_specials/unk_83F5F50.gbapal"
.incbin "data/field_specials/unk_83F5F70.gbapal"
@@ -365,19 +36,70 @@ gUnknown_83F61D0:: @ 83F61D0
.incbin "data/field_specials/unk_83F61D0.gbapal"
gUnknown_83F61F0:: @ 83F61F0
- .incbin "baserom.gba", 0x3F61F0, 0xB
+ .byte 40
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
+ .byte 12
gUnknown_83F61FB:: @ 83F61FB
- .incbin "baserom.gba", 0x3F61FB, 0x8
+ .byte 20
+ .byte 8
+ .byte 8
+ .byte 8
+ .byte 8
+ .byte 8
+ .byte 8
+ .byte 8
gUnknown_83F6203:: @ 83F6203
- .incbin "baserom.gba", 0x3F6203, 0x3
+ .byte 3
+ .byte 6
+ .byte 9
+ .align 1
gUnknown_83F6206:: @ 83F6206
- .incbin "baserom.gba", 0x3F6206, 0x160
+ .incbin "data/field_specials/unk_83F6206.gbapal"
+ .incbin "data/field_specials/unk_83F6226.gbapal"
+ .incbin "data/field_specials/unk_83F6246.gbapal"
+ .incbin "data/field_specials/unk_83F6266.gbapal"
+ .incbin "data/field_specials/unk_83F6286.gbapal"
+ .incbin "data/field_specials/unk_83F62A6.gbapal"
+ .incbin "data/field_specials/unk_83F62C6.gbapal"
+ .incbin "data/field_specials/unk_83F62E6.gbapal"
+ .incbin "data/field_specials/unk_83F6306.gbapal"
+ .incbin "data/field_specials/unk_83F6326.gbapal"
+ .incbin "data/field_specials/unk_83F6346.gbapal"
gUnknown_83F6366:: @ 83F6366
- .incbin "baserom.gba", 0x3F6366, 0x16
+ .byte 0x0f, 0x0c
+ .byte 0x0b, 0x0e
+ .byte 0x0f, 0x08
+ .byte 0x13, 0x0e
+ .byte 0x0c, 0x0b
+ .byte 0x12, 0x0b
+ .byte 0x0f, 0x0e
+ .byte 0x0b, 0x0e
+ .byte 0x13, 0x0e
+ .byte 0x0f, 0x0f
+ .byte 0x0f, 0x0a
gUnknown_83F637C:: @ 83F637C
- .incbin "baserom.gba", 0x3F637C, 0xC
+ .byte 0x04
+ .byte 0x08
+ .byte 0x08
+ .byte 0x08
+ .byte 0x04
+ .byte 0x04
+ .byte 0x04
+ .byte 0x06
+ .byte 0x03
+ .byte 0x03
+
+ .align 2
diff --git a/data/field_specials/unk_83F6206.pal b/data/field_specials/unk_83F6206.pal
new file mode 100644
index 000000000..c20bacb57
--- /dev/null
+++ b/data/field_specials/unk_83F6206.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 156 197
+32 32 32
+82 82 82
+139 139 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6226.pal b/data/field_specials/unk_83F6226.pal
new file mode 100644
index 000000000..2c106a4ae
--- /dev/null
+++ b/data/field_specials/unk_83F6226.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 156 197
+41 32 32
+82 82 82
+139 139 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6246.pal b/data/field_specials/unk_83F6246.pal
new file mode 100644
index 000000000..38fe7d084
--- /dev/null
+++ b/data/field_specials/unk_83F6246.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+49 32 32
+90 82 82
+148 148 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6266.pal b/data/field_specials/unk_83F6266.pal
new file mode 100644
index 000000000..7b7fb7c44
--- /dev/null
+++ b/data/field_specials/unk_83F6266.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 32 32
+115 82 82
+156 148 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6286.pal b/data/field_specials/unk_83F6286.pal
new file mode 100644
index 000000000..4eda607b7
--- /dev/null
+++ b/data/field_specials/unk_83F6286.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 32 32
+123 82 82
+164 156 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F62A6.pal b/data/field_specials/unk_83F62A6.pal
new file mode 100644
index 000000000..a92bc65fd
--- /dev/null
+++ b/data/field_specials/unk_83F62A6.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+98 32 32
+139 82 82
+172 156 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F62C6.pal b/data/field_specials/unk_83F62C6.pal
new file mode 100644
index 000000000..0de8519c6
--- /dev/null
+++ b/data/field_specials/unk_83F62C6.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+98 32 32
+148 82 82
+180 164 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F62E6.pal b/data/field_specials/unk_83F62E6.pal
new file mode 100644
index 000000000..ae67047d4
--- /dev/null
+++ b/data/field_specials/unk_83F62E6.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+106 32 32
+156 82 82
+189 164 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6306.pal b/data/field_specials/unk_83F6306.pal
new file mode 100644
index 000000000..27cf345e4
--- /dev/null
+++ b/data/field_specials/unk_83F6306.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+123 32 32
+172 82 82
+197 172 148
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6326.pal b/data/field_specials/unk_83F6326.pal
new file mode 100644
index 000000000..fcca0b4de
--- /dev/null
+++ b/data/field_specials/unk_83F6326.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+131 32 32
+180 82 82
+205 172 148
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/field_specials/unk_83F6346.pal b/data/field_specials/unk_83F6346.pal
new file mode 100644
index 000000000..6c7540611
--- /dev/null
+++ b/data/field_specials/unk_83F6346.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 156 197
+205 32 32
+255 82 82
+255 205 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/include/mevent.h b/include/mevent.h
index 08ee8c038..98d184f60 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -67,5 +67,6 @@ bool32 WonderNews_Test_Unk_02(void);
bool32 WonderCard_Test_Unk_08_6(void);
u32 MENews_GetInput(u16 input);
void sub_8143D24(void);
+u16 sub_81445C0(u32 command);
#endif //GUARD_MEVENT_H
diff --git a/include/overworld.h b/include/overworld.h
index 65e3fe723..a5e975d1d 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -35,6 +35,7 @@ extern struct UCoords32 gDirectionToVectors[];
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern MainCallback gFieldCallback;
+extern struct WarpData gUnknown_2031DB4;
extern struct WarpData gUnknown_2031DBC;
extern u8 gUnknown_2031DE0;
diff --git a/include/strings.h b/include/strings.h
index 763b9b569..ee7536d9b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -481,5 +481,44 @@ extern const u8 gUnknown_8417FC3[];
extern const u8 gUnknown_8417FD0[];
extern const u8 gUnknown_8417FCC[];
extern const u8 gUnknown_8418075[];
+extern const u8 gUnknown_8418069[];
+extern const u8 gUnknown_8418065[];
+extern const u8 gUnknown_8418061[];
+extern const u8 gUnknown_841805D[];
+extern const u8 gUnknown_841803A[];
+extern const u8 gUnknown_841803D[];
+extern const u8 gUnknown_8418040[];
+extern const u8 gUnknown_8418043[];
+extern const u8 gUnknown_8418046[];
+extern const u8 gUnknown_8418049[];
+extern const u8 gUnknown_841804C[];
+extern const u8 gUnknown_841804F[];
+extern const u8 gUnknown_8418052[];
+extern const u8 gUnknown_8418055[];
+extern const u8 gUnknown_8418059[];
+extern const u8 gUnknown_841806D[];
+extern const u8 gUnknown_8417FD9[];
+extern const u8 gUnknown_8417FE6[];
+extern const u8 gUnknown_8417FF3[];
+extern const u8 gUnknown_8418000[];
+extern const u8 gUnknown_841800D[];
+extern const u8 gUnknown_8418017[];
+extern const u8 gUnknown_8418022[];
+extern const u8 gUnknown_841802F[];
+extern const u8 gUnknown_841807D[];
+extern const u8 gUnknown_841808E[];
+extern const u8 gUnknown_841809C[];
+extern const u8 gOtherText_Quit[];
+extern const u8 gUnknown_84180A7[];
+extern const u8 gUnknown_84180BC[];
+extern const u8 gUnknown_84180D0[];
+extern const u8 gUnknown_84180E4[];
+extern const u8 gUnknown_84180FA[];
+extern const u8 gUnknown_841810D[];
+extern const u8 gUnknown_841811D[];
+extern const u8 gUnknown_841812F[];
+extern const u8 gUnknown_8418142[];
+extern const u8 gUnknown_8418152[];
+extern const u8 gUnknown_8418163[];
#endif //GUARD_STRINGS_H
diff --git a/src/field_specials.c b/src/field_specials.c
index 5f4795154..b0efd1c35 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -31,6 +31,7 @@
#include "window.h"
#include "text_window.h"
#include "menu.h"
+#include "mevent.h"
#include "naming_screen.h"
#include "dynamic_placeholder_text_util.h"
#include "new_menu_helpers.h"
@@ -39,6 +40,7 @@
#include "constants/items.h"
#include "constants/map_objects.h"
#include "constants/maps.h"
+#include "constants/region_map.h"
EWRAM_DATA u8 sElevatorCurrentFloorWindowId = 0;
EWRAM_DATA u16 sElevatorScroll = 0;
@@ -73,25 +75,11 @@ static u16 GetStarterPokemon(u16 starterIdx);
static void ChangeBoxPokemonNickname_CB(void);
static void ChangePokemonNickname_CB(void);
-extern const struct ScrollArrowsTemplate gUnknown_83F5D1C;
-extern const u16 sStarterMon[3];
-extern const u8 *const gUnknown_83F5BCC[][12];
-extern const u8 sSlotMachineIndices[22];
-extern const u16 sResortGorgeousDeluxeRewards[6];
-extern const struct WindowTemplate sElevatorCurrentFloorWindowTemplate;
-extern const u8 *const sFloorNamePointers[15];
-extern const u16 sElevatorWindowMetatilesGoingUp[3][3];
-extern const u16 sElevatorWindowMetatilesGoingDown[3][3];
-extern const u8 sElevatorAnimationDuration[9];
-extern const u8 sElevatorWindowAnimDuration[9];
-extern u8 *const gUnknown_83F5AF8[3];
-extern const u8 gUnknown_83F5D32[12][3];
-extern const struct {
- u16 grp;
- u16 num;
- u16 unk4;
- u16 unk6;
-} gUnknown_83F5D58[51];
+static u8 *const gUnknown_83F5AF8[] = {
+ gStringVar1,
+ gStringVar2,
+ gStringVar3
+};
void Special_ShowDiploma(void)
{
@@ -331,6 +319,56 @@ void Special_BufferEReaderTrainerName5(void)
CopyEReaderTrainerName5(gStringVar1);
}
+static const u8 gUnknown_83F5B04[] = {
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 12,
+ 2,
+ 4,
+ 5,
+ 1,
+ 8,
+ 7,
+ 11,
+ 3,
+ 10,
+ 9,
+ 6
+};
+
+static const u8 sSlotMachineIndices[] = {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 2,
+ 2,
+ 2,
+ 3,
+ 3,
+ 3,
+ 4,
+ 4,
+ 5
+};
+
u8 Special_GetRandomSlotMachine(void)
{
u16 rval = Random() % NELEMS(sSlotMachineIndices);
@@ -594,6 +632,15 @@ void Special_SetVermilionTrashCans(void)
}
}
+static const u16 sResortGorgeousDeluxeRewards[] = {
+ ITEM_BIG_PEARL,
+ ITEM_PEARL,
+ ITEM_STARDUST,
+ ITEM_STAR_PIECE,
+ ITEM_NUGGET,
+ ITEM_RARE_CANDY
+};
+
void IncrementResortGorgeousStepCounter(void)
{
u16 var4035 = VarGet(VAR_RESORT_GOREGEOUS_STEP_COUNTER);
@@ -660,6 +707,90 @@ bool8 Special_CheckAddCoins(void)
return TRUE;
}
+static const struct WindowTemplate sElevatorCurrentFloorWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 1,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 0xF,
+ .baseBlock = 0x008
+};
+
+static const u8 *const sFloorNamePointers[] = {
+ gUnknown_8418069,
+ gUnknown_8418065,
+ gUnknown_8418061,
+ gUnknown_841805D,
+ gUnknown_841803A,
+ gUnknown_841803D,
+ gUnknown_8418040,
+ gUnknown_8418043,
+ gUnknown_8418046,
+ gUnknown_8418049,
+ gUnknown_841804C,
+ gUnknown_841804F,
+ gUnknown_8418052,
+ gUnknown_8418055,
+ gUnknown_8418059,
+ gUnknown_841806D
+};
+
+static const u8 gUnknown_83F5B84[] = {
+ 26,
+ 26,
+ 26,
+ 26,
+ 30,
+ 30,
+ 30,
+ 30,
+ 30,
+ 30,
+ 30,
+ 30,
+ 30,
+ 26,
+ 26,
+ 18
+};
+
+static const u16 sElevatorWindowMetatilesGoingUp[][3] = {
+ {0x2e8, 0x2e9, 0x2ea},
+ {0x2f0, 0x2f1, 0x2f2},
+ {0x2f8, 0x2f9, 0x2fa}
+};
+
+static const u16 sElevatorWindowMetatilesGoingDown[][3] = {
+ {0x2e8, 0x2ea, 0x2e9},
+ {0x2f0, 0x2f2, 0x2f1},
+ {0x2f8, 0x2fa, 0x2f9}
+};
+
+static const u8 sElevatorAnimationDuration[] = {
+ 8,
+ 16,
+ 24,
+ 32,
+ 38,
+ 46,
+ 53,
+ 56,
+ 57
+};
+
+static const u8 sElevatorWindowAnimDuration[] = {
+ 3,
+ 6,
+ 9,
+ 12,
+ 15,
+ 18,
+ 21,
+ 24,
+ 27
+};
+
void Special_GetElevatorFloor(void)
{
u16 floor = 4;
@@ -1083,6 +1214,67 @@ void Special_ListMenu(void)
}
}
+static const u8 *const gUnknown_83F5BCC[][12] = {
+ {
+ gUnknown_8417FD9,
+ gUnknown_8417FE6,
+ gUnknown_8417FF3,
+ gUnknown_8418000,
+ gUnknown_841800D,
+ gUnknown_8418017,
+ gUnknown_8418022,
+ gUnknown_841802F,
+ gOtherText_Exit,
+ }, {
+ gUnknown_8418059,
+ gUnknown_8418055,
+ gUnknown_8418052,
+ gUnknown_841804F,
+ gUnknown_841804C,
+ gUnknown_8418049,
+ gUnknown_8418046,
+ gUnknown_8418043,
+ gUnknown_8418040,
+ gUnknown_841803D,
+ gUnknown_841803A,
+ gOtherText_Exit,
+ }, {
+ gUnknown_841805D,
+ gUnknown_8418061,
+ gUnknown_8418069,
+ gOtherText_Exit,
+ }, {
+ gUnknown_8418046,
+ gUnknown_8418043,
+ gUnknown_8418040,
+ gUnknown_841803D,
+ gUnknown_841803A,
+ gOtherText_Exit,
+ }, {
+ gUnknown_841807D,
+ gUnknown_841808E,
+ gUnknown_841809C,
+ gOtherText_Quit,
+ }, {
+ gUnknown_84180A7,
+ gUnknown_84180BC,
+ gUnknown_84180D0,
+ gUnknown_84180E4,
+ gUnknown_84180FA,
+ gUnknown_841810D,
+ gUnknown_841811D,
+ gUnknown_841812F,
+ gUnknown_8418142,
+ gUnknown_8418152,
+ gUnknown_8418163,
+ gOtherText_Exit,
+ }, {
+ gUnknown_841806D,
+ gUnknown_841805D,
+ gOtherText_Exit,
+ }
+};
+
static void Task_CreateScriptListMenu(u8 taskId)
{
struct WindowTemplate template;
@@ -1240,7 +1432,12 @@ static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId)
static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId)
{
struct Task * task = &gTasks[taskId];
- struct ScrollArrowsTemplate template = gUnknown_83F5D1C;
+ struct ScrollArrowsTemplate template = {
+ .firstArrowType = 2,
+ .secondArrowType = 3,
+ .tileTag = 2000,
+ .palTag = 100
+ };
if (task->data[0] != task->data[1])
{
template.firstX = 4 * task->data[4] + 8 * task->data[2];
@@ -1266,6 +1463,12 @@ void Special_ForcePlayerToStartSurfing(void)
SetPlayerAvatarTransitionFlags(8);
}
+static const u16 sStarterMon[] = {
+ SPECIES_BULBASAUR,
+ SPECIES_SQUIRTLE,
+ SPECIES_CHARMANDER
+};
+
static u16 GetStarterPokemon(u16 idx)
{
if (idx >= NELEMS(sStarterMon))
@@ -1511,6 +1714,21 @@ bool8 Special_PlayerPartyContainsSpecies(void)
return FALSE;
}
+static const u8 gUnknown_83F5D32[][3] = {
+ {MAP_GROUP(VIRIDIAN_CITY_MART), MAP_NUM(VIRIDIAN_CITY_MART), 1},
+ {MAP_GROUP(PEWTER_CITY_MART), MAP_NUM(PEWTER_CITY_MART), 3},
+ {MAP_GROUP(CERULEAN_CITY_MART), MAP_NUM(CERULEAN_CITY_MART), 1},
+ {MAP_GROUP(LAVENDER_TOWN_MART), MAP_NUM(LAVENDER_TOWN_MART), 1},
+ {MAP_GROUP(VERMILION_CITY_MART), MAP_NUM(VERMILION_CITY_MART), 1},
+ {MAP_GROUP(FUCHSIA_CITY_MART), MAP_NUM(FUCHSIA_CITY_MART), 1},
+ {MAP_GROUP(CINNABAR_ISLAND_MART), MAP_NUM(CINNABAR_ISLAND_MART), 1},
+ {MAP_GROUP(SAFFRON_CITY_MART), MAP_NUM(SAFFRON_CITY_MART), 1},
+ {MAP_GROUP(THREE_ISLAND_MART), MAP_NUM(THREE_ISLAND_MART), 1},
+ {MAP_GROUP(FOUR_ISLAND_MART), MAP_NUM(FOUR_ISLAND_MART), 1},
+ {MAP_GROUP(SEVEN_ISLAND_MART), MAP_NUM(SEVEN_ISLAND_MART), 1},
+ {MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1}
+};
+
u8 sub_80CC4D4(void)
{
u8 i;
@@ -1527,6 +1745,65 @@ void sub_80CC524(void)
sub_8113550(11, NULL);
}
+static const struct {
+ u16 grp;
+ u16 num;
+ u16 grp2;
+ u16 num2;
+} gUnknown_83F5D58[51] = {
+ {MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
+ {MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB), MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN)},
+ {MAP_GROUP(VIRIDIAN_CITY_GYM), MAP_NUM(VIRIDIAN_CITY_GYM), MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY)},
+ {MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22)},
+ {MAP_GROUP(ROUTE22_NORTH_ENTRANCE), MAP_NUM(ROUTE22_NORTH_ENTRANCE), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
+ {MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE), MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE)},
+ {MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE), MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)},
+ {MAP_GROUP(PEWTER_CITY_MUSEUM_1F), MAP_NUM(PEWTER_CITY_MUSEUM_1F), MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY)},
+ {MAP_GROUP(PEWTER_CITY_GYM), MAP_NUM(PEWTER_CITY_GYM), MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY)},
+ {MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4)},
+ {MAP_GROUP(MT_MOON_B1F), MAP_NUM(MT_MOON_B1F), MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4)},
+ {MAP_GROUP(CERULEAN_CITY_GYM), MAP_NUM(CERULEAN_CITY_GYM), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)},
+ {MAP_GROUP(CERULEAN_CITY_BIKE_SHOP), MAP_NUM(CERULEAN_CITY_BIKE_SHOP), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)},
+ {MAP_GROUP(ROUTE25_SEA_COTTAGE), MAP_NUM(ROUTE25_SEA_COTTAGE), MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25)},
+ {MAP_GROUP(ROUTE5_POKEMON_DAY_CARE), MAP_NUM(ROUTE5_POKEMON_DAY_CARE), MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5)},
+ {MAP_GROUP(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE), MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5)},
+ {MAP_GROUP(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_SOUTH_ENTRANCE), MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6)},
+ {MAP_GROUP(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_NUM(VERMILION_CITY_POKEMON_FAN_CLUB), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
+ {MAP_GROUP(VERMILION_CITY_GYM), MAP_NUM(VERMILION_CITY_GYM), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
+ {MAP_GROUP(SSANNE_1F_CORRIDOR), MAP_NUM(SSANNE_1F_CORRIDOR), MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY)},
+ {MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2)},
+ {MAP_GROUP(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_SOUTH_ENTRANCE), MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11)},
+ {MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
+ {MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
+ {MAP_GROUP(POWER_PLANT), MAP_NUM(POWER_PLANT), MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10)},
+ {MAP_GROUP(POKEMON_TOWER_1F), MAP_NUM(POKEMON_TOWER_1F), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
+ {MAP_GROUP(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_NUM(LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
+ {MAP_GROUP(LAVENDER_TOWN_HOUSE2), MAP_NUM(LAVENDER_TOWN_HOUSE2), MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN)},
+ {MAP_GROUP(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE), MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8)},
+ {MAP_GROUP(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_NUM(UNDERGROUND_PATH_WEST_ENTRANCE), MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7)},
+ {MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
+ {MAP_GROUP(CELADON_CITY_CONDOMINIUMS_1F), MAP_NUM(CELADON_CITY_CONDOMINIUMS_1F), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
+ {MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
+ {MAP_GROUP(CELADON_CITY_GYM), MAP_NUM(CELADON_CITY_GYM), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
+ {MAP_GROUP(CELADON_CITY_RESTAURANT), MAP_NUM(CELADON_CITY_RESTAURANT), MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY)},
+ {MAP_GROUP(ROCKET_HIDEOUT_B1F), MAP_NUM(ROCKET_HIDEOUT_B1F), MAP_GROUP(CELADON_CITY_GAME_CORNER), MAP_NUM(CELADON_CITY_GAME_CORNER)},
+ {MAP_GROUP(SAFARI_ZONE_CENTER), MAP_NUM(SAFARI_ZONE_CENTER), MAP_GROUP(FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE), MAP_NUM(FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE)},
+ {MAP_GROUP(FUCHSIA_CITY_GYM), MAP_NUM(FUCHSIA_CITY_GYM), MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY)},
+ {MAP_GROUP(FUCHSIA_CITY_BUILDING1), MAP_NUM(FUCHSIA_CITY_BUILDING1), MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY)},
+ {MAP_GROUP(SAFFRON_CITY_DOJO), MAP_NUM(SAFFRON_CITY_DOJO), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
+ {MAP_GROUP(SAFFRON_CITY_GYM), MAP_NUM(SAFFRON_CITY_GYM), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
+ {MAP_GROUP(SILPH_CO_1F), MAP_NUM(SILPH_CO_1F), MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY)},
+ {MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20)},
+ {MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20)},
+ {MAP_GROUP(POKEMON_MANSION_1F), MAP_NUM(POKEMON_MANSION_1F), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
+ {MAP_GROUP(CINNABAR_ISLAND_GYM), MAP_NUM(CINNABAR_ISLAND_GYM), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
+ {MAP_GROUP(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_NUM(CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE), MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND)},
+ {MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
+ {MAP_GROUP(VICTORY_ROAD_2F), MAP_NUM(VICTORY_ROAD_2F), MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23)},
+ {MAP_GROUP(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_NUM(INDIGO_PLATEAU_POKEMON_CENTER_1F), MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR)},
+ {MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY)}
+};
+
void sub_80CC534(void)
{
u8 i;
@@ -1543,3 +1820,117 @@ void sub_80CC534(void)
}
}
}
+
+void sub_80CC59C(void)
+{
+ s16 x, y;
+ struct {
+ u8 unk0;
+ u8 unk1;
+ } sp0;
+ u16 r5 = VarGet(VAR_0x404D);
+ sp0.unk0 = 0;
+ sp0.unk1 = 0;
+ if (FlagGet(FLAG_0x808))
+ {
+ if (r5 == 5)
+ {
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE)))
+ {
+ sp0.unk0 = MAPSEC_ROUTE_2;
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE))
+ sp0.unk1 = r5;
+ else
+ sp0.unk1 = r5 + 1;
+ sub_8113550(35, (void *)&sp0);
+ FlagClear(FLAG_0x808);
+ return;
+ }
+ }
+ else if (r5 == 3)
+ {
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE22) && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22) || gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE23)))
+ {
+ sp0.unk0 = get_mapheader_by_bank_and_number(gUnknown_83F5D58[r5].grp, gUnknown_83F5D58[r5].num)->regionMapSectionId;
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE22))
+ sp0.unk1 = r5;
+ else
+ sp0.unk1 = r5 + 1;
+ sub_8113550(35, (void *)&sp0);
+ FlagClear(FLAG_0x808);
+ return;
+ }
+ }
+ if (gSaveBlock1Ptr->location.mapGroup == gUnknown_83F5D58[r5].grp2 && gSaveBlock1Ptr->location.mapNum == gUnknown_83F5D58[r5].num2)
+ {
+ sp0.unk0 = get_mapheader_by_bank_and_number(gUnknown_83F5D58[r5].grp, gUnknown_83F5D58[r5].num)->regionMapSectionId;
+ sp0.unk1 = r5;
+ if (r5 == 22)
+ {
+ PlayerGetDestCoords(&x, &y);
+ if (x != 15 || y != 26)
+ sp0.unk1++;
+ }
+ else if (r5 == 42)
+ {
+ PlayerGetDestCoords(&x, &y);
+ if (x != 67 || y != 15)
+ sp0.unk1++;
+ }
+ sub_8113550(35, (void *)&sp0);
+ FlagClear(FLAG_0x808);
+ if (r5 == 35)
+ {
+ VarSet(VAR_0x404D, 32);
+ FlagSet(FLAG_0x808);
+ }
+ }
+ }
+}
+
+extern const char gUnknown_83F5EF0[];
+extern const char gUnknown_83F5F24[];
+
+u16 Special_BattleCardAction(void)
+{
+ switch (gSpecialVar_Result)
+ {
+ case 0:
+ return sub_81445C0(3);
+ case 1:
+ return sub_81445C0(4);
+ case 2:
+ return sub_81445C0(0);
+ case 3:
+ return sub_81445C0(1);
+ case 4:
+ return sub_81445C0(2);
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/scr_tool.c", 3873);
+ return 0;
+ }
+}
+
+const u16 gUnknown_83F5F26[] = {
+ MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F,
+ MAP_PEWTER_CITY_POKEMON_CENTER_1F,
+ MAP_CERULEAN_CITY_POKEMON_CENTER_1F,
+ MAP_LAVENDER_TOWN_POKEMON_CENTER_1F,
+ MAP_VERMILION_CITY_POKEMON_CENTER_1F,
+ MAP_CELADON_CITY_POKEMON_CENTER_1F,
+ MAP_FUCHSIA_CITY_POKEMON_CENTER_1F,
+ MAP_CINNABAR_ISLAND_POKEMON_CENTER_1F,
+ MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F,
+ MAP_SAFFRON_CITY_POKEMON_CENTER_1F,
+ MAP_ROUTE4_POKEMON_CENTER_1F,
+ MAP_ROUTE10_POKEMON_CENTER_1F,
+ MAP_ONE_ISLAND_POKEMON_CENTER_1F,
+ MAP_TWO_ISLAND_POKEMON_CENTER_1F,
+ MAP_THREE_ISLAND_POKEMON_CENTER_1F,
+ MAP_FOUR_ISLAND_POKEMON_CENTER_1F,
+ MAP_FIVE_ISLAND_POKEMON_CENTER_1F,
+ MAP_SEVEN_ISLAND_POKEMON_CENTER_1F,
+ MAP_SIX_ISLAND_POKEMON_CENTER_1F,
+ MAP_UNKNOWN_MAP_00_04,
+ MAP_UNDEFINED
+};