



After a half-year-long Java project I'm writing something in C and the lack of a garbage collector can be positively felt in terms of performance but at the same time managing all the pointers can get messy.
There's a whole nother language decidated to solve this problem (while creating a thousand more), but there's got to be a simpler solution.
And yesterday I thought, why not just mark the ownership of the various pointers I've got in my project?
By ownership I of course mean which struct (I do use OOP, sorry) is responsible for freeing that pointer.
And I #define'd three constants.
The MANAGED constant means the struct that contains the pointer has to free it.
The FOREIGN constant means that it's somebody else's job.
The SHARED constant means that it ought to be someone else's job, but it may not be freed when the program exists and should thus be freed.
I place them before the whole declaration in this manner:
MANAGED FONT *fontGothic;
SHARED struct WORLD *currentWorld;
FOREIGN struct PERSON *thePlayer;
This doesn't mean anything to the compiler, but it's just a quick way of telling me what is what.
It is definitely a very stupid idea and I apologize for posting it. I'm just a silly dude who does silly things.
Hi.
Do the legacy console editions use the system language or do they use the language they have preinstalled on the disc?
The context is that I have a PS4 Edition disc that has an ugly ahh sticker that proclaims it is translated into the local language, and when booted on a friend's console it indeed shows up its hilariously translated UI in the local language.
And I wonder whether this disc could be used to play Minecraft the right way, that is, in English.
That friend's console was set to use the local language as its system language, so that might have been it (I don't have a PS4 myself), but the sticker can also mean something.
And today whilst I was reading the Wiki I stumbled across a changelog for some old version of the PS3 edition which said that some translations were added.
The legacy console editions don't have an option to set the language, so this is where my system language theory comes from.
I'd appreciate being enlightened on the matter. Thanks.
The source code of the Java Edition is in decay. We can all experience it by looking at how unplayable modern versions are without performance mods.
But performance is not the only thing. Bad performance is a result of overengineered code.
When I was making mods for Indev and Infdev during the beginning of my career the codebase was very simple and well-structured. The main class contained a lot more than it ideally should, but it's the fate of all Java codebases and there is no running away from it.
A few weeks ago I was revisiting 1.11.2 Far Lands and I noticed that the code was now a bunch of Factories.
I haven't seen the latest source code (why would I?) but seeing the dramatic change I'd bet it's ridden with layers upon layers of abstraction, factories, and so on.
String IDs are a huge part of it. Old Minecraft used numeric IDs. Later, in 1.8 I believe, shortcuts were added, but they still just pointed to those numeric IDs.
In 1.13, everyone's least favourite version, the numeric IDs went away for the most part, replaced by stringId's which are by definition much slower.
Bad performance is a byproduct of "good code".
And, on a sidenote, the reason the LCE runs so well on such old hardware is partly because 4J didn't give a phick about good code.
In Java when they ran out of space in the texture atlas they removed it, implemented automatic atlas generation, and all that nonsense which only wastes CPU cycles and makes the thing slower.
4J just increased the size of the texture atlas. Yeah.
Old Minecraft had two classes. Iirc their names were Block and Item, and they stored the static instances of every single block and item in the game along with their IDs and such.
Modern Minecraft probably has registries instead of this. And yes, for mods it is a godsent, but not so for performance.
That's been some yapping about things most people don't care about, so sorry about that.
That's exactly what I think. From my point of view 14.2, released in 2016 (ten years ago), is the best version of the distribution. And it's not just because it is the version I started with many years ago.
The first point is that 14.2 runs everything I want to run. Geany, Java JDK, SFML, Minecraft (both Java and Bedrock), Survivalcraft, SumatraPDF (via wine), etc. 15.0 also runs all that but it fails the other points, whereas 14.1 and below don't necessarily run some of that stuff.
The second point is that its desktops are gorgeous. KDE 4.14, the last version of KDE 4, is the Windows Vista of Linux (in the positive sense of the word), while Xfce 4.12 is the last version to have the "heavy Windows 9x" vibes, and the last version before they went full on Gtk3.
The third is that it is the last version that doesn't ship with the replacements.
15.0 ships by default with rust, wayland and elogind which are all replacements for C/C++, X11 and ConsoleKit2 that had been used for many years prior and are thus considered traditional by me.
There is also this PipeWire thing. It may be controversial to say but I like PulseAudio. And the reason I like it is because it just works out of the box and pavucontrol is quite a good mixer. Maybe there is some latency but I'm not a music producer so it's not a huge concern to me.
The fact that it runs kernel 4.4.14 is also neat. Not only does it rhyme with the KDE version but it is also too old to be affected by several recent exploits. Not that I care about security. What's more important is that this kernel is smaller than the latest one by several million lines of code, or, in simpler words, it is less bloated.
And, a cherry on the top, the latest version of Firefox ESR works flawlessly on stock 14.2. It will become outdated within a few years though, but for now it works very well.
No, but for real, the real cherry on the top is that ffmpeg is not part of the base system. What I've just said might seem absurd but it's not.
Whoever first packaged ffmpeg for Slackware had this really crazy idea that nobody needed x264 and mp3lame support. Which just so happen to be the most common AV formats in the world and without them ffmpeg is effectively useless.
And it stuck with apparently nobody noticing it, somehow. On 14.2 and older systems you have to build the ffmpeg SBo yourself, and that means that you can enable those codecs, either via CAPS_ARGS or by editing the SlackBuild file.
But on 15.0 ffmpeg is bundled with the system itself, and it is bundled in this abhorrid configuration that should be despised by all children of men.
And since 15.0 bundles ffmpeg the SlackBuild was removed which means that you have to find the Slackware source and manually recompile ffmpeg and pray that the libraries won't be different enough for other software to break.
That's my take. 14.2 is both traditional and runs what I want to run which makes it good. Not that there are no downsides.
It is a transitional release where the system packages use Qt4 but SlackBuilds use Qt5. On the 32-bit version Qt5 is extremely slow, unusable even, and to get around this you have to compile the Qt4 version from the 14.1 SBo. This problem does not exist on the 64-bit version though.
New World2 was created in TU0, and then subsequently upgraded to TU24 and TU31, with about one third of the world having been generated in each update.
I would like to build a melon house in this world but I haven't been able to found any melons so far even though I have explored the whole world.
Only later it became apparent that the few jungles I had had been generated too early and thus lacked any melons.
Is there any good way to get melons or melon seeds on this world without having to search through random mineshafts and pray there are some seeds in the chests?
Thanks.
There's this nifty piece of software called MCPELauncher (though its name has recently been changed) that runs Minecraft Bedrock on Linux without emulation thanks to the fact that PC Linux and (some) Android devices share the same kernel and architecture, and by implementing a subset of the Android API Minecraft Bedrock can run on regular PC Linux completely natively.
And I wonder whether the same thing could be done with the PS4 Edition.
After all, the PS4 itself is nothing more than a locked-down PC so the architecture is not crazy complicated like that of the PS3, and it is at least claimed it uses FreeBSD as its kernel.
So in theory it should be possible to run the PS4 Edition natively on FreeBSD by implementing a subset of the PS4 API, similarly to how MCPELauncher does that.
While simple in theory I bet it's very hard in practice.
Android at least in theory is open source so searching this stuff up isn't a big deal but the PS4 is a closed platform and I don't know whether there is sufficient information about its APIs available out there.
And there is also the case of FreeBSD. While it /may/ run stock FreeBSD with only slight changes, it might as well be very heavily modified, and the BSD license means they don't have to share those changes so unless some hacker group has put some research into it it might as well be blank slate territory.
That's been the thought that came to my mind today.
But only the 64-bit version. The 32-bit version crashes and it's very unstable.
It's just a weird thought that I've had recently.
We all know and hate region locking, and it's been here all the way since the DVD era if not earlier.
All those DVDs and Blu-Rays (but not HD-DVDs!) are engineered to force you to buy new ones if you move to a different country and your drive breaks.
And it came to me, why is it even legal to move discs between countries?
Record labels and Hollywood had massive influence over governments in the 2000s and they lobbied all sorts of anti-digital-freedom laws, so why didn't they make this illegal?
It was really getting a foodhold in the 2000s, well past 9/11 so the procedures to search everyone's stuff were there, and they could confiscate all DVDs that have different region encoding than the place you are travelling to.
It's a silly idea but seeing the other laws I don't see why this one wasn't implemented.
If anyone has some insights why, I'd be thankful for an explanation.
I'm sure you can do this but I don't quite remember how.
I suspect the Windows Phone App is needed but it's nowhere to be found. The version CNet has looks sketchy.
Does anyone remember how to do it?
Thanks.
Is there a way to run homebrew apps written in C#? The language is definitely supported as Terraria is written in it and runs on the platform.
However, unlike someone suggested, the MSIL .exe files cannot be run using XexMenu. Not even an error message. Just nothing happens.
Meanwhile .ccgame bundles are just self-extracting zip files and they need Xbox Live and a remote connection, and it's a mess I'm not willing to delve into.
Is there a way to either run those MSIL .exe's directly, or convert them to the Live Arcade format?
Thanks.
Getting Linux to /boot/ on the 360 is pretty straightforward as long as you know what you are doing (which I didn't...) but that only gets you the live session of that 2010 Lubuntu build with a custom wallpaper.
The built-in installer doesn't work and crashes every time you open it, and I'm pretty sure installing a Debian-based distro is more complicated than just extracting a stage3 tarball.
And a proper Linux file system is needed as likely as that, since FAT doesn't support UNIX permissions.
SquashFS solves the problem, but then again, it's just a live session that doesn't save any changes made to it.
As far as I understand (by looking at what the installer does on x86 Ubuntu), the squashfs image contains a bunch of package files that the installer then installs to the target partition.
Deb packages are just ar archives with a tarball hidden inside of them. It should be possible to extract the contents of all those packages without powerpc apt-get and thus build a proper directory tree.
But where to unpack it? Since the 360 only ever supports FAT (and maybe NTFS?). And the installer has some hooks it executes during the process, like generating the initramfs (is that even needed with xelllaunch?), which could be tedious to replicate without apt-get on hand.
Does anyone have any ideas?
Thanks.
PS: I also wonder whether T2/Linux, the distro that supports all architectures in existence, could run on the 360. That would be neat. Haven't managed that myself though.