Skip to content

SMS decomp: harness progress through 2026-09-16 (squashed) - #189

Open
fjooord wants to merge 1 commit into
doldecomp:mainfrom
fjooord:sms-harness-progress-squashed
Open

fjooord wants to merge 1 commit into
doldecomp:mainfrom
fjooord:sms-harness-progress-squashed

Conversation

@fjooord

@fjooord fjooord commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Squashed snapshot of accumulated SMS harness work as of 2026-09-16, one commit on top of upstream 9c2f2f3b. CI: build and clang-format pass. The tree is identical to harness head 5177c94a on fjooord/sms:setup/sms-registration, where the full history stays (one revert(lint): and reland(lint): commit per target, git notes on the reverted originals). Supersedes #161.

What changed since the last push

  • Merged upstream through 9c2f2f3b (35 commits, CI: speed up formatting and check symbol regressions against the base #162 to GC2D/SunGlass: default the ctor colour so getNameRef stops inlining it #187 plus the toolchain bump to dtk v1.8.4, objdiff v3.8.1, wibo 1.1.0). In the final merge six files that conflicted were taken whole from upstream: Menu.cpp, GCLogoDir.cpp, MarDirectorEvent.cpp, MarNameRefGen_BossEnemy.cpp, MarNameRefGen_Enemy.cpp, MarioGamePad.cpp.
  • 820 further worker integrations since the previous snapshot aea424cd.
  • A source-fidelity audit found accepted integrations that reached their score with constructs no original developer would have written: hand-mangled extern "C" statics, hand-written vtable arrays, discarded literals, unused padding locals, guard-override macros, unmarked pragmas. Those rules are now enforced by the harness lint gate.
  • 104 integrations that fail the new lints were handled: 62 reverted (each revert(lint): commit names the failed rules and the target to requeue; git notes mark the original commits), 42 already superseded by the upstream merge. One transiently flagged definition (sFogOffColor) was restored because a later clean integration uses it.
  • 31 reland(lint): commits then restored the reverted data the way the original code would have spelled it: class statics declared in the owning headers (include/Enemy, include/MoveBG) and defined in map order, PCH string includes instead of hand copies, an inline destructor in FeetInv.hpp, and the FifoSetFog body. Fabricated header classes are marked as such.

Validation

  • Full Linux rebuild in a Daytona sandbox from the sandbox image: all 740 all_source objects compile, progress and report.json generate.
  • Versus the pre-cleanup report: matched code 40.92% to 40.73%, matched functions 8432 to 8395 of 12881, matched data 62.55% to 59.65%. Every change is inside the reverted units; nothing outside them moved. 17 sections and 1 function came back through the re-land; 63 sections and 50 functions remain below their pre-cleanup score and are the requeue set.
  • The cumulative delta against upstream scans at zero lint errors (49 review-tier warnings). Rebuilt in Daytona after the merge: 739 objects, 0 failures.
  • Symbol-order validation could not run: orig/GMSJ01/files/mario.MAP is not in the image or the checkout.

Review notes

  • Fabricated statics-only class declarations in include/Enemy and include/MoveBG carry a // fabricated marker; their layouts are unknown and only the map-verified statics are defined.
  • The requeue set (63 sections, 50 functions below their earlier score) is worked by the harness under the new lint gate; nothing in this PR depends on it.

Pending

🤖 Generated with Claude Code

Squash of the harness branch setup/sms-registration at 5177c94 onto
upstream main 9c2f2f3. The tree is identical to the harness head; only
the history is collapsed.

What is in it:
- Worker integrations accumulated since the previous snapshot, across
  Enemy, MoveBG, Map, Camera, NPC, GC2D, Player, System and MSound.
- A source-fidelity audit removed integrations that reached their score
  with constructs no original developer would have written (hand-mangled
  extern "C" statics, hand-written vtable arrays, discarded literals,
  unused padding locals, guard-override macros, unmarked pragmas). 62
  such integrations were reverted and 42 were superseded by upstream.
- The map-verified data behind those reverts was re-landed the way the
  original code spells it: class statics declared in the owning headers
  under include/Enemy and include/MoveBG and defined in map order, PCH
  string includes instead of hand copies, an inline destructor in
  FeetInv.hpp, and the FifoSetFog body. Fabricated header classes are
  marked as such.
- Upstream merged through 9c2f2f3; six conflicting files were taken
  whole from upstream (Menu, GCLogoDir, MarDirectorEvent,
  MarNameRefGen_BossEnemy, MarNameRefGen_Enemy, MarioGamePad).

Validation: full Linux rebuild in a Daytona sandbox at 3a5c585 (formatting and two upstream-symbol restores added afterwards; verified by CI), 739
objects, 0 failures; the delta against upstream scans at zero source-
fidelity lint errors. Matched code 40.72%, matched functions 8390 of
12881, matched data 59.65%.

The unsquashed history, with one revert(lint) and reland(lint) commit per
target and git notes on the reverted originals, remains on
fjooord/sms:setup/sms-registration.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@fjooord
fjooord force-pushed the sms-harness-progress-squashed branch from 5186ac6 to e571448 Compare September 17, 2026 03:57
@decomp-dev

decomp-dev Bot commented Sep 17, 2026

Copy link
Copy Markdown

Report for GMSJ01 (997f489 - e571448)

📈 Matched code: 40.74% (+0.69%, +24632 bytes)
📈 Matched data: 59.66% (+2.08%, +13296 bytes)

✅ 123 new matches
Unit Item Bytes Before After
mario/MSound/MSoundScene .bss +3076 5.54% 100.00%
mario/System/MarNameRefGen_NPC .rodata +528 50.39% 100.00%
mario/MarioUtil/PacketUtil FifoSetFog(_GXFogType, float, float, float, float, _GXColor) +341 1.16% 100.00%
mario/MarioUtil/PacketUtil FifoSetFogRangeAdj(unsigned char, unsigned short, _GXFogAdjTable*) +308 1.28% 100.00%
mario/System/CardManager TCardManager::setCardStat_(CARDFileInfo*) +268 53.89% 100.00%
mario/System/MarNameRefGen_NPC .data +176 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMareMManager::~TMareMManager() +148 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMareWManager::~TMareWManager() +148 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMonteMSpecialManager::~TMonteMSpecialManager() +132 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMonteWSpecialManager::~TMonteWSpecialManager() +132 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMareMBaseManager::~TMareMBaseManager() +132 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMareWBaseManager::~TMareWBaseManager() +132 0.00% 100.00%
mario/System/MarNameRefGen_NPC TLiveManager::~TLiveManager() +132 0.00% 100.00%
mario/Enemy/mameGesso TMameGesso::reset() +126 47.87% 100.00%
mario/System/MarNameRefGen_NPC TMonteMBaseManager::~TMonteMBaseManager() +116 0.00% 100.00%
mario/System/MarNameRefGen_NPC TMonteWBaseManager::~TMonteWBaseManager() +116 0.00% 100.00%
mario/System/MarNameRefGen_NPC TNPCManager::~TNPCManager() +100 0.00% 100.00%
mario/MoveBG/MapObjMonte .sdata +79 2.38% 100.00%
mario/GC2D/SelectMenu .rodata +77 79.12% 100.00%
mario/MoveBG/MapObjMamma .sdata +66 8.33% 100.00%
mario/MarioUtil/PacketUtil .sdata2 +56 0.00% 100.00%
mario/Player/MarioCollision TMario::floorDamageExec(const TMario::TEParams&) +53 76.20% 100.00%
mario/MoveBG/MapObjRicco .sdata +53 6.67% 100.00%
mario/MarioUtil/PacketUtil .data +48 0.00% 100.00%
mario/Strategic/question TQuestionManager::makeDL(JDrama::TGraphics*) const +47 84.23% 100.00%
mario/GC2D/ScrnFader @unnamed@::draw_wipe_box(const JDrama::TRect&, JUtility::TColor) +45 93.74% 100.00%
mario/Enemy/popo .sdata +42 13.33% 100.00%
mario/System/MovieDirector .data +41 78.72% 100.00%
mario/Enemy/chuuhana .sdata +29 11.76% 100.00%
mario/Enemy/bosstelesa .sdata +29 11.11% 100.00%

...and 93 more new matches

🥀 4 broken matches
Unit Item Bytes Before After
mario/System/MarNameRefGen .rodata -44 100.00% 98.54%
mario/System/MenuDir .rodata -17 100.00% 96.99%
mario/THPPlayer/THPPlayer THPPlayerInit -1 100.00% 99.86%
mario/System/MarDirectorLoadResource TMarDirector::loadParticleMario() -1 100.00% 99.99%
📈 212 improvements in unmatched items
Unit Item Bytes Before After
mario/System/MarNameRefGen_NPC TMarNameRefGen::getNameRef_NPC(const char*) const +2021 48.58% 99.94%
mario/MarioUtil/PacketUtil ShapePacketCallBackFunc(J3DCallBackPacket*, int) +1772 0.21% 91.74%
mario/Player/MarioSpecial TMario::wireRolling() +593 67.41% 97.56%
mario/GC2D/ConsoleStr TConsoleStr::startCloseWipe(bool) +566 55.14% 94.82%
mario/GC2D/ConsoleStr TConsoleStr::processReady(int) +558 53.44% 95.28%
mario/Player/MarioSpecial TMario::wireHanging() +540 59.84% 92.75%
mario/Camera/CameraDemo CPolarSubCamera::updateDemoCamera_(bool) +382 53.19% 98.08%
mario/Enemy/killer .rodata +331 0.00% 52.52%
mario/Camera/CameraBGCheck CPolarSubCamera::calcInHouseNo_(bool) +330 73.61% 94.25%
mario/Player/MarioSpecial TMario::wireWait() +318 66.05% 94.84%
mario/Map/MapWarp TMapWarp::watchToWarp() +268 66.36% 99.79%
mario/System/MarNameRefGen_Map TMarNameRefGen::getNameRef_Map(const char*) const +255 69.01% 99.95%
mario/System/MarNameRefGen_Map .rodata +237 44.06% 96.88%
mario/Enemy/graph TGraphWeb::getNearestPosOnGraphLink(const JGeometry::TVec3<float>&) const +193 43.88% 71.04%
mario/Camera/cameralib CLBRotatePosAndUp(short, short, const JGeometry::TVec3<float>&, const JGeometry::TVec3<float>&, const JGeometry::TVec3<float>&, JGeometry::TVec3<float>*, JGeometry::TVec3<float>*) +180 71.47% 87.19%
mario/Camera/CubeManagerBase TCubeManagerBase::TCubeManagerBase(const char*, unsigned char) +180 57.71% 99.89%
mario/GC2D/SelectMenu TSelectMenu::initData(unsigned char, JKRArchive*, TSelectShineManager*, TSelectDir*) +177 92.01% 96.37%
mario/GC2D/BoundPane TBoundPane::update() +173 54.95% 74.24%
mario/NPC/NpcParts TNpcParts::TNpcParts(unsigned long, const J3DGXColorS10*, TBaseNPC*) +150 76.45% 90.42%
mario/Enemy/enemyAttachment TEnemyAttachment::bind() +137 78.54% 99.96%
mario/Enemy/graph TGraphTracer::calcSplineSpeed(float) +132 71.67% 92.82%
mario/Enemy/spider TSpider::bind(TLiveActor*) +126 83.88% 92.95%
mario/Strategic/ObjModel TMActorKeeper::createMActor(const char*, unsigned long) +122 60.70% 81.17%
mario/Enemy/enemyMario TEnemyMario::initEnemyValues() +85 94.73% 96.64%
mario/Map/MapWire TMapWire::release() +72 76.97% 83.61%
mario/Player/MarioReceiveMsg TMario::receiveMessage(THitActor*, unsigned long) +68 99.21% 99.97%
mario/Map/MapMakeData TMapCollisionBase::updateTrans(const JGeometry::TVec3<float>&) +65 83.69% 99.71%
mario/MSound/MSoundSE MSoundSESystem::MSoundSE::startSoundActorWithInfo(unsigned long, const Vec*, Vec*, float, unsigned long, unsigned long, JAISound**, unsigned long, unsigned char) +62 82.94% 92.80%
mario/NPC/NpcWalkTurn TBaseNPC::execWalk(bool) +61 89.44% 95.63%
mario/Camera/CubeManagerBase TCubeManagerArea::isInAreaCube(const Vec&) const +61 81.37% 99.94%

...and 182 more improvements in unmatched items

📉 10 regressions in unmatched items
Unit Item Bytes Before After
mario/System/MarNameRefGen TMarNameRefGen::getNameRef(const char*) const -25 99.98% 99.64%
mario/GC2D/SelectMenu TSelectMenu::perform(unsigned long, JDrama::TGraphics*) -19 90.75% 90.45%
mario/System/MarDirectorSetupObjects .rodata -16 98.82% 97.21%
mario/System/MarDirectorSetupObjects TMarDirector::setupObjects() -8 97.40% 97.30%
mario/System/MarDirectorLoadResource TMarDirector::loadResource() -4 99.96% 99.57%
mario/MoveBG/MapObjPlane TMapObjPlane::calcNrm(int, int) -4 55.34% 55.04%
mario/System/MarDirectorLoadResource TMarDirector::loadParticle() -3 99.79% 99.63%
mario/System/MenuDir TMenuDirector::direct() -1 96.30% 96.28%
mario/Map/MapWire TMapWire::move() -1 84.27% 84.11%
mario/System/MenuDir TMenuDirector::rsetup() 0 99.38% 99.36%

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