• 7 Posts
  • 977 Comments
Joined 1 year ago
cake
Cake day: June 15th, 2023

help-circle

  • ROMs back then got erased by UV light, EPROM. EEPROMs are a bit newer (though still ancient) and can be erased electronically, nowadays it’s a very sane idea to just throw flash storage at the problem. I think you can get modern replacement for pretty much any ancient form factor.

    The way those things are used are basically big logic tables: Instead of using a bunch of logic gates, you store the output that’s expected given a certain input. Completely ancient technique, the limiting factor is storage space and sensibility – storing all addition results of two 32 bit numbers uses a lot more transistors than a 32-bit adder, but if what you want to put in there isn’t a thing that can be implemented few standard TTL components throwing storage at the problem makes sense even if you never plan to reprogram it because burning a custom set of transistors onto silicon is expensive.


  • Some more technical info.

    It’s an legit 8-bit CPU implemented with TTL chips, what makes it a different beast than what they did back in the days is that its microcoding isn’t kneecapped. It would absolutely have been possible back in the days to build exactly such a thing, even from precisely those components. At least the TTL part, that is, I bet there’s wibbles around VGA etc. And because I already hear the detractors yes, 8-bit CPUs were microcoded: They decoded single external instructions into a stream of “load from memory, fetch from register so and so, switch on the ALU, put what’s in the ALU output somewhere”. They kept it as simple as possible and it wasn’t reprogrammable but that stuff there, that’s microcode.

    Implementing CPUs in TTL chips also isn’t a new idea, that’s how early minicomputers were made (later on they got some specialised chips). And those things also used ROMs for their microcode. So you could say that this is a minicomputer capable of pretending to be different 8-bit microcomputers.

    FPGAs are a completely different technology, those allow you to arrange logic in a (more or less) arbitrary topology. That is, looking at that board with all those TTL chips, it’d be the equivalent of being able to re-route all the board traces as you please.


  • Data after dst+n is unchanged.

    Sure but that means the part before that is garbage because you have a null terminated string without terminator.

    Or at least that’s how I see it. If your intention isn’t to start and end with a null-terminated string you should be using memcpy. Let us not talk about situations where CHAR_BIT != 8 that’s not POSIX anyway.

    Even better, just avoid doing string manipulation in C.



  • barsoap@lemm.eetoProgrammer Humor@programming.devA Guessing Game
    link
    fedilink
    arrow-up
    6
    arrow-down
    3
    ·
    edit-2
    23 days ago

    How on earth should a newcomer know that the letter “n” in that word stands for number without having to google it?

    By looking at the difference between strcpy and strncpy. Preferably, though, you should simply learn C before writing C.

    The gist of is is that strcpy takes a null-terminated string and copies it somewhere, while strncpy takes a zero-terminated string and copies it somewhere but will not write more than n bytes. strncpy literally has exactly one more parameter than strcpy, that being n, hence the name. If n is smaller than the string length (as in: distance to first null byte) then you’re bound to have garbage in your destination, and to check for that you have to dereference the pointer strncpy returns and check if it’s actually null. Yay C error handling.

    In retrospect null-terminated strings were a mistake, but so were many other things, at some point you just have to accept that there’s hysterical raisins everywhere.



  • Some of them had two distinct consciousnesses emerge due to their hemispheres no longer being able to communicate.

    Arguably we all have more than one distinct consciousness due to both hemispheres being able to sustain one on their own, but generally aren’t conscious of it. And in case we are, interpretations tend to be religious as (generally, in currentyear) the right hemisphere consciousness is thought of as an other. As in, nope, that wasn’t your guardian angel, it was your right hemisphere violently pulling you out of your oh so comfortable left hemisphere tunnel vision to finally perceive some traffic instead of how hard your Lambo’s sound makes your dick.

    Did you know that, evolutionarily, the interconnection of our hemispheres actually decreased with increased intelligence? Having drastically different takes on the world is very beneficial, likewise having them run concurrently: A wide angle lens for threat perception, a narrow angle lens to focus in on things. Iain McGilchrist has written two great books about the whole topic, but as a broad summary: The right hemisphere is the dominant one, having a holistic model of the world, while the left flourishes on detail and, if not in check, fabulates like a fisher – the right, as said, is supposed to direct its focus. Losing your left hemisphere is like losing your glasses, everything becomes fuzzy but you still know where you are, while losing your right is more like losing your eyes but being proud of how sharp your glasses make everything look. Symptomatically, you then see patients walking say through a door, noticing the hinge, getting drawn into it, really looking at it, and forgetting they were even walking. They’re stuck there, looking at the hinge. (That’s all modulo neuroplasticity, if damage occurs very early in life the brain can compensate). Excessive right-hemisphere dominance would be like dude, that’s all, you know, thoughts.


  • You can’t automate generation of shape keys. An artist needs to go over every single asset and make it work for every single extreme point on every slider, then make sure that the automatically derived in between points look good and fix those if required, in all slider combinations.

    And it’s probably still going to clip during some animations because going over absolutely everything is just prohibitively expensive.


  • Why is the term “Body Type A” and “Body Type B” present at all when there are clear pictures of the two options that speak for themselves? It feels like just going out of the way to include “the corporate approved buzzwords intended for maximum synergy with the brand!”

    “Type A” and “Type B”, I assure you, are not things corporate or marketing came up with. This is programmer speak for “I don’t want to name it but can’t call it foo and bar either because normies will be seeing it”.

    As said: This is a re-release. The game and its assets was originally never designed to support anything but a strict binary, but the pronoun vs. body type thing was trivial to do, so they did it. And then for some reason avoided “male” and “female” because face it that sounds like a good idea especially if you’re not overthinking it and the labels were left in because probably also easier to do. Or just didn’t consider the alternative.

    That is: You’re assuming intent when there’s simply economy of action. You might call it laziness, but then the people who did that release had 10000 other things to do besides that.




  • Games that do this aren’t being progressive or inclusive, they’re changing the color of the cup that my drink comes in and pretending it’s an entirely new beverage.

    The thing is… if you use “dude” and “chick” in the body type descriptions you’re implying gender identity. There may be better options that “Type A” and “Type B” but dude and chick ain’t it because it simply means male and female.

    In a very flexible system, you could use more granular options like “wide shoulders”, “wide hips”, “boobage”, etc, to freely mix+match everything. It’s also expensive to develop and even more expensive to create clothing for and a gazillion times more expensive to make really good-looking clothing for (fabric folds and flow aren’t easy). From a developer’s perspective, looking at the work involved really makes you want to say “We’ll just tell the player they’re now Geralt of Rivia and that’s it”.

    I think for most games the appropriate choice would be to have an early radio button, saying “male/female/it’s complicated”, the first two options hiding every enby option including pronoun selection. That’s right-out trivial to do and just good UX. And yes the body types should be called male and female, you already selected “it’s complicated” so it’s clear that when you’re selecting a body, you’re selecting a body, not identity.

    As to laziness: Eh. Noone’s going to start a research programme on how to do things in an optimal way for a re-release. Someone had a look at the code and assets and thought “hey we can support separate pronouns and bodies without doing anything more than providing an option” and that’s exactly what they did, using the extent of knowledge and consideration that was already in-house. Yep, it very well can happen that if you take your foot out of one thing, you put it right into another.

    As to “primary/secondary”: One of the options has to be to the left, or on top, of the other. Ain’t no way around that. I mean you could put option B on the left of option A to cancel things out but now you’re being confusing. More importantly you can make it so that none is selected by default.

    Am I onto something or is this all crazy talk?

    Yes and no you’re being quite personal, and I include your perspective shift into the POV of others in that, about things that will never make 100% of the people 100% happy because technical reasons. The perfect is the enemy of the good and all.





  • The board is the Corporation.

    No.The board is the board, an organ of the corporate body, but not the corporate body itself.

    Why would they be bound to the Mozilla manifesto?

    Foundations are bound to their bylaws, as set out when they were founded. Why? Because law, that’s why. It’s what foundations are for.

    They seem to be destroying its spirit right now.

    According to you.

    If “just sue them” is the only way to hold Mozilla accountable, how low they have fallen!

    You can also complain. Like, with that Brendan Eich situation, the community complained and he left.

    And an executive is suing them. For discrimination.

    That seems to be standard corporate stuff: The two sides disagree over the reason for a non-promotion. Should Mozilla lose the case you can be quite sure heads will roll because unlike other boards, Mozilla actually has to give a fuck about stakeholder opinion. See, well, Brendan Eich.

    OTOH, blanket “they’re doing stuff wrong” “criticism” like yours will be ignored. That’s like filing a bug report saying nothing but “Doesn’t work fix noaw”




  • That’s just Algol instead of B. Most languages use the one or the other, then there’s sexpr-based languages (lisp, scheme), lua (technically Algol but not needing semicolons while also not needing newlines so it’s definitely special), and layout syntax (Haskell, or, if you want a bad implementation, python).


  • It’s not just old Haskell code that’s how you write Haskell if you want explicit braces. Well, mostly generate, but it’s still the idiomatic formatting (and when you generate you always generate braces because it’s easy to get layout subtly wrong when generating).

    Haskell also does the whole

    data Foo = Bar
             | Baz
             | Quux
    
    foo = [ Bar
          , Baz
          , Quux
          ]
    

    thing, makes sense to apply it to braces especially as they’re seen only very rarely. Single-line, yes, but not multi-line.