mirror of
https://github.com/encounter/aurora.git
synced 2026-07-09 18:19:33 -07:00
a801671643
* add ability to set path of card image before CARDInit * begin work on updating card class to support gci folders a lot of work will just be directly reading from whatever folder is supplied, instead of relying on an always open FileIO handle * swap to interface system for easier code seperation, begin actually planning out logic for gci loading * fix wrong name for func, add modified time to new gci file entry * get gci folder working tp seems to be happy with everything ive done, the only funcs im worried about are getSerial and getChecksum as those dont do anything atm. * fix createFile not assigning file index to output FileHandle, CARDSetLoadType now takes an enum * make probeCardFile a virtual func so GciFolder and RawFile can both implement their own, bit of cleanup
75 lines
4.3 KiB
C++
75 lines
4.3 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <type_traits>
|
|
|
|
#ifndef ENABLE_BITWISE_ENUM
|
|
#define ENABLE_BITWISE_ENUM(type) \
|
|
constexpr type operator|(type a, type b) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
return type(static_cast<T>(a) | static_cast<T>(b)); \
|
|
} \
|
|
constexpr type operator&(type a, type b) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
return type(static_cast<T>(a) & static_cast<T>(b)); \
|
|
} \
|
|
constexpr type& operator|=(type& a, type b) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
a = type(static_cast<T>(a) | static_cast<T>(b)); \
|
|
return a; \
|
|
} \
|
|
constexpr type& operator&=(type& a, type b) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
a = type(static_cast<T>(a) & static_cast<T>(b)); \
|
|
return a; \
|
|
} \
|
|
constexpr type operator~(type key) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
return type(~static_cast<T>(key)); \
|
|
} \
|
|
constexpr bool True(type key) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
return static_cast<T>(key) != 0; \
|
|
} \
|
|
constexpr bool False(type key) { \
|
|
using T = std::underlying_type_t<type>; \
|
|
return static_cast<T>(key) == 0; \
|
|
}
|
|
#endif
|
|
|
|
#define ROUND_UP_8192(val) (((val) + 8191) & ~8191)
|
|
|
|
namespace aurora::card {
|
|
|
|
uint64_t getGCTime();
|
|
|
|
/**
|
|
* @brief calculateChecksum
|
|
* @param data
|
|
* @param len
|
|
* @param checksum
|
|
* @param checksumInv
|
|
*/
|
|
void calculateChecksumBE(const uint16_t* data, size_t len, uint16_t* checksum, uint16_t* checksumInv);
|
|
|
|
#undef NOFILE
|
|
|
|
enum class ECardResult {
|
|
CRC_MISMATCH = -1003, /* Extension enum for Retro's CRC check */
|
|
FATAL_ERROR = -128,
|
|
ENCODING = -13,
|
|
NAMETOOLONG = -12,
|
|
INSSPACE = -9,
|
|
NOENT = -8,
|
|
EXIST = -7,
|
|
BROKEN = -6,
|
|
IOERROR = -5,
|
|
NOFILE = -4,
|
|
NOCARD = -3,
|
|
WRONGDEVICE = -2,
|
|
BUSY = -1,
|
|
READY = 0
|
|
};
|
|
} // namespace aurora::card
|