thingsiplay

joined 1 year ago
[–] [email protected] 21 points 3 days ago (1 children)
[–] [email protected] 17 points 3 days ago

No I didn't, until this post.

[–] [email protected] 3 points 3 days ago

Exactly (referring to more complicated), you are right about the architecture. The PS3 is that complicated, not even Sony themselves have a working emulator for their catalog of games in Playstation monthly subscriptions. Sony emulates PS1 and 2, and PS3 is only streaming and PS4 games are directly compatible with PS5. That's because PS4 and 5 are similar in the architecture and basically a PC (obviously there is more to it, but CPU is similar).

And that's why the most advanced PS4 emulator, ChadPS4 ... I mean ShadPS4 (the community makes jokes and calls it Chad), doesn't actually emulate the CPU entirely! Because its similar to a PC CPU, it can use lot of instructions directly. There are other PS4 emulators who try to emulate it entirely, like a traditional emulator.

As for PS3, it is still not in a state like PS2 emulator. Some games work fine and I can play lot of them in full speed without major or any issues. It's under heavy development still. Some games still are totally unplayable. And depending on how heavy a game is, it can be really demanding on the current modern PCs (I know its a vague statement, its hard to make exact statement for situations like these). I think its still a few years away from how the PS2 performs right now. And then the question if anyone wants to port the emulator to a different architecture... phew!

[–] [email protected] 4 points 3 days ago (2 children)

Playstation 2 is already solid, that's for sure. Since my new PC from last year, I am also able to emulate Playstation 3 (some claim even the Steam Deck is capable of doing so, but I'm not sure how good). And PSP emulator runs on most computers nowadays. We even enter in emulating a Playstation 4, but off course this is in early stages at the moment.

So yeah, there is lot of Playstation food for the coming years for you. :D Its really exciting. I still need to figure out PS Vita, and didn't get into it yet. The original Playstation is still my biggest Sony love I have and probably right behind my favorite console, the SNES.

Romhacks are also huge part of why I love the emulation scene. If you allow me to plug an article I wrote, with lot of Romhacks and Mods for NES as a recommendation. There is so much cool stuff out there: https://thingsiplay.game.blog/2023/02/18/nes-mods-and-romhacks-collection/

Someone even ported the original NES Super Mario Bros to SNES, and then modified that to add in a Super Mario Maker style editor; on the SNES! I can't link it here if you are interested, unfortunately I only know a prepatched ROM source for it. And that is not something this community / place allows to link.

[–] [email protected] 8 points 4 days ago (4 children)

I do emulation since early 2000s (since I have a PC) and its one of the best things not only in gaming, but in computing and technology in general!

If you are new to emulation, then I recommend to use standalone emulators first. There are emulators for single systems, like Snes9x for SNES and others are multi-system emulators, like Mesen or Ares that can play many console systems.

Following is a bit more advanced:

  • RetroArch: My favorite is RetroArch, but that is not recommended if you are just new to emulation and want a simple emulator to access a few games without configuring too much.
  • MAME and FinalBurn: Arcade emulation with MAME in example can also be tedious, because that works a bit different than a normal console emulator.
  • DOSBox: PC emulators for old systems can play old DOS games, but you need to have an understanding how DOS works in order to be able to use it correctly. Because some games require setups in DOS and such. You can also install old Windows versions like Win98 to play Windows games. But you really need to install and handle Windows like a real operating system, and install each game as well.

Resources:

[–] [email protected] 6 points 4 days ago (1 children)

pcloud

I'm not much of a Cloud Drive user, but experimented with pcloud. It has a CLI tool and the ability to show up in the local filesystem, so you can browse through with your graphical filemanager: https://www.pcloud.com/download-free-online-cloud-file-storage.html

Free Tier

I only used the Free Tier without time limitation. Just logged in to the web client in browser to see if my files are still there, and I still have my files uploaded 2 years ago. I think Free Tier starts with 1 GB of free space and you can unlock more and more if you do some tasks like installing the CLI tool and such (I have 5 GB of space without time limtations). And the files are stored in European servers; not sure if I had a choice at account creation time or if this is tied to the location where I am.

If you want more space, you can either pay annually or a one time payment for lifetime access (500gb for 200 Euros, 2 TB for 400 Euros...).

[–] [email protected] 3 points 5 days ago

Okay, but you can just pick a few games that look interesting there. It's not different than random people recommending random stuff here.

  • SEGA AGES Thunder Force IV
  • Tengai
  • Samurai Aces
  • ESP Ra. De. Psi
  • Mushihimesama
  • Espgaluda II
  • Deathsmiles I & II
  • DoDonPachi Resurrection
  • Dodonpachi DaiOuJou Blissful Death Re:Incarnation

These are pretty good, either from my personal experience or from reading lot of recommendations through forums and friends. The best Shmups on the Switch are mostly ports of existing older games. I'm not sure if you play on another platform too, I just read you have a Switch. I played on emulators on my PC and on Steam, there are a few more games I am not sure if they exist on Switch.

[–] [email protected] 4 points 5 days ago (2 children)

https://www.nintendolife.com/guides/best-nintendo-switch-shmups has a 5 pages full of recommendations. Scroll down the list just before the comments, to see the list of pages you can open.

[–] [email protected] 1 points 6 days ago* (last edited 6 days ago) (1 children)

The OP does not talk about speedrun and challenges. The one guy in the comments just changed the discussion topic. And even if so, Speedrunning and exploiting glitches has nothing to do with playing the game as intended or the experience of the game. And yes off course speedrunning ruin the experience of the game, as it is not playing the game as intended (unless it is specifically a speedrun game, but that is an exception and not our topic). That is a whole another topic and has nothing to do with our discussion and has nothing to do with the initial OP topic.

The OP asks what games to play on easy and which games he recommends, and I told him what I recommend or when I do not recommend playing them. It doesn't make sense to you, because you are conflicting different issues with the topic. Speedrun is not our discussion (that guy just started talking about it).

Mind you, the point the OP brought was to use easy mode because he does not like or find the combat engaging. Therefore he does not want to play the combat (and by extension the game as it is intended). How can you guys read and interpret all kind of nonsense and start flaming?

[–] [email protected] 1 points 6 days ago (5 children)

We weren't talking about speed-running or challenges. And I made clear its not the only way to play a game, but for people who don't want to play the game as intended. Its a totally different and degraded experience, because the game is designed in a certain way. Therefore I do not recommend using easy mode... unless (and I made that clear before too) game is unfair or badly designed or if you don't want to play the game anyway, and just enjoy cut scenes.

I'm not attacking you or judging you, I try to protect the worse experience for from you and encourage to actually learn to play the game. If you don't wan to play the game like that, then maybe easy mode is for you. Or play another game. It's not my choice its yours, I don't take your choice away!

[–] [email protected] 2 points 6 days ago (7 children)

I'm just expressing my opinion and give recommendations. Do what you want, its your experience that is ruined, not mine. Geez people need to calm down, its a discussion. No need to get personally attacked.

18
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/[email protected]
 

The original Runescape Midi files are interpreted 3 times with different, Soundfonts. The results are then mixed together in a harmonic way. A reinterpretation of the original music. I have uploaded all songs as a single video collection format on YouTube and uploaded music files in AAC format on Archive org.

YouTube 2 hours video:

Archive org Audio files:

Alternative uploads for faster download:

1
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/[email protected]
 

Hello folks. So I'm still not good at Rust and learn even basics after years (just on and off doing some stuff). I'm currently working on my first small GUI application with FLTK in Rust. It's not that important for my question, but I think this gives a bit of context. The actual question is about struct and impl, using a builder pattern like pattern, but without impl builder and build() function.

Normally with the builder pattern, there are at least two structs and impl blocks. One dedicated to build the first struct. But I am doing it with only one struct and impl block, without a build() function. But it is functionally (at least conceptional) the same, isn't it? A shorted example for illustration:

Edit: Man beehaw is ruining my code blocks removing the opening character for >, which wil be translated to < or or completely removed. I use a % to represent the opening.

struct AppSettings {
    input_directory: Option%PathBuf>,
    max_depth: u8,
}

impl AppSettings {
    fn new() -> Self {
        Self {
            input_directory: None,
            max_depth: 1,
        }
    }

    fn input_directory(mut self, path: String) -> Self {
        self.input_directory = match path.fullpath() {
            Ok(p) => Some(p),
            Err(_) => None,
        };

        self
    }

    fn max_depth(mut self, levels: u8) -> Self {
        self.max_depth = levels;

        self
    }
}

And this is then used in main like

    let mut appsettings = AppSettings::new()
        .input_directory("~/test".to_string())
        .max_depth(3);

BTW I have extended PathBuf and String with a few traits. So if you wonder why I have code like this path.fullpath() . So just ignore that part. I'm just asking about the builder pattern stuff. This works for me. Do I miss something? Why would I go and do the extra step of creating another struct and impl block to build it and a final struct, that is basically the same? I don't get that.

Is this approach okay in your mind?

 

Ted Ts'o sent out the EXT4 updates today for Linux 6.11. He explained in that pull request:

"Many cleanups and bug fixes in ext4, especially for the fast commit feature. Also some performance improvements; in particular, improving IOPS and throughput on fast devices running Async Direct I/O by up to 20% by optimizing jbd2_transaction_committed()."

 

This is not a troll post and I hate nobody. (I know, the title may sound like it is.)

This year I got into Switch emulation for first time and finished Breath of the Wild with 130 hours on Yuzu, with 60 fps patch and higher resolution. Besides some control issues on very specific shrines, most of the time it was a smooth experience. I fully switched to Ryujinx after it and now started playing Tears of the Kingdom. Here are my issues with it after playing for over 10 hours on Ryujinx:

  • minor: distracting graphical issues all over the place on ground and walls texture corners, but I can live with that and its more or less depending on the angle and places
  • major: sometimes game freezes and crashes randomly on the overworld map
  • showstopper: could not progress any longer, on a specific mission where I had to use the camera it just didn't want to recognize the photo of the statue

I tried different Roms for the game, with and without mods, with and without different patches (1.0, 1.2.0, 1.2.1) and different settings on the emulator. Always same problems, nothing could resolve for me. Then I copied my save file to Yuzu and tried the game there. Results after playing game for 6 hours on it:

  • very minor: no longer those graphical issues, but light blinking issues when traveling, so much less distracting and less active
  • safe: no freezes happen anymore
  • progress: instant progress on the place with the photo, I could hear the audio that was missing on Ryujinx, I tried 10 different images on Ryujinx to do exact same photo but it did not work, it only works on Yuzu

My PC System:

  • OS: Linux
  • GPU: AMD 7600
  • CPU: AMD 7700X

Does anyone have similar experience? I searched lot, but could not find any other solution and gave up after days. Again, please this i not a war. I just share my experience. I play Super Mario Wonder on Ryujinx and its a perfect experience so far and want to keep using it as my main Switch emulator. I also like the fact that addons (patches, updates and mods) are not installed on the NAND, but I just point to the place where they are without installing.

 

A documentary not only about how CoD 4, but how CoD came into in the first place. I'm currently a few minutes into the video and want to share it here. Documentaries by Ahoy are always enjoyable, without too much fluff and jokes. Highly recomended.

If you don't like YouTube, here is an alternate link with more privacy: https://invidious.nerdvpn.de/watch?v=FXD5_7wqr1U

Edit: Just noticed the above invidious link from the nerdvpn server is not available at the moment. Here is an alternate Invidious link from a different server: https://yewtu.be/watch?v=FXD5_7wqr1U

52
Game Recording Steam Beta (store.steampowered.com)
 

Solution: Thanks for finding the solution, kate (in the comments). The option to control this is --extractor-retries .


I recently start using SponsorBlock feature with yt-dlp . When it looks up SponsorBlock server, it tries 3 times to connect and download information. I would like to increase the retries for this specifically, but could not find the right setting or option in the manual (man yt-dlp) and help (yt-dlp --help). I would like to increase it to at least 5 or maybe even 10 retries per video.

I've noticed for sometimes it cannot login within the first 3 look ups, but when I retry the command after that it will just look up fine. Therefore an increase in the retries setting would be helpful. Especially helpful when downloading entire playlists, leaving it for some time alone.

 

Project name is changed from "ytdl" to "yt-dlp-lemon", after user "lol" in the comments convinced me. Thank you for the suggestion! Remember to change the directory name at ~/.local/share/ytdl to ~/.local/share/yt-dlp-lemon .


The terror continues...

10 days ago I posted the initial version of this script. Since then lot of changed and added. Here some of those changes since v0.1:

  • -h is now much more simple, to see full help use -H
  • -f to repackage to another container format, or -F to force re-encoding video content with a codec to any other format
  • -s and -b will operate on sponsors only, and -S and -B on complete list of SponsorBlock segments
  • similarly -e and -d will only embed and download only a few extra metadata and files, -E and -D does all extra files and data
  • new -R will download and name files in reverse order, with index starting at 1 for the bottom file, useful for playlists who add newest entry to top
  • by default all file names are simplified and sanitized a little bit, even if no option -r (for very strict) is used

My goal is to make the usage of yt-dlp itself easier with this script, without the need to study help, the manual and to write a configuration file and a script. And you don't need to test it with various sources. It does not everything what yt-dlp offers, but most of the stuff in the way I like it.

git clone https://github.com/thingsiplay/yt-dlp-lemon
cd yt-dlp-lemon
chmod +x yt-dlp-lemon
./yt-dlp-lemon -h

Output from simple help:

$ yt-dlp-lemon -h
yt-dlp-lemon [options] [url...]

Simple wrapper to yt-dlp with only a subset of options.

options:
-h                show help and exit
-H                show all options, notes and exit
-m HEIGHT         max height
-f FORMAT         repack format
-I                no ignore file
-s                add chapter marks + recognize sponsors
-b                remove sponsored segments
-c                split file by chapters
-p                playlist mode
-a                audio mode
-d                download description files
-e                embed meta and chapters
-q                show filepath only
-x                skip download

Copyright © 2024 Tuncay D. https://github.com/thingsiplay/yt-dlp-lemon
 

Today I'm here again to terrorize this community with my Bash scripts nobody asked for.

This new biggest is a script evolved from a much simpler version found at biggest.sh to something more complex and complete. Now there are even options to show a simple horizontal bar and relative percentage numbers instead the file size itself.

It's a script to control du command in combination with several other standard Linux utilities. I'm well aware of these alternative applications to help visualizing what the biggest files on the system are. Well, I like these kind of scripts and I like its not too much bloated. And especially the output as paths can be combined with other tools easily. It's also kinda fun doing this. Edit: Forgot to mention, it also reads stdin pipe, as output from another program like find in example.

Have a good day.

 

ytdl is a small script for Linux as an alternative interface to yt-dlp (which itself is a fork from youtube-dl, to download YouTube videos). My goal is to make some of its functionality a bit more accessible for the daily usage. This includes predefined settings and narrowing it down to options I care most about.

 

Solution was quite easy. Thanks to the user reply here: beehaw.org/comment/3535588 or programming.dev/comment/10034690 (Not sure if the links actually work as expected...)


Hi all. I have a little problem and don't know how to solve. A CLI program in Python is broken since Python 3.12. It was working in Python 3.11. The reason is, that Python 3.12 changed how subclassing of a pathlib.Path works (basically fixed an issue), which now breaks a workaround.

The class in question is:

class File(PosixPath):
    def __new__(cls, *args: Any, **kwargs: Any) -> Any:
        return cls._from_parts(args).expanduser().resolve()  # type: ignore

    def __init__(self, source: str | Path, *args: Any) -> None:
        super().__init__()
        self.__source = Path(source)

    @property
    def source(self) -> Path:
        return self.__source

    @property
    def modified(self) -> Time:
        return Time.fromtimestamp(os.path.getmtime(self))

    @property
    def changed(self) -> Time:
        return Time.fromtimestamp(os.path.getctime(self))

    @property
    def accessed(self) -> Time:
        return Time.fromtimestamp(os.path.getatime(self))

    # Calculate sha512 hash of self file and compare result to the
    # checksum found in given file. Return True if identical.
    def verify_sha512(self, file: File, buffer_size: int = 4096) -> bool:
        compare_hash: str = file.read_text().split(" ")[0]
        self_hash: str = ""
        self_checksum = hashlib.sha512()
        with open(self.as_posix(), "rb") as f:
            for chunk in iter(lambda: f.read(buffer_size), b""):
                self_checksum.update(chunk)
            self_hash = self_checksum.hexdigest()
        return self_hash == compare_hash

and I get this error when running the script:

Traceback (most recent call last):
File "/home/tuncay/.local/bin/geprotondl", line 1415, in 
sys.exit(main())
^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1334, in main
arguments, status = parse_arguments(argv)
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1131, in parse_arguments
default, status = default_install_dir()
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1101, in default_install_dir
steam_root: File = File(path)
^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 97, in __new__
return cls._from_parts(args).expanduser().resolve()  # type: ignore
^^^^^^^^^^^^^^^
AttributeError: type object 'File' has no attribute '_from_parts'. Did you mean: '_load_parts'?

Now replacing _from_parts with _load_parts does not work either and I get this message in that case:

Traceback (most recent call last):
File "/home/tuncay/.local/bin/geprotondl", line 1415, in 
sys.exit(main())
^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1334, in main
arguments, status = parse_arguments(argv)
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1131, in parse_arguments
default, status = default_install_dir()
^^^^^^^^^^^^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 1101, in default_install_dir
steam_root: File = File(path)
^^^^^^^^^^
File "/home/tuncay/.local/bin/geprotondl", line 97, in __new__
return cls._load_parts(args).expanduser().resolve()  # type: ignore
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/pathlib.py", line 408, in _load_parts
paths = self._raw_paths
^^^^^^^^^^^^^^^
AttributeError: 'tuple' object has no attribute '_raw_paths'

I have searched the web and don't understand how to fix this. Has anyone an idea what to do?

 

A short list with categories of my smol terminal focused tools, scripts and functions I have created over the years. There are some general purpose and very specific ones. This list was needed, because in Github it was a bit cluttered. Maybe, just maybe, you find something useful or inspiring in there.

view more: ‹ prev next ›