1. In CMakeList.txt comment out in if(AMIGA) : # set(SDL1_VIDEO_MODE_BPP 8). Or intro will be of broken look. Need to report to SDL1 bug-threads ? 2. mkdir build cd build cmake \ -DCMAKE_SYSTEM_NAME=Generic \ -DBINARY_RELEASE=ON \ -DDEBUG=OFF \ -DASAN=OFF \ -DAMIGA=1 \ -DCMAKE_SYSTEM_VERSION=1 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER="/usr/local/amiga/bin/ppc-amigaos-gcc" \ -DCMAKE_CXX_COMPILER="/usr/local/amiga/bin/ppc-amigaos-g++" \ -DCMAKE_LINKER="/usr/local/amiga/bin/ppc-amigaos-ld" \ -DCMAKE_AR="/usr/local/amiga/bin/ppc-amigaos-ar" \ -DCMAKE_RANLIB="/usr/local/amiga/bin/ppc-amigaos-ranlib" \ -DCMAKE_FIND_ROOT_PATH="/usr/local/amiga/ppc-amigaos/" \ -DFREETYPE_LIBRARY=/usr/local/amiga/ppc-amigaos/SDK/local/newlib/lib/libfreetype.a \ -DFREETYPE_INCLUDE_DIRS=/usr/local/amiga/ppc-amigaos/SDK/local/newlib/include \ -DZLIB_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/common/include/" \ -DZLIB_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libz.a" \ -DSDL_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libSDL.a" \ -DSDL_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL/" \ -DSDL_TTF_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl_ttf.a" \ -DSDL_TTF_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL/" \ -DSDL_MIXER_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl_mixer.a" \ -DSDL_MIXER_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL/" \ .. 3. Add at top of : Source/diablo.h SourceX/controls/devices/game_controller.h SourceX/controls/devices/joystick.h SourceX/storm/storm_dx.cpp #include (to avoid errors about non declared snprintf) 4. In the 3rdParty/Radon/Radon/source/key.cpp add at top: #define _GLIBCXX_USE_C99_STDIO 1 (to make to_string() works) 5. SourceX/dx.cpp have some bad for c++ stuff, on line 235, in the ifdef __amiga__ part : old_buffer = surface->pixels; that all for VAMPIRE, so comment out all __AMIGA__ ifdefs (they to check if it 680800 / vamprire) Also in SourceS/sdl_compat.h commeout out whole __AMIGA__ ifdef block. 6. SourceX/main.cpp: #ifdef __amigaos4__ static const char* __attribute__((used)) stackcookie = "$STACK: 2000000"; #endif 7. make -j4 8. Linking: ppc-amigaos-g++ -athread=native -O3 -DNDEBUG -flto -fno-fat-lto-objects CMakeFiles/devilutionx.dir/SourceX/dx.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/game_controller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/joystick.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/kbcontroller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/controller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/controller_motion.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/game_controls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/menu_controls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/plrctrls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/touch.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/ddraw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc_io.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc_msg.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/rand.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/thread.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/dsound.cpp.obj CMakeFiles/devilutionx.dir/SourceX/sound.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm_net.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm_dx.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/abstract_net.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/loopback.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/packet.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/base.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/frame_queue.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/cdwrap.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/art_draw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/errorart.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/art.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/button.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/credits.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/credits_lines.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/diabloui.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/dialogs.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/fonts.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/mainmenu.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/progress.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/scrollbar.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selconn.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selgame.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selhero.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selyesno.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/text_draw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/text.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/title.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/ttf_render_wrapped.cpp.obj CMakeFiles/devilutionx.dir/SourceX/main.cpp.obj -o devilutionx libdevilution.a libPKWare.a libStormLib.a libsmacker.a libRadon.a /usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl_ttf.a -lSDL_mixer -lmikmod -lmodplug -lflac -lsmpeg -lvorbisfile -lvorbis -logg /usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl_mixer.a /usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libSDL.a /usr/local/amiga/ppc-amigaos/SDK/local/newlib/lib/libfreetype.a /usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libpng.a /usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libz.a -latomic -static-libgcc -static-libstdc++ -lpthread ---------------- SDL2 build: 1. do same changes in sources 2. hange in CMakeLists.txt in root in if(AMIGA) comment out set(USE_SDL1 ON) and set(SDL1_VIDEO_MODE_BPP 8) 3. And cmake configure will be like this now: mkdir build cd build cmake \ -DCMAKE_SYSTEM_NAME=Generic \ -DBINARY_RELEASE=ON \ -DDEBUG=OFF \ -DASAN=OFF \ -DAMIGA=1 \ -DCMAKE_SYSTEM_VERSION=1 \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER="/usr/local/amiga/bin/ppc-amigaos-gcc" \ -DCMAKE_CXX_COMPILER="/usr/local/amiga/bin/ppc-amigaos-g++" \ -DCMAKE_LINKER="/usr/local/amiga/bin/ppc-amigaos-ld" \ -DCMAKE_AR="/usr/local/amiga/bin/ppc-amigaos-ar" \ -DCMAKE_RANLIB="/usr/local/amiga/bin/ppc-amigaos-ranlib" \ -DCMAKE_FIND_ROOT_PATH="/usr/local/amiga/ppc-amigaos/" \ -DFREETYPE_LIBRARY=/usr/local/amiga/ppc-amigaos/SDK/local/newlib/lib/libfreetype.a \ -DFREETYPE_INCLUDE_DIRS=/usr/local/amiga/ppc-amigaos/SDK/local/newlib/include \ -DZLIB_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/common/include/" \ -DZLIB_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libz.a" \ -DSDL2_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libSDL2.a" \ -DSDL2_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL2/" \ -DSDL2_ttf_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl2_ttf.a" \ -DSDL2_ttf_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL2/" \ -DSDL2_mixer_LIBRARY="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/lib/libsdl2_mixer.a" \ -DSDL2_mixer_INCLUDE_DIR="/usr/local/amiga/ppc-amigaos/SDK/Local/newlib/include/SDL2/" \ .. 4. SourceX/storm/storm.cpp: void GetPrefPath(char *buffer, size_t size) { #ifdef __amigaos4__ snprintf(buffer, size, "%s", path); #else char *path = SDL_GetPrefPath("diasurgical", "devilution"); if (path == NULL) { buffer[0] = '\0'; return; } snprintf(buffer, size, "%s", path); SDL_free(path); #endif } make -j4 ppc-amigaos-g++ -athread=native -fexceptions -Wno-builtin-macro-redefined -D'__FILE__="$(subst $(realpath /amiga/diablo)/,,$(abspath $<))"' -O3 -DNDEBUG -flto -fno-fat-lto-objects CMakeFiles/devilutionx.dir/SourceX/dx.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/game_controller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/joystick.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/devices/kbcontroller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/controller.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/controller_motion.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/game_controls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/menu_controls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/modifier_hints.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/plrctrls.cpp.obj CMakeFiles/devilutionx.dir/SourceX/controls/touch.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/ddraw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc_io.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/misc_msg.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/rand.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/thread.cpp.obj CMakeFiles/devilutionx.dir/SourceX/miniwin/dsound.cpp.obj CMakeFiles/devilutionx.dir/SourceX/sound.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm_net.cpp.obj CMakeFiles/devilutionx.dir/SourceX/storm/storm_dx.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/abstract_net.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/loopback.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/packet.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/base.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/frame_queue.cpp.obj CMakeFiles/devilutionx.dir/SourceX/dvlnet/cdwrap.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/art_draw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/errorart.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/art.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/button.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/credits.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/credits_lines.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/diabloui.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/dialogs.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/fonts.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/mainmenu.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/progress.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/scrollbar.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selconn.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selgame.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selhero.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selyesno.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/selok.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/text_draw.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/text.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/title.cpp.obj CMakeFiles/devilutionx.dir/SourceX/DiabloUI/ttf_render_wrapped.cpp.obj CMakeFiles/devilutionx.dir/SourceX/main.cpp.obj -o devilutionx libdevilution.a libPKWare.a libStormLib.a libsmacker.a libRadon.a -lSDL2_ttf -lSDL2_mixer -lmikmod -lmodplug -lflac -lsmpeg2 -lvorbisfile -lvorbis -logg -lSDL2 -lfreetype -lpng -lz -latomic -static-libgcc -static-libstdc++ -lpthread