Merge pull request #247 from Cuyler36:ac_quest_talk_fj_init

Implement & link ac_quest_talk_fj_init.c
This commit is contained in:
Cuyler36
2024-02-09 06:17:54 -05:00
committed by GitHub
5 changed files with 386 additions and 17 deletions
+4
View File
@@ -434,6 +434,10 @@ ac_quest_manager.c:
.text: [0x80485508, 0x80487A78]
.data: [0x8068A520, 0x8068ADF8]
.bss: [0x812FC920, 0x812FC938]
ac_quest_talk_fj_init.c:
.text: [0x80487A78, 0x80488474]
.data: [0x8068ADF8, 0x8068AE40]
.bss: [0x812FC938, 0x812FCA68]
ac_rope.c:
.text: [0x804967A4, 0x80496AB8]
.rodata: [0x80644DB0, 0x80644DB8]
+10
View File
@@ -110,6 +110,16 @@ enum {
mSM_IV_OPEN_NUM
};
enum {
mSM_BD_OPEN_WRITE,
mSM_BD_OPEN_READ,
mSM_BD_OPEN_REWRITE,
mSM_BD_OPEN_WRITE_ISLAND,
mSM_BD_OPEN_READ_ISLAND,
mSM_BD_OPEN_NUM
};
typedef struct submenu_item_s {
mActor_name_t item;
u8 slot_no;
+347
View File
@@ -0,0 +1,347 @@
#include "ac_quest_talk_fj_init.h"
#include "m_common_data.h"
#include "m_msg.h"
enum {
aQMgr_FJ_TALK_STEP_SELECT_TALK,
aQMgr_FJ_TALK_STEP_HINT_OR_HINT,
aQMgr_FJ_TALK_STEP_HINT_OR_FJ,
aQMgr_FJ_TALK_STEP_HAND_REWARD,
aQMgr_FJ_TALK_STEP_GET_ITEM,
aQMgr_FJ_TALK_STEP_WAIT_BUTTON,
aQMgr_FJ_TALK_STEP_GET_ITEM_WAIT,
aQMgr_FJ_TALK_STEP_REWARD_TO,
aQMgr_FJ_TALK_STEP_LETTER_BEFORE,
aQMgr_FJ_TALK_STEP_SHOW_LETTER,
aQMgr_FJ_TALK_STEP_THANKS_LETTER_OPEN_MSG,
aQMgr_FJ_TALK_STEP_WAIT_NOTHING,
aQMgr_FJ_TALK_STEP_FINISH,
aQMgr_FJ_TALK_STEP_NUM
};
static int aQMgr_fj_get_my_msg(int base_msg, int looks) {
int msg_no = base_msg + looks * 2;
return msg_no;
}
static int aQMgr_actor_decide_fj_message_no(aQMgr_target_c* target, int msg_type) {
aQMgr_set_data_c* set_data_p = target->set_data_p;
return set_data_p->msg_start[msg_type];
}
static void aQMgr_fj_set_msg_no(QUEST_MANAGER_ACTOR* manager) {
int base_msg;
int msg_no;
if (manager->msg_category != aQMgr_MSG_KIND_NONE) {
manager->category_msg_no_start = aQMgr_actor_decide_fj_message_no(&manager->target, manager->msg_category);
}
base_msg = manager->category_msg_no_start;
if (base_msg != 15 && base_msg != 0) {
int looks = mNpc_GetNpcLooks(*manager->client);
msg_no = aQMgr_fj_get_my_msg(base_msg, looks);
}
else {
msg_no = base_msg;
}
manager->msg_no = msg_no;
manager->msg_category = aQMgr_MSG_KIND_NONE;
manager->category_msg_no_start = 0;
}
static int aQMgr_actor_check_to(QUEST_MANAGER_ACTOR* manager) {
ACTOR* client = *manager->client;
Animal_c* animal = ((NPC_ACTOR*)client)->npc_info.animal;
aQMgr_regist_c* regist = manager->regist;
int res = -1;
if (animal != NULL) {
int i;
for (i = 0; i < aQMgr_REGIST_NUM; i++) {
if (regist->quest_info != NULL) {
if (mNpc_CheckCmpAnimalPersonalID(&animal->id, &regist->to_id) == TRUE) {
res = i;
break;
}
}
regist++;
}
}
return res;
}
static int aQMgr_fj_check_own_quest(QUEST_MANAGER_ACTOR* manager) {
int regist_idx = aQMgr_actor_check_to(manager);
if (regist_idx != -1) {
mQst_base_c* quest_info = manager->regist[regist_idx].quest_info;
if (quest_info != NULL) {
if (quest_info->progress == 0 || quest_info->progress == 1) {
regist_idx = -1;
}
else {
mActor_name_t item = ((mQst_errand_c*)quest_info)->item;
if (item != EMPTY_NO) {
int idx = mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), item, mPr_ITEM_COND_QUEST);
if (idx == -1) {
regist_idx = -1;
}
else {
((mQst_errand_c*)quest_info)->pockets_idx = idx;
}
}
}
}
else {
regist_idx = -1;
}
}
return regist_idx;
}
static int aQMgr_get_select_hellow_no(QUEST_MANAGER_ACTOR* manager, int hour) {
static int select_msg_no[aQMgr_TIME_NUM] = { 0x003E, 0x003F, 0x0040, 0x0040 };
int time_idx = (*manager->get_time_kind_proc)(hour);
return select_msg_no[time_idx];
}
static void aQMgr_talk_fj_select_talk(QUEST_MANAGER_ACTOR* manager) {
lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time);
aQMgr_choice_c* choice = &manager->choice;
int regist_idx;
manager->mail_memory = NULL;
mMsg_Unset_LockContinue(mMsg_Get_base_window_p());
regist_idx = aQMgr_fj_check_own_quest(manager);
if (regist_idx != -1) {
aQMgr_regist_c* regist = &manager->regist[regist_idx];
if (regist->quest_info != NULL) {
if (regist->quest_info->quest_type == mQst_QUEST_TYPE_ERRAND && regist->quest_info->quest_kind == mQst_ERRAND_FIRSTJOB_SEND_LETTER) {
regist_idx = -1;
}
else {
choice->choice_ids[0] = 0x68;
choice->choice_ids[1] = aQMgr_get_select_hellow_no(manager, rtc_time->hour);
choice->choice_num = 3;
choice->talk_action = -1;
manager->talk_step = aQMgr_FJ_TALK_STEP_HINT_OR_FJ;
manager->regist_idx = regist_idx;
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_TARGET);
manager->target.quest_inv_item_idx = (*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_GET_ITEM_IDX);
}
}
}
if (regist_idx == -1) {
choice->choice_ids[0] = aQMgr_get_select_hellow_no(manager, rtc_time->hour);
choice->choice_ids[1] = 0x2F;
choice->choice_num = 3;
choice->talk_action = -1;
manager->talk_step = aQMgr_FJ_TALK_STEP_HINT_OR_HINT;
manager->regist_idx = regist_idx;
}
choice->choice_ids[2] = 0x16A + mQst_GetRandom(5);
manager->category_msg_no_start = 0x2A6;
mChoice_no_b_set(mChoice_Get_base_window_p());
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_MSG_NO);
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_CHOICE_STR);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_hint_or_hint(QUEST_MANAGER_ACTOR* manager) {
if (manager->choice.talk_action == 0 || manager->choice.talk_action == 1) {
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_CHANGE_TALK_NORMAL);
}
else {
manager->msg_category = aQMgr_MSG_KIND_NONE;
manager->category_msg_no_start = 0x254A;
manager->choice.talk_action = -1;
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_MSG_NO);
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
mMsg_Set_ForceNext(mMsg_Get_base_window_p());
}
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
}
static void aQMgr_talk_fj_hint_or_fj(QUEST_MANAGER_ACTOR* manager) {
if (manager->choice.talk_action == 0) {
mMsg_request_main_disappear_wait_type2(mMsg_Get_base_window_p());
manager->msg_category = aQMgr_MSG_KIND_COMPLETE_INIT;
aQMgr_fj_set_msg_no(manager);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_MSG_DISAPPEAR_WAIT;
manager->talk_step = aQMgr_FJ_TALK_STEP_HAND_REWARD;
mMsg_Set_ForceNext(mMsg_Get_base_window_p());
}
else if (manager->choice.talk_action == 1) {
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_CHANGE_TALK_NORMAL);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
}
else {
manager->msg_category = aQMgr_MSG_KIND_NONE;
manager->category_msg_no_start = 0x254A;
manager->choice.talk_action = -1;
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_MSG_NO);
mMsg_Set_ForceNext(mMsg_Get_base_window_p());
}
manager->choice.talk_action = -1;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_hand_reward(QUEST_MANAGER_ACTOR* manager) {
Submenu* submenu = manager->submenu;
int item_idx = manager->target.quest_inv_item_idx;
mSM_open_submenu_new2(submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_QUEST, item_idx, NULL, 1);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_HAND_ITEM_WAIT;
manager->talk_step = aQMgr_FJ_TALK_STEP_GET_ITEM;
}
static void aQMgr_talk_fj_get_item(QUEST_MANAGER_ACTOR* manager) {
if (manager->handover_item) {
manager->msg_category = aQMgr_MSG_KIND_COMPLETE_INIT;
manager->talk_step = aQMgr_FJ_TALK_STEP_GET_ITEM_WAIT;
mQst_SetItemNameStr(manager->handover_item, mMsg_ITEM_STR0);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_MSG_APPEAR_WAIT;
aQMgr_fj_set_msg_no(manager);
}
else {
manager->regist_idx = -1;
manager->target.free_data_p = NULL;
manager->msg_category = aQMgr_MSG_KIND_NONE;
manager->category_msg_no_start = 0x4AB;
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_MSG_NO);
}
mMsg_ChangeMsgData(mMsg_Get_base_window_p(), manager->msg_no);
mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p());
mMsg_Unset_LockContinue(mMsg_Get_base_window_p());
mMsg_Set_ForceNext(mMsg_Get_base_window_p());
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_get_item_wait(QUEST_MANAGER_ACTOR* manager) {
if (manager->target.quest_info.quest_kind == mQst_ERRAND_FIRSTJOB_DELIVER_AXE || manager->target.quest_info.quest_kind == mQst_ERRAND_FIRSTJOB_DELIVER_AXE2) {
manager->talk_step = aQMgr_FJ_TALK_STEP_WAIT_BUTTON;
}
else {
manager->talk_step = aQMgr_FJ_TALK_STEP_REWARD_TO;
}
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_NPC_HAND_WAIT_MSG_WAIT;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_wait_button(QUEST_MANAGER_ACTOR* manager) {
manager->talk_step = aQMgr_FJ_TALK_STEP_LETTER_BEFORE;
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_CHECK_BUTTON;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_reward_to(QUEST_MANAGER_ACTOR* manager) {
int item_idx = manager->target.quest_inv_item_idx;
int regist_idx = manager->regist_idx;
manager->regist[regist_idx].quest_info->progress = 0;
mNpc_ClearAnimalPersonalID(&((mQst_errand_c*)manager->regist[regist_idx].quest_info)->recipient);
mPr_SetPossessionItem(Common_Get(now_private), item_idx, manager->target.quest_item, mPr_ITEM_COND_NORMAL);
manager->msg_category = aQMgr_MSG_KIND_COMPLETE_END;
aQMgr_fj_set_msg_no(manager);
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_SET_NPC_TAKEOUT_ITEM);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_letter_before(QUEST_MANAGER_ACTOR* manager) {
mMsg_request_main_disappear_wait_type2(mMsg_Get_base_window_p());
mMsg_Set_LockContinue(mMsg_Get_base_window_p());
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_MSG_DISAPPEAR_WAIT;
manager->talk_step = aQMgr_FJ_TALK_STEP_SHOW_LETTER;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_show_letter(QUEST_MANAGER_ACTOR* manager) {
Submenu* submenu = manager->submenu;
ACTOR* client = *manager->client;
Animal_c* animal = ((NPC_ACTOR*)client)->npc_info.animal;
static Mail_c show_mail;
mMl_clear_mail(&show_mail);
mNpc_AnimalMail2Mail(&show_mail, &(*manager->memory)->letter, &(*manager->memory)->memory_player_id, &animal->id);
mSM_open_submenu_new(submenu, mSM_OVL_BOARD, mSM_BD_OPEN_READ, 0, &show_mail);
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_HAND_ITEM_WAIT;
manager->talk_step = aQMgr_FJ_TALK_STEP_THANKS_LETTER_OPEN_MSG;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_thanks_letter_open_msg(QUEST_MANAGER_ACTOR* manager) {
int regist_idx = manager->regist_idx;
manager->regist[regist_idx].quest_info->progress = 0;
mNpc_ClearAnimalPersonalID(&((mQst_errand_c*)manager->regist[regist_idx].quest_info)->recipient);
manager->msg_category = aQMgr_MSG_KIND_COMPLETE_END;
manager->talk_step = aQMgr_FJ_TALK_STEP_FINISH;
mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p());
aQMgr_fj_set_msg_no(manager);
mMsg_ChangeMsgData(mMsg_Get_base_window_p(), manager->msg_no);
mMsg_Set_ForceNext(mMsg_Get_base_window_p());
mMsg_Unset_LockContinue(mMsg_Get_base_window_p());
manager->sub_talk_state = aQMgr_TALK_SUB_STATE_WAIT;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
static void aQMgr_talk_fj_wait_nothing(QUEST_MANAGER_ACTOR* manager) { }
static void aQMgr_talk_fj_finish(QUEST_MANAGER_ACTOR* manager) {
(*manager->talk_common_proc)(manager, aQMgr_TALK_COMMON_CLEAR_TALK_INFO);
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), manager->msg_no);
}
typedef void (*aQMgr_FJ_TALK_PROC)(QUEST_MANAGER_ACTOR*);
extern void aQMgr_talk_first_job_init(QUEST_MANAGER_ACTOR* manager) {
static aQMgr_FJ_TALK_PROC talk_proc[aQMgr_FJ_TALK_STEP_NUM] = {
&aQMgr_talk_fj_select_talk,
&aQMgr_talk_fj_hint_or_hint,
&aQMgr_talk_fj_hint_or_fj,
&aQMgr_talk_fj_hand_reward,
&aQMgr_talk_fj_get_item,
&aQMgr_talk_fj_wait_button,
&aQMgr_talk_fj_get_item_wait,
&aQMgr_talk_fj_reward_to,
&aQMgr_talk_fj_letter_before,
&aQMgr_talk_fj_show_letter,
&aQMgr_talk_fj_thanks_letter_open_msg,
&aQMgr_talk_fj_wait_nothing,
&aQMgr_talk_fj_finish
};
int talk_step = manager->talk_step;
int choice_no = mChoice_Get_ChoseNum(mChoice_Get_base_window_p());
mChoice_Clear_ChoseNum(mChoice_Get_base_window_p());
manager->choice.talk_action = choice_no;
(*talk_proc[talk_step])(manager);
manager->talk_state = aQMgr_TALK_STATE_SUB;
}
+6 -6
View File
@@ -1103,7 +1103,7 @@ static void mBD_move_Obey(Submenu* submenu, mSM_MenuInfo_c* menu_info) {
mem_copy(board_ovl->dst_p->content.footer + footer_len_diff, t_footer_p, footer_len - t_footer_len);
}
if (menu_info->data0 != 3) {
if (menu_info->data0 != mSM_BD_OPEN_WRITE_ISLAND) {
mail_header->header_back_start = board_ovl->mail.content.header_back_start;
mem_copy(mail_header->header, board_ovl->dst_p->content.header, MAIL_HEADER_LEN);
mem_copy(mail_header->footer, board_ovl->dst_p->content.footer, MAIL_FOOTER_LEN);
@@ -1396,7 +1396,7 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c*
int len;
if (menu_info->proc_status == mSM_OVL_PROC_PLAY) {
if (menu_info->data0 == 3) {
if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND) {
mFont_SetLineStrings(
game,
mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER],
@@ -1463,7 +1463,7 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c*
else {
u8 tmp_header[MAIL_HEADER_LEN + PLAYER_NAME_LEN];
if (menu_info->data0 == 3 || menu_info->data0 == 4) {
if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND || menu_info->data0 == mSM_BD_OPEN_READ_ISLAND) {
mem_copy(tmp_header, mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER]);
len = board_ovl->lengths[mBD_FIELD_HEADER];
}
@@ -1529,7 +1529,7 @@ static void mBD_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info)
mBD_set_frame_dl(graph, menu_info, x, y, submenu->overlay->board_ovl);
if (menu_info->data0 == 1 || menu_info->data0 == 4 || submenu->overlay->board_ovl->first == FALSE) {
if (menu_info->data0 == mSM_BD_OPEN_READ || menu_info->data0 == mSM_BD_OPEN_READ_ISLAND || submenu->overlay->board_ovl->first == FALSE) {
(*submenu->overlay->set_char_matrix_proc)(graph);
mBD_set_character(submenu, game, menu_info, x, y);
}
@@ -1564,7 +1564,7 @@ static void mBD_board_ovl_init(Submenu* submenu) {
board_ovl->header_pos = mBD_HEADER_POS_PRE_NAME;
board_ovl->dst_p = (Mail_c*)menu_info->data2;
if (menu_info->data0 == 0) {
if (menu_info->data0 == mSM_BD_OPEN_WRITE) {
Mail_hs_c* mail_header = &Common_Get(now_private)->saved_mail_header;
board_ovl->first = TRUE;
menu_info->next_proc_status = mSM_OVL_PROC_PLAY;
@@ -1589,7 +1589,7 @@ static void mBD_board_ovl_init(Submenu* submenu) {
else {
mMl_copy_mail(&board_ovl->mail, (Mail_c*)menu_info->data2);
if (menu_info->data0 == 1 || menu_info->data0 == 4) {
if (menu_info->data0 == mSM_BD_OPEN_READ || menu_info->data0 == mSM_BD_OPEN_READ_ISLAND) {
menu_info->next_proc_status = mSM_OVL_PROC_WAIT;
}
else {
+19 -11
View File
@@ -3,6 +3,7 @@ import re
import argparse
from re import Match
from io import TextIOWrapper
import typing
from ruamel.yaml import YAML
from ruamel.yaml import CommentedMap
from ruamel.yaml import CommentedSeq
@@ -19,24 +20,24 @@ class SymbolInfo:
self.start_address = start
self.end_address = start + size
def get_address_range(self)->tuple[int, int]:
def get_address_range(self)->typing.Tuple[int, int]:
return self.start_address, self.end_address
class SliceSection:
section_symbol: SymbolInfo = None
symbols: list[SymbolInfo] = None
symbols: typing.List[SymbolInfo] = None
def __init__(self, symbol: SymbolInfo) -> None:
self.section_symbol = symbol
self.symbols = []
class SliceInfo:
sections: list[SliceSection] = None
sections: typing.List[SliceSection] = None
def __init__(self) -> None:
self.sections = []
def get_address_range(self)->tuple[int, int]:
def get_address_range(self)->typing.Tuple[int, int]:
start_address = self.sections[0].section_symbol.start_address
end_address = self.sections[-1].section_symbol.end_address
if len(self.sections[-1].symbols) > 0:
@@ -57,14 +58,14 @@ class Address_Sort_Entry:
#region Constants
# Dictionary for the offsets we need to apply to the addresses from the map
address_offset_map : dict[str, int] = {
address_offset_map : typing.Dict[str, int] = {
".text": int("0x803702A8", 16),
".rodata": int("0x80641260", 16),
".data": int("0x8064D500", 16),
".bss": int("0x8125A7C0", 16)
}
prioritized_addresses: list[str] = [".text", ".rodata", ".data", ".bss"]
prioritized_addresses: typing.List[str] = [".text", ".rodata", ".data", ".bss"]
script_dir: str = os.path.dirname(os.path.realpath(__file__))
root_dir: str = os.path.abspath(os.path.join(script_dir, ".."))
@@ -79,7 +80,7 @@ slice_boundary_format = "[{start_address}, {end_address}]"
#endregion
#region Sorting
def sort_by_starting_address(data: CommentedMap, address_sort_keys: list[str])->CommentedMap:
def sort_by_starting_address(data: CommentedMap, address_sort_keys: typing.List[str])->CommentedMap:
if len(data) <= 1:
return data
@@ -92,7 +93,14 @@ def sort_by_starting_address(data: CommentedMap, address_sort_keys: list[str])->
if address_key not in entry:
continue
starting_address = entry[address_key]
# Ensure starting_address is an integer
if isinstance(entry[address_key], int):
starting_address = entry[address_key]
elif isinstance(entry[address_key], CommentedSeq):
starting_address = entry[address_key][0]
else:
print('Address key %s is not an int or CommentedSeq! type: %s value: %s' % (address_key, type(entry[address_key]), entry[address_key]))
starting_address = 0
break
ordered_entries.append(Address_Sort_Entry(key, entry, starting_address))
@@ -169,7 +177,7 @@ def gather_symbols_for_section(address_offset: int, file_reader:TextIOWrapper, s
symbol.end_address = next_match_start_address
section.symbols.append(symbol)
def gather_tu_symbols(tu_name: str, map_path: str)->dict[str, SliceInfo]:
def gather_tu_symbols(tu_name: str, map_path: str)->typing.Dict[str, SliceInfo]:
gathered_symbols: dict[str, SliceInfo] = {}
tu_regex = re.compile(specific_tu_pattern_format.format(tu_name = tu_name))
@@ -200,7 +208,7 @@ def gather_tu_symbols(tu_name: str, map_path: str)->dict[str, SliceInfo]:
#endregion
#region Asset Slices Config File
def update_asset_slice_config(tu_name: str, binary_slice_file_path: str, asset_slice_file_path: str, symbols_for_tu: dict[str, SliceInfo]):
def update_asset_slice_config(tu_name: str, binary_slice_file_path: str, asset_slice_file_path: str, symbols_for_tu: typing.Dict[str, SliceInfo]):
if ".data" not in symbols_for_tu:
return
@@ -278,7 +286,7 @@ def update_asset_slice_config(tu_name: str, binary_slice_file_path: str, asset_s
#endregion
#region Slice Config File
def update_binary_slice_config(tu_name: str, slice_file_path: str, symbols_for_tu: dict[str, SliceInfo]):
def update_binary_slice_config(tu_name: str, slice_file_path: str, symbols_for_tu: typing.Dict[str, SliceInfo]):
yaml = YAML(typ="rt")
yaml.indent(mapping=4, sequence=4, offset=4)
data: CommentedMap = None