diff --git a/Makefile.linux b/Makefile.linux new file mode 100644 index 0000000..8c10820 --- /dev/null +++ b/Makefile.linux @@ -0,0 +1,39 @@ +# -*- Makefile -*- + +SDL_CFLAGS := $(shell sdl2-config --cflags) +SDL_LFLAGS := -lSDL2_ttf $(shell sdl2-config --libs) + +CXXFLAGS = -Isrc -Isrc/sys -D_SYSTEM3 -D_DEBUG_CONSOLE -MMD $(SDL_CFLAGS) -g + +LIBS = + +OBJS = src/fileio.o \ + src/sdlmain.o \ + src/sys/ags.o \ + src/sys/ags_bmp.o \ + src/sys/ags_cursor.o \ + src/sys/ags_draw.o \ + src/sys/ags_pms.o \ + src/sys/ags_text.o \ + src/sys/ags_vsp.o \ + src/sys/ags_window.o \ + src/sys/dri.o \ + src/sys/mako.o \ + src/sys/mako_midi.o \ + src/sys/nact.o \ + src/sys/nact_crc32.o \ + src/sys/nact_input.o \ + src/sys/nact_sys3.o \ + src/linux/nact_linux.o \ + src/linux/mako_linux.o \ + src/linux/unicode.o + +DEPS := $(OBJS:%.o=%.d) + +system3: $(OBJS) + $(CXX) $(OBJS) $(SDL_LFLAGS) $(LIBS) -o $@ + +clean: + rm -f src/*.o src/sys/*.o src/win/*.o src/res3/*.o system3 $(DEPS) + +-include $(DEPS) diff --git a/src/common.h b/src/common.h index 7dffb41..fd7d1eb 100644 --- a/src/common.h +++ b/src/common.h @@ -9,13 +9,13 @@ #include #include +#include // tchar.h shim typedef char _TCHAR; #ifndef _T #define _T(s) s #endif -#define _tfopen_s fopen_s #define _tcscpy_s strcpy_s #define _tcslen strlen #define _stprintf_s sprintf_s @@ -28,6 +28,13 @@ typedef signed char int8; typedef signed short int16; typedef signed long int32; +#ifndef WIN32 +#define _MAX_PATH PATH_MAX +#define sscanf_s sscanf +#define sprintf_s snprintf +void strcpy_s(char* dst, size_t n, const char* src); +#endif + // utilities uint16 sjis_to_unicode(uint16 sjis); diff --git a/src/fileio.cpp b/src/fileio.cpp index 605765f..99d2f17 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -28,17 +28,17 @@ bool FILEIO::Fopen(_TCHAR *filename, int mode) fp = NULL; if(mode == FILEIO_READ_BINARY) { - _tfopen_s(&fp, filename, _T("rb")); + fp = fopen(filename, _T("rb")); } else if(mode == FILEIO_WRITE_BINARY) { - _tfopen_s(&fp, filename, _T("wb")); + fp = fopen(filename, _T("wb")); } else if(mode == FILEIO_READ_WRITE_BINARY) { - _tfopen_s(&fp, filename, _T("r+b")); + fp = fopen(filename, _T("r+b")); } else if(mode == FILEIO_READ_ASCII) { - _tfopen_s(&fp, filename, _T("r")); + fp = fopen(filename, _T("r")); } else if(mode == FILEIO_WRITE_ASCII) { - _tfopen_s(&fp, filename, _T("w")); + fp = fopen(filename, _T("w")); } else if(mode == FILEIO_READ_WRITE_ASCII) { - _tfopen_s(&fp, filename, _T("r+w")); + fp = fopen(filename, _T("r+w")); } return (fp != NULL); } diff --git a/src/linux/mako_linux.cpp b/src/linux/mako_linux.cpp new file mode 100644 index 0000000..8c3a76e --- /dev/null +++ b/src/linux/mako_linux.cpp @@ -0,0 +1,45 @@ +#include "mako.h" +#include +#include + +static int midifd = -1; + +void MAKO::initialize_midi() +{ + midifd = open("/dev/midi1", O_RDWR); +} + +void MAKO::release_midi() +{ + if (midifd >= 0) + close(midifd); +} + +void MAKO::reset_midi() +{ + if (midifd < 0) + return; + const uint8 gs_reset[11] = {0xf0, 0x41, 0x20, 0x42, 0x12, 0x40, 0x00, 0x7f, 0x00, 0x41, 0xf7}; + write(midifd, gs_reset, 11); +} + +void MAKO::send_2bytes(uint8 d1, uint8 d2) +{ + if (midifd < 0) + return; + uint8 data[2]; + data[0] = d1; + data[1] = d2; + write(midifd, data, 2); +} + +void MAKO::send_3bytes(uint8 d1, uint8 d2, uint8 d3) +{ + if (midifd < 0) + return; + uint8 data[3]; + data[0] = d1; + data[1] = d2; + data[2] = d3; + write(midifd, data, 3); +} diff --git a/src/linux/nact_linux.cpp b/src/linux/nact_linux.cpp new file mode 100644 index 0000000..e26b2a4 --- /dev/null +++ b/src/linux/nact_linux.cpp @@ -0,0 +1,21 @@ +#include +#include "nact.h" + +void NACT::text_dialog() +{ +} + +void NACT::initialize_console() +{ +} + +void NACT::release_console() +{ +} + +void NACT::output_console(char log[]) +{ +#if defined(_DEBUG_CONSOLE) + fputs(log, stderr); +#endif +} diff --git a/src/linux/unicode.cpp b/src/linux/unicode.cpp new file mode 100644 index 0000000..b4a82b8 --- /dev/null +++ b/src/linux/unicode.cpp @@ -0,0 +1,13 @@ +#include "common.h" + +uint16 sjis_to_unicode(uint16 code) +{ + // TODO: correct impl + return code; +} + +void strcpy_s(char* dst, size_t n, const char* src) +{ + strncpy(dst, src, n); + dst[n - 1] = '\0'; +}