Skip to content

Match em_manager.cpp and em_archive.cpp - #170

Open
loserkidsblink wants to merge 1 commit into
doldecomp:mainfrom
loserkidsblink:port/em-archive
Open

loserkidsblink wants to merge 1 commit into
doldecomp:mainfrom
loserkidsblink:port/em-archive

Conversation

@loserkidsblink

@loserkidsblink loserkidsblink commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Header changes that affect BrawlHeaders users:

  • emManager::Entry is no longer a template; one class with a void* data pointer is shared by the enemy and archive tables.
  • Several emManager id/index params are now u32.
  • Read-only emManager/emArchive getters, emManager::isParent and Enemy::getEnemyKind are now const.
  • preloadArchive keeps its custom HeapType parameter in the non-matching declaration; the body allocates from Heaps::EnemyInstance like the game does.
  • sndSystem::fn_80073D08 is now isSoundGroupLoadFinished (const).
  • utArchiveManager::isLoaded is now int isLoaded(u32 id, u32* p2) const.

@decomp-dev

decomp-dev Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

Report for RSBE01_02 (7074404 - ee0632c)

📈 Matched code: 1.76% (+0.03%, +5340 bytes)
📈 Linked code: 1.62% (+0.03%, +5340 bytes)
📈 Matched data: 15.73% (+0.00%, +40 bytes)
📈 Linked data: 16.05% (+0.00%, +40 bytes)

✅ 42 new matches
Unit Item Bytes Before After
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::preloadArchive(gfArchive*, gfArchive*, gfArchive*, gfArchive*, emKind, bool) +372 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::createEnemy(emCreate*) +316 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::create(unsigned long, unsigned long, unsigned char) +260 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_archive emArchive::isComp() const +236 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_archive emArchive::emArchive(gfArchive*, gfArchive*, gfArchive*, gfArchive*, emKind) +216 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::emManager(unsigned long, emManager::Entry*, unsigned long, emManager::Entry*, unsigned char) +192 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEnemyCountFromKind(emKind) const +184 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getPreloadArchiveCountFromKind(emKind) const +184 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getPreloadArchivePtrFromKind(emKind) const +184 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::isCompArchive(int) const +172 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getPreloadArchiveCreateIdFromKind(emKind) const +172 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::~emManager() +160 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::forEachEnemy(unsigned long, bool (*)(int, int)) +160 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEnemyCreateIdFromAreaId(int) const +156 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_archive emArchive::remove() +152 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEntryEnemyPtrFromId(unsigned long) const +144 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::isCompArchiveAll() const +140 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEntryPreloadArchivePtrFromId(unsigned long) const +128 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::clearParentCallback(int, int) +124 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::removeEnemyAll() +120 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::removeArchiveAll() +120 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEmptyEnemyEntryIndex() const +116 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEnemyCount() const +116 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getEmptyPreloadArchiveEntryIndex() const +116 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::removeEnemy(int) +112 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::removeArchive(int) +112 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::Entry::set(void*, emKind, int, int) +104 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::Entry::clear() +100 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::getParentCreateIdFromId(unsigned long) const +100 0.00% 100.00%
sora_enemy/mo_enemy/sora_enemy/em_manager emManager::isEnemyExist(unsigned long) const +96 0.00% 100.00%

...and 12 more new matches

@loserkidsblink
loserkidsblink force-pushed the port/em-archive branch 4 times, most recently from 37f4c88 to d7deef1 Compare November 8, 2026 03:05
Port of the old local em-manager/em-archive drafts onto current main,
with their header dependencies (previously in BrawlHeaders) moved into
include/Brawl/Include.

sndSystem's 0x80073D08 is what emManager actually calls (verified
against the original REL relocation); upstream names 0x80073D18
isSoundGroupLoaded, so D08 keeps an address-based name for now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant