From 8185d87f855baff0d55d0e3ffc1a3cbdcfc4b5e2 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Tue, 16 Dec 2025 06:55:07 -0800 Subject: copy homebuttonLib from oot-vc (#2960) * initial copy of hbm from sdk_2009-12-11 * some more nw4hbm cleanup * nw4hbm db mostly done * nw4hbm snd copied from oot-vc * nw4hbm ut copied * nw4hbm lyt copied * nw4hbm copied, mostly matching usa 1.0 * setup nw4hbm debug define * fix HBMDataInfo struct * add rvl sdk card lib --- .../homebuttonLib/HBMFrameController.cpp | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/revolution/homebuttonLib/HBMFrameController.cpp (limited to 'src/revolution/homebuttonLib/HBMFrameController.cpp') diff --git a/src/revolution/homebuttonLib/HBMFrameController.cpp b/src/revolution/homebuttonLib/HBMFrameController.cpp new file mode 100644 index 0000000000..dccaf15996 --- /dev/null +++ b/src/revolution/homebuttonLib/HBMFrameController.cpp @@ -0,0 +1,68 @@ + +#include "HBMFrameController.h" + +namespace homebutton { + + void FrameController::init(int anm_type, f32 max_frame, f32 min_frame, f32 delta) { + mAnmType = anm_type; + mMaxFrame = max_frame; + mMinFrame = min_frame; + + mDelta = delta; + mState = ANIM_STATE_STOP; + mbAlternateBack = false; + + initFrame(); + } + + void FrameController::initFrame() { + mFrame = mAnmType == ANIM_TYPE_BACKWARD ? mMaxFrame : mMinFrame; + } + + void FrameController::calc() { + if (mState != ANIM_STATE_PLAY) { + return; + } + + switch (mAnmType) { + case ANIM_TYPE_FORWARD: + if ((mFrame += mDelta) >= getLastFrame()) { + mFrame = getLastFrame(); + stop(); + } + + break; + + case ANIM_TYPE_BACKWARD: + if ((mFrame -= mDelta) <= mMinFrame) { + mFrame = mMinFrame; + stop(); + } + + break; + + case ANIM_TYPE_LOOP: + if ((mFrame += mDelta) >= mMaxFrame) { + mFrame -= mMaxFrame - mMinFrame; + } + + break; + + case ANIM_TYPE_ALTERNATE: + if (!mbAlternateBack) { + if ((mFrame += mDelta) >= getLastFrame()) { + mFrame = getLastFrame(); + mbAlternateBack = true; + } + } else { + if ((mFrame -= mDelta) <= mMinFrame) { + mFrame = mMinFrame; + mbAlternateBack = false; + } + } + + break; + } + } + +} // namespace homebutton -- cgit v1.2.3