OpenFunscripter - a scripting tool - 3.2.0 release

Hey, check out my newly released OFS v3 extension enabling way more detailed statistics for the GUI!

4 Likes

I’ve tried to update from (working) version 2 to version 3.2.0, and it won’t run.
I’m using the non avx build.
I’ve uninstalled, rebooted, updated Nvidia drivers, tried the installer and the zip file, nada.
Just a spinning circle for 5 seconds, then nothing.
Earlier, someone mentions that there’s possibly an issue with MPV-2.dll, and suggests replacing with a renamed MPV-1.dll, but that doesn’t help.
I did see on github, there’s discussion that mpv-2 uses the AVX processor extensions. I don’t know if that’s the issue.

The log file is empty, and that’s the only file in the ‘OFS3_data’ folder.

Has anyone found the issue or a workaround?

Edit - additional information:
Intel Core i5-3450S, step E1.
HWiNFO64 says that AVX is supported. Base level, not FMA. No AVX-2 or -512
SIMD 4.1 and 4.2 supported
GPU GTX960, and OpenGL is supported
OS is Windows 7 (ultimate 64 bit)

Hello I had a question please forgive me I know nothing about programming so if this is asking the world tell me to heck off but I had a genuine question.
So I figured out that when mapping cock heroes it’s easier to just watch the video once and hit zero every time a beat passes and then go back through and put a dot in the middle of the two beats is there a way that this program could automate that second half
Basically having a feature where you put down two dots and then the computer figures out what the middle of the two dots is and places the peak
image
you put the points down on the beats/notes and the program figures the mid point between them
I also apologize if this is not the proper way to ask/recommend things / it’s probably already in the program and I’m just a dingus and haven’t figured it out yet lol

So, also not a programmer here but avid Linux user. Would love to try and get this working on Linux (Gentoo) but I don’t know how you even compile it. I can see it uses CMake but I don’t know the commands needed or what dir you should be in to do the CMake. Anyone have any pointers for me?

Sorry for the newbie question…

hi i cant get 3.2.0 to work. if i download the exe files at the install it says v1.0.0 and wont start up after install and the zip files dont do anything at all for me. v2.0.0 works fine tho.

is this a problem in the files or just something that i dont get?

Its a plugin :slight_smile:

Got it figured out (kinda):
From the GitHub page:

  1. Clone the repository
  2. cd "OpenFunscripter"
  3. git submodule update --init
  4. Run CMake and compile

With step 4, go in to the src directory then do “cmake ..” (that’s two periods after cmake) and it will start to build.

The build is failing with localization errors but at least I have something to work with now :wink:

What software did you install to do that? I assume you installed CMake and maybe Clang?

GCC and cmake.

I missed Step 5 - run “make” after the cmake portion has finished.

If you are able to try it, please let me know if it fails for you also around the 85% mark with localization errors. I don’t know how to fix it, though.

@LeGrosFromage It turned out to be much easier than I initially thought.

I decided to install Visual Studio 2022 Community edition and made sure to select C++ desktop development and also made sure that CMake was selected to be installed in the optional modules for C++.

After that I simply connected to git, cloned the repo and then I’m a bit unsure what I did. I doubled clicked on showing Folder View in the Solution Explorer and suddenly CMake was running, downloading and possibly building stuff. Once that was done I simply did an ordinary Build All in Visual Studio and voila, OFS was built and it was possible to run OpenFunscripter.exe from the OFS/bin folder. My first C++ build in over a decade btw :slight_smile:

However, I guess this doesn’t help you since you want to build it for Linux. There is an option in the Visual Studio installer called Linux Development with C++, but that feature is dependent on either a remote Linux machine or the Windows subsystem for Linux. The build will be done in Linux, which must be configured with gcc, gdp, rsync, zip and ninja-build according to the documentaiton.

@sentinel Yeah I’m using Gentoo so I’m building code all the time (everything in Gentoo is done from source). The “make” portion runs fine until I get to this:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx :: uint32_t
      |      ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:11:1: error: expected unqualified-id before ‘{’ token
   11 | {
      | ^
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_src_file(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:16: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);

I don’t know how to fix that and based on other experiences with other programs in the past, I’m reluctant to ask for help on Github as the answer usually is “there’s a Windows binary, just use that”

So near but yet, so far.

That double colon :: in the enum declaration on line 10 should not be there. It should be a single :

It only has a single colon on github, so I guess another one must have magically appeared in your source tree?

Ha, that was my attempt at a bug fix. With the one colon, as in the source code, it also produces this error:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:13: error: found ‘:’ in nested-name-specifier, expected ‘::’
   10 | enum ColIdx : uint32_t
      |             ^
      |             ::
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx : uint32_t

Note now the expected ‘::’

the double colon is not legal enum syntax. Based on the error message I think there’s nothing wrong with this file, but the last included file is broken.

Could you take a look at rapidcsv.h (included on line 4), and check if there perhaps is something wrong with the include guards. Or try updating to a newer version of that file.

Thanks for that.
I downloaded a new copy of rapidcsv.h from the Github project page, there was a minor version difference to thought that would be the easiest way to go. To be on the safe side I deleted the whole project, pulled the whole OFS again from Git, replaced that header file, did a new cmake (which ran 100% clean), did a make, failed in the same place with the same thing. Here’s the full output of the error:

[ 82%] Building CXX object localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:13: error: found ‘:’ in nested-name-specifier, expected ‘::’
   10 | enum ColIdx : uint32_t
      |             ^
      |             ::
/home/phil/Downloads/OFS/localization/gen_localization.cpp:10:6: error: ‘ColIdx’ has not been declared
   10 | enum ColIdx : uint32_t
      |      ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:11:1: error: expected unqualified-id before ‘{’ token
   11 | {
      | ^
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_src_file(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:16: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:62:48: error: ‘ColIdx’ has not been declared
   62 |     fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                                                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:69:20: error: ‘ColIdx’ has not been declared
   69 |         fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:69:52: error: ‘ColIdx’ has not been declared
   69 |         fwrite(row[ColIdx::Default].data(), 1, row[ColIdx::Default].size(), src);
      |                                                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp: In function ‘void write_header_enum(FILE*, rapidcsv::Document&)’:
/home/phil/Downloads/OFS/localization/gen_localization.cpp:100:16: error: ‘ColIdx’ has not been declared
  100 |     fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:100:44: error: ‘ColIdx’ has not been declared
  100 |     fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                                            ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:106:20: error: ‘ColIdx’ has not been declared
  106 |         fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                    ^~~~~~
/home/phil/Downloads/OFS/localization/gen_localization.cpp:106:48: error: ‘ColIdx’ has not been declared
  106 |         fwrite(row[ColIdx::Key].data(), 1, row[ColIdx::Key].size(), header);
      |                                                ^~~~~~
make[2]: *** [localization/CMakeFiles/gen_localization.dir/build.make:76: localization/CMakeFiles/gen_localization.dir/gen_localization.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1286: localization/CMakeFiles/gen_localization.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Please let me know if there’s anything else you think I could try - it would be great to get this working.

I did some more digging and apparently GCC only recently implemented support for this particular enum declaration (GCC issue here). I don’t understand this because cppreference claims this feature was standardized in C++11 (standard from 2011).

If I’m reading that right, the fix is to replace:

enum ColIdx : uint32_t

by:

enum ColIdx

Alternatively, try compiling with clang, it may give better error messages.

1 Like

Nice one. Removing that did correct that issue.

The make gets a little further then bombs out again - there’s a ton of errors but this is the start of it (all the errors seem to be very similar in nature):

[ 85%] Building CXX object OFS-lib/CMakeFiles/OFS_lib.dir/Funscript/FunscriptAction.cpp.o
In file included from /home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/serialization_common.h:29,
                 from /home/phil/Downloads/OFS/lib/bitsery/include/bitsery/serializer.h:27,
                 from /home/phil/Downloads/OFS/lib/bitsery/include/bitsery/bitsery.h:40,
                 from /home/phil/Downloads/OFS/OFS-lib/OFS_BinarySerialization.h:2,
                 from /home/phil/Downloads/OFS/OFS-lib/Funscript/FunscriptAction.h:3,
                 from /home/phil/Downloads/OFS/OFS-lib/Funscript/FunscriptAction.cpp:1:
/home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/adapter_common.h: In function ‘void bitsery::details::readSize(Reader&, size_t&, size_t, TCheckMaxSize)’:
/home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/adapter_common.h:54:13: error: ‘uint8_t’ was not declared in this scope
   54 |             uint8_t hb{};
      |             ^~~~~~~
/home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/adapter_common.h:36:1: note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
   35 | #include "../common.h"
  +++ |+#include <cstdint>
   36 | 
/home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/adapter_common.h:55:37: error: ‘hb’ was not declared in this scope
   55 |             r.template readBytes<1>(hb);
      |                                     ^~
/home/phil/Downloads/OFS/lib/bitsery/include/bitsery/details/adapter_common.h:59:24: error: expected ‘;’ before ‘lb’
   59 |                 uint8_t lb{};

Not sure if jamming this thread up like this is a good idea so I might just open an issue on the bugtracker.

1 Like

I think it’s fairly obvious what the issue is in this case:

note: ‘uint8_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

:slight_smile:

Hi, I’m the guy who made the issue about AVX2 on github The way I figured this out was to run OFS in the visual studio debugger. Your CPU doesn’t support AVX2, so you definitely need to use an older mpv.dll. I grabbed mine from an older OFS release.

2 Likes

Ok so I need to add the include to /lib/bitsery/include/bitsery/details/adapter_common.h ?

Why not just install/compile the AppImage dependencies in Gentoo and use the provided AppImage from GitHub release page?