diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-24 11:42:45 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-24 11:42:45 -0400 |
commit | 0d73967f6c97e1743c7ef3e0b20a9bc31a5a4ebd (patch) | |
tree | 440fbec620ef44ff85702f0f62436e4f6e66db66 | |
parent | 779d6187c613ce4491533bf0c24e9f60ddf697b4 (diff) |
field_specials through Special_BattleCardAction; field_specials rodata
-rw-r--r-- | asm/field_specials.s | 256 | ||||
-rw-r--r-- | baserom.ips | bin | 636332 -> 635220 bytes | |||
-rw-r--r-- | data/field_specials.s | 392 | ||||
-rw-r--r-- | data/field_specials/unk_83F6206.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6226.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6246.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6266.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6286.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F62A6.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F62C6.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F62E6.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6306.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6326.pal | 19 | ||||
-rw-r--r-- | data/field_specials/unk_83F6346.pal | 19 | ||||
-rw-r--r-- | include/mevent.h | 1 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/strings.h | 39 | ||||
-rw-r--r-- | src/field_specials.c | 431 |
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 Binary files differindex 928218e45..f619a0841 100644 --- a/baserom.ips +++ b/baserom.ips 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 +}; |