Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ccpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
path: 'fluxengine-testdata'
- name: brew
run: |
brew install sqlite pkg-config libusb protobuf wxwidgets fmt make coreutils dylibbundler libjpeg libmagic nlohmann-json cli11 boost glfw3 md4c ninja python freetype2 mbedtls@3 lunasvg
brew install sqlite pkg-config libusb protobuf wxwidgets fmt make coreutils dylibbundler libjpeg libmagic nlohmann-json cli11 boost glfw3 md4c ninja python freetype2 mbedtls@3 lunasvg libgc
brew link mbedtls@3
brew upgrade
- name: make
Expand Down Expand Up @@ -77,6 +77,7 @@ jobs:
pacboy: |
protobuf:p pkgconf:p curl-winssl:p file:p glfw:p mbedtls:p
sqlite:p freetype:p boost:p gcc:p binutils:p nsis:p abseil-cpp:p
gc:p

- name: debug
run: |
Expand Down
3 changes: 1 addition & 2 deletions arch/aeslanier/aeslanier.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#define AESLANIER_SECTOR_LENGTH 256
#define AESLANIER_RECORD_SIZE (AESLANIER_SECTOR_LENGTH + 5)

extern std::unique_ptr<Decoder> createAesLanierDecoder(
const DecoderProto& config);
extern Decoder* createAesLanierDecoder(const DecoderProto& config);

#endif
4 changes: 2 additions & 2 deletions arch/aeslanier/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class AesLanierDecoder : public Decoder
}
};

std::unique_ptr<Decoder> createAesLanierDecoder(const DecoderProto& config)
Decoder* createAesLanierDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new AesLanierDecoder(config));
return new AesLanierDecoder(config);
}
4 changes: 2 additions & 2 deletions arch/agat/agat.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ class EncoderProto;
class Decoder;
class DecoderProto;

extern std::unique_ptr<Decoder> createAgatDecoder(const DecoderProto& config);
extern std::unique_ptr<Encoder> createAgatEncoder(const EncoderProto& config);
extern Decoder* createAgatDecoder(const DecoderProto& config);
extern Encoder* createAgatEncoder(const EncoderProto& config);

extern uint8_t agatChecksum(const Bytes& bytes);

Expand Down
4 changes: 2 additions & 2 deletions arch/agat/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class AgatDecoder : public Decoder
}
};

std::unique_ptr<Decoder> createAgatDecoder(const DecoderProto& config)
Decoder* createAgatDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new AgatDecoder(config));
return new AgatDecoder(config);
}
8 changes: 4 additions & 4 deletions arch/agat/encoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ class AgatEncoder : public Encoder
};

public:
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout& ltl,
const std::vector<std::shared_ptr<const Sector>>& sectors,
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout* ltl,
const std::vector<const Sector*>& sectors,
const Image& image) override
{
double clockRateUs = _config.target_clock_period_us() / 2.0;
Expand Down Expand Up @@ -109,7 +109,7 @@ class AgatEncoder : public Encoder
std::vector<bool> _bits;
};

std::unique_ptr<Encoder> createAgatEncoder(const EncoderProto& config)
Encoder* createAgatEncoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new AgatEncoder(config));
return new AgatEncoder(config);
}
4 changes: 2 additions & 2 deletions arch/amiga/amiga.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
#define AMIGA_SECTORS_PER_TRACK 11
#define AMIGA_RECORD_SIZE 0x21c

extern std::unique_ptr<Decoder> createAmigaDecoder(const DecoderProto& config);
extern std::unique_ptr<Encoder> createAmigaEncoder(const EncoderProto& config);
extern Decoder* createAmigaDecoder(const DecoderProto& config);
extern Encoder* createAmigaEncoder(const EncoderProto& config);

extern uint32_t amigaChecksum(const Bytes& bytes);
extern Bytes amigaInterleave(const Bytes& input);
Expand Down
4 changes: 2 additions & 2 deletions arch/amiga/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class AmigaDecoder : public Decoder
nanoseconds_t _clock;
};

std::unique_ptr<Decoder> createAmigaDecoder(const DecoderProto& config)
Decoder* createAmigaDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new AmigaDecoder(config));
return new AmigaDecoder(config);
}
13 changes: 6 additions & 7 deletions arch/amiga/encoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,8 @@ static void write_bits(
}
}

static void write_sector(std::vector<bool>& bits,
unsigned& cursor,
const std::shared_ptr<const Sector>& sector)
static void write_sector(
std::vector<bool>& bits, unsigned& cursor, const Sector* sector)
{
if ((sector->data.size() != 512) && (sector->data.size() != 528))
error("unsupported sector size --- you must pick 512 or 528");
Expand Down Expand Up @@ -110,8 +109,8 @@ class AmigaEncoder : public Encoder
}

public:
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout& ltl,
const std::vector<std::shared_ptr<const Sector>>& sectors,
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout* ltl,
const std::vector<const Sector*>& sectors,
const Image& image) override
{
/* Number of bits for one nominal revolution of a real 200ms Amiga disk.
Expand Down Expand Up @@ -143,7 +142,7 @@ class AmigaEncoder : public Encoder
const AmigaEncoderProto& _config;
};

std::unique_ptr<Encoder> createAmigaEncoder(const EncoderProto& config)
Encoder* createAmigaEncoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new AmigaEncoder(config));
return new AmigaEncoder(config);
}
4 changes: 2 additions & 2 deletions arch/apple2/apple2.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

#define APPLE2_SECTORS 16

extern std::unique_ptr<Decoder> createApple2Decoder(const DecoderProto& config);
extern std::unique_ptr<Encoder> createApple2Encoder(const EncoderProto& config);
extern Decoder* createApple2Decoder(const DecoderProto& config);
extern Encoder* createApple2Encoder(const EncoderProto& config);

#endif
4 changes: 2 additions & 2 deletions arch/apple2/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ class Apple2Decoder : public Decoder
}
};

std::unique_ptr<Decoder> createApple2Decoder(const DecoderProto& config)
Decoder* createApple2Decoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new Apple2Decoder(config));
return new Apple2Decoder(config);
}
8 changes: 4 additions & 4 deletions arch/apple2/encoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ class Apple2Encoder : public Encoder
const Apple2EncoderProto& _config;

public:
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout& ltl,
const std::vector<std::shared_ptr<const Sector>>& sectors,
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout* ltl,
const std::vector<const Sector*>& sectors,
const Image& image) override
{
int bitsPerRevolution =
Expand Down Expand Up @@ -186,7 +186,7 @@ class Apple2Encoder : public Encoder
}
};

std::unique_ptr<Encoder> createApple2Encoder(const EncoderProto& config)
Encoder* createApple2Encoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new Apple2Encoder(config));
return new Apple2Encoder(config);
}
14 changes: 6 additions & 8 deletions arch/arch.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,16 @@
#include "arch/zilogmcz/zilogmcz.h"
#include "arch/arch.h"

std::unique_ptr<Encoder> Arch::createEncoder(Config& config)
Encoder* Arch::createEncoder(Config& config)
{
if (!config.hasEncoder())
error("no encoder configured");
return createEncoder(config->encoder());
}

std::unique_ptr<Encoder> Arch::createEncoder(const EncoderProto& config)
Encoder* Arch::createEncoder(const EncoderProto& config)
{
static const std::map<int,
std::function<std::unique_ptr<Encoder>(const EncoderProto&)>>
static const std::map<int, std::function<Encoder*(const EncoderProto&)>>
encoders = {
{EncoderProto::kAgat, createAgatEncoder },
{EncoderProto::kAmiga, createAmigaEncoder },
Expand All @@ -56,17 +55,16 @@ std::unique_ptr<Encoder> Arch::createEncoder(const EncoderProto& config)
return (encoder->second)(config);
}

std::unique_ptr<Decoder> Arch::createDecoder(Config& config)
Decoder* Arch::createDecoder(Config& config)
{
if (!config.hasDecoder())
error("no decoder configured");
return createDecoder(config->decoder());
}

std::unique_ptr<Decoder> Arch::createDecoder(const DecoderProto& config)
Decoder* Arch::createDecoder(const DecoderProto& config)
{
static const std::map<int,
std::function<std::unique_ptr<Decoder>(const DecoderProto&)>>
static const std::map<int, std::function<Decoder*(const DecoderProto&)>>
decoders = {
{DecoderProto::kAgat, createAgatDecoder },
{DecoderProto::kAeslanier, createAesLanierDecoder },
Expand Down
8 changes: 4 additions & 4 deletions arch/arch.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ class Config;

namespace Arch
{
std::unique_ptr<Decoder> createDecoder(Config& config);
std::unique_ptr<Decoder> createDecoder(const DecoderProto& config);
Decoder* createDecoder(Config& config);
Decoder* createDecoder(const DecoderProto& config);

std::unique_ptr<Encoder> createEncoder(Config& config);
std::unique_ptr<Encoder> createEncoder(const EncoderProto& config);
Encoder* createEncoder(Config& config);
Encoder* createEncoder(const EncoderProto& config);
}
6 changes: 2 additions & 4 deletions arch/brother/brother.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
#define BROTHER_TRACKS_PER_120KB_DISK 39
#define BROTHER_SECTORS_PER_TRACK 12

extern std::unique_ptr<Decoder> createBrotherDecoder(
const DecoderProto& config);
extern std::unique_ptr<Encoder> createBrotherEncoder(
const EncoderProto& config);
extern Decoder* createBrotherDecoder(const DecoderProto& config);
extern Encoder* createBrotherEncoder(const EncoderProto& config);

#endif
4 changes: 2 additions & 2 deletions arch/brother/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ class BrotherDecoder : public Decoder
}
};

std::unique_ptr<Decoder> createBrotherDecoder(const DecoderProto& config)
Decoder* createBrotherDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new BrotherDecoder(config));
return new BrotherDecoder(config);
}
8 changes: 4 additions & 4 deletions arch/brother/encoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ class BrotherEncoder : public Encoder
}

public:
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout& ltl,
const std::vector<std::shared_ptr<const Sector>>& sectors,
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout* ltl,
const std::vector<const Sector*>& sectors,
const Image& image) override
{
int bitsPerRevolution = 200000.0 / _config.clock_rate_us();
Expand Down Expand Up @@ -148,7 +148,7 @@ class BrotherEncoder : public Encoder
const BrotherEncoderProto& _config;
};

std::unique_ptr<Encoder> createBrotherEncoder(const EncoderProto& config)
Encoder* createBrotherEncoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new BrotherEncoder(config));
return new BrotherEncoder(config);
}
6 changes: 2 additions & 4 deletions arch/c64/c64.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,8 @@
#define C64_TRACKS_PER_DISK 40
#define C64_BAM_TRACK 17

extern std::unique_ptr<Decoder> createCommodore64Decoder(
const DecoderProto& config);
extern std::unique_ptr<Encoder> createCommodore64Encoder(
const EncoderProto& config);
extern Decoder* createCommodore64Decoder(const DecoderProto& config);
extern Encoder* createCommodore64Encoder(const EncoderProto& config);

extern nanoseconds_t clockPeriodForC64Track(unsigned track);

Expand Down
4 changes: 2 additions & 2 deletions arch/c64/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class Commodore64Decoder : public Decoder
}
};

std::unique_ptr<Decoder> createCommodore64Decoder(const DecoderProto& config)
Decoder* createCommodore64Decoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new Commodore64Decoder(config));
return new Commodore64Decoder(config);
}
15 changes: 7 additions & 8 deletions arch/c64/encoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@ class Commodore64Encoder : public Encoder
}

public:
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout& ltl,
const std::vector<std::shared_ptr<const Sector>>& sectors,
std::unique_ptr<Fluxmap> encode(const LogicalTrackLayout* ltl,
const std::vector<const Sector*>& sectors,
const Image& image) override
{
/* The format ID Character # 1 and # 2 are in the .d64 image only
Expand All @@ -178,7 +178,7 @@ class Commodore64Encoder : public Encoder
else
_formatByte1 = _formatByte2 = 0;

double clockRateUs = clockPeriodForC64Track(ltl.logicalCylinder);
double clockRateUs = clockPeriodForC64Track(ltl->logicalCylinder);
int bitsPerRevolution = 200000.0 / clockRateUs;

std::vector<bool> bits(bitsPerRevolution);
Expand All @@ -204,9 +204,8 @@ class Commodore64Encoder : public Encoder
}

private:
void writeSector(std::vector<bool>& bits,
unsigned& cursor,
std::shared_ptr<const Sector> sector) const
void writeSector(
std::vector<bool>& bits, unsigned& cursor, const Sector* sector) const
{
/* Source: http://www.unusedino.de/ec64/technical/formats/g64.html
* 1. Header sync FF FF FF FF FF (40 'on' bits, not GCR)
Expand Down Expand Up @@ -310,9 +309,9 @@ class Commodore64Encoder : public Encoder
uint8_t _formatByte2;
};

std::unique_ptr<Encoder> createCommodore64Encoder(const EncoderProto& config)
Encoder* createCommodore64Encoder(const EncoderProto& config)
{
return std::unique_ptr<Encoder>(new Commodore64Encoder(config));
return new Commodore64Encoder(config);
}

// vim: sw=4 ts=4 et
4 changes: 2 additions & 2 deletions arch/f85/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class DurangoF85Decoder : public Decoder
}
};

std::unique_ptr<Decoder> createDurangoF85Decoder(const DecoderProto& config)
Decoder* createDurangoF85Decoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new DurangoF85Decoder(config));
return new DurangoF85Decoder(config);
}
3 changes: 1 addition & 2 deletions arch/f85/f85.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#define F85_DATA_RECORD 0xffffcb /* 1111 1111 1111 1111 1100 1101 */
#define F85_SECTOR_LENGTH 512

extern std::unique_ptr<Decoder> createDurangoF85Decoder(
const DecoderProto& config);
extern Decoder* createDurangoF85Decoder(const DecoderProto& config);

#endif
4 changes: 2 additions & 2 deletions arch/fb100/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ class Fb100Decoder : public Decoder
}
};

std::unique_ptr<Decoder> createFb100Decoder(const DecoderProto& config)
Decoder* createFb100Decoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new Fb100Decoder(config));
return new Fb100Decoder(config);
}
2 changes: 1 addition & 1 deletion arch/fb100/fb100.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
#define FB100_ID_SIZE 17
#define FB100_PAYLOAD_SIZE 0x500

extern std::unique_ptr<Decoder> createFb100Decoder(const DecoderProto& config);
extern Decoder* createFb100Decoder(const DecoderProto& config);

#endif
4 changes: 2 additions & 2 deletions arch/ibm/decoder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ class IbmDecoder : public Decoder
unsigned _currentHeaderLength;
};

std::unique_ptr<Decoder> createIbmDecoder(const DecoderProto& config)
Decoder* createIbmDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new IbmDecoder(config));
return new IbmDecoder(config);
}
Loading
Loading