pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/emulators



Module Name:    pkgsrc
Committed By:   nia
Date:           Thu Jul 16 11:03:33 UTC 2026

Modified Files:
        pkgsrc/emulators: Makefile
Added Files:
        pkgsrc/emulators/tsugaru: DESCR Makefile PLIST distinfo
        pkgsrc/emulators/tsugaru/files: tsugaru.desktop
        pkgsrc/emulators/tsugaru/patches: patch-src_cpu_i486.h
            patch-src_cpu_i487.cpp patch-src_towns_highrespcm_highrespcm.cpp

Log Message:
tsugaru: Initial import.

Tsugaru is an emulator of the legendary Fujitsu FM TOWNS computer,
including the Marty video game console. It primarily targets emulating
Model II MX, including undocumented hardware features.

If you do not own your FM TOWNS hardware, you can use the following free
version of the ROM:

http://ysflight.com/FM/towns/FreeTOWNS/e.html

Editor's notes: the package name was chosen as tsugaru and not townsemu
(like the upstream repository) to match the few other package mangers
that package this software. Similarly, the program is installed as a
lowercase binary matching the package name to match Unix conventions.
As far as I can tell this software is developed for Windows and macOS;
it working on more traditional Unixes is a nice side effect.

This package was verified to build on macOS, CentOS 7, NetBSD.


To generate a diff of this commit:
cvs rdiff -u -r1.381 -r1.382 pkgsrc/emulators/Makefile
cvs rdiff -u -r0 -r1.1 pkgsrc/emulators/tsugaru/DESCR \
    pkgsrc/emulators/tsugaru/Makefile pkgsrc/emulators/tsugaru/PLIST \
    pkgsrc/emulators/tsugaru/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/emulators/tsugaru/files/tsugaru.desktop
cvs rdiff -u -r0 -r1.1 pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i486.h \
    pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i487.cpp \
    pkgsrc/emulators/tsugaru/patches/patch-src_towns_highrespcm_highrespcm.cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/emulators/Makefile
diff -u pkgsrc/emulators/Makefile:1.381 pkgsrc/emulators/Makefile:1.382
--- pkgsrc/emulators/Makefile:1.381     Mon Apr 27 10:23:49 2026
+++ pkgsrc/emulators/Makefile   Thu Jul 16 11:03:32 2026
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.381 2026/04/27 10:23:49 adam Exp $
+# $NetBSD: Makefile,v 1.382 2026/07/16 11:03:32 nia Exp $
 #
 
 COMMENT=       Emulators for other machines and systems
@@ -431,6 +431,7 @@ SUBDIR+=    swarm
 SUBDIR+=       sys161
 SUBDIR+=       tcl-hp-15c
 SUBDIR+=       tme
+SUBDIR+=       tsugaru
 SUBDIR+=       tuxnes
 SUBDIR+=       twin
 SUBDIR+=       uae

Added files:

Index: pkgsrc/emulators/tsugaru/DESCR
diff -u /dev/null pkgsrc/emulators/tsugaru/DESCR:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/DESCR      Thu Jul 16 11:03:32 2026
@@ -0,0 +1,8 @@
+Tsugaru is an emulator of the legendary Fujitsu FM TOWNS computer,
+including the Marty video game console. It primarily targets emulating
+Model II MX, including undocumented hardware features.
+
+If you do not own your FM TOWNS hardware, you can use the following free
+version of the ROM:
+
+http://ysflight.com/FM/towns/FreeTOWNS/e.html
Index: pkgsrc/emulators/tsugaru/Makefile
diff -u /dev/null pkgsrc/emulators/tsugaru/Makefile:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/Makefile   Thu Jul 16 11:03:32 2026
@@ -0,0 +1,58 @@
+# $NetBSD: Makefile,v 1.1 2026/07/16 11:03:32 nia Exp $
+
+DISTNAME=      tsugaru-20260522
+CATEGORIES=    emulators
+MASTER_SITES=  ${MASTER_SITE_GITHUB:=captainys/}
+GITHUB_PROJECT=        TOWNSEMU
+GITHUB_TAG=    v${PKGVERSION_NOREV}
+
+# Should use the most recent commit at the time of when a new release is made.
+GITHUB_SUBMODULES+=    captainys public 8cabce7e045b23ad68fdb8592aeacd8d9101e362 gui/src/public
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      http://ysflight.in.coocan.jp/FM/towns/Tsugaru/e.html
+COMMENT=       FM Towns emulator
+LICENSE=       modified-bsd
+
+TOOL_DEPENDS+= ImageMagick-[0-9]*:../../graphics/ImageMagick
+
+USE_LANGUAGES= c c++
+
+USE_CXX_FEATURES+=     c++17
+
+CMAKE_CONFIGURE_ARGS=  ${WRKSRC}/gui/src
+
+CFLAGS.NetBSD+=        -DEBADFD=EBADF
+CFLAGS.NetBSD+=        -DESTRPIPE=EPIPE
+
+INSTALLATION_DIRS+=    bin
+INSTALLATION_DIRS+=    share/applications
+INSTALLATION_DIRS+=    share/pixmaps
+
+pre-build:
+       ${PREFIX}/bin/magick ${WRKSRC}/src/resources/tsugaru_icon.ico \
+               ${WRKDIR}/${PKGBASE}.png
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+do-install:
+.if ${OPSYS} != "Darwin"
+       ${INSTALL_PROGRAM} ${WRKSRC}/${CMAKE_BUILD_DIR}/main_gui/Tsugaru_GUI \
+               ${DESTDIR}${PREFIX}/bin/${PKGBASE}
+.else
+       ${INSTALL_PROGRAM} ${WRKSRC}/${CMAKE_BUILD_DIR}/main_gui/Tsugaru_GUI.app/Contents/MacOS/Tsugaru_GUI \
+               ${DESTDIR}${PREFIX}/bin/${PKGBASE}
+.endif
+       ${INSTALL_DATA} ${WRKDIR}/${PKGBASE}.png \
+               ${DESTDIR}${PREFIX}/share/pixmaps/${PKGBASE}.png
+       ${INSTALL_DATA} ${FILESDIR}/${PKGBASE}.desktop \
+               ${DESTDIR}${PREFIX}/share/applications
+
+.include "../../devel/cmake/build.mk"
+.if ${OPSYS} != "Darwin"
+.  include "../../audio/alsa-lib/buildlink3.mk"
+.endif
+.include "../../graphics/glu/buildlink3.mk"
+.include "../../sysutils/desktop-file-utils/desktopdb.mk"
+.include "../../x11/libX11/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/emulators/tsugaru/PLIST
diff -u /dev/null pkgsrc/emulators/tsugaru/PLIST:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/PLIST      Thu Jul 16 11:03:32 2026
@@ -0,0 +1,4 @@
+@comment $NetBSD: PLIST,v 1.1 2026/07/16 11:03:32 nia Exp $
+bin/tsugaru
+share/applications/tsugaru.desktop
+share/pixmaps/tsugaru.png
Index: pkgsrc/emulators/tsugaru/distinfo
diff -u /dev/null pkgsrc/emulators/tsugaru/distinfo:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/distinfo   Thu Jul 16 11:03:32 2026
@@ -0,0 +1,11 @@
+$NetBSD: distinfo,v 1.1 2026/07/16 11:03:32 nia Exp $
+
+BLAKE2s (captainys-public-8cabce7e045b23ad68fdb8592aeacd8d9101e362.tar.gz) = c3140ec02976f33c588de97ab2a8dac7774e294a6f1c31f446a22cddb4d2aabb
+SHA512 (captainys-public-8cabce7e045b23ad68fdb8592aeacd8d9101e362.tar.gz) = 
946768d7993bb73dc536ef0d5194f8e233e4c0d1a5c94f7a55370673c065b8fe3cc46d68155595e24b3b1fef722b05781019ed44b75d5fc73e14de99d3fad179
+Size (captainys-public-8cabce7e045b23ad68fdb8592aeacd8d9101e362.tar.gz) = 6718947 bytes
+BLAKE2s (tsugaru-20260522.tar.gz) = 92c87f04cba95d41db55d02f205ebe06a273289a897da4079e9ced0df2392ba0
+SHA512 (tsugaru-20260522.tar.gz) = 82f2e2a76519f5e2e6926ed626cf10d4b0a337accb5154e1bcfc3fb1bfd1591cd9ef7cb8cea55dcbbcba38149b1f35ec336ccc8065471ac818f7a2884131dcf1
+Size (tsugaru-20260522.tar.gz) = 2704445 bytes
+SHA1 (patch-src_cpu_i486.h) = 6dda3d114a6f2ce86599f3f697838ee12a66610f
+SHA1 (patch-src_cpu_i487.cpp) = 8cbac1850f479fc6cd6faa4e0501b854aceb556a
+SHA1 (patch-src_towns_highrespcm_highrespcm.cpp) = 508b77fc15b54898db695bf616b214b3a8bdab81

Index: pkgsrc/emulators/tsugaru/files/tsugaru.desktop
diff -u /dev/null pkgsrc/emulators/tsugaru/files/tsugaru.desktop:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/files/tsugaru.desktop      Thu Jul 16 11:03:32 2026
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=Tsugaru
+GenericName=FM Towns Emulator
+Comment=Run old FM Towns applications
+Icon=tsugaru
+Exec=tsugaru
+Terminal=false
+Categories=Game;Emulator;

Index: pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i486.h
diff -u /dev/null pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i486.h:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i486.h       Thu Jul 16 11:03:33 2026
@@ -0,0 +1,29 @@
+$NetBSD: patch-src_cpu_i486.h,v 1.1 2026/07/16 11:03:33 nia Exp $
+
+Hack around C++ math namespacing problems.
+
+--- src/cpu/i486.h.orig        2026-07-15 23:27:06.185045081 +0000
++++ src/cpu/i486.h
+@@ -16,12 +16,12 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ #define I486_IS_INCLUDED
+ /* { */
+ 
++#include <cmath>
+ #include <cstdint>
+ #include <iostream>
+ #include <map>
+ #include <string>
+ #include <type_traits>
+-#include <math.h>
+ 
+ #include "cpu.h"
+ #include "ramrom.h"
+@@ -654,7 +654,7 @@ class i486DXCommon : public CPU (public)
+                               SRC=0.0;
+                       }
+                       statusWord&=~(STATUS_C0|STATUS_C2|STATUS_C3);
+-                      if(true==isnan(ST) || true==isnan(SRC))
++                      if(true==std::isnan(ST) || true==std::isnan(SRC))
+                       {
+                               statusWord=(STATUS_C0|STATUS_C2|STATUS_C3);
+                       }
Index: pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i487.cpp
diff -u /dev/null pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i487.cpp:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/patches/patch-src_cpu_i487.cpp     Thu Jul 16 11:03:33 2026
@@ -0,0 +1,51 @@
+$NetBSD: patch-src_cpu_i487.cpp,v 1.1 2026/07/16 11:03:33 nia Exp $
+
+Hack around C++ math namespacing problems.
+
+--- src/cpu/i487.cpp.orig      2026-07-15 23:27:25.456268838 +0000
++++ src/cpu/i487.cpp
+@@ -14,7 +14,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ << LICENSE */
+ #include "i486.h"
+ #include <algorithm>
+-#include <math.h>
++#include <cmath>
+ #include <stdint.h>
+ 
+ 
+@@ -29,7 +29,7 @@ void i486DXCommon::FPUState::BreakOnNan(i486DXCommon &
+ 
+ void i486DXCommon::FPUState::BreakOnNan(i486DXCommon &cpu,double value)
+ {
+-      if(nullptr!=cpu.debuggerPtr && true==isnan(value))
++      if(nullptr!=cpu.debuggerPtr && true==std::isnan(value))
+       {
+               cpu.debuggerPtr->ExternalBreak("FPU: NaN detected.");
+       }
+@@ -124,7 +124,7 @@ void i486DXCommon::FPUState::BreakOnNan(i486DXCommon &
+               value80[0]=0;
+               return;
+       }
+-      else if(isnan(src))
++      else if(std::isnan(src))
+       {
+               value80[9]=0x7F;
+               value80[8]=0xFF;
+@@ -1857,7 +1857,7 @@ unsigned int i486DXCommon::FPUState::FPTAN(i486DXCommo
+ 
+               auto &ST=this->ST(cpu);
+               auto t=tan(ST.value);
+-              if(true==isnan(t))
++              if(true==std::isnan(t))
+               {
+                       statusWord|=STATUS_C2;
+               }
+@@ -2136,7 +2136,7 @@ unsigned int i486DXCommon::FPUState::FXAM(i486DXCommon
+                       {
+                               statusWord|=STATUS_C1;
+                       }
+-                      if(isnan(st.value))
++                      if(std::isnan(st.value))
+                       {
+                               // Nan C3,C2,C0=001
+                               statusWord|=STATUS_C0;
Index: pkgsrc/emulators/tsugaru/patches/patch-src_towns_highrespcm_highrespcm.cpp
diff -u /dev/null pkgsrc/emulators/tsugaru/patches/patch-src_towns_highrespcm_highrespcm.cpp:1.1
--- /dev/null   Thu Jul 16 11:03:33 2026
+++ pkgsrc/emulators/tsugaru/patches/patch-src_towns_highrespcm_highrespcm.cpp  Thu Jul 16 11:03:33 2026
@@ -0,0 +1,11 @@
+$NetBSD: patch-src_towns_highrespcm_highrespcm.cpp,v 1.1 2026/07/16 11:03:33 nia Exp $
+
+Need to include <cmath> for std::isnan.
+
+--- src/towns/highrespcm/highrespcm.cpp.orig   2026-07-15 23:26:49.212335569 +0000
++++ src/towns/highrespcm/highrespcm.cpp
+@@ -1,3 +1,4 @@
++#include <cmath>
+ #include <stdint.h>
+ #include "highrespcm.h"
+ #include "towns.h"



Home | Main Index | Thread Index | Old Index