mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
start decompiling overworld.s
This commit is contained in:
parent
a4787bc06a
commit
382442c4c8
@ -14665,7 +14665,7 @@ sub_819672C: @ 819672C
|
|||||||
ldrh r2, [r0, 0xA]
|
ldrh r2, [r0, 0xA]
|
||||||
ldrh r1, [r0, 0xC]
|
ldrh r1, [r0, 0xC]
|
||||||
adds r0, r2, 0
|
adds r0, r2, 0
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldrb r0, [r0, 0x14]
|
ldrb r0, [r0, 0x14]
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
|
@ -18683,7 +18683,7 @@ _081A4294:
|
|||||||
adds r0, r3, r4
|
adds r0, r3, r4
|
||||||
ldrh r1, [r0]
|
ldrh r1, [r0]
|
||||||
movs r0, 0x20
|
movs r0, 0x20
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
ldr r1, [r7]
|
ldr r1, [r7]
|
||||||
adds r0, r1, r6
|
adds r0, r1, r6
|
||||||
adds r0, r4
|
adds r0, r4
|
||||||
@ -31002,7 +31002,7 @@ sub_81AA810: @ 81AA810
|
|||||||
ldrb r1, [r3]
|
ldrb r1, [r3]
|
||||||
adds r1, 0x2C
|
adds r1, 0x2C
|
||||||
movs r0, 0x19
|
movs r0, 0x19
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
adds r5, r0, 0
|
adds r5, r0, 0
|
||||||
movs r7, 0
|
movs r7, 0
|
||||||
ldr r1, [r5, 0x4]
|
ldr r1, [r5, 0x4]
|
||||||
|
@ -45,13 +45,13 @@ _0813BFCA:
|
|||||||
bge _0813BFCA
|
bge _0813BFCA
|
||||||
movs r0, 0x17
|
movs r0, 0x17
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
movs r0, 0x18
|
movs r0, 0x18
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
movs r0, 0x19
|
movs r0, 0x19
|
||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
pop {r4,r5}
|
pop {r4,r5}
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
|
@ -2006,7 +2006,7 @@ _0809CF20:
|
|||||||
bl sub_8084D5C
|
bl sub_8084D5C
|
||||||
ldrb r0, [r5, 0x7]
|
ldrb r0, [r5, 0x7]
|
||||||
ldrb r1, [r5, 0x6]
|
ldrb r1, [r5, 0x6]
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldr r1, [r0, 0x4]
|
ldr r1, [r0, 0x4]
|
||||||
ldrb r0, [r5, 0x5]
|
ldrb r0, [r5, 0x5]
|
||||||
ldr r1, [r1, 0x8]
|
ldr r1, [r1, 0x8]
|
||||||
|
@ -2008,7 +2008,7 @@ _080B6A64:
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _080B6A8A
|
bne _080B6A8A
|
||||||
bl flag_var_implications_of_teleport_
|
bl Overworld_ResetStateAfterFly
|
||||||
bl warp_in
|
bl warp_in
|
||||||
ldr r0, =c2_load_new_map
|
ldr r0, =c2_load_new_map
|
||||||
bl SetMainCallback2
|
bl SetMainCallback2
|
||||||
@ -4881,7 +4881,7 @@ _080B81B8:
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bne _080B81E6
|
bne _080B81E6
|
||||||
bl copy_saved_warp3_bank_and_enter_x_to_warp1
|
bl Overworld_SetWarpDestToLastHealLoc
|
||||||
bl warp_in
|
bl warp_in
|
||||||
ldr r0, =c2_load_new_map
|
ldr r0, =c2_load_new_map
|
||||||
bl SetMainCallback2
|
bl SetMainCallback2
|
||||||
@ -5211,7 +5211,7 @@ _080B8484:
|
|||||||
thumb_func_start sub_80B849C
|
thumb_func_start sub_80B849C
|
||||||
sub_80B849C: @ 80B849C
|
sub_80B849C: @ 80B849C
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
bl sav1_map_get_light_level
|
bl Overworld_GetMapTypeOfSaveblockLocation
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
bl is_light_level_1_2_3_5_or_6
|
bl is_light_level_1_2_3_5_or_6
|
||||||
|
@ -7855,7 +7855,7 @@ pal_fill_for_maplights: @ 80AF040
|
|||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
lsls r4, 24
|
lsls r4, 24
|
||||||
lsrs r4, 24
|
lsrs r4, 24
|
||||||
bl sav1_map_get_light_level
|
bl Overworld_GetMapTypeOfSaveblockLocation
|
||||||
adds r1, r0, 0
|
adds r1, r0, 0
|
||||||
lsls r1, 24
|
lsls r1, 24
|
||||||
lsrs r1, 24
|
lsrs r1, 24
|
||||||
@ -7910,7 +7910,7 @@ pal_fill_black: @ 80AF0A0
|
|||||||
thumb_func_start sub_80AF0B4
|
thumb_func_start sub_80AF0B4
|
||||||
sub_80AF0B4: @ 80AF0B4
|
sub_80AF0B4: @ 80AF0B4
|
||||||
push {r4,lr}
|
push {r4,lr}
|
||||||
bl sav1_map_get_light_level
|
bl Overworld_GetMapTypeOfSaveblockLocation
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
lsls r4, 24
|
lsls r4, 24
|
||||||
lsrs r4, 24
|
lsrs r4, 24
|
||||||
|
@ -11,7 +11,7 @@ mapconnection_get_mapheader: @ 8087D44
|
|||||||
ldrb r2, [r0, 0x8]
|
ldrb r2, [r0, 0x8]
|
||||||
ldrb r1, [r0, 0x9]
|
ldrb r1, [r0, 0x9]
|
||||||
adds r0, r2, 0
|
adds r0, r2, 0
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
thumb_func_end mapconnection_get_mapheader
|
thumb_func_end mapconnection_get_mapheader
|
||||||
|
@ -217,7 +217,7 @@ sub_8137304: @ 8137304
|
|||||||
bl get_map_light_from_warp0
|
bl get_map_light_from_warp0
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r6, r0, 24
|
lsrs r6, r0, 24
|
||||||
bl sav1_map_get_light_level
|
bl Overworld_GetMapTypeOfSaveblockLocation
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r5, r0, 24
|
lsrs r5, r0, 24
|
||||||
movs r3, 0
|
movs r3, 0
|
||||||
|
1073
asm/overworld.s
1073
asm/overworld.s
File diff suppressed because it is too large
Load Diff
@ -10032,7 +10032,7 @@ _081B557C:
|
|||||||
asrs r1, 24
|
asrs r1, 24
|
||||||
lsls r1, 16
|
lsls r1, 16
|
||||||
lsrs r1, 16
|
lsrs r1, 16
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
adds r1, r0, 0
|
adds r1, r0, 0
|
||||||
ldr r0, =gStringVar1
|
ldr r0, =gStringVar1
|
||||||
ldrb r1, [r1, 0x14]
|
ldrb r1, [r1, 0x14]
|
||||||
@ -10057,7 +10057,7 @@ _081B55B8:
|
|||||||
asrs r1, 24
|
asrs r1, 24
|
||||||
lsls r1, 16
|
lsls r1, 16
|
||||||
lsrs r1, 16
|
lsrs r1, 16
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
adds r1, r0, 0
|
adds r1, r0, 0
|
||||||
ldr r0, =gStringVar1
|
ldr r0, =gStringVar1
|
||||||
ldrb r1, [r1, 0x14]
|
ldrb r1, [r1, 0x14]
|
||||||
|
@ -308,7 +308,7 @@ _0813CCB8:
|
|||||||
ldr r1, [r5]
|
ldr r1, [r5]
|
||||||
ldrb r0, [r1, 0x10]
|
ldrb r0, [r1, 0x10]
|
||||||
ldrb r1, [r1, 0x11]
|
ldrb r1, [r1, 0x11]
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldr r1, [r5]
|
ldr r1, [r5]
|
||||||
ldrb r0, [r0, 0x14]
|
ldrb r0, [r0, 0x14]
|
||||||
strh r0, [r1, 0x12]
|
strh r0, [r1, 0x12]
|
||||||
@ -360,7 +360,7 @@ sub_813CD04: @ 813CD04
|
|||||||
strb r3, [r1, 0x11]
|
strb r3, [r1, 0x11]
|
||||||
adds r0, r5, 0
|
adds r0, r5, 0
|
||||||
adds r1, r3, 0
|
adds r1, r3, 0
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldrb r0, [r0, 0x14]
|
ldrb r0, [r0, 0x14]
|
||||||
bl CorrectSpecialMapSecId
|
bl CorrectSpecialMapSecId
|
||||||
ldr r2, [r4]
|
ldr r2, [r4]
|
||||||
@ -496,7 +496,7 @@ sub_813CE34: @ 813CE34
|
|||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
lsls r1, 24
|
lsls r1, 24
|
||||||
lsrs r1, 24
|
lsrs r1, 24
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldrb r0, [r0, 0x14]
|
ldrb r0, [r0, 0x14]
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
|
@ -8095,7 +8095,7 @@ sub_81CB0C8: @ 81CB0C8
|
|||||||
ldrh r2, [r0, 0xA]
|
ldrh r2, [r0, 0xA]
|
||||||
ldrh r1, [r0, 0xC]
|
ldrh r1, [r0, 0xC]
|
||||||
adds r0, r2, 0
|
adds r0, r2, 0
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldrb r0, [r0, 0x14]
|
ldrb r0, [r0, 0x14]
|
||||||
pop {r1}
|
pop {r1}
|
||||||
bx r1
|
bx r1
|
||||||
@ -30295,7 +30295,7 @@ sub_81D6120: @ 81D6120
|
|||||||
push {lr}
|
push {lr}
|
||||||
movs r0, 0x1A
|
movs r0, 0x1A
|
||||||
movs r1, 0x40
|
movs r1, 0x40
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldr r0, [r0, 0x4]
|
ldr r0, [r0, 0x4]
|
||||||
ldr r0, [r0, 0x8]
|
ldr r0, [r0, 0x8]
|
||||||
adds r0, 0x8
|
adds r0, 0x8
|
||||||
@ -30334,7 +30334,7 @@ _081D6162:
|
|||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldrh r1, [r0]
|
ldrh r1, [r0]
|
||||||
movs r0, 0x1A
|
movs r0, 0x1A
|
||||||
bl get_mapheader_by_bank_and_number
|
bl Overworld_GetMapHeaderByGroupAndId
|
||||||
ldr r0, [r0, 0x4]
|
ldr r0, [r0, 0x4]
|
||||||
ldr r0, [r0, 0x8]
|
ldr r0, [r0, 0x8]
|
||||||
_081D6176:
|
_081D6176:
|
||||||
|
@ -44,7 +44,7 @@ _0813776C:
|
|||||||
ldrb r0, [r2, 0x11]
|
ldrb r0, [r2, 0x11]
|
||||||
orrs r1, r0
|
orrs r1, r0
|
||||||
movs r0, 0x1
|
movs r0, 0x1
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
_0813778E:
|
_0813778E:
|
||||||
bl sub_8076D48
|
bl sub_8076D48
|
||||||
ldr r0, =gSaveBlock2Ptr
|
ldr r0, =gSaveBlock2Ptr
|
||||||
|
@ -376,7 +376,7 @@ _0813574C:
|
|||||||
thumb_func_start hm2_dig
|
thumb_func_start hm2_dig
|
||||||
hm2_dig: @ 8135760
|
hm2_dig: @ 8135760
|
||||||
push {lr}
|
push {lr}
|
||||||
bl flagmods_08054D70
|
bl Overworld_ResetStateAfterDigEscRope
|
||||||
movs r0, 0x26
|
movs r0, 0x26
|
||||||
bl FieldEffectStart
|
bl FieldEffectStart
|
||||||
bl GetCursorSelectionMonId
|
bl GetCursorSelectionMonId
|
||||||
|
@ -2570,7 +2570,7 @@ sub_8141800: @ 8141800
|
|||||||
movs r0, 0x1E
|
movs r0, 0x1E
|
||||||
ldrsh r1, [r4, r0]
|
ldrsh r1, [r4, r0]
|
||||||
movs r0, 0x1D
|
movs r0, 0x1D
|
||||||
bl sav12_xor_set
|
bl SetGameStat
|
||||||
_08141848:
|
_08141848:
|
||||||
ldr r1, =sub_8141A18
|
ldr r1, =sub_8141A18
|
||||||
ldr r2, =0x0000ffff
|
ldr r2, =0x0000ffff
|
||||||
|
@ -1287,12 +1287,12 @@ EverGrandeCity_HallOfFame_EventScript_271851:: @ 8271851
|
|||||||
setvar VAR_0x40D3, 1
|
setvar VAR_0x40D3, 1
|
||||||
return
|
return
|
||||||
|
|
||||||
EverGrandeCity_HallOfFame_EventScript_271857:: @ 8271857
|
EventScript_WhiteOut:: @ 8271857
|
||||||
call EverGrandeCity_HallOfFame_EventScript_2718CC
|
call EverGrandeCity_HallOfFame_EventScript_2718CC
|
||||||
goto EverGrandeCity_HallOfFame_EventScript_271862
|
goto EventScript_271862
|
||||||
end
|
end
|
||||||
|
|
||||||
EverGrandeCity_HallOfFame_EventScript_271862:: @ 8271862
|
EventScript_271862:: @ 8271862
|
||||||
compare VAR_0x4096, 1
|
compare VAR_0x4096, 1
|
||||||
goto_eq EverGrandeCity_HallOfFame_EventScript_271884
|
goto_eq EverGrandeCity_HallOfFame_EventScript_271884
|
||||||
compare VAR_0x4096, 2
|
compare VAR_0x4096, 2
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2, 0
|
|
||||||
gUnknown_08339D3C:: @ 8339D3C
|
|
||||||
.4byte 0xFFFFFF, 0xFFFFFFFF, 0x4B0, 0xE10, 0x4B0, 0x960, 0x32, 0x50, 0xFFFFFFD4, 0x2C
|
|
||||||
|
|
||||||
gUnknown_08339D64:: @ 8339D64
|
|
||||||
.4byte 0, 0
|
|
||||||
.4byte 0, 1
|
|
||||||
.4byte 0, -1
|
|
||||||
.4byte -1, 0
|
|
||||||
.4byte 1, 0
|
|
||||||
.4byte -1, 1
|
|
||||||
.4byte 1, 1
|
|
||||||
.4byte -1, -1
|
|
||||||
.4byte 1, -1
|
|
||||||
|
|
||||||
gUnknown_08339DAC:: @ 8339DAC
|
|
||||||
.4byte 0x1F8
|
|
||||||
.4byte 0x11D1
|
|
||||||
.4byte 0x21C2
|
|
||||||
.4byte 0x31E3
|
|
||||||
|
|
||||||
gUnknown_08339DBC:: @ 8339DBC
|
|
||||||
.4byte REG_WIN0H
|
|
||||||
.4byte 0xa2600001
|
|
||||||
.byte 1, 0
|
|
||||||
|
|
||||||
.align 2
|
|
||||||
gUnknown_08339DC8:: @ 8339DC8
|
|
||||||
.4byte sub_80879D8
|
|
||||||
.4byte sub_80879F8
|
|
||||||
.4byte sub_80879FC
|
|
||||||
|
|
||||||
gUnknown_08339DD4:: @ 8339DD4
|
|
||||||
.4byte sub_8087A1C
|
|
||||||
.4byte sub_8087A20
|
|
||||||
.4byte sub_8087A20
|
|
||||||
.4byte sub_8087A20
|
|
||||||
.4byte sub_8087A20
|
|
||||||
.4byte sub_8087A1C
|
|
||||||
.4byte sub_8087A1C
|
|
||||||
.4byte sub_8087A88
|
|
||||||
.4byte sub_8087A88
|
|
||||||
.4byte sub_8087A88
|
|
||||||
.4byte sub_8087A88
|
|
||||||
|
|
||||||
gUnknown_08339E00:: @ 8339E00
|
|
||||||
.4byte sub_8087AA0
|
|
||||||
.4byte sub_8087AA8
|
|
@ -51,9 +51,10 @@
|
|||||||
#define GAME_STAT_USED_DAYCARE 47
|
#define GAME_STAT_USED_DAYCARE 47
|
||||||
#define GAME_STAT_RODE_CABLE_CAR 48
|
#define GAME_STAT_RODE_CABLE_CAR 48
|
||||||
#define GAME_STAT_ENTERED_HOT_SPRINGS 49
|
#define GAME_STAT_ENTERED_HOT_SPRINGS 49
|
||||||
|
#define GAME_STAT_50 50
|
||||||
|
#define GAME_STAT_51 51
|
||||||
|
|
||||||
/*TODO: add new stats added in Emerald*/
|
#define NUM_USED_GAME_STATS 52
|
||||||
|
|
||||||
#define NUM_GAME_STATS 64
|
#define NUM_GAME_STATS 64
|
||||||
|
|
||||||
#endif // GUARD_CONSTANTS_GAME_STAT_H
|
#endif // GUARD_CONSTANTS_GAME_STAT_H
|
||||||
|
@ -618,7 +618,7 @@ struct SaveBlock1
|
|||||||
/*0x04*/ struct WarpData location;
|
/*0x04*/ struct WarpData location;
|
||||||
/*0x0C*/ struct WarpData warp1;
|
/*0x0C*/ struct WarpData warp1;
|
||||||
/*0x14*/ struct WarpData warp2;
|
/*0x14*/ struct WarpData warp2;
|
||||||
/*0x1C*/ struct WarpData warp3;
|
/*0x1C*/ struct WarpData lastHealLocation;
|
||||||
/*0x24*/ struct WarpData warp4;
|
/*0x24*/ struct WarpData warp4;
|
||||||
/*0x2C*/ u16 battleMusic;
|
/*0x2C*/ u16 battleMusic;
|
||||||
/*0x2E*/ u8 weather;
|
/*0x2E*/ u8 weather;
|
||||||
@ -705,6 +705,23 @@ struct SaveBlock1
|
|||||||
|
|
||||||
extern struct SaveBlock1* gSaveBlock1Ptr;
|
extern struct SaveBlock1* gSaveBlock1Ptr;
|
||||||
|
|
||||||
|
struct MapPosition
|
||||||
|
{
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
u8 height;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UnkStruct_8054FF8
|
||||||
|
{
|
||||||
|
u8 a;
|
||||||
|
u8 b;
|
||||||
|
u8 c;
|
||||||
|
u8 d;
|
||||||
|
struct MapPosition sub;
|
||||||
|
u16 field_C;
|
||||||
|
};
|
||||||
|
|
||||||
struct Bitmap // TODO: Find a better spot for this
|
struct Bitmap // TODO: Find a better spot for this
|
||||||
{
|
{
|
||||||
u8* pixels;
|
u8* pixels;
|
||||||
|
@ -25,11 +25,49 @@ struct UCoords32
|
|||||||
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
|
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
|
||||||
extern MainCallback gFieldCallback;
|
extern MainCallback gFieldCallback;
|
||||||
|
|
||||||
|
void DoWhiteOut(void);
|
||||||
|
void Overworld_ResetStateAfterFly(void);
|
||||||
|
void Overworld_ResetStateAfterTeleport(void);
|
||||||
|
void Overworld_ResetStateAfterDigEscRope(void);
|
||||||
|
void sub_8084788(void);
|
||||||
|
void ResetGameStats(void);
|
||||||
|
void IncrementGameStat(u8 index);
|
||||||
|
u32 GetGameStat(u8 index);
|
||||||
|
void SetGameStat(u8 index, u32 value);
|
||||||
|
void ApplyNewEncryptionKeyToGameStats(u32 newKey);
|
||||||
|
void LoadMapObjTemplatesFromHeader(void);
|
||||||
|
void LoadSaveblockMapObjScripts(void);
|
||||||
|
void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y);
|
||||||
|
void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType);
|
||||||
|
void mapdata_load_assets_to_gpu_and_full_redraw(void);
|
||||||
|
struct MapData *get_mapdata_header(void);
|
||||||
|
void ApplyCurrentWarp(void);
|
||||||
|
void set_warp2_warp3_to_neg_1(void);
|
||||||
|
void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
bool32 warp_data_is_not_neg_1(struct WarpData *warp);
|
||||||
|
struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
|
||||||
|
struct MapHeader *const warp1_get_mapheader(void);
|
||||||
|
void set_current_map_header_from_sav1_save_old_name(void);
|
||||||
|
void LoadSaveblockMapHeader(void);
|
||||||
|
void update_camera_pos_from_warpid(void);
|
||||||
|
void warp_in(void);
|
||||||
|
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
|
||||||
|
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
||||||
|
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
|
||||||
|
void sub_8084CCC(u8 a1);
|
||||||
|
void Overworld_SetWarpDestToLastHealLoc(void);
|
||||||
|
void Overworld_SetHealLocationWarp(u8 healLocationId);
|
||||||
|
void sub_8084D5C(s16 a1, s16 a2);
|
||||||
|
void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
|
||||||
|
// to erase later
|
||||||
|
u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
|
||||||
|
u8 Overworld_GetMapTypeOfSaveblockLocation(void);
|
||||||
void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
|
void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
|
||||||
void Overworld_SetMapObjTemplateMovementType(u8, u8);
|
void Overworld_SetMapObjTemplateMovementType(u8, u8);
|
||||||
|
|
||||||
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
|
|
||||||
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
|
||||||
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
||||||
void Overworld_SetHealLocationWarp(u8);
|
void Overworld_SetHealLocationWarp(u8);
|
||||||
@ -37,25 +75,18 @@ void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
|
|||||||
void sub_8084E2C(s8, s8, s8, s8, s8);
|
void sub_8084E2C(s8, s8, s8, s8, s8);
|
||||||
void sub_8084E80(s8, s8, s8, s8, s8);
|
void sub_8084E80(s8, s8, s8, s8, s8);
|
||||||
void sub_8084EBC(s16, s16);
|
void sub_8084EBC(s16, s16);
|
||||||
|
|
||||||
void player_avatar_init_params_reset(void);
|
void player_avatar_init_params_reset(void);
|
||||||
|
|
||||||
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
|
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
|
||||||
void Overworld_ResetStateAfterTeleport(void);
|
void Overworld_ResetStateAfterTeleport(void);
|
||||||
|
|
||||||
void Overworld_SetFlashLevel(s32 a1);
|
void Overworld_SetFlashLevel(s32 a1);
|
||||||
//u8 Overworld_GetFlashLevel(void);
|
//u8 Overworld_GetFlashLevel(void);
|
||||||
void sub_8085524(u16);
|
void sub_8085524(u16);
|
||||||
|
|
||||||
void Overworld_SetSavedMusic(u16);
|
void Overworld_SetSavedMusic(u16);
|
||||||
void Overworld_ChangeMusicToDefault(void);
|
void Overworld_ChangeMusicToDefault(void);
|
||||||
void Overworld_ChangeMusicTo(u16);
|
void Overworld_ChangeMusicTo(u16);
|
||||||
|
|
||||||
bool32 is_c1_link_related_active(void);
|
bool32 is_c1_link_related_active(void);
|
||||||
extern u16 gUnknown_03005DA8;
|
extern u16 gUnknown_03005DA8;
|
||||||
|
|
||||||
void strange_npc_table_clear(void);
|
void strange_npc_table_clear(void);
|
||||||
const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
|
|
||||||
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
|
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
|
||||||
void sub_8086230(void);
|
void sub_8086230(void);
|
||||||
void c2_exit_to_overworld_2_switch(void);
|
void c2_exit_to_overworld_2_switch(void);
|
||||||
@ -71,13 +102,11 @@ void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
|
|||||||
void mapldr_default(void);
|
void mapldr_default(void);
|
||||||
u8 get_map_light_from_warp0(void);
|
u8 get_map_light_from_warp0(void);
|
||||||
bool8 is_light_level_1_2_3_5_or_6(u8 a1);
|
bool8 is_light_level_1_2_3_5_or_6(u8 a1);
|
||||||
|
|
||||||
bool32 sub_80875C8(void);
|
bool32 sub_80875C8(void);
|
||||||
bool32 sub_8087634(void);
|
bool32 sub_8087634(void);
|
||||||
bool32 sub_808766C(void);
|
bool32 sub_808766C(void);
|
||||||
void IncrementGameStat(u8);
|
void IncrementGameStat(u8);
|
||||||
u32 GetGameStat(u8);
|
u32 GetGameStat(u8);
|
||||||
|
|
||||||
void CB2_OverworldBasic(void);
|
void CB2_OverworldBasic(void);
|
||||||
|
|
||||||
#endif //GUARD_ROM4_H
|
#endif //GUARD_ROM4_H
|
||||||
|
@ -86,6 +86,7 @@ SECTIONS {
|
|||||||
src/berry_blender.o(.text);
|
src/berry_blender.o(.text);
|
||||||
src/play_time.o(.text);
|
src/play_time.o(.text);
|
||||||
src/new_game.o(.text);
|
src/new_game.o(.text);
|
||||||
|
src/overworld.o(.text);
|
||||||
asm/overworld.o(.text);
|
asm/overworld.o(.text);
|
||||||
asm/fieldmap.o(.text);
|
asm/fieldmap.o(.text);
|
||||||
src/metatile_behavior.o(.text);
|
src/metatile_behavior.o(.text);
|
||||||
@ -393,7 +394,7 @@ SECTIONS {
|
|||||||
data/trade.o(.rodata);
|
data/trade.o(.rodata);
|
||||||
src/berry_blender.o(.rodata);
|
src/berry_blender.o(.rodata);
|
||||||
src/new_game.o(.rodata);
|
src/new_game.o(.rodata);
|
||||||
data/overworld.o(.rodata);
|
src/overworld.o(.rodata);
|
||||||
data/tilesets.o(.rodata);
|
data/tilesets.o(.rodata);
|
||||||
data/maps.o(.rodata);
|
data/maps.o(.rodata);
|
||||||
data/fieldmap.o(.rodata);
|
data/fieldmap.o(.rodata);
|
||||||
|
@ -76,7 +76,7 @@ extern bool8 sub_81B1250(void); // ?
|
|||||||
extern bool8 InBattlePike(void);
|
extern bool8 InBattlePike(void);
|
||||||
extern bool8 InBattlePyramid(void);
|
extern bool8 InBattlePyramid(void);
|
||||||
extern u16 GetBattlePyramidPickupItemId(void);
|
extern u16 GetBattlePyramidPickupItemId(void);
|
||||||
extern u8 sav1_map_get_light_level(void);
|
extern u8 Overworld_GetMapTypeOfSaveblockLocation(void);
|
||||||
extern u8 sub_813B21C(void);
|
extern u8 sub_813B21C(void);
|
||||||
extern u16 get_unknown_box_id(void);
|
extern u16 get_unknown_box_id(void);
|
||||||
|
|
||||||
@ -10578,7 +10578,7 @@ static void atkEF_handleballthrow(void)
|
|||||||
ballMultiplier = 10;
|
ballMultiplier = 10;
|
||||||
break;
|
break;
|
||||||
case ITEM_DIVE_BALL:
|
case ITEM_DIVE_BALL:
|
||||||
if (sav1_map_get_light_level() == 5)
|
if (Overworld_GetMapTypeOfSaveblockLocation() == 5)
|
||||||
ballMultiplier = 35;
|
ballMultiplier = 35;
|
||||||
else
|
else
|
||||||
ballMultiplier = 10;
|
ballMultiplier = 10;
|
||||||
|
@ -1673,7 +1673,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
|
||||||
templates = mapHeader->events->mapObjects;
|
templates = mapHeader->events->mapObjects;
|
||||||
count = mapHeader->events->mapObjectCount;
|
count = mapHeader->events->mapObjectCount;
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ extern void sub_81C59BC(void);
|
|||||||
extern void sub_81AB9A8(u8);
|
extern void sub_81AB9A8(u8);
|
||||||
extern void sub_81ABA88(u8);
|
extern void sub_81ABA88(u8);
|
||||||
extern void sub_80B7CC8(void);
|
extern void sub_80B7CC8(void);
|
||||||
extern void flagmods_08054D70(void);
|
extern void Overworld_ResetStateAfterDigEscRope(void);
|
||||||
extern u8* sub_806CF78(u16);
|
extern u8* sub_806CF78(u16);
|
||||||
extern void sub_81B89F0(void);
|
extern void sub_81B89F0(void);
|
||||||
extern u8 GetItemEffectType(u16);
|
extern u8 GetItemEffectType(u16);
|
||||||
@ -904,7 +904,7 @@ void task08_080A1C44(u8 taskId)
|
|||||||
|
|
||||||
void re_escape_rope(u8 taskId)
|
void re_escape_rope(u8 taskId)
|
||||||
{
|
{
|
||||||
flagmods_08054D70();
|
Overworld_ResetStateAfterDigEscRope();
|
||||||
sub_80FE058();
|
sub_80FE058();
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].data[0] = 0;
|
||||||
DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44);
|
DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44);
|
||||||
|
541
src/overworld.c
541
src/overworld.c
@ -1,10 +1,82 @@
|
|||||||
|
|
||||||
// Includes
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "overworld.h"
|
||||||
|
#include "battle_setup.h"
|
||||||
|
#include "berry.h"
|
||||||
|
// #include "cable_club.h"
|
||||||
|
#include "clock.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "field_camera.h"
|
||||||
|
// #include "field_control_avatar.h"
|
||||||
|
#include "field_effect.h"
|
||||||
|
#include "field_fadetransition.h"
|
||||||
|
#include "field_ground_effect.h"
|
||||||
|
#include "field_map_obj.h"
|
||||||
|
#include "field_map_obj_helpers.h"
|
||||||
|
#include "field_message_box.h"
|
||||||
|
#include "field_player_avatar.h"
|
||||||
|
#include "field_screen_effect.h"
|
||||||
|
// #include "field_special_scene.h"
|
||||||
|
#include "field_specials.h"
|
||||||
|
#include "field_tasks.h"
|
||||||
|
#include "field_weather.h"
|
||||||
|
#include "fieldmap.h"
|
||||||
|
// #include "fldeff_flash.h"
|
||||||
|
#include "heal_location.h"
|
||||||
|
#include "link.h"
|
||||||
|
#include "load_save.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include "m4a.h"
|
||||||
|
#include "constants/maps.h"
|
||||||
|
#include "map_name_popup.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "metatile_behavior.h"
|
||||||
|
#include "new_game.h"
|
||||||
|
#include "palette.h"
|
||||||
|
#include "play_time.h"
|
||||||
|
#include "random.h"
|
||||||
|
#include "roamer.h"
|
||||||
|
// #include "rotating_gate.h"
|
||||||
|
#include "safari_zone.h"
|
||||||
|
#include "script.h"
|
||||||
|
// #include "script_pokemon_80C4.h"
|
||||||
|
#include "secret_base.h"
|
||||||
|
#include "constants/songs.h"
|
||||||
|
#include "sound.h"
|
||||||
|
#include "constants/species.h"
|
||||||
|
#include "start_menu.h"
|
||||||
|
#include "task.h"
|
||||||
|
// #include "tileset_anim.h"
|
||||||
|
#include "time_events.h"
|
||||||
|
#include "tv.h"
|
||||||
|
#include "scanline_effect.h"
|
||||||
|
#include "wild_encounter.h"
|
||||||
|
#include "bg.h"
|
||||||
|
#include "money.h"
|
||||||
|
|
||||||
// Static type declarations
|
// event scripts
|
||||||
|
extern const u8 EventScript_WhiteOut[];
|
||||||
|
extern const u8 EventScript_271862[];
|
||||||
|
|
||||||
// Static RAM declarations
|
// vars
|
||||||
|
extern struct MapData * const gMapAttributes[];
|
||||||
|
extern struct MapHeader * const * const gMapGroups[];
|
||||||
|
extern s32 gMaxFlashLevel;
|
||||||
|
|
||||||
|
// functions
|
||||||
|
extern void HealPlayerParty(void);
|
||||||
|
extern void move_tilemap_camera_to_upper_left_corner(void);
|
||||||
|
extern void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
|
||||||
|
extern void DrawWholeMapView(void);
|
||||||
|
extern void copy_map_tileset1_tileset2_to_vram(struct MapData *);
|
||||||
|
extern void apply_map_tileset1_tileset2_palette(struct MapData *);
|
||||||
|
extern void ResetCyclingRoadChallengeData(void);
|
||||||
|
extern void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey);
|
||||||
|
|
||||||
|
// this file's functions
|
||||||
|
static void Overworld_ResetStateAfterWhiteOut(void);
|
||||||
|
void ChooseAmbientCrySpecies(void);
|
||||||
|
|
||||||
|
// IWRAM bss vars
|
||||||
IWRAM_DATA void *gUnknown_03000E0C;
|
IWRAM_DATA void *gUnknown_03000E0C;
|
||||||
IWRAM_DATA u8 gUnknown_03000E10[4];
|
IWRAM_DATA u8 gUnknown_03000E10[4];
|
||||||
IWRAM_DATA u8 (*gUnknown_03000E14)(u32);
|
IWRAM_DATA u8 (*gUnknown_03000E14)(u32);
|
||||||
@ -12,8 +84,463 @@ IWRAM_DATA u8 gUnknown_03000E18;
|
|||||||
IWRAM_DATA u8 gUnknown_03000E19;
|
IWRAM_DATA u8 gUnknown_03000E19;
|
||||||
IWRAM_DATA void *rom4_c_unused_03000e1c;
|
IWRAM_DATA void *rom4_c_unused_03000e1c;
|
||||||
|
|
||||||
// Static ROM declarations
|
// EWRAM vars
|
||||||
|
EWRAM_DATA struct WarpData gUnknown_020322DC = {0};
|
||||||
|
EWRAM_DATA struct WarpData gWarpDestination = {0}; // new warp position
|
||||||
|
EWRAM_DATA struct WarpData gUnknown_020322EC = {0};
|
||||||
|
EWRAM_DATA struct WarpData gUnknown_020322F4 = {0};
|
||||||
|
EWRAM_DATA u16 gLastMapSectionId = 0;
|
||||||
|
// EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
|
||||||
|
// EWRAM_DATA u16 sAmbientCrySpecies = 0;
|
||||||
|
// EWRAM_DATA bool8 sIsAmbientCryWaterMon = FALSE;
|
||||||
|
// EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
|
||||||
|
|
||||||
// .rodata
|
// const rom data
|
||||||
|
const struct WarpData sDummyWarpData =
|
||||||
|
{
|
||||||
|
.mapGroup = -1,
|
||||||
|
.mapNum = -1,
|
||||||
|
.warpId = -1,
|
||||||
|
.x = -1,
|
||||||
|
.y = -1,
|
||||||
|
};
|
||||||
|
|
||||||
// .text
|
const u8 sUnusedData[] =
|
||||||
|
{
|
||||||
|
0xB0, 0x04, 0x00, 0x00,
|
||||||
|
0x10, 0x0E, 0x00, 0x00,
|
||||||
|
0xB0, 0x04, 0x00, 0x00,
|
||||||
|
0x60, 0x09, 0x00, 0x00,
|
||||||
|
0x32, 0x00, 0x00, 0x00,
|
||||||
|
0x50, 0x00, 0x00, 0x00,
|
||||||
|
0xD4, 0xFF, 0xFF, 0xFF,
|
||||||
|
0x2C, 0x00, 0x00, 0x00,
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct UCoords32 gUnknown_08339D64[] =
|
||||||
|
{
|
||||||
|
{ 0, 0},
|
||||||
|
{ 0, 1},
|
||||||
|
{ 0, -1},
|
||||||
|
{-1, 0},
|
||||||
|
{ 1, 0},
|
||||||
|
{-1, 1},
|
||||||
|
{ 1, 1},
|
||||||
|
{-1, -1},
|
||||||
|
{ 1, -1},
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct BgTemplate gUnknown_08339DAC[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.bg = 0,
|
||||||
|
.charBaseIndex = 2,
|
||||||
|
.mapBaseIndex = 31,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 0,
|
||||||
|
.baseTile = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 1,
|
||||||
|
.charBaseIndex = 0,
|
||||||
|
.mapBaseIndex = 29,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 1,
|
||||||
|
.baseTile = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 2,
|
||||||
|
.charBaseIndex = 0,
|
||||||
|
.mapBaseIndex = 28,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 2,
|
||||||
|
.baseTile = 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.bg = 3,
|
||||||
|
.charBaseIndex = 0,
|
||||||
|
.mapBaseIndex = 30,
|
||||||
|
.screenSize = 0,
|
||||||
|
.paletteMode = 0,
|
||||||
|
.priority = 3,
|
||||||
|
.baseTile = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct ScanlineEffectParams gUnknown_08339DBC =
|
||||||
|
{
|
||||||
|
(void *)REG_ADDR_WIN0H,
|
||||||
|
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
};
|
||||||
|
|
||||||
|
u8 sub_80879D8(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
u8 sub_80879F8(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
u8 sub_80879FC(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
|
||||||
|
u8 (*const gUnknown_08339DC8[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
|
||||||
|
{
|
||||||
|
sub_80879D8,
|
||||||
|
sub_80879F8,
|
||||||
|
sub_80879FC,
|
||||||
|
};
|
||||||
|
|
||||||
|
u8 sub_8087A1C(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
u8 sub_8087A20(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
u8 sub_8087A88(struct LinkPlayerMapObject *, struct MapObject *, u8);
|
||||||
|
|
||||||
|
u8 (*const gUnknown_08339DD4[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
|
||||||
|
{
|
||||||
|
sub_8087A1C,
|
||||||
|
sub_8087A20,
|
||||||
|
sub_8087A20,
|
||||||
|
sub_8087A20,
|
||||||
|
sub_8087A20,
|
||||||
|
sub_8087A1C,
|
||||||
|
sub_8087A1C,
|
||||||
|
sub_8087A88,
|
||||||
|
sub_8087A88,
|
||||||
|
sub_8087A88,
|
||||||
|
sub_8087A88,
|
||||||
|
};
|
||||||
|
|
||||||
|
void sub_8087AA0(struct LinkPlayerMapObject *, struct MapObject *);
|
||||||
|
void sub_8087AA8(struct LinkPlayerMapObject *, struct MapObject *);
|
||||||
|
|
||||||
|
void (*const gUnknown_08339E00[])(struct LinkPlayerMapObject *, struct MapObject *) =
|
||||||
|
{
|
||||||
|
sub_8087AA0,
|
||||||
|
sub_8087AA8,
|
||||||
|
};
|
||||||
|
|
||||||
|
// code
|
||||||
|
void DoWhiteOut(void)
|
||||||
|
{
|
||||||
|
ScriptContext2_RunNewScript(EventScript_WhiteOut);
|
||||||
|
SetMoney(&gSaveBlock1Ptr->money, GetMoney(&gSaveBlock1Ptr->money) / 2);
|
||||||
|
HealPlayerParty();
|
||||||
|
Overworld_ResetStateAfterWhiteOut();
|
||||||
|
Overworld_SetWarpDestToLastHealLoc();
|
||||||
|
warp_in();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_ResetStateAfterFly(void)
|
||||||
|
{
|
||||||
|
player_avatar_init_params_reset();
|
||||||
|
FlagClear(FLAG_SYS_CYCLING_ROAD);
|
||||||
|
FlagClear(FLAG_SYS_CRUISE_MODE);
|
||||||
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
|
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||||
|
FlagClear(FLAG_SYS_USE_FLASH);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_ResetStateAfterTeleport(void)
|
||||||
|
{
|
||||||
|
player_avatar_init_params_reset();
|
||||||
|
FlagClear(FLAG_SYS_CYCLING_ROAD);
|
||||||
|
FlagClear(FLAG_SYS_CRUISE_MODE);
|
||||||
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
|
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||||
|
FlagClear(FLAG_SYS_USE_FLASH);
|
||||||
|
ScriptContext2_RunNewScript(EventScript_271862);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_ResetStateAfterDigEscRope(void)
|
||||||
|
{
|
||||||
|
player_avatar_init_params_reset();
|
||||||
|
FlagClear(FLAG_SYS_CYCLING_ROAD);
|
||||||
|
FlagClear(FLAG_SYS_CRUISE_MODE);
|
||||||
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
|
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||||
|
FlagClear(FLAG_SYS_USE_FLASH);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Overworld_ResetStateAfterWhiteOut(void)
|
||||||
|
{
|
||||||
|
player_avatar_init_params_reset();
|
||||||
|
FlagClear(FLAG_SYS_CYCLING_ROAD);
|
||||||
|
FlagClear(FLAG_SYS_CRUISE_MODE);
|
||||||
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
|
FlagClear(FLAG_SYS_USE_STRENGTH);
|
||||||
|
FlagClear(FLAG_SYS_USE_FLASH);
|
||||||
|
if (VarGet(VAR_0x4039) == 1)
|
||||||
|
{
|
||||||
|
VarSet(VAR_0x4039, 0);
|
||||||
|
VarSet(VAR_0x4037, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8084788(void)
|
||||||
|
{
|
||||||
|
FlagClear(FLAG_SYS_SAFARI_MODE);
|
||||||
|
ChooseAmbientCrySpecies();
|
||||||
|
ResetCyclingRoadChallengeData();
|
||||||
|
UpdateLocationHistoryForRoamer();
|
||||||
|
RoamerMoveToOtherLocationSet();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetGameStats(void)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_GAME_STATS; i++)
|
||||||
|
SetGameStat(i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IncrementGameStat(u8 index)
|
||||||
|
{
|
||||||
|
if (index < NUM_USED_GAME_STATS)
|
||||||
|
{
|
||||||
|
u32 statVal = GetGameStat(index);
|
||||||
|
if (statVal < 0xFFFFFF)
|
||||||
|
statVal++;
|
||||||
|
else
|
||||||
|
statVal = 0xFFFFFF;
|
||||||
|
|
||||||
|
SetGameStat(index, statVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 GetGameStat(u8 index)
|
||||||
|
{
|
||||||
|
if (index >= NUM_USED_GAME_STATS)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return gSaveBlock1Ptr->gameStats[index] ^ gSaveBlock2Ptr->encryptionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetGameStat(u8 index, u32 value)
|
||||||
|
{
|
||||||
|
if (index < NUM_USED_GAME_STATS)
|
||||||
|
gSaveBlock1Ptr->gameStats[index] = value ^ gSaveBlock2Ptr->encryptionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ApplyNewEncryptionKeyToGameStats(u32 newKey)
|
||||||
|
{
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < NUM_GAME_STATS; i++)
|
||||||
|
ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->gameStats[i], newKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadMapObjTemplatesFromHeader(void)
|
||||||
|
{
|
||||||
|
// Clear map object templates
|
||||||
|
CpuFill32(0, gSaveBlock1Ptr->mapObjectTemplates, sizeof(gSaveBlock1Ptr->mapObjectTemplates));
|
||||||
|
|
||||||
|
// Copy map header events to save block
|
||||||
|
CpuCopy32(gMapHeader.events->mapObjects,
|
||||||
|
gSaveBlock1Ptr->mapObjectTemplates,
|
||||||
|
gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate));
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadSaveblockMapObjScripts(void)
|
||||||
|
{
|
||||||
|
struct MapObjectTemplate *mapHeaderObjTemplates = gMapHeader.events->mapObjects;
|
||||||
|
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
savObjTemplates[i].script = mapHeaderObjTemplates[i].script;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||||
|
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
{
|
||||||
|
struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
|
||||||
|
if (mapObjectTemplate->localId == localId)
|
||||||
|
{
|
||||||
|
mapObjectTemplate->x = x;
|
||||||
|
mapObjectTemplate->y = y;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
|
||||||
|
struct MapObjectTemplate *savObjTemplates = gSaveBlock1Ptr->mapObjectTemplates;
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
{
|
||||||
|
struct MapObjectTemplate *mapObjectTemplate = &savObjTemplates[i];
|
||||||
|
if (mapObjectTemplate->localId == localId)
|
||||||
|
{
|
||||||
|
mapObjectTemplate->movementType = movementType;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mapdata_load_assets_to_gpu_and_full_redraw(void)
|
||||||
|
{
|
||||||
|
move_tilemap_camera_to_upper_left_corner();
|
||||||
|
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
|
||||||
|
apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
|
||||||
|
DrawWholeMapView();
|
||||||
|
cur_mapheader_run_tileset_funcs_after_some_cpuset();
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MapData *get_mapdata_header(void)
|
||||||
|
{
|
||||||
|
u16 mapDataId = gSaveBlock1Ptr->mapDataId;
|
||||||
|
if (mapDataId)
|
||||||
|
return gMapAttributes[mapDataId - 1];
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ApplyCurrentWarp(void)
|
||||||
|
{
|
||||||
|
gUnknown_020322DC = gSaveBlock1Ptr->location;
|
||||||
|
gSaveBlock1Ptr->location = gWarpDestination;
|
||||||
|
gUnknown_020322EC = sDummyWarpData;
|
||||||
|
gUnknown_020322F4 = sDummyWarpData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_warp2_warp3_to_neg_1(void)
|
||||||
|
{
|
||||||
|
gUnknown_020322EC = sDummyWarpData;
|
||||||
|
gUnknown_020322F4 = sDummyWarpData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||||
|
{
|
||||||
|
warp->mapGroup = mapGroup;
|
||||||
|
warp->mapNum = mapNum;
|
||||||
|
warp->warpId = warpId;
|
||||||
|
warp->x = x;
|
||||||
|
warp->y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool32 warp_data_is_not_neg_1(struct WarpData *warp)
|
||||||
|
{
|
||||||
|
if (warp->mapGroup != -1)
|
||||||
|
return FALSE;
|
||||||
|
if (warp->mapNum != -1)
|
||||||
|
return FALSE;
|
||||||
|
if (warp->warpId != -1)
|
||||||
|
return FALSE;
|
||||||
|
if (warp->x != -1)
|
||||||
|
return FALSE;
|
||||||
|
if (warp->y != -1)
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
|
||||||
|
{
|
||||||
|
return gMapGroups[mapGroup][mapNum];
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MapHeader *const warp1_get_mapheader(void)
|
||||||
|
{
|
||||||
|
return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_current_map_header_from_sav1_save_old_name(void)
|
||||||
|
{
|
||||||
|
gLastMapSectionId = gMapHeader.regionMapSectionId;
|
||||||
|
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||||
|
gSaveBlock1Ptr->mapDataId = gMapHeader.mapDataId;
|
||||||
|
gMapHeader.mapData = get_mapdata_header();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadSaveblockMapHeader(void)
|
||||||
|
{
|
||||||
|
gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
|
||||||
|
gMapHeader.mapData = get_mapdata_header();
|
||||||
|
}
|
||||||
|
|
||||||
|
void update_camera_pos_from_warpid(void)
|
||||||
|
{
|
||||||
|
if (gSaveBlock1Ptr->location.warpId >= 0 && gSaveBlock1Ptr->location.warpId < gMapHeader.events->warpCount)
|
||||||
|
{
|
||||||
|
gSaveBlock1Ptr->pos.x = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].x;
|
||||||
|
gSaveBlock1Ptr->pos.y = gMapHeader.events->warps[gSaveBlock1Ptr->location.warpId].y;
|
||||||
|
}
|
||||||
|
else if (gSaveBlock1Ptr->location.x >= 0 && gSaveBlock1Ptr->location.y >= 0)
|
||||||
|
{
|
||||||
|
gSaveBlock1Ptr->pos.x = gSaveBlock1Ptr->location.x;
|
||||||
|
gSaveBlock1Ptr->pos.y = gSaveBlock1Ptr->location.y;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSaveBlock1Ptr->pos.x = gMapHeader.mapData->width / 2;
|
||||||
|
gSaveBlock1Ptr->pos.y = gMapHeader.mapData->height / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void warp_in(void)
|
||||||
|
{
|
||||||
|
ApplyCurrentWarp();
|
||||||
|
set_current_map_header_from_sav1_save_old_name();
|
||||||
|
update_camera_pos_from_warpid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||||
|
{
|
||||||
|
SetWarpData(&gWarpDestination, mapGroup, mapNum, warpId, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId)
|
||||||
|
{
|
||||||
|
Overworld_SetWarpDestination(mapGroup, mapNum, warpId, -1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId)
|
||||||
|
{
|
||||||
|
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||||
|
{
|
||||||
|
SetWarpData(&gSaveBlock1Ptr->warp2, mapGroup, mapNum, warpId, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused)
|
||||||
|
{
|
||||||
|
gWarpDestination = gSaveBlock1Ptr->warp2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8084CCC(u8 a1)
|
||||||
|
{
|
||||||
|
const struct HealLocation *warp = GetHealLocationPointer(a1);
|
||||||
|
|
||||||
|
if (warp)
|
||||||
|
Overworld_SetWarpDestination(warp->group, warp->map, -1, warp->x, warp->y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_SetWarpDestToLastHealLoc(void)
|
||||||
|
{
|
||||||
|
gWarpDestination = gSaveBlock1Ptr->lastHealLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Overworld_SetHealLocationWarp(u8 healLocationId)
|
||||||
|
{
|
||||||
|
const struct HealLocation *healLocation = GetHealLocationPointer(healLocationId);
|
||||||
|
|
||||||
|
if (healLocation != NULL)
|
||||||
|
SetWarpData(&gSaveBlock1Ptr->lastHealLocation, healLocation->group, healLocation->map, -1, healLocation->x, healLocation->y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8084D5C(s16 a1, s16 a2)
|
||||||
|
{
|
||||||
|
u8 currMapType = Overworld_GetMapTypeOfSaveblockLocation();
|
||||||
|
u8 destMapType = GetMapTypeByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
|
||||||
|
if (is_light_level_1_2_3_5_or_6(currMapType) && is_light_level_1_2_3_5_or_6(destMapType) != TRUE)
|
||||||
|
sub_8084DD4(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, a1 - 7, a2 - 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
|
||||||
|
{
|
||||||
|
SetWarpData(&gSaveBlock1Ptr->warp4, mapGroup, mapNum, warpId, x, y);
|
||||||
|
}
|
||||||
|
@ -881,7 +881,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
|
switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 1:
|
case 1:
|
||||||
@ -904,7 +904,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
|||||||
case 7:
|
case 7:
|
||||||
if (gMapHeader.flags & 0x02)
|
if (gMapHeader.flags & 0x02)
|
||||||
{
|
{
|
||||||
mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp4.mapGroup, gSaveBlock1Ptr->warp4.mapNum);
|
||||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||||
gRegionMap->playerIsInCave = TRUE;
|
gRegionMap->playerIsInCave = TRUE;
|
||||||
mapWidth = mapHeader->mapData->width;
|
mapWidth = mapHeader->mapData->width;
|
||||||
@ -923,7 +923,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
mapHeader = get_mapheader_by_bank_and_number((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->warp2.mapGroup, (u16)gSaveBlock1Ptr->warp2.mapNum);
|
||||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||||
gRegionMap->playerIsInCave = TRUE;
|
gRegionMap->playerIsInCave = TRUE;
|
||||||
mapWidth = mapHeader->mapData->width;
|
mapWidth = mapHeader->mapData->width;
|
||||||
@ -937,12 +937,12 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
|
|||||||
if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
|
if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
|
||||||
{
|
{
|
||||||
storedWarp = &gSaveBlock1Ptr->warp4;
|
storedWarp = &gSaveBlock1Ptr->warp4;
|
||||||
mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
storedWarp = &gSaveBlock1Ptr->warp2;
|
storedWarp = &gSaveBlock1Ptr->warp2;
|
||||||
mapHeader = get_mapheader_by_bank_and_number(storedWarp->mapGroup, storedWarp->mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(storedWarp->mapGroup, storedWarp->mapNum);
|
||||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||||
}
|
}
|
||||||
if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
|
if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
|
||||||
@ -1065,7 +1065,7 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
|
mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
|
||||||
|
|
||||||
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
|
||||||
dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
dimensionScale = mapHeader->mapData->width / gRegionMapEntries[gRegionMap->mapSecId].width;
|
||||||
|
@ -214,21 +214,9 @@ gUnknown_020322D5: @ 20322D5
|
|||||||
gUnknown_020322D8: @ 20322D8
|
gUnknown_020322D8: @ 20322D8
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gUnknown_020322DC: @ 20322DC
|
.include "src/overworld.o"
|
||||||
.space 0x8
|
|
||||||
|
|
||||||
gUnknown_020322E4: @ 20322E4
|
|
||||||
.space 0x8
|
|
||||||
|
|
||||||
gUnknown_020322EC: @ 20322EC
|
|
||||||
.space 0x8
|
|
||||||
|
|
||||||
gUnknown_020322F4: @ 20322F4
|
|
||||||
.space 0x8
|
|
||||||
|
|
||||||
gUnknown_020322FC: @ 20322FC
|
|
||||||
.space 0x4
|
|
||||||
|
|
||||||
|
.align 2
|
||||||
gUnknown_02032300: @ 2032300
|
gUnknown_02032300: @ 2032300
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user