The soStatusModuleImpl is an object that is found within the instantiated fighter object at runtime. You can actually see the definition for it in the sora_melee module:
(
I guess I should have mentioned that I've documented known methods using single index values because it's difficult to determine the method offset using two index values.)
There's not much point in analyzing the declaration itself unless you want to understand what a particular function does. The real power instead lies in being able to know what function is being called by a given chunk of assembly code. Knowing the broader implications of a function call can go a long way in understanding what that particular chunk of code does.
As for the soArticleMediatorImpl objects, here's what I've found out so far:
soArticleMediatorImpl:
Method[0][0] finalizer (r3=this, r4=size)
Method[0][1] create_article (r3=this, r4=article_id, r5=Fighter.soModuleAccessor)
Method[1][0] soArticleOperator_Method[0][0]_thunk
Method[1][1] soArticleOperator_Method[1][8]_thunk
Method[1][2] clear_article_instances? (r3=this)
Method[1][3] unk (r3=this, r4=Fighter.soModuleAccessor, r5=article_id)
Method[1][4] unk (r3=this, r4=Fighter.soModuleAccessor, r5=article_id)
Method[1][5] unk (r3=this, r4=article_id)
Method[1][6] get_article_count (r3=this)
Method[1][7] unk (r3=this, r4=unk)
Method[1][8] find_article_instances? (r3=this, r4=unk, r5=unk)
There's a bunch of interesting stuff here.
Method[0][1] - the create_article method is used when creating an instance of an article. You may have already found this out, but the start of the function simply branches to a different block of the same function according to the article_id value it is being called with. Whenever you use the GenerateArticle PSA command, this function is likely the one that gets called in the end.
Methods [1][0] and [1][1] are Thunk methods like I discussed in my last post. These methods simply adjust the "this" pointer according to the required type and call a different function.
Method[1][2], when called iterates over all existing instances of all article types and calls a couple of their functions. For now, I'm going to guess that this is used to clear all currently existing instances.
Methods [1][3], [1][4] and [1][5] all have similar formats to the create_article method in that the start of the method branches according to the article id passed to it. I'm not sure what these methods are for, but they all seem to iterate over all existing instances of the selected article type.
Method[1][6] will retrieve the number of available articles for that character (
however, the soArticleMediator object always implements enough space for 15 articles).
The last two methods are unknown, but I think Method[1][8] is used when you want to retrieve an existing instance of an article.
Not much progress on the ftStatusUniqProcess objects though. They seem to be pretty tough to crack.