Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/src/common/bcdutils.h
10595 views
1
// SPDX-FileCopyrightText: 2019-2026 Connor McLaughlin <[email protected]>
2
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
3
4
#pragma once
5
6
#include "types.h"
7
8
// BCD helpers
9
ALWAYS_INLINE constexpr u8 BinaryToBCD(u8 value)
10
{
11
return ((value / 10) << 4) + (value % 10);
12
}
13
ALWAYS_INLINE constexpr u8 PackedBCDToBinary(u8 value)
14
{
15
return ((value >> 4) * 10) + (value % 16);
16
}
17
ALWAYS_INLINE constexpr u8 IsValidBCDDigit(u8 digit)
18
{
19
return (digit <= 9);
20
}
21
ALWAYS_INLINE constexpr u8 IsValidPackedBCD(u8 value)
22
{
23
return IsValidBCDDigit(value & 0x0F) && IsValidBCDDigit(value >> 4);
24
}
25
26