Moved AI attack BSS vars to C

This commit is contained in:
AnonymousRandomPerson
2025-09-21 22:56:51 -04:00
parent 78ff1a2a8f
commit ab7ef9fabb
5 changed files with 24 additions and 11 deletions

View File

@@ -2,12 +2,8 @@
.include "overlay_29_bss_0237CA18.inc"
.bss
.global AI_CAN_ATTACK_IN_DIRECTION
AI_CAN_ATTACK_IN_DIRECTION:
.space 0x8
.global AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS
AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS:
.space 0x8
; AI_POTENTIAL_ATTACK_TARGET_WEIGHTS is defined twice within AiConsiderMove, so it needs two separates globals until the function is matched.
#ifndef NONMATCHING
.global AI_POTENTIAL_ATTACK_TARGET_WEIGHTS
AI_POTENTIAL_ATTACK_TARGET_WEIGHTS:
.global AI_POTENTIAL_ATTACK_TARGET_WEIGHTS_2
@@ -16,6 +12,7 @@ AI_POTENTIAL_ATTACK_TARGET_WEIGHTS_2:
.global AI_POTENTIAL_ATTACK_TARGETS
AI_POTENTIAL_ATTACK_TARGETS:
.space 0x20
#endif
.global ov29_0237CA68
ov29_0237CA68:
.space 0x1

View File

@@ -12,6 +12,15 @@ struct ai_possible_move
s32 weight;
};
// Stores whether the AI can use an attack in each direction.
extern bool8 AI_CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS];
// Stores the directions that the AI can use an attack in. Parallel to AI_POTENTIAL_ATTACK_TARGET_WEIGHTS and AI_POTENTIAL_ATTACK_TARGETS.
extern u8 AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[NUM_DIRECTIONS];
// Stores the targeting weights for each direction the AI can use an attack in. Parallel to AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS and AI_POTENTIAL_ATTACK_TARGETS.
extern s32 AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS];
// Stores the target entity for each direction the AI can use an attack in. Parallel to AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS and AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS.
extern struct entity *AI_POTENTIAL_ATTACK_TARGETS[NUM_DIRECTIONS];
// Sets all values in AI_CAN_ATTACK_IN_DIRECTION to false.
void ResetAiCanAttackInDirection();
// The AI uses this function to check if a move has any potential targets, to calculate the list of potential targets and to calculate the move's special weight. The weight is calculated using WeightMoveWithIqSkills.

View File

@@ -3,8 +3,11 @@
#include "dungeon_mode.h"
// Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.
extern bool8 AI_THROWN_ITEM_DIRECTION_IS_USED[NUM_DIRECTIONS];
// Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.
extern u32 AI_THROWN_ITEM_PROBABILITIES[NUM_DIRECTIONS];
// Used to store the directions output by GetPossibleAiThrownItemDirections.
extern u32 AI_THROWN_ITEM_DIRECTIONS[NUM_DIRECTIONS];
// Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity).

View File

@@ -492,7 +492,6 @@ Overlay OVY_29
Object src/dungeon_ai_items.o
Object src/dungeon_ai_items_1.o
Object asm/overlay_29_data_02353700.o
Object asm/overlay_29_bss_0237CA18.o
Object asm/overlay_29_0230F02C.o
Object src/overlay_29_0230F810.o
Object asm/overlay_29_0230F840.o
@@ -524,6 +523,7 @@ Overlay OVY_29
Object asm/overlay_29_02318E70.o
Object src/inflict_status.o
Object src/dungeon_ai_attack.o
Object asm/overlay_29_bss_0237CA18.o
Object asm/overlay_29_0231A460.o
Object src/dungeon_ai_attack_1.o
Object asm/overlay_29_0231A7A0.o

View File

@@ -25,10 +25,14 @@
#include "overlay_29_0231ACAC.h"
#include "position_util.h"
extern bool8 AI_CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS];
extern u8 AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[NUM_DIRECTIONS];
extern s32 AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS];
extern struct entity *AI_POTENTIAL_ATTACK_TARGETS[NUM_DIRECTIONS];
bool8 AI_CAN_ATTACK_IN_DIRECTION[NUM_DIRECTIONS] = {0};
u8 AI_POTENTIAL_ATTACK_TARGET_DIRECTIONS[NUM_DIRECTIONS] = {0};
// AI_POTENTIAL_ATTACK_TARGET_WEIGHTS is defined twice within AiConsiderMove, so it needs two separate symbols in ASM until the function is matched.
#ifdef NONMATCHING
s32 AI_POTENTIAL_ATTACK_TARGET_WEIGHTS[NUM_DIRECTIONS] = {0};
struct entity *AI_POTENTIAL_ATTACK_TARGETS[NUM_DIRECTIONS] = {0};
#endif
void ResetAiCanAttackInDirection()
{