[-] AVincentInSpace@pawb.social 2 points 3 hours ago* (last edited 2 hours ago)

90% of the knowledge here came from looooooong rabbit holes on https://nesdev.org as well as some YouTube videos by The Gaming Historian. If you're interested in the inner workings of 8-bit systems that aren't the NES, The 8-Bit Guy on YouTube has some great visual walkthroughs. Also Connections Museum has some really cool in-depth looks of old-school electromechanical telephone switching equipment and the stuff that engineers in the 1930s cooked up to make telephone switching automatic before the concept of an electronic computer was a twinkle in IBM's eye. Also also, if you haven't discovered Technology Connections yet, I cannot recommend it enough.

Also unrelated, but I mentioned in that massive comment that the dual-bus architecture allows the NES to never show a loading screen but didn't elaborate on how, and I wanna do that. Loading data is the process of copying it from some slow storage medium, like a cartridge, hard drive, or (horror of horrors) optical media into RAM, and loading screens arise from the fact that said storage mediums often take quite a while to spit out all that data and the user needs something to let them know the program isn't just frozen. Since all data on the NES is read directly from the cartridge as it's needed, it never has to load anything. All the data for the game is always right there. Unfortunately, this technique is all but useless today -- the NES's CPU was very slow (1.79 megahertz -- for reference, no CPU slower than 1000 megahertz has been manufactured in over a decade), allowing it to get away with reading directly from the storage medium. Modern CPUs need to access data orders of magnitude faster than the fastest flash chips available, and actual mask-ROM like the NES used is so expensive to manufacture nowadays that they're basically never seen outside of the firmware powering your CPU. Besides, never ever ever having even one microsecond of loading time is not really necessary anyway, and there are techniques that work on modern CPUs to get something like that without actually having it. As an example, here's some more modern trivia for you: virtually all modern operating systems use a techique called memory mapped files to launch their local equivalent of an .exe file. Essentially, all modern CPUs (at least, the ones intended to run an operating system as opposed to a single gigantic firmware program) have a memory mapper unit, which essentially allows the CPU to pretend that it has more RAM than it does. Whenever a program tries to access a block of memory that doesn't actually exist, it will trigger what's called a page fault, where it will stop that application for a while, run a special function in the operating system to figure out what data is supposed to be there, put that data somewhere in physical memory where the program can access it, and then resume the program. Memory-mapping a file is when you connect a file to this system, essentially asking the operating system to pretend like it has the entire contents of the file loaded into an area of RAM, but only when someone actually goes to access that RAM does the operating system pause the application that asked for it, open the file, load just the portion it needs right at that minute, and resume the application again. This can lead to major speedups: most programs don't need the entire contents of their EXE file right when they start up -- they don't need the code that finds out what text you have highlighted and copies it to the clipboard, for example, before you press Ctrl+C. Memory-mapping the EXE file allows the operating system to wait to load the code that does that off the hard disk until the program actually needs it, and thus have the whole program running before it's finished loading the EXE file. If the user closes the application before ever pressing Ctrl+C, that portion of the EXE file might never get loaded! (Which bits get loaded is often not that granular, and the code for Ctrl+C specifically is small enough that it's likely to get loaded anyway along with something else, but you get the idea.)

Programs can use this technique to "lazy-load" their internal data files (or files you create yourself) too, but this unfortunately doesn't have as broad an application as you'd think. It only really helps when you don't need the entire file at once, and when the file is large enough that loading it into RAM all at once isn't feasible. I'm currently working on one such program: a desktop client for a furry imageboard. I wasn't satisfied with the search features the site had, so I built my own search algorithm that supported more granular tag constraints and rigged it up to the full database dump available from the site. Loading the entire database into RAM uses over a gigabyte of RAM, and that's not going to fly if I want to port it to mobile devices, so I'm currently working on setting up memory mapping so I can only have the database loaded while I'm doing a search and let the OS swap it out when my app isn't running.

[-] AVincentInSpace@pawb.social 1 points 5 hours ago* (last edited 5 hours ago)

A quick browse through that subreddit's comment section shows a good 80% of commenters (and virtually all comment voters) are left-of-center. What did you have to do to get them to ban you, cause it sounds pretty difficult

[-] AVincentInSpace@pawb.social 3 points 5 hours ago* (last edited 4 hours ago)

The Nintendo Famicom, renamed the Nintendo Entertainment System (NES) when it was released in America two years later, was a 3rd-generation videogame console released in 1983. It is best known for being the birthplace of the Super Mario Bros. series as well as having one of the largest libraries of any videogame system ever released. The system was very easy and very cheap to develop for, and since game reviews were not yet widely accessible, publishing games could be extremely lucrative regardless of if they were any good. To put it politely, games for the system varied wildly in quality, leading to Nintendo stepping in a year or two into the system's life to introduce the Nintendo Seal of Quality, which it bestowed upon games that had passed a rigorous series of quality checks.

When they redesigned and re-released the console outside of Japan, they made this seal of quality mandatory: the Famicom's North American and European counterpart, the NES, is widely known for being the first game system to feature digital rights management. It contained a special Nintendo-proprietary chip called the Checking Integrated Circuit (CIC) which would look for an identical chip inside the game cartridge and, if one was not present, cause the game to continually reset itself. Games awarded the Nintendo Seal of Quality were also awarded a limited quantity of CICs to put in cartridges. Nintendo's draconian policies regarding CIC distribution, especially the restriction of only publishing two games per year, led to numerous methods to bypass the CIC chip, including charge pumps that delivered negative voltages to its input pins, causing it to lock up; cartridges with a second cartridge connector on the back where the customer was expected to insert a game with a functional CIC; and, in the case of one particularly ballsy developer, falsely claiming they were in a lawsuit with Nintendo in order to get access to the patents governing the CIC, reverse engineering it from those, designing their own compatible chip called the Rabbit, and putting that in their cartridges. Nintendo was not thrilled about that one.

The Famicom/NES uses a design architecture almost unique among all videogame systems ever released that allows it to never, ever show a loading screen. As with most consoles of the era, the console's CPU reads game code directly from a ROM chip inside the cartridge as it executes it, rather copying it to RAM inside the console first as later consoles did. Where the NES was unique was that it did the same thing with the GPU (which in the NES was called the PPU, for Picture Processing Unit). You see, RAM was incredibly expensive in 1983, and if we put in enough video memory for it to be able to store an entire frame's worth of textures, we would not be able to sell the thing for $99. It would be really nice if the PPU could load texture data directly from the cartridge as it rendered the frame to the TV screen, just like the CPU did when executing code. Unfortunately, it's 1983, and the technology for sharing a single data bus and ROM between two chips that need to access it at the same time is kind of expensive too, especially when the PPU needs to access data 3 times as fast as the CPU. (The Commodore 64 could do that, but its CPU and GPU ran at the same speed, plus it cost over five times as much as the NES when it came out the same year -- though that's partially also because it had an eye-popping 64 kilobytes of RAM, unheard of at the time and 16 times as much as the NES). Then an engineer at Nintendo had a brainwave: who said we could only use one data bus? Famicom and NES cartridges have ridiculously wide connectors (60 and 72 pins respectively) compared to their contemporaries such as the Sega Master System and TurboGrafx16. This is because they contain two completely independent address and data buses, one for the CPU and one for the PPU. Early NES cartridges had two fully independent ROM chips. The CPU reads code from one at the same time the PPU reads pixel data from the other, and they don't conflict. This raised the cost of the cartridges considerably, however, since they now needed two expensive-to-manufacture ROM chips instead of one. Later cartridges moved to special ASIC chips called "mappers" which took the two data buses from the console and multiplexed access to a single, massive ROM chip, which was often much higher capacity than what the NES could address directly (48KiB for the CPU and 16KiB for the PPU). The console could send special commands to the mapper chip to cause it to switch which blocks of data were exposed to the console at any given time as the player visited different areas of the game. Later mapper chips enabled support for giving the console additional RAM and VRAM via memory chips inside the cartridge (a RAM chip connected to a battery so it didn't lose its data when power was unplugged was how the original Zelda saved your progress). Some even had full additional sound synthesizers connected to a sound input pin on the Famicom's cartridge connector, which the console mixed with its own sound synthesizer before sending it to the TV, effectively giving the console additional sound channels and much nicer sounding instruments. (Strangely, the NES removed this feature -- cartridges could no longer output sound. What it did have were ten lines that went straight from the console connector to a little known expansion port on the bottom of the console, whose only known use was for plugging in a telephone-line-connected modem through which, using a special game cartridge, adults could play the Minnesota state lottery. Some Japanese games that made use of the sound output pin connected it instead to one of these lines when released in America, and since the sound input is exposed on that connector, a common "mod" for old NES consoles is to connect a resistor between two pins on the expansion port, once again allowing sound from the cartridge to flow to the TV.)

Is that enough cool trivia or should I keep going? I haven't even touched on the Famicom Disk System yet.

I knew 99% of that without googling, despite having been born after the twin towers collapsed. Why yes, I am autistic, why do you ask?

[-] AVincentInSpace@pawb.social 4 points 8 hours ago

Then why'd you say you wanted to kill him? Either you believe in the death penalty or you don't.

[-] AVincentInSpace@pawb.social 7 points 8 hours ago* (last edited 8 hours ago)

What part of "no one has the right to decide whose life is forfeit and whose isn't" didn't you internalize when you said it the first time?

Let him spend the rest of his life in supermax, sure. Make sure he never sees the sun again. Make sure the only people he sees for the rest of his life are people who know what he did. But as for executing him, you are literally the person in the post. What counts as carrying out a genocide? Are soldiers doing that if they're told by their commanding officers they'll be executed themselves if they don't? How about workers who take a bribe to divert aid trucks to somewhere, unbeknownst to the worker, they'll get raided? Heck, what counts as a genocide? Forcibly relocating native Canadians in order to build a natural gas pipeline across their ancestral home is unequivocally bad, but is it genocide? Thought Slime seems to think so. Should we guillotine Justin Trudeau?

[-] AVincentInSpace@pawb.social 3 points 8 hours ago

and the length of dicks

[-] AVincentInSpace@pawb.social 6 points 8 hours ago

this comment has a lot of "blatant, sweeping misandry is bad, but only because it inadvertently harms transmasc people" energy

[-] AVincentInSpace@pawb.social 2 points 8 hours ago

Fascists will always MAKE an excuse.

Obviously. But whether or not leftists support killing people who have done the thing the fascists accuse the minorities of doing/being is whether or not the fascists will be able to kill those minoritites with leftists cheering them on.

[-] AVincentInSpace@pawb.social 7 points 8 hours ago* (last edited 8 hours ago)

I’m okay with fascists and other repeat offender threats to the planet being thrown in a prison forever. They don’t have to die and no one has the right to determine whose life is forfeit and whose isn’t. But if they repeatedly endanger the lives of others, including animals, they need to be away from society.

Finally, a leftist who actually understands that wanting to build a society free from state-sponsored violence means that state-sponsored execution is bad no matter what and it's not just a question of how bad the crime wa–

The death penalty is acceptable for people like Netanyahu.

–oh.

[-] AVincentInSpace@pawb.social 5 points 8 hours ago* (last edited 8 hours ago)

we have people right now accusing anyone with a middle class income of being who they're talking about when they say eat the rich. who genuinely believe that the fact that poverty exists means that anyone who isn't in it is the borgeoise. you're an idiot if you think those people won't come out of the woodwork when people actually start killing billionaires.

[-] AVincentInSpace@pawb.social 8 points 8 hours ago* (last edited 8 hours ago)

conservatism consists of exactly one proposition etc. etc.

[-] AVincentInSpace@pawb.social 13 points 9 hours ago

I wish all pedophiles a very therapy

241
Interviews (lemmy.dbzer0.com)
202

cross-posted from: https://lemmy.dbzer0.com/post/26763464

Pro-tip: Asking permission to interrupt to say your bit goes down much much better than just interjecting

212
typewrule (mander.xyz)
submitted 2 months ago by AVincentInSpace@pawb.social to c/196

cross-posted from: https://mander.xyz/post/16695440

Thesis writing

132
submitted 3 months ago* (last edited 3 months ago) by AVincentInSpace@pawb.social to c/canvas@toast.ooo

Whenever Reddit hosted r/place, it got instantly dominated by streamers and massive clans covering the canvas in their insignia, anybody else who wanted to draw be damned. I remember in 2022 I was working with a smaller subreddit to try to put a 16x16 graphic somewhere unobtrusive and could scarcely put 3 pixels down before getting overwritten by the German flag that was already taking up 1/3 of the canvas.

On Canvas yesterday, somebody put up a ~50 pixels wide drawing of Princess Celestia fighting Nightmare Moon (something that wouldn't have survived 20 seconds on Reddit before being vandalized) and the people drawing the osu! logo went behind it!

I'm just kind of amazed and stunned and glad that we seem to be infinitely better at silently collaborating and not stepping on each other than the people on That Other Site who are obsessed with pointless internet clout.

87
a Blast from VRChat's past (static1.e621.net)
26

Reddit users are called Redditors, Tumblr has Tumblrinas, Lemmy has Lemmings, ~~Twitter has Twits~~...

I feel like Beehaw is separate enough from the rest of the Fediverse both in terms of ideals and the space you're trying to create and in terms of actually being separate (defederated) from many of the most popular Lemmy instances to deserve its own demonym. Beehaw users aren't just any old Lemmings. We should have our own word. What do you think it should be?

50

I recently tried switching from Arch to NixOS and the experience I had can best be described as apalling. I have not had a new user experience this bad since my first dip into Ubuntu dependency hell back in 2016. I'd like to preface this by saying I've been a Linux user in one form or another for almost half my life at this point, and in that time this may well be the most I've struggled to get things to work.

Apparently they have this thing called home-manager which looks pretty cool. I'd like to give that a shot. Apparently I have to enable a new Nix channel before I can install it. I'm guessing that's the equivalent of a PPA? Well, alright. nix-channel --add ..., nix-channel --update (oh, so it waits until now to tell me I typo'd the URL. Alright), and now to run the installation command and... couldn't find home-manager? Huh?? I just installed it. I google the error message and apparently you have to reboot after adding a new nix-channel and doing nix-channel --update before it will actually take effect, and the home-manager guide didn't tell me that. Ah well, at least it works now.

I didn't want to wait for KDE and its 6 morbillion dependencies to download, so I opted for Weston. It wasn't a thing in configuration.nix (programs.weston.enable=true; threw an error and there was no page for it on the NixOS wiki), but it was available in nix-env (side note: why does nix-env -i take upwards of 30 seconds just to locate a package?), so I installed it, tried to run it, and promptly got an inscrutable "Permission denied" error with one Google result that had gone unresolved. Oh well, that's alright, I guess that's not supported just yet -- I'll install Sway instead. Great, now I have a GUI and all I need is a browser. nix-env -i firefox gave me the firefox-beta binary which displayed the crash reporter before even opening a browser window. Okay, note to self: always use configuration.nix. One programs.firefox.enable=true; and one nixos-rebuild switch later, I'm off to the races. Browser is up and running. Success! Now I'd like to install a Rust development environment so I can get back to work. According to NixOS wiki, I can copy paste this incantation into a shell.nix file and have rustup in there. Cool. After resolving a few minor hangups regarding compiler version, manually telling rustc where the linker is, and telling nix-shell that I also need cmake (which was thankfully pretty easy), I'm met with a "missing pkg-config file for openssl" error that I have absolutely no idea how to begin to resolve.

I'm trying to stick with it, I really am -- I love the idea that I can just copy my entire configuration to a brand new install by copying one file and the contents of my home directory and have it be effectively the same machine -- but I'm really struggling here. Surely people wouldn't rave about NixOS as much as they do if it was really this bad? What am I doing wrong?

Also unrelated but am I correct in assuming that I cannot install KDE without also installing the X server?

549

I've been seeing a worrying number of these people on Lemmy lately, sharing enlightened takes including but not limited to "voting for Biden is tantamount to fascism" and "the concept of an assigned gender, or even an assigned name, at birth is transphobic" and none of them seem to be interested in reading more than the first sentence of any of my comments before writing a reply.

More often than not they reply with a concern I addressed in the comment they're replying to, without any explanation of why my argument was invalid. Some of them cannot even state their own position, instead simply repeatedly calling mine oppressive in some way.

It occurred to me just now that these interactions reminded me of nothing so much as an evangelical Christian I got into an argument with on Matrix a while ago, in which I met him 95% of the way, conceded that God might well be real and that being trans was sinful and tried to convince him not to tell that to every trans person he passed, and failed. I am 100% convinced he was trolling -- in retrospect I'm pretty sure I could've built a municipal transport system by letting people ride on top of his goalposts (that's what I get for picking a fight with a Christian at 2AM) -- and the only reason I'm not convinced these leftists on Lemmy are trolls is the sheer fucking number of them.

I made this post and what felt like half the responses fell into this category. Am I going insane?

75
submitted 6 months ago* (last edited 6 months ago) by AVincentInSpace@pawb.social to c/dragonswithjobs@pawb.social

c/dragonsthatwonthavejobsforlong lmao

Source: https://dragonchat.org/@talon/112236857715128464

1112
submitted 6 months ago* (last edited 6 months ago) by AVincentInSpace@pawb.social to c/196

I don't like Biden either, but anyone with half a brain knows there are two choices in the 2020 election. If we had a sane voting system, voting third party might be worth it, but as it stands, no one but you knows your favorite candidate exists and unless you want to become their campaign manager that will still be true in November. Even if you did, and even if you convinced two thirds of the people who would otherwise have voted for Biden to vote for your chosen candidate instead, Trump would still win because half the country voted for him and your guy only got a third. If you vote third party you might as well stay home.

Not voting isn't going to stop the genocide in Gaza. The US will continue to funnel them arms no matter which candidate wins this November. Trump practically campaigns on how much he hates the Jews and he's publicly told Israel to "finish up their war". He'll also make life a living hell for anyone who isn't a straight cisgender male back here at home.

A vote for a candidate is not an endorsement of them or their policies, it's a statement that you like their policies more than the other guy's, and "sticking it to liberals" and "refusing to support genocide" (that's not what voting for Biden is doing, by the way -- a vote for either candidate is a vote for genocide and a vote for neither is an endorsement of both) is not more important than keeping the furthest right politician America has ever seen out of office.

How incredibly privileged do you have to be to see an entire national election as what will happen in the Middle East and ignore Trump's campaign promises to wipe transgender Americans off the map, and further, to not realize that the same thing will happen in the Middle East regardless of which candidate wins?

I hate Biden as much as every other leftist here. But I'll still vote for him because Trump is worse. If there's a single bone in your body that cares about the lives of your trans friends you will too.

961
135
truth or dare (nitter.moomoo.me)
submitted 8 months ago* (last edited 8 months ago) by AVincentInSpace@pawb.social to c/furry_irl@pawb.social

Sauce (Nitter link) is @YateWilliams on B*rdapp

view more: next ›

AVincentInSpace

joined 1 year ago
MODERATOR OF