Build FlooohZ80 on Linux
This commit is contained in:
parent
882bab228f
commit
ce2a6da71f
|
@ -48,4 +48,3 @@ UpgradeLog.htm
|
|||
/packages
|
||||
|
||||
launchSettings.json
|
||||
/ExternalProjects/FlooohZ80/x64
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,2 @@
|
|||
x64/
|
||||
build/
|
|
@ -85,90 +85,95 @@ void LibFz80::SET_im(uint8_t value) { z80Instance->im = value; }
|
|||
void LibFz80::SET_iff1(bool value) { z80Instance->iff1 = value; }
|
||||
void LibFz80::SET_iff2(bool value) { z80Instance->iff2 = value; }
|
||||
|
||||
|
||||
// Expose the functions for C# interoperability
|
||||
extern "C" {
|
||||
|
||||
__declspec(dllexport) LibFz80* CreateLibFz80() {
|
||||
#ifdef _WIN32
|
||||
#define FZ80_EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define FZ80_EXPORT __attribute__((visibility("default")))
|
||||
#endif
|
||||
|
||||
FZ80_EXPORT LibFz80* CreateLibFz80() {
|
||||
return new LibFz80();
|
||||
}
|
||||
|
||||
__declspec(dllexport) void DestroyLibFz80(LibFz80* instance) {
|
||||
FZ80_EXPORT void DestroyLibFz80(LibFz80* instance) {
|
||||
delete instance;
|
||||
}
|
||||
|
||||
__declspec(dllexport) uint64_t LibFz80_Initialize(LibFz80* instance) {
|
||||
FZ80_EXPORT uint64_t LibFz80_Initialize(LibFz80* instance) {
|
||||
return instance->Initialize();
|
||||
}
|
||||
|
||||
__declspec(dllexport) uint64_t LibFz80_Reset(LibFz80* instance) {
|
||||
FZ80_EXPORT uint64_t LibFz80_Reset(LibFz80* instance) {
|
||||
return instance->Reset();
|
||||
}
|
||||
|
||||
__declspec(dllexport) uint64_t LibFz80_Tick(LibFz80* instance, uint64_t pins) {
|
||||
FZ80_EXPORT uint64_t LibFz80_Tick(LibFz80* instance, uint64_t pins) {
|
||||
return instance->Tick(pins);
|
||||
}
|
||||
|
||||
__declspec(dllexport) uint64_t LibFz80_Prefetch(LibFz80* instance, uint16_t new_pc) {
|
||||
FZ80_EXPORT uint64_t LibFz80_Prefetch(LibFz80* instance, uint16_t new_pc) {
|
||||
return instance->Prefetch(new_pc);
|
||||
}
|
||||
|
||||
__declspec(dllexport) bool LibFz80_InstructionDone(LibFz80* instance) {
|
||||
FZ80_EXPORT bool LibFz80_InstructionDone(LibFz80* instance) {
|
||||
return instance->InstructionDone();
|
||||
}
|
||||
|
||||
|
||||
// Getter functions
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_step(LibFz80* instance) { return instance->GET_step(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_addr(LibFz80* instance) { return instance->GET_addr(); }
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_dlatch(LibFz80* instance) { return instance->GET_dlatch(); }
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_opcode(LibFz80* instance) { return instance->GET_opcode(); }
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_hlx_idx(LibFz80* instance) { return instance->GET_hlx_idx(); }
|
||||
__declspec(dllexport) bool LibFz80_GET_prefix_active(LibFz80* instance) { return instance->GET_prefix_active(); }
|
||||
__declspec(dllexport) uint64_t LibFz80_GET_pins(LibFz80* instance) { return instance->GET_pins(); }
|
||||
__declspec(dllexport) uint64_t LibFz80_GET_int_bits(LibFz80* instance) { return instance->GET_int_bits(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_pc(LibFz80* instance) { return instance->GET_pc(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_af(LibFz80* instance) { return instance->GET_af(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_bc(LibFz80* instance) { return instance->GET_bc(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_de(LibFz80* instance) { return instance->GET_de(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_hl(LibFz80* instance) { return instance->GET_hl(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_ix(LibFz80* instance) { return instance->GET_ix(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_iy(LibFz80* instance) { return instance->GET_iy(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_wz(LibFz80* instance) { return instance->GET_wz(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_sp(LibFz80* instance) { return instance->GET_sp(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_ir(LibFz80* instance) { return instance->GET_ir(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_af2(LibFz80* instance) { return instance->GET_af2(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_bc2(LibFz80* instance) { return instance->GET_bc2(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_de2(LibFz80* instance) { return instance->GET_de2(); }
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_hl2(LibFz80* instance) { return instance->GET_hl2(); }
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_im(LibFz80* instance) { return instance->GET_im(); }
|
||||
__declspec(dllexport) bool LibFz80_GET_iff1(LibFz80* instance) { return instance->GET_iff1(); }
|
||||
__declspec(dllexport) bool LibFz80_GET_iff2(LibFz80* instance) { return instance->GET_iff2(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_step(LibFz80* instance) { return instance->GET_step(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_addr(LibFz80* instance) { return instance->GET_addr(); }
|
||||
FZ80_EXPORT uint8_t LibFz80_GET_dlatch(LibFz80* instance) { return instance->GET_dlatch(); }
|
||||
FZ80_EXPORT uint8_t LibFz80_GET_opcode(LibFz80* instance) { return instance->GET_opcode(); }
|
||||
FZ80_EXPORT uint8_t LibFz80_GET_hlx_idx(LibFz80* instance) { return instance->GET_hlx_idx(); }
|
||||
FZ80_EXPORT bool LibFz80_GET_prefix_active(LibFz80* instance) { return instance->GET_prefix_active(); }
|
||||
FZ80_EXPORT uint64_t LibFz80_GET_pins(LibFz80* instance) { return instance->GET_pins(); }
|
||||
FZ80_EXPORT uint64_t LibFz80_GET_int_bits(LibFz80* instance) { return instance->GET_int_bits(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_pc(LibFz80* instance) { return instance->GET_pc(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_af(LibFz80* instance) { return instance->GET_af(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_bc(LibFz80* instance) { return instance->GET_bc(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_de(LibFz80* instance) { return instance->GET_de(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_hl(LibFz80* instance) { return instance->GET_hl(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_ix(LibFz80* instance) { return instance->GET_ix(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_iy(LibFz80* instance) { return instance->GET_iy(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_wz(LibFz80* instance) { return instance->GET_wz(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_sp(LibFz80* instance) { return instance->GET_sp(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_ir(LibFz80* instance) { return instance->GET_ir(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_af2(LibFz80* instance) { return instance->GET_af2(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_bc2(LibFz80* instance) { return instance->GET_bc2(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_de2(LibFz80* instance) { return instance->GET_de2(); }
|
||||
FZ80_EXPORT uint16_t LibFz80_GET_hl2(LibFz80* instance) { return instance->GET_hl2(); }
|
||||
FZ80_EXPORT uint8_t LibFz80_GET_im(LibFz80* instance) { return instance->GET_im(); }
|
||||
FZ80_EXPORT bool LibFz80_GET_iff1(LibFz80* instance) { return instance->GET_iff1(); }
|
||||
FZ80_EXPORT bool LibFz80_GET_iff2(LibFz80* instance) { return instance->GET_iff2(); }
|
||||
|
||||
// Setter functions
|
||||
__declspec(dllexport) void LibFz80_SET_step(LibFz80* instance, uint16_t value) { instance->SET_step(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_addr(LibFz80* instance, uint16_t value) { instance->SET_addr(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_dlatch(LibFz80* instance, uint8_t value) { instance->SET_dlatch(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_opcode(LibFz80* instance, uint8_t value) { instance->SET_opcode(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_hlx_idx(LibFz80* instance, uint8_t value) { instance->SET_hlx_idx(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_prefix_active(LibFz80* instance, bool value) { instance->SET_prefix_active(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_pins(LibFz80* instance, uint64_t value) { instance->SET_pins(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_int_bits(LibFz80* instance, uint64_t value) { instance->SET_int_bits(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_pc(LibFz80* instance, uint16_t value) { instance->SET_pc(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_af(LibFz80* instance, uint16_t value) { instance->SET_af(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_bc(LibFz80* instance, uint16_t value) { instance->SET_bc(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_de(LibFz80* instance, uint16_t value) { instance->SET_de(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_hl(LibFz80* instance, uint16_t value) { instance->SET_hl(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_ix(LibFz80* instance, uint16_t value) { instance->SET_ix(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_iy(LibFz80* instance, uint16_t value) { instance->SET_iy(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_wz(LibFz80* instance, uint16_t value) { instance->SET_wz(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_sp(LibFz80* instance, uint16_t value) { instance->SET_sp(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_ir(LibFz80* instance, uint16_t value) { instance->SET_ir(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_af2(LibFz80* instance, uint16_t value) { instance->SET_af2(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_bc2(LibFz80* instance, uint16_t value) { instance->SET_bc2(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_de2(LibFz80* instance, uint16_t value) { instance->SET_de2(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_hl2(LibFz80* instance, uint16_t value) { instance->SET_hl2(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_im(LibFz80* instance, uint8_t value) { instance->SET_im(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_iff1(LibFz80* instance, bool value) { instance->SET_iff1(value); }
|
||||
__declspec(dllexport) void LibFz80_SET_iff2(LibFz80* instance, bool value) { instance->SET_iff2(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_step(LibFz80* instance, uint16_t value) { instance->SET_step(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_addr(LibFz80* instance, uint16_t value) { instance->SET_addr(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_dlatch(LibFz80* instance, uint8_t value) { instance->SET_dlatch(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_opcode(LibFz80* instance, uint8_t value) { instance->SET_opcode(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_hlx_idx(LibFz80* instance, uint8_t value) { instance->SET_hlx_idx(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_prefix_active(LibFz80* instance, bool value) { instance->SET_prefix_active(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_pins(LibFz80* instance, uint64_t value) { instance->SET_pins(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_int_bits(LibFz80* instance, uint64_t value) { instance->SET_int_bits(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_pc(LibFz80* instance, uint16_t value) { instance->SET_pc(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_af(LibFz80* instance, uint16_t value) { instance->SET_af(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_bc(LibFz80* instance, uint16_t value) { instance->SET_bc(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_de(LibFz80* instance, uint16_t value) { instance->SET_de(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_hl(LibFz80* instance, uint16_t value) { instance->SET_hl(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_ix(LibFz80* instance, uint16_t value) { instance->SET_ix(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_iy(LibFz80* instance, uint16_t value) { instance->SET_iy(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_wz(LibFz80* instance, uint16_t value) { instance->SET_wz(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_sp(LibFz80* instance, uint16_t value) { instance->SET_sp(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_ir(LibFz80* instance, uint16_t value) { instance->SET_ir(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_af2(LibFz80* instance, uint16_t value) { instance->SET_af2(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_bc2(LibFz80* instance, uint16_t value) { instance->SET_bc2(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_de2(LibFz80* instance, uint16_t value) { instance->SET_de2(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_hl2(LibFz80* instance, uint16_t value) { instance->SET_hl2(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_im(LibFz80* instance, uint8_t value) { instance->SET_im(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_iff1(LibFz80* instance, bool value) { instance->SET_iff1(value); }
|
||||
FZ80_EXPORT void LibFz80_SET_iff2(LibFz80* instance, bool value) { instance->SET_iff2(value); }
|
||||
}
|
|
@ -74,69 +74,4 @@ private:
|
|||
z80_t* z80Instance;
|
||||
};
|
||||
|
||||
// Expose the functions for C# interoperability
|
||||
extern "C" {
|
||||
__declspec(dllexport) LibFz80* CreateLibFz80();
|
||||
__declspec(dllexport) void DestroyLibFz80(LibFz80* instance);
|
||||
__declspec(dllexport) uint64_t LibFz80_Initialize(LibFz80* instance);
|
||||
__declspec(dllexport) uint64_t LibFz80_Reset(LibFz80* instance);
|
||||
__declspec(dllexport) uint64_t LibFz80_Tick(LibFz80* instance, uint64_t pins);
|
||||
__declspec(dllexport) uint64_t LibFz80_Prefetch(LibFz80* instance, uint16_t new_pc);
|
||||
__declspec(dllexport) bool LibFz80_InstructionDone(LibFz80* instance);
|
||||
|
||||
// expose struct field getters
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_step(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_addr(LibFz80* instance);
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_dlatch(LibFz80* instance);
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_opcode(LibFz80* instance);
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_hlx_idx(LibFz80* instance);
|
||||
__declspec(dllexport) bool LibFz80_GET_prefix_active(LibFz80* instance);
|
||||
__declspec(dllexport) uint64_t LibFz80_GET_pins(LibFz80* instance);
|
||||
__declspec(dllexport) uint64_t LibFz80_GET_int_bits(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_pc(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_af(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_bc(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_de(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_hl(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_ix(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_iy(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_wz(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_sp(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_ir(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_af2(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_bc2(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_de2(LibFz80* instance);
|
||||
__declspec(dllexport) uint16_t LibFz80_GET_hl2(LibFz80* instance);
|
||||
__declspec(dllexport) uint8_t LibFz80_GET_im(LibFz80* instance);
|
||||
__declspec(dllexport) bool LibFz80_GET_iff1(LibFz80* instance);
|
||||
__declspec(dllexport) bool LibFz80_GET_iff2(LibFz80* instance);
|
||||
|
||||
// expose struct field setters
|
||||
__declspec(dllexport) void LibFz80_SET_step(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_addr(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_dlatch(LibFz80* instance, uint8_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_opcode(LibFz80* instance, uint8_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_hlx_idx(LibFz80* instance, uint8_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_prefix_active(LibFz80* instance, bool value);
|
||||
__declspec(dllexport) void LibFz80_SET_pins(LibFz80* instance, uint64_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_int_bits(LibFz80* instance, uint64_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_pc(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_af(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_bc(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_de(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_hl(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_ix(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_iy(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_wz(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_sp(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_ir(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_af2(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_bc2(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_de2(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_hl2(LibFz80* instance, uint16_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_im(LibFz80* instance, uint8_t value);
|
||||
__declspec(dllexport) void LibFz80_SET_iff1(LibFz80* instance, bool value);
|
||||
__declspec(dllexport) void LibFz80_SET_iff2(LibFz80* instance, bool value);
|
||||
}
|
||||
|
||||
#endif // FLOOOHZ80_H
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
if [ -z "$BIZHAWKBUILD_HOME" ]; then export BIZHAWKBUILD_HOME="$(realpath "$(dirname "$0")/../..")"; fi
|
||||
if [ -z "$CXX" ]; then export CXX="clang++"; fi
|
||||
|
||||
mkdir -p build
|
||||
$CXX -std=c++11 -O3 -flto -fvisibility=hidden -fPIC -shared -s FlooohZ80.cpp -o build/libFlooohZ80.so
|
||||
|
||||
cp build/libFlooohZ80.so "$BIZHAWKBUILD_HOME/Assets/dll"
|
||||
if [ -e "$BIZHAWKBUILD_HOME/output" ]; then
|
||||
cp build/libFlooohZ80.so "$BIZHAWKBUILD_HOME/output/dll"
|
||||
fi
|
Loading…
Reference in New Issue