summaryrefslogtreecommitdiff
path: root/mm/src/code
AgeCommit message (Collapse)Author
2025-09-16Player Docs: FocusActor and Lock-On Cleanup (#1711)engineer124
* focus actor docs * small cleanup * brackets * remaining lock-on docs * more cleanup/docs * more reticle docs * oops
2025-09-16Player Docs: Misc Rotation (#1710)engineer124
* rot docs * comment * diff * spacing
2025-09-16Colliders Sync Cylinders (#1709)Derek Hensley
2025-09-16Player "Hostile" Docs (#1706)engineer124
* actor flag hostile * player hostile
2025-09-16Colliders Sync JntSphere (#1700)Derek Hensley
* JntSphere * Format * PR review
2025-09-15Include functions.h in z_fbdemo_circle.cEblo
2025-09-15InitVars -> Profile (#1697)Derek Hensley
* ActorProfile * EffectSsProfile * TransitionProfile * variables.txt
2025-09-15Colliders Sync ColliderElement (#1698)Derek Hensley
2025-09-15Player: Document "WaitForPutAway" (#1694)engineer124
* import OoT docs * cleanup * carry actor * more cleanup * PLAYER_STATE1_CARRYING_ACTOR
2025-09-15Colliders Sync General Clean (#1693)Derek Hensley
* General cleanup * General colliders
2025-09-15Revamp "AnimationContext" Docs, now called "AnimTaskQueue" (#1692)engineer124
* Import Oot Docs * cleanup * more cleanup * cleanup * small thing * singular
2025-09-15Misc Clean (#1680)Derek Hensley
* vramu32 in Overlay_Relocate * Actor_SetColorFilter args * Effect Hitmark enum * Actor_WorldToActorCoords * Some fault clean up * contoller.h * macros.h no longer needs stdint.h
2025-09-15Fixup actor audio flags docs (#1682)Dragorn421
* Fixup actor audio flags docs * format
2025-09-15Update Room Documentation (#1678)mzxrules
* Implement Room Documentation * nit * Resolve Dragorn fixes (OoT) * Resolve Fig suggestions, fix comment wording (OoT) * hensldm nit
2025-09-15Document garbage data on the on-screen clock. (#1648)Anghelo Carvajal
* z_parameter clock bug * Rename `AVOID_UB` to `PRESERVE_UB` * revert PRESERVE_UB * format * fix
2025-09-15Another General Cleanup (#1651)Derek Hensley
* add z64player.h include to z_player.c * NULL check in func_80AEE374 * Couple formating things * parameter R_PICTO_PHOTO_STATE * Remove COLPOLY_NORMAL_FRAC * DynaPolyActor_Init transformFlags * Float in ObjDriftice_Init * aspMainStack * Add gbi defines to m2ctx * Add GBI_DEFINES to COMMON_DEFINES in makefile instead of duplicating it * Add version to build include for m2ctx * Invadepoh includes * Sort calc_bss includes like makefile
2025-09-15More General Cleanup (#1658)Derek Hensley
* gDs2nEyeTexAnim * sEnMm2EmptyDL * object_um_Matanimheader_007D10 * object_mnk_Matanimheader_019A20 * gTurtleEmpty2TexAnim * object_iknv_obj_Matanimheader_0113E0 * object_botihasira_Matanimheader_001A48 * gTwinmoldEmptyTexAnim * gBeaverYoungerBrotherEmptyTexAnim * gNwcEyeTexAnim * gTwinmoldEmptyTex1Anim gTwinmoldEmpty2TexAnim * gGyorgEmpty1TexAnim gGyorgEmpty2TexAnim * gBurlyGuyEmpty1TexAnim gBurlyGuyEmpty2TexAnim * gKotakeEyeTexAnim * gDmZl4EmptyTexAnim * object_cs_Matanimheader_00F6D4 * gAnju1UnusedTexAnim * Empty blobs * EnKusa_IsUnderwater * IsUnderwater functions * s on static variable names in col check * scene_texture_01_Tex_002D40 * object_ds2_Tex_0030D8 object_ds2_Tex_0034D8 object_ds2_Tex_0038D8 * object_gk * undefined_syms * object_fall2_Matanimheader_005CF0 * gTwinmoldEmpty1TexAnim typo
2025-09-15Include functions.h in speed_meter.cEblo
2025-09-15Revert some HUD editor changes, update signaturesEblo
2025-09-15Correct seqId size in header, fix playctx b buttonEblo
2025-09-14`z_parameter.c`: remaining functions, do action documentation, gfx cleanup ↵Tharo
(#1652) * Parameter last functions Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Documentation for do actions and various gfx * Suggested changes * f prefix for texture scale numbers * Player_SetBButtonAmmo --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
2025-09-14Another round of port cleanup and fixesEblo
2025-09-14Add a `z64play.h` header (#1646)Anghelo Carvajal
* z64play.h * Move macros, functions and variables to header * cleanup * Reduce needed headers on z_collision_check * Change play functions to take PlayState * Move `Actor_ProcessInitChain` to `ichain.h` * format * Update src/code/z_play.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Add macros.h to sys_math3d.c * Rename SequenceContext to SceneSequences --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
2025-09-14Animation Cleanup: En_T* (#1522)engineer124
* anim T cleanup * more cleanup * brackets and floats * small thing * more floats * fix name * fix * format --------- Co-authored-by: angie <angheloalf95@gmail.com>
2025-09-14Clean up circle tex and gZeroVec3f/gZeroVec3sEblo
2025-09-14z_map decompiled (#1032)mzxrules
* First batch of functions * more ok * z_map_data OK * More OKs, MinimapList ZAPD breaking change * func_80103A58 improvements, more OK * func_80106D5C and func_801091F0 decomped * func_801031D0 decomped and some fixes * house cleaning, more OKs more decomp * Even more OKs * func_80105C40 almost OK, more OKs * func_80108AF8 OK and more * All functions attempted * func_8010534C OK * Start documentation, rename DoorCtx * More OKs, split map_data.data, more doc * incremental clean-up, more function names * more function names * func_801068FC OK * old uncommitted changes * minor tweaks * implement easy fixes * more fixes * z_map_disp OK, implement more suggestions * delete utility program * migrate data * TransiActor ->TransitionActor * Major documentation pass * first pass of changes * warning fix attempt, revert ZFile.cpp * Fix FAKE match * Easy fixes * implement gDPLoadTextureBlock_Runtime * z_demo bss patch * Extract white square texture * Implement more suggestions * rework MapIndex/DungeonIndex * revert dungeonSceneIndex -> mapIndex in some spots, implement suggestions * more suggestions * minor nits * fix #include
2025-09-14`sys_math3d.c` Decompiled and Mostly Documented (#1450)engineer124
* Use matched sys_math3d functions by Tharo Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> * kinda match some unattempted functions * move sys_math3d function declarations to z64math.h * Rename some simple functions * Take matched Math3D_LineVsLineClosestTwoPoints from OoT * minor fixes to make stuff actually equivalent * func_8017FB1C * format * minor cleanup * Math3D_PointOnDirectedLine * func_8017FB1C documentation Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> * Remove actorfixer * fix merge * Apply renames * more cleanup * bss cleanup * match Math3D_CylVsLineSeg * WIP * OK * small cleanup * Remove macros.h from sys_math3d * Small cleanup * Some more small clean up * cleanup and docs * cleanup * PR Review * cleanup * fix merge * fix merge * merge main * fix bss * bss * fix * PR Review * bss fix * Merge main * Fix bss * Fix merge * Add zero vecs to sys_math3d * Format * namefixer run --------- Co-authored-by: angie <angheloalf95@gmail.com> Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
2025-09-14Msgevent OK (#1637)Derek Hensley
* Decompiled, some commands still unnamed * Use full weekevent reg names * Fix func_8094E69C * Fix Player_GetMask * Eventinf, mask worn, and item action argument formatting * decimal rupees * Times (day, hours, minutes) as decimal * msgEventScriptPos * Callbacks * Name final commands * Enum * Arrays * functions * Small cleanups * Clean up actors * Remove event from some variable names to make them shorter * Some more function renames * newline * Missed a few unks in commands * Update functions.txt * PlayerMask * MSGMODE_PAUSED * Script time macros * EnSob1_GetWelcome default * Whole bunch of renames * Format * Add CMD to commands * Update code_functions * structs for size * z64scripts.h * MsgEventCallback -> MsgScriptCallback * format * MsgEvent_RunScript stop * Remove cmd handler comment * cmd -> script in MsgEvent_RunScript --------- Co-authored-by: Thar0 <17233964+Thar0@users.noreply.github.com>
2025-09-14Fix LensMode Names (#1643)inspectredc
2025-09-14General cleanup (#1636)Derek Hensley
* totalLoadedActors comparision * OBJMINE_PARAMS * Sort z64.h header includes * MapSelect_LoadConsoleLogo * Combine notebook tables into 1 * TGSw clean up
2025-09-14c_keyframe.c decompiled and documented (#1630)Tharo
* 2 non-matching * 1 function left Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Fully matching Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Documented, has bss reordering issues * Fixes * Apply suggestions * Format * Re-add cast oops * Remove != 0 for override and transform limb draws, format --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
2025-09-14Missed an identifier renameEblo
2025-09-14EnInvadepoh (Aliens, UFO, Invasion Handler, etc.) OK and documented (#1614)Tom Overton
* deimplementation complete * newlines * match * data import * back port cleanup changes * stuff * naming and such * all funcs provisionally named * more stuff * merge * Fix merge issues * begin cleanup * Use constants for all face animation data * Use THIS like almost every actor does * Change "Light Ball" to "UFO" * Rename the alien types * EnInvadePoh -> EnInvadepoh * Rename the types * Rename some Twinmold stuff * ConfusedRomani -> SilentRomani * Fix stack size issues with EnInvadepoh_Cremia_Init * Move a struct out of the header to where it belongs * Some header cleanup and struct names * Name remaining struct vars * Some more struct var renames * Finish reviewing the struct var names * Rename most of the interactInfo stuff * Consistency * Remove unused union * Define EN_INVADEPOH_LIMB_MAX like EndingHero6 does * Fix header * Update functions.txt and variables.txt * Create macros for accessing spawn time and kill count * Some defines * Some minor comments and cleanup * Rename some functions * Comments for those three functions * Draw function cleanups * Some damaged and dead cleanup * Death scale stuff * Good chunk of alien functions * Invasion state naming * Weekeventreg naming * Happy with >20% of functions now * A couple more functions * More consistent names for BSS variables * Some Init cleanup * Happy with 30% of the functions now * Finish the abductors * Some random functions to get the functions I'm happy with >1/3rd * Use `InitPath` for everything * UFO functions done, >40% functions I'm happy with * Do a lot of work on InvasionHandler action funcs * Finish invasion handler code * InitVars * Rename the "closest alien" stuff to "closest alien threat" * Finish most of the dog functions * Lots of small stuff here and there * Finish documenting the dog bug * Document `EnInvadepoh_Dog_IsCloseToPath` * `EnInvadepoh_Dog_MoveAlongPath` and other fixes * Simple comment for `EnInvadepoh_Dog_Move` * Various path functions, finish dog * Consistently use "SetMatrixTranslation" * Change all the angleToPlayer stuff to pitch/yaw * Some RewardRomani functions * Finish RewardRomani * Finish Night1Romani and BarnRomani, >75% of functions done * Some minor stuff * Document bug * Finish all of SilentRomani minus the Idle functions * Finish EnInvadepoh_SilentRomani_Idle * Finish Night3Cremia * Finish Night3Romani * Finish `EnInvadepoh_Ufo_SpawnSparkles` * Finish some library functions * Finish the alien pathing stuff * Finish Romani path stuff * Finish all non-InteractInfo stuff * InteractInfo -> ModelInfo * Create a `EnInvadepohFaceAnimBase` struct * Name some of the animation data * Switch to `Chained`/`ChainedDelay` and do some other cleanup * Name all of the animation data * Finish documenting and cleaning up the face animation functions * Some comments at the top of the file * Clean up forward declarations * Clean some stuff up to the ModelInfo functions * Fix build * Move the animation data around so all the ModelInfo functions are adjacent * Review * Use `CLOCK_TIME_MINUTE` in `EnInvadepoh_Alien_PathComputeProgress` * Respond to some of Anghelo's review * Update comment on spawn time macros explaining what indices are usable * Create a `DEATH_SCALE` define * `WEEKEVENTREG_RECEIVED_MILK_BOTTLE` -> `WEEKEVENTREG_RECEIVED_ALIENS_BOTTLE` * Forgot to do the bomber's notebook stuff too * parallelogram -> rectangle * Respond to engineer's review * Slight spacing fix --------- Co-authored-by: petrie911 <petrie911@users.noreply.github.com> Co-authored-by: petrie911 <pmontag@Monday.localdomain> Co-authored-by: angie <angheloalf95@gmail.com> Co-authored-by: engineer124 <engineer124engineer124@gmail.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
2025-09-14More weekeventregs naming for things related to receiving items (#1617)Tom Overton
* More weekeventregs naming for things related to receiving items * `WEEKEVENTREG_OBTAINED_GREAT_SPIN_ATTACK` -> `WEEKEVENTREG_RECEIVED_GREAT_SPIN_ATTACK`
2025-09-14`ovl_En_Door` docs pass (#1603)Anghelo Carvajal
* DoorScheduleResult * actionVar * DOOR_DL_ * enums * ENDOOR_TYPE_SCHEDULE and related stuff * Name some functions and start figuring out stuff * defines * start documenting schedules * Name Inn doors * More door schedule naming * ajar * Name remaining schedule types * parameters diagram and some cleanups * Name renaiming types * format * rename some schedules * Use more static_assert * name anims * yeet unrelated stuff * requestOpen * Yeet DoorScheduleResult * whoops * stuff i missed * Update src/overlays/actors/ovl_En_Door/scheduleScripts.schl Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Update src/overlays/actors/ovl_En_Door/z_en_door.h Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Update src/overlays/actors/ovl_En_Door/z_en_door.h Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * review * Update src/overlays/actors/ovl_En_Pm/z_en_pm.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Update src/code/z_sub_s.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * review * FindScheduleDoor --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
2025-09-13Name a lot of the weekeventregs for when the player receives a Heart Piece ↵Tom Overton
(#1615)
2025-09-13Mayor Dotour (ovl_en_dt) OK and documented (#1607)Jeff Padgham
* EnDt deecomp first pass, two nonmatching * Some cleanup, got the big boy matching * Some light cleanup, documenting blinking behaviour * Fixed last non-matching with some permuter silliness * Decompilation complete * Mayor documentation, first pass * Updating some unknown vars in baisen * Added an enum for mayor's cutscene state * Formatting pass for mayor * Cleaning up unk var in mayor meeting method * Some cleanup and changes based on PR feedback * Another cleanup and fix pass based on PR feedback * Updated mayor event flags according to their usage * All the parentheses * Another round of PR feedback cleanup * Having another crack at naming/cleanup based on PR feedback * Renaming animation symbols * Fixing broken references in other actors from anim rename --------- Co-authored-by: GinNoOokami <noreply>
2025-09-13Introduce `z64pause_menu.h` header (#1505)Anghelo Carvajal
* z64pause_menu.h * move functions and variables * Move PauseMenuPage * move stuff that seems public to the new header * KALEIDO_OVL_MAX * bss * review * IS_PAUSED * format * add argument to pause macros * Update include/z64pause_menu.h Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * bss * More IS_PAUSED I missed * early returns * bss * empty commit to trigger GHA * bss * bss * bss * includes * bss --------- Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
2025-09-13Misc Cleanup 2 (#1521)engineer124
* begin cleanup * more cleanup * more cleanup * more cleanup * more cleanup * more cleanup * fake matches * more cleanup * more cleanup * small thing * PR Review * PR Review
2025-09-13Clean2 (#1605)Derek Hensley
* AnimationContext_Update * TransitionTile_InitGraphics * disasm files * gPlayerFormItemRestrictions -> code_8012EC80 * fix * Extract gCircleTex * Const fixes * gPlayerFormItemRestrictions suggestions * Setup_InitRegs * z_inventory
2025-09-13Document OoB in z_message_nes (#1537)Garrett Cox
2025-09-13BossHakugin (Goht) OK and documented, EnHakurock documented, other assorted ↵Tom Overton
documentation (#1599) * Fix struct * 20/79 OK * BossHakugin_Draw OK * func_80B0D69C OK * func_80B0D2B8 OK * func_80B0D750 OK * Shadow function docs * Fix some non-matchings * Apparently this matches now? It didn't before * OverrideLimbDraw OK * BossHakugin_PostLimbDraw * Animation Cleanup: En_G* (#1395) * wip * more cleanup * more cleanup * one more thing * one more default case * missed brackets * PR Review * add more matches and fill stuct * 3 more Draw functions * func_80B0E5A4 * Finshed the Draw functions * Small cleanup * Most of the death-handling code done * more matching * functions * Goht collab (#9) * Animation Cleanup: En_G* (#1395) * wip * more cleanup * more cleanup * one more thing * one more default case * missed brackets * PR Review * z_message_nes (1 NON_MATCHING) (#1394) * Bring over progress * Some docs * scratch urls + format * Fixes * Match Message_DrawTextNES * String macros * color structs * Document object_mk (#1389) * Updated object_mk animation, limb, and skeleton names * Updated object_mk texture and DList names * Added comment to object_mk.xml * Remove "ing" from Anim names Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update z_en_mk.c to not use "ing" in names * Running formatter --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Player Docs: Initial framework for "Action Change Lists" (#1397) * copy fig docs * adjust wording * another fix * fix bool * PR Suggestion * Animation Cleanup: En_H* (#1399) * begin H * more cleanup * Animation Cleanup: En_I* (#1400) * cleanup I * oops * Start Player Item Docs (#1396) * Copy Fig Docs * small cleanup * ItemChangeType comment * bool * item change comments * PR Review * rm comments * Animation Cleanup: En_K* (#1402) * cleanup k * one more name * Animation Cleanup: En_J* (#1401) * cleanup J * small fix * functions --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> Co-authored-by: Zach North <zrnorth@gmail.com> Co-authored-by: petrie911 <pmontag@Monday.localdomain> * hotfix * all functions decomped * all functions decomped * Now with more data * small fix * another small fix * ok last small fix I swear * cleanup * func_80B0A8C4 OK * func_80B0D9CC OK * Use generated reloc for Goht + remove Goht's undefined_syms * Bodyparts + other clean up * cleanup * oops * fix merge * begin docs * fix merge * cutscene docs * effects docs * small docs * Document colliders * Odds and ends in the struct * Name some functions * Name two functions * Some action functions and other odds and ends * Name the lightning segments and electric ball functions correctly * Names and other cleanup * Start on hakurock + more cleanup * Name all hakurock functions * Name hakurock effects + create a GET_TYPE macro for it * Finish documenting Hakurock * Name one more function in BossHakugin * Name a few more things * Name a lot of struct vars * Wall-related stuff * Fix some fake matches * Name a couple more struct vars * Document some more of the struct * Name the limb flag stuff * Name the last unnamed struct vars * Name the horn colliders correctly * Some initial work on documenting data * Some function documentation * A couple of cleanups * Finish documenting BossHakugin_UpdateBaseRot * Name BossHakugin_SetLightningSegmentColliderVertices * Document BossHakugin_AddLightningSegments * Document BossHakugin_RunUpdateCommon and related functions * Document BossHakugin_AddMalfunctionEffects * Document BossHakugin_StepVectorToTarget * Rename to BossHakugin_StepVector * Finish documenting BossHakugin_AddMalfunctionEffects for now, might come back later though * Document BossHakugin_UpdateSubCam * Document BossHakugin_Thaw * Document BossHakugin_ChargeUpAttack * Some scattered docs * Finish documenting the top "library" functions * Document intro cutscene functions * Document running and charging * Document downed * Document throwing * Document remaining non-death action functions * Document most of the death cutscene * Get started on documenting crushing rocks * Separate out the crushing rocks into their own struct * Document the ExplosionLimbHideInfo * Finish documenting BossHakugin_DeathCutsceneCrushedByRocks * Almost done with rocks I think * Port over Odolwa shadow documentation * Finish documenting draw functions * Finish documenting BossHakugin_Update * Name variables in BossHakugin_UpdateElectricBalls * Document BossHakugin_CheckForBodyColliderHit * Finish documenting BossHakugin_UpdateDamage * I've convinced myself these names are fine * Almost finish documenting every update function * Remove TODOs from the header * Finish documenting the C file * Delete duplicate define * Finish variables.txt for Goht * Undo change that desync'd z_eff_ss_fhg_flash.h from other effect headers * Missed a THIS * Some low-hanging review responses * Add comment explaining something in BossHakugin_ShouldWait * Match BossHakugin_SpawnLargeStalactiteWalls using a for-loop * Create GOHT_ELECTRIC_BALL_COUNT_MAX constant * vector -> norm and targetVector -> targetNorm * Add TODO comments for dynamic shadow functions --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> Co-authored-by: Parker B <20159000+jpburnett@users.noreply.github.com> Co-authored-by: petrie911 <pmontag@Monday.localdomain> Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> Co-authored-by: Zach North <zrnorth@gmail.com> Co-authored-by: engineer124 <engineer124engineer124@gmail.com>
2025-09-13Animation Cleanup: En_S* (#1517)engineer124
* cleanup * more cleanup * anim S cleanup * fix another function * missed one * missed another small thing * oops
2025-09-13Clean up for messages and "this"Eblo
2025-09-13General Cleanup (#1529)Derek Hensley
* Cleanup * vi define cleanup * kdebugserver * osmotor * Remove sqrtf.c * Move osFlash out of libultra * PadUtils_Destroy * BOOT_ADDRESS_ULTRA * Fault * Format * viconfig.h * More small cleanups * gfx cleanup * Format * Forgot to save * variables.h * dListTable -> dListSides * Fix header includes
2025-09-13Skybox Docs (#1534)Derek Hensley
* xml * Docs * 0s
2025-09-13Use more `TRUNCF_BINANG` for f32 -> s16 casts (#1503)engineer124
* TRUNCF_BINANG * brackets * extra cast
2025-09-13Animation Cleanup: En_R* (#1516)engineer124
* begin R * finish anim R * cleanup * small adj * cleanup * CS_STATE_IDLE * CS_ID_NONE * more cleanup * sBssPad * angles * sneak in small fix * small fix
2025-09-13Split effect headers and a bit of cleanup (#1482)Anghelo Carvajal
* split * bss * z64eff_ss_dead.h * clean eff_blure * eff_shield_particle cleanup * tire?mark * and more cleanup * format * forgot to remove this * review * EffectBlureDrawMode enum * review * review * bss
2025-09-12Revert "Organize `libc64` files (#1492)"Eblo
This reverts commit e47a7050faf345ab2f220bfce58effd2590b9e5e.