diff --git a/headers/data/overlay10.h b/headers/data/overlay10.h index 96b1ecb9..a79be937 100644 --- a/headers/data/overlay10.h +++ b/headers/data/overlay10.h @@ -93,6 +93,7 @@ extern int16_t WONDER_CHEST_EXP_BOOST; extern int16_t SPAWN_CAP_WITH_MONSTER_HOUSE; extern int16_t POISON_DAMAGE_COOLDOWN; extern int16_t LEECH_SEED_DAMAGE_COOLDOWN; +extern int16_t THROWN_ITEM_HIT_CHANCE; extern int16_t GEO_PEBBLE_DAMAGE; extern int16_t GRAVELEROCK_DAMAGE; extern int16_t RARE_FOSSIL_DAMAGE; diff --git a/headers/functions/arm7.h b/headers/functions/arm7.h index 820b6409..19cf59f2 100644 --- a/headers/functions/arm7.h +++ b/headers/functions/arm7.h @@ -3,6 +3,11 @@ void EntryArm7(void); void NitroSpMain(void); -int GetProcessorMode(void); +void HardwareInterrupt(void); +void ReturnFromInterrupt(void); +void AudioInterrupt(int function_index); +bool ClearImeFlag(void); +int ClearIeFlag(int flag_id); +long long GetCurrentPlaybackTime(void); #endif diff --git a/headers/functions/arm9.h b/headers/functions/arm9.h index c50f0538..71557108 100644 --- a/headers/functions/arm9.h +++ b/headers/functions/arm9.h @@ -376,8 +376,14 @@ enum move_category GetMoveCategory(enum move_id move_id); int GetPpIncrease(enum monster_id monster_id, uint32_t* iq_skill_flags); void OpenWaza(int waza_id); void SelectWaza(int waza_id); -void SendAudioCommandWrapperVeneer(enum music_id music_id, undefined param_2, int volume); -void SendAudioCommandWrapper(enum music_id music_id, undefined param_2, int volume); +void PlayBgmByIdVeneer(enum music_id music_id); +void PlayBgmByIdVolumeVeneer(enum music_id music_id, undefined param_2, int volume); +void PlaySeVolumeWrapper(int index); +void PlayBgmById(enum music_id music_id); +void PlayBgmByIdVolume(enum music_id music_id, undefined param_2, int volume); +void StopBgmCommand(void); +void PlaySeByIdVolume(int se_id, int volume); +void SendAudioCommand2(struct audio_command command); struct audio_command* AllocAudioCommand(int status); void SendAudioCommand(struct audio_command command); void InitSoundSystem(void); @@ -385,6 +391,7 @@ void ManipBgmPlayback(void); void SoundDriverReset(void); uint32_t LoadDseFile(struct iovec* iov, const char* filename); undefined4 PlaySeLoad(int param_1); +bool IsSongOver(void); void PlayBgm(int param_1, int param_2, int param_3); void StopBgm(int param_1); void ChangeBgm(int param_1, int param_2); @@ -537,6 +544,7 @@ void FreePortraitBox(int dbox_id); void ShowPortraitBox(int dbox_id, struct portrait_box* portrait); void HidePortraitBox(int dbox_id); bool IsMenuOptionActive(undefined* param_1); +void PlayMenuOptionSound(undefined* param_1, int index); int ShowKeyboard(int message_id, char* buffer1, int param_3, char* buffer2); int GetKeyboardStatus(void); int GetKeyboardStringResult(void); @@ -898,9 +906,11 @@ void MainLoop(void); int DungeonSwapIdToIdx(enum dungeon_id dungeon_id); enum dungeon_id DungeonSwapIdxToId(int idx); enum dungeon_mode GetDungeonModeSpecial(enum dungeon_id dungeon_id); +void* ReadWaviEntry(struct wavi_data* wavi_data, int entry_index); int ResumeBgm(undefined4 param_1, undefined4 param_2, undefined4 param_3); +void* FindSmdlSongChunk(void* smdl_data, uint16_t value_to_search); int FlushChannels(undefined* param_1, int param_2, int param_3); -void ParseDseEvents(undefined4 param_1, int param_2, undefined4 param_3, undefined4 param_4); +void ParseDseEvent(undefined* audio_state, struct track_data* track_data); void UpdateSequencerTracks(int param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4); void UpdateChannels(void); void UpdateTrackVolumeEnvelopes(undefined* param_1); @@ -909,12 +919,14 @@ void EnableVramBanksInSet(struct vram_banks_set* vram_banks); void GeomMtxLoad4x3(struct matrix_4x3* matrix); void GeomMtxMult4x3(struct matrix_4x3* matrix); void GeomGxFifoSendMtx4x3(struct matrix_4x3* matrix, void* gxfifo); +uint16_t GetTimer0Control(void); int ClearIrqFlag(void); int EnableIrqFlag(void); int SetIrqFlag(int new_value); int EnableIrqFiqFlags(void); int SetIrqFiqFlags(int new_value); int GetIrqFlag(void); +int GetProcessorMode(void); void WaitForever2(void); void WaitForInterrupt(void); void ArrayFill16(uint16_t val, void* ptr, int len); diff --git a/headers/functions/arm9/itcm.h b/headers/functions/arm9/itcm.h index 530a6695..b27247de 100644 --- a/headers/functions/arm9/itcm.h +++ b/headers/functions/arm9/itcm.h @@ -24,6 +24,8 @@ enum monster_id GetKeyN2MBaseForm(int key); void GetKeyM2NSwitch(enum monster_id monster_id, int sw); int GetKeyM2N(enum monster_id monster_id); int GetKeyM2NBaseForm(enum monster_id monster_id); +void HardwareInterrupt(void); +void ReturnFromInterrupt(void); bool ShouldMonsterRunAwayVariationOutlawCheck(struct entity* monster, undefined param_2); void AiMovement(struct entity* monster, undefined param_2); void CalculateAiTargetPos(struct entity* monster); diff --git a/headers/functions/overlay10.h b/headers/functions/overlay10.h index 40f307c7..188eb1db 100644 --- a/headers/functions/overlay10.h +++ b/headers/functions/overlay10.h @@ -11,6 +11,7 @@ int16_t GetItemAnimation1(enum item_id item_id); int16_t GetItemAnimation2(enum item_id item_id); int GetMoveAnimationSpeed(enum move_id move_id); bool IsBackgroundTileset(int tileset_id); +void InitTilesetBuffer(void* buffer, int tileset_id, uint32_t malloc_flags); int MainGame(int end_cond); #endif diff --git a/headers/functions/overlay29.h b/headers/functions/overlay29.h index 638c70bc..e16e83c7 100644 --- a/headers/functions/overlay29.h +++ b/headers/functions/overlay29.h @@ -780,6 +780,7 @@ void AddHeldItemToBag(struct monster* monster); void RemoveEmptyItemsInBagWrapper(void); void GenerateItem(struct item* item, enum item_id item_id, uint16_t quantity, enum gen_item_stickiness sticky_type); +bool DoesProjectileHitTarget(struct entity* user, struct entity* target); bool CheckActiveChallengeRequest(void); struct mission_destination_info* GetMissionDestination(void); bool IsOutlawOrChallengeRequestFloor(void); diff --git a/headers/types/common/common.h b/headers/types/common/common.h index 22192c51..f42405e0 100644 --- a/headers/types/common/common.h +++ b/headers/types/common/common.h @@ -1335,6 +1335,53 @@ struct audio_command { }; ASSERT_SIZE(struct audio_command, 32); +// Contains data for an audio track that is being played +struct track_data { + undefined field_0x0; + undefined field_0x1; + bool active; // 0x2: True if the track is active + undefined field_0x3; + undefined field_0x4; + undefined field_0x5; + undefined field_0x6; + undefined field_0x7; + int play_amount; // 0x8: Number of times the track has been played so far + // 0xC: Delay (in frames, probably) before the next DSE event on this track begins + int event_delay; + undefined field_0x10; + undefined field_0x11; + undefined field_0x12; + undefined field_0x13; + undefined field_0x14; + undefined field_0x15; + undefined field_0x16; + undefined field_0x17; + void* track_data_start; // 0x18: Pointer to the start of the track's audio data + void* current_event; // 0x1C: Pointer to the current DSE event +}; +ASSERT_SIZE(struct track_data, 32); // Exact size hasn't been confirmed + +// Data about a wavi container +struct wavi_data { + undefined field_0x0; + undefined field_0x1; + undefined field_0x2; + undefined field_0x3; + undefined field_0x4; + undefined field_0x5; + undefined field_0x6; + undefined field_0x7; + int16_t num_entries; // 0x8: Number of entries in the container + undefined field_0xA; + undefined field_0xB; + undefined field_0xC; + undefined field_0xD; + undefined field_0xE; + undefined field_0xF; + void* pointer_table_start; // 0x10: Pointer to the start of the pointer table +}; +ASSERT_SIZE(struct wavi_data, 20); // Likely longer + // TODO: Add more data file structures, as convenient or needed, especially if the load address // or pointers to the load address are known. diff --git a/symbols/arm7.yml b/symbols/arm7.yml index 1bd0d482..c3648d0a 100644 --- a/symbols/arm7.yml +++ b/symbols/arm7.yml @@ -68,6 +68,89 @@ arm7: This main function for the ARM7 subsystem. Contains the main event loop. No params. + - name: HardwareInterrupt + address: + EU: 0x2383670 + NA: 0x2383670 + JP: 0x2383670 + EU-WRAM: 0x37FB488 + NA-WRAM: 0x37FB488 + JP-WRAM: 0x37FB488 + description: |- + Called whenever a hardware interrupt takes place. + + Returns immediately if the IME flag is 0 or if none of the devices that requested an interrupt has the corresponding Interrupt Enable flag set. + It searches for the first device that requested an interrupt, clears its Interrupt Request flag, then jumps to the start of the corresponding interrupt function. The return address is manually set to ReturnFromInterrupt. + This function does not return. + + No params. + - name: ReturnFromInterrupt + address: + EU: 0x23836DC + NA: 0x23836DC + JP: 0x23836DC + EU-WRAM: 0x37FB4F4 + NA-WRAM: 0x37FB4F4 + JP-WRAM: 0x37FB4F4 + description: |- + The execution returns to this function after a hardware interrupt function is run. + + No params. + - name: AudioInterrupt + address: + EU: 0x2383824 + NA: 0x2383824 + JP: 0x2383824 + EU-WRAM: 0x37FB63C + NA-WRAM: 0x37FB63C + JP-WRAM: 0x37FB63C + description: |- + Called when handling a hardware interrupt from the audio system. + + Its parameter is used to index a list of function pointers. The game then jumps to the read pointer. + + r0: Index of the function to jump to + - name: ClearImeFlag + address: + EU: 0x2383AC0 + NA: 0x2383AC0 + JP: 0x2383AC0 + EU-WRAM: 0x37FB8D8 + NA-WRAM: 0x37FB8D8 + JP-WRAM: 0x37FB8D8 + description: |- + Clears the Interrupt Master Enable flag, which disables all hardware interrupts. + + return: Previous IME value + - name: ClearIeFlag + address: + EU: 0x2383B10 + NA: 0x2383B10 + JP: 0x2383B10 + EU-WRAM: 0x37FB928 + NA-WRAM: 0x37FB928 + JP-WRAM: 0x37FB928 + description: |- + Clears the specified Interrupt Enable flag, which disables interrupts for the specified hardware component. + + r0: Flag to clear + return: Previous value of the Interrupt Enable flags + - name: GetCurrentPlaybackTime + address: + EU: 0x2385404 + NA: 0x2385404 + JP: 0x2385404 + EU-WRAM: 0x37FD21C + NA-WRAM: 0x37FD21C + JP-WRAM: 0x37FD21C + description: |- + Returns the time that the current song has been playing for. Might have a more generic purpose. + + The time is obtained using a couple of RAM counters and the hardware timers for additional precision. + The game uses this value to know when a given note should stop being played. It doesn't seem to be used to keep track of the + current time instant within the song. + + return: Playback time. Units unknown. - name: ClearIrqFlag address: EU: 0x2385ED4 @@ -139,9 +222,7 @@ arm7: NA-WRAM: 0x37FDD58 JP-WRAM: 0x37FDD58 description: |- - Gets the processor's current operating mode. - - See https://problemkaputt.de/gbatek.htm#armcpuflagsconditionfieldcond + Copy of the ARM9 function. See arm9.yml for more information. return: cpsr & 0x1f (the cpsr mode bits M4-M0) - name: __divsi3 diff --git a/symbols/arm9.yml b/symbols/arm9.yml index f263b3e7..cb89de79 100644 --- a/symbols/arm9.yml +++ b/symbols/arm9.yml @@ -3538,31 +3538,86 @@ arm9: Note: unverified, ported from Irdkwia's notes r0: waza_id - - name: SendAudioCommandWrapperVeneer + - name: PlayBgmByIdVeneer + address: + EU: 0x2017BF4 + NA: 0x2017BD4 + description: |- + Likely a linker-generated veneer for PlayBgmById. + + See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- + + r0: Music ID + - name: PlayBgmByIdVolumeVeneer address: EU: 0x2017C00 NA: 0x2017BE0 description: |- - Likely a linker-generated veneer for SendAudioCommandWrapper. + Likely a linker-generated veneer for PlayBgmByIdVolume. See https://developer.arm.com/documentation/dui0474/k/image-structure-and-generation/linker-generated-veneers/what-is-a-veneer- r0: Music ID r1: (?) Stored on byte 8 on the struct passed to SendAudioCommand r2: Volume (0-255) - - name: SendAudioCommandWrapper + - name: PlaySeVolumeWrapper + address: + EU: 0x2017D68 + NA: 0x2017CCC + description: |- + Wrapper for PlaySeVolume. Takes an index and uses it to determine the ID of the sound to play. + + r0: Index + - name: PlayBgmById + address: + EU: 0x2017E90 + NA: 0x2018024 + description: |- + Initializes some values and then calls SendAudioCommand to play a BGM track. + + Checks for DEBUG_FLAG_BGM_OFF. The volume is set to either 0 or 255 depending on the flag before calling SendAudioCommand. + + r0: Music ID + - name: PlayBgmByIdVolume address: EU: 0x2017F0C - NA: 0x2017E70 + NA: 0x20180A0 JP: 0x2017EC8 description: |- - Initializes some values and then calls SendAudioCommand. + Initializes some values and then calls SendAudioCommand to play a BGM track. Checks for DEBUG_FLAG_BGM_OFF. If 1, sets the volume to 0 before calling SendAudioCommand. r0: Music ID r1: (?) Stored on byte 8 on the struct passed to SendAudioCommand r2: Volume (0-255) + - name: StopBgmCommand + address: + EU: 0x2017F84 + NA: 0x2017EE8 + description: |- + Stops the BGM that is being currently played by calling SendAudioCommand. + + No params. + - name: PlaySeByIdVolume + address: + EU: 0x2018354 + NA: 0x20182B8 + description: |- + Plays the specified sound effect with the specified volume. + + Checks for DEBUG_FLAG_SE_OFF and sets the volume to 0 if the flag is set. Calls SendAudioCommand2. + + r0: Sound effect ID + r1: Volume (0-255) + - name: SendAudioCommand2 + address: + EU: 0x2018B80 + NA: 0x2018AE4 + description: |- + Very similar to SendAudioCommand. Contains an additional function call. + + r0: Command to send - name: AllocAudioCommand address: EU: 0x2018C08 @@ -3645,6 +3700,14 @@ arm9: NA: 0x2019574 JP: 0x20195CC description: "Note: unverified, ported from Irdkwia's notes" + - name: IsSongOver + address: + EU: 0x20198EC + NA: 0x2019850 + description: |- + True if the song that is currently being played has finished playing. + + return: True if the current song is over - name: PlayBgm address: EU: 0x2019954 @@ -4994,6 +5057,15 @@ arm9: r0: ? return: True if the menu option is enabled, false otherwise. + - name: PlayMenuOptionSound + address: + EU: 0x2032C54 + NA: 0x2032960 + description: |- + Plays a "beep" sound when choosing a menu option. + + r0: ? + r1: Some kind of index used to determine the ID of the sound to play - name: ShowKeyboard address: EU: 0x2036AE4 @@ -7206,8 +7278,6 @@ arm9: Base Formula = ((Level-1)*ExpYield)//10+ExpYield Note: Defeating an enemy without using a move will divide this amount by 2 - Note: unverified, ported from Irdkwia's notes - r0: id r1: level return: exp @@ -8562,6 +8632,16 @@ arm9: r0: Dungeon ID return: Dungeon mode + - name: ReadWaviEntry + address: + EU: 0x206D8F0 + NA: 0x206D558 + description: |- + Reads an entry from the pointer table of a wavi container and returns a pointer to the data of said entry, which contains information about a particular sample. + + r0: Wavi data struct + r1: Entry index + retrun: Pointer to the entry's data - name: ResumeBgm address: EU: 0x206DD54 @@ -8571,18 +8651,38 @@ arm9: Uncertain. Note: unverified, ported from Irdkwia's notes + - name: FindSmdlSongChunk + address: + EU: 0x206E880 + NA: 0x206E4E8 + description: |- + Finds the first song chunk within an SMDL file that has the specified value on its 0x10 field. + + See https://projectpokemon.org/home/docs/mystery-dungeon-nds/dse-smdl-format-r13/. + + r0: Pointer to the start of the SMDL file + r1: Value to search for + return: Pointer to the first chunk that has the specified value + 0x10, or null if no chunk was found. - name: FlushChannels address: EU: 0x2070A0C NA: 0x2070674 JP: 0x207095C description: "Note: unverified, ported from Irdkwia's notes" - - name: ParseDseEvents + - name: ParseDseEvent address: EU: 0x20715BC NA: 0x2071224 JP: 0x207150C - description: "From https://projectpokemon.org/docs/mystery-dungeon-nds/procyon-studios-digital-sound-elements-r12/" + description: |- + Parses and executes a DSE event for the specified track, if necessary. + + The function checks the time left before the next event (track_data::event_delay), and parses it if said time is 0. + + See also https://projectpokemon.org/docs/mystery-dungeon-nds/procyon-studios-digital-sound-elements-r12/ + + r0: Pointer to some struct that seems to hold the state of the audio engine + r1: Pointer to track data - name: UpdateSequencerTracks address: EU: 0x2071780 @@ -8652,6 +8752,14 @@ arm9: r0: matrix_4x3 pointer r1: GXFIFO pointer + - name: GetTimer0Control + address: + EU: 0x207B27C + NA: 0x207AEE4 + description: |- + Returns the value of the control register for hardware timer 0 + + return: Value of the control register - name: ClearIrqFlag address: EU: 0x207BB68 @@ -8708,6 +8816,16 @@ arm9: Gets the current value of the processor's interrupt request (i) flag return: cpsr & 0x80 (0x80 if interrupts are disabled, 0x0 if they are enabled) + - name: GetProcessorMode + address: + EU: 0x207BBE0 + NA: 0x207B848 + description: |- + Gets the processor's current operating mode. + + See https://problemkaputt.de/gbatek.htm#armcpuflagsconditionfieldcond + + return: cpsr & 0x1f (the cpsr mode bits M4-M0) - name: WaitForever2 address: EU: 0x207BFB8 @@ -8732,6 +8850,7 @@ arm9: No params. - name: ArrayFill16 address: + EU: 0x207C650 NA: 0x207C2B8 description: |- Fills an array of 16-bit values with a given value. @@ -8741,6 +8860,7 @@ arm9: r2: len (# bytes) - name: ArrayCopy16 address: + EU: 0x207C678 NA: 0x207C2E0 description: |- Copies an array of 16-bit values to another array of 16-bit values. @@ -8752,6 +8872,7 @@ arm9: r2: len (# bytes) - name: ArrayFill32 address: + EU: 0x207C6AC NA: 0x207C314 description: |- Fills an array of 32-bit values with a given value. @@ -8763,6 +8884,7 @@ arm9: r2: len (# bytes) - name: ArrayCopy32 address: + EU: 0x207C6C8 NA: 0x207C330 description: |- Copies an array of 32-bit values to another array of 32-bit values. @@ -8774,6 +8896,7 @@ arm9: r2: len (# bytes) - name: ArrayFill32Fast address: + EU: 0x207C6F0 NA: 0x207C358 description: |- Does the same thing as ArrayFill32, except the implementation uses an unrolled loop that sets 8 values per iteration, taking advantage of the stmia instruction. @@ -8783,6 +8906,7 @@ arm9: r2: len (# bytes) - name: ArrayCopy32Fast address: + EU: 0x207C74C NA: 0x207C3B4 description: |- Does the same thing as ArrayCopy32, except the implementation uses an unrolled loop that copies 8 values per iteration, taking advantage of the ldmia/stmia instructions. @@ -8792,6 +8916,7 @@ arm9: r2: len (# bytes) - name: MemsetFast address: + EU: 0x207C7A4 NA: 0x207C40C description: |- A semi-optimized implementation of the memset(3) C library function. @@ -8819,6 +8944,7 @@ arm9: r2: n (# bytes) - name: AtomicExchange address: + EU: 0x207C9E0 NA: 0x207C648 description: |- Atomically replaces a pointer's pointee with a desired value, and returns the previous value. diff --git a/symbols/arm9/itcm.yml b/symbols/arm9/itcm.yml index 299762e4..dfd5f89e 100644 --- a/symbols/arm9/itcm.yml +++ b/symbols/arm9/itcm.yml @@ -262,6 +262,31 @@ itcm: r0: monster ID return: key + - name: HardwareInterrupt + address: + EU: 0x20B52A8 + NA: 0x20B4968 + EU-ITCM: 0x1FF95E8 + NA-ITCM: 0x1FF95E8 + description: |- + Called whenever a hardware interrupt takes place. + + Returns immediately if the IME flag is 0 or if none of the devices that requested an interrupt has the corresponding Interrupt Enable flag set. + It searches for the first device that requested an interrupt, clears its Interrupt Request flag, then jumps to the start of the corresponding interrupt function. The return address is manually set to ReturnFromInterrupt. + The address of the function to jump to is read from the interrupt vector at the start of the DTCM region (0x27E0000). + This function does not return. + + No params. + - name: ReturnFromInterrupt + address: + EU: 0x20B5310 + NA: 0x20B49D0 + EU-ITCM: 0x1FF9650 + NA-ITCM: 0x1FF9650 + description: |- + The execution returns to this function after a hardware interrupt function is run. + + No params. - name: ShouldMonsterRunAwayVariationOutlawCheck address: EU: 0x20B6050 diff --git a/symbols/overlay10.yml b/symbols/overlay10.yml index c8862913..526775cd 100644 --- a/symbols/overlay10.yml +++ b/symbols/overlay10.yml @@ -130,6 +130,18 @@ overlay10: r0: Tileset ID return: True if the tileset ID corresponds to a background, false if it corresponds to a regular tileset + - name: InitTilesetBuffer + address: + EU: 0x22C3014 + NA: 0x22C26BC + description: |- + Initializes a buffer that contains data related to tilesets (such as dungeon::unknown_file_buffer_0x102A8). + + Calls AllocAndLoadFileInPack and DecompressAtNormalVeneer. + + r0: Pointer to the buffer to init + r1: Tileset ID + r2: Memory allocation flags - name: MainGame address: EU: 0x22C31E4 @@ -917,10 +929,20 @@ overlay10: description: The number of turns between passive poison damage. - name: LEECH_SEED_DAMAGE_COOLDOWN address: + EU: 0x22C5004 NA: 0x22C46AC length: NA: 0x2 description: The number of turns between leech seed health drain. + - name: THROWN_ITEM_HIT_CHANCE + address: + EU: 0x22C5008 + NA: 0x22C46B0 + length: + EU: 0x2 + NA: 0x2 + JP: 0x2 + description: Chance of a hurled item hitting the target (90%). - name: GEO_PEBBLE_DAMAGE address: EU: 0x22C500C diff --git a/symbols/overlay29.yml b/symbols/overlay29.yml index 7c5b62d9..0f22c25e 100644 --- a/symbols/overlay29.yml +++ b/symbols/overlay29.yml @@ -7547,6 +7547,18 @@ overlay29: r1: item ID r2: quantity r3: stickiness type (enum gen_item_stickiness) + - name: DoesProjectileHitTarget + address: + EU: 0x2348C20 + NA: 0x2348020 + description: |- + Determines if a hurled projectile will impact on a target or if the target will dodge it instead. + + Contains a random chance using THROWN_ITEM_HIT_CHANCE, as well as some additional checks involving certain items (Whiff Specs, Lockon Specs and Dodge Scarf), exclusive item effects (EXCLUSIVE_EFF_THROWN_ITEM_PROTECTION) or pokémon (Kecleon, clients, secret bazaar NPCs). + + r0: Monster that throws the item + r1: Target monster + return: True if the item impacts on the target, false if the target dodges the item. - name: CheckActiveChallengeRequest address: EU: 0x2349D4C