Coder Social home page Coder Social logo

clementgallet / libtas Goto Github PK

View Code? Open in Web Editor NEW
470.0 470.0 54.0 9.39 MB

GNU/Linux software to (hopefully) give TAS tools to games

License: GNU General Public License v3.0

C++ 97.02% C 1.11% Python 0.54% Makefile 0.35% Shell 0.01% M4 0.18% Dockerfile 0.05% Objective-C 0.05% Objective-C++ 0.70%

libtas's People

Contributors

1ted59 avatar a1batross avatar benlubar avatar casualpokeplayer avatar chungy avatar clementgallet avatar cwitty avatar denilsonsa avatar emrowlands avatar gtcreyon avatar hurricane996 avatar iamgreaser avatar infoteddy avatar jacobly0 avatar jakobrs avatar jbzdarkid avatar jeremiahl avatar kateeckhart avatar kitlith avatar madewokherd avatar nlburgin avatar qixils avatar randomno avatar simi avatar thetedder avatar vadosnaprimer avatar viroulep avatar virtualparticle1 avatar withinwheels avatar yalter avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libtas's Issues

Game saves breaks replays

We should prevent games from saving. This should be done quite easily by hooking file IO functions and preventing file writing.

Can't install .deb, run .so or compile from source

When I try and install the 1.1.0 .deb file (or the 1.0.0 .deb file), I get an error:
Error: Dependency is not satisfiable: libavcodec57 (>=7:3.2.8)|libavcodec-extra57 (>=7:3.2.8)
This is on Ubuntu 16.04 installing with gdebi (software install just fails, no error details).
Compiling from source (using the instructions in the readme) produces a string of errors and crashes right after [ 11%] Buildinf CXX object CMakeFiles/linTas.dir/src/linTAS/ui/MainWindow.cpp.o
Downloading the .tar.gz files seems fine, but nothing at all happens when trying to run the included linTAS file or the libTAS.so file. Running ./linTAS from terminal produces another error:
./linTAS: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.22' not found (required by ./linTAS).
What should I do? There are a couple of games I really want to TAS...
Before the first releases, I compiled it from source and it ran fine, not usable at that early stage, it was only when I updated to the latest version that it stopped working. I've tried deleting everything and redownloading, I've restarted my computer...

Garbage appended to path detected by game running under libTAS

I'm attempting to use a Gamemaker based game (Undertale) and at launch, the console prints out some info. One of the things printed out is the "ExeName" parameter,

When running the game by itself, it's fine

***************************************
*     YoYo Games Linux Runner V1.3    *
***************************************	 
CommandLine: -game game.unx
ExeName= /home/daniel/Downloads/depot_391544/runner
MemoryManager allocated: 1723148
INI DisplayName=UNDERTALE
SavePrePend /home/daniel/.config/UNDERTALE/ 

When running the game under libTAS, there's a large amount of garbage appended to the path.

*     YoYo Games Linux Runner V1.3    *
***************************************	 
CommandLine:  -game game.unx
ExeName= /home/daniel/Downloads/depot_391544/runner�#��������&S6�#��������&T6�#��������&T6�#��������&T6 #��������&T6"#��������&T6$#��������&T6&#��������&T6(#��������&U6*#��������&U6,#��������&U6.#��������&U60#��������&U62#��������&U64#��������&V66#��������&V68#��������&V6:#��������&V6<#��������&V6>#��������&V6?#��������&V6A#��������&W6C#��������&W6E#��������&W6G#��������&W6I#��������&W6K#��������&W6M#��������&W6O#��������&W6Q#��������&X6S#��������&X6U#��������&X6W#��������&X6Y#��������&X6[#��������&X6\#��������&X6^#��������&Y6`#��������&Y6b#��������&Y6d#��������&Y6f#��������&Y6h#��������&Y6j#�������&Y6l#�������}&Y6n#�������{&Z6p#�������y&Z6r#�������w&Z6t#�������v&Z6v#�������t&Z6x#�������r&Z6y#�������p&Z6{#�������n&Z6}#�������l&[6#�������k&[6�#�������i&[6�#�������g&[6�#�������e&[6�#������c&[6�#�������a&[6�#�������_&[6�#�������^&[6�#�������\&\6�#�������Z&\6�#������X&\6�V&\6�#�������
            T&\6�#�������
R&\6�#�����Q&\6�#������O&\6�#������M&\6�#�������K&]6�#�������I&]6�#�������
MemoryManager allocated: 1723572
INI DisplayName=UNDERTALE
SavePrePend /home/daniel/.config/UNDERTALE/

The game proceeds to get through the splash screen then hangs indefinitely when the main thread is launched. I'm unsure if the crash is related to this issue. Do you want game and engine specific crashes as issues at this point in development?

x264 lossless

Please add an option for this. The only lossless options seem to be utvideo (ffv1 was tested by fsvgm777 and he said it's lossy somehow), but utvideo is very annoying to get to work, both for replay and encoding. While x264 is very broadly supported, and it has a lossless option.

I couldn't find how exactly libTAS tells ffmpeg how to encode, but here's the command that produces lossless h264 avi with bizhawk ffmpeg:
-c:a pcm_s16le -c:v libx264rgb -qp 0 -preset ultrafast -pix_fmt rgb24

And of course ideally, in the future, libTAS could support sending the direct command to ffmpeg like bizhawk does.

VVVVVV sound not playing back properly

VVVVVV game uses SDL2 (callback method) and SDLmixer for audio playback.
Currently, music is playing (although with a significant delay) but sound effects are not played at all.
This may have to do with how SDLmixer works, at it makes a distinction between background music and effects. Also, it uses SDL time for the mixing.

Recalibrate mouse position

Some games (Braid SDL1) use relative mouse movement to move its own cursor, not absolute cursor position. Therefore, there is a constant delta between the system cursor and the game cursor.
We should offer a hotkey to point the location of the game cursor, so that both cursor positions match.

Not using the custom allocator is broken

While rebasing my changes for thread synchronization, I found out I just couldn't run anything using the current master.
It looks like turning off the custom allocator has some weird behavior, when I activated logging I found something like this:

[...]
[libTAS f:0] malloc call with size 21
[libTAS f:0] returns addr 0x106e1d0
[libTAS f:0] free call with ptr 0x108aa70
[libTAS f:0] returns
[libTAS f:0] free call with ptr 0x108aa70
[libTAS f:0] returns
[libTAS f:0] malloc call with size 120
[libTAS f:0] returns addr 0x108aa70
[libTAS f:0] allocate call with length 41 and sizeof 1
[libTAS f:0] init call
[libTAS f:0] allocateUnprotected call with size 41
[libTAS f:0] allocateInExistingBlock call with bytes 41
[libTAS f:0] newBlock call with size 82
[libTAS f:0] Create new MOD of address 0x7faab52c3000 and size 4064
[libTAS f:0] allocateInExistingBlock call with bytes 41
./build/linTAS -l /home/fifi/dev/libTAS/../../fez/lib64/libmono-2.0.so.1 -l /lib/x86_64-linux-gnu/libm.so.6 -l /lib/x86_64-linux-gnu/librt.so.1 -l /lib/x86_64-linux-gnu/libdl.so.2 -l /lib/x86_64-linux-gnu/libpthread.so.0 -l /lib/x86_64-linux-gnu/libc.so.6 -l /home/fifi/local/lib64/libstdc++.so.6 -l /home/fifi/local/lib64/libgcc_s.so.1
Connecting to libTAS...
Couldn’t connect to socket.

The beginning of the log looks good, however at some point "allocate" gets called, and it's in the custom allocator.
Simply removing malloc.* makes the game running ok: I don't know well the interaction between libTAS and malloc, but is there anything that forces us to use the hooks even if the custom allocator is turned off?

If not we could just make this a cmake option, and simply encapsulate the malloc functions in an #ifdef CUSTOM or something. That way the name would not be exported in the library and there would be no hook issue.
Note that this solution involves reconfiguring the project when you want to activate the allocator, but you could just have two build directories, one with the custom allocator activated, and the other without.

Non deterministic timer is broken

Games usually take some time to initialize before the first frame. Then, our code generate audio for that amount of time pass it to pulse-simple playback. Because the pulse audio buffer is filled with many samples, it waits until the audio buffer gets depleted, which fills it with even more samples.

VVVVVV crashes on end of cutscene in Final Level

When I get to the final level of VVVVVV, right after the cutscene finishes, I can't frame advance and when I try to load a savestate it crashes and prints the message:
*** stack smashing detected ***: <unknown> terminated
Got wrong message after state loading

Any help?

The input file goes sometimes offsync

This tends to happen after changing resolutions in meatboy. Worth noting that resolution itself changes the behavior of meatboy and this input files made for different resolutions might not be compatible. Restarting the input file has fixed this problem every time so far.

I need some help.

Ok. so basically i have been trying to get LibTAS to work for about 1 month now but it just simply wont work for me. I tried everything and i mean EVERYTHING i even tried submitting an issue no luck. so i was wondering if some kind sir who is reading this could send me there Virtual Machine of LibTAS working on it. It would mean so much to me because right now i'm stuck with using Cheat Engine to slow down the game to TAS it without save states or anything.

My Email To Send It To: [email protected]

Thanks in advance!

libasound2-plugins not listed as a dependency

When the game I was using tried launching its audio thread, it crashed with this message from linTAS

ALSA lib conf.c:3523:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default
[libTAS f:1] Thread 18141 (main) ERROR:   Cannot open default audio device
runner: pcm_params.c:2290: snd_pcm_hw_refine: Assertion `pcm && params' failed.
Got unknown message!!!

It appears that libasound_module_conf_pulse.so is part of libasound2-plugins and installing that fixes the issue.

Games written in the love 11.1 framework hang when love.audio.stop() is called

Steps: Play a game that uses the love 11.1 framework (https://bitbucket.org/rude/love/) and trigger an action that causes love.audio.stop() to be called, such as going down a pipe while playing mari0 (https://github.com/Stabyourself/mari0).

Result: Whenever love.audio.stop() is called, frames stop advancing and the game appears to hang. There are no obvious debug logs that point to a problem when the hang appears.

Additional information: I do not yet know what other scenarios cause this issue. Disabling all calls to love.audio.stop() is sufficient to allow a full TAS of mari0 to be completed. We have assistance from the mari0 developers as needed, but this appears to be an issue with the interaction between libTAS and the love framework itself.

Can't start VVVVVV

when i press start in the program i get the error:
undefined symbol XGetXCBConnection:
then it can't connect to socket on all the attempts
i tried updating xlib and the other dependencies but they were all up to date

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.