videogame things you think about a lot

(because of those big long crane looking things)

6 Likes

Really think Garegga is a contender for most fucking sicko pervert game of all times

3 Likes

all in my mind is like

2 Likes

Castlevania has the best bad translations. “Curly” for Kali, “Lubicant” for Rubicante, “Tallhammer” for Mjolnir ("Thor’s hammer), “Vajaya” for Vajra

18 Likes

Is David Bowie’s son a Plok fan?

8 Likes

save states will show you exactly when games randomly choose stuff, and it’s often well before they are visually shown to the player. pokemon determines it the instant you throw the ball IIRC.

i think it’s fascinating actually. you gotta pull a random number some time, and that is usually before the player experiences the outcome. that random number is going to determine (for instance) the number of times the pokeball shakes, so you gotta do it before the throw even happens.

maybe something about the NES meant it was better/faster/easier to load the sprite for the powerup before the room itself loads, and they couldn’t keep all 3 in memory? i’d be interested in a technical explanation. but maybe it was just “welp we gotta pick some time” and that’s what they chose.

5 Likes

Prolly more code to have 3 triggers rather than 1 trigger 3 times.

Also I am somehow depressed by knowing this even though it like, doesn’t matter.

2 Likes

i think it’s such a neat display of how game work really hard at presenting some sort of reality but looking behind the scenes for even an instant and it all falls apart. it’s all shortcuts and hacks and things disappearing when you don’t look at them.

another scenario i came up with is that originally mushroom houses only had one chest. later, they decided to randomize the reward. someone realized it would be confusing if the chest randomly had 1 of 3 rewards, so they just added more chests that do the same thing. just communicating the randomness basically.

13 Likes

In FF4 I tried grinding for the 1/256 endgame armor and to make that less agonizingly slow, I put a save state right before entering the input that kills the last blob, varying my input timing slightly since that often affects RNG.

2000 whiffs later I realized that was almost certainly a mistaken interpretation of how FF4’s drop RNG works

20 Likes

Regarding random numbers, one surprising thing I’ve learned while disassembling Metroid 2 is that game does not have any random number generator. Instead, any time where it would try rolling a random number, it reads this 8-bit hardware register instead:

FF04 - DIV - Divider Register (R/W)
This register is incremented at rate of 16384Hz […] Writing any value to this register resets it to 00h.

(I’m assuming that 16384 Hz value is just the clock rate of the system divided by some power of 2. That around 273 ticks/frame.)

Usually it just reads the lower bits to make a coinflip, which is convenient since those change the most often.

Philosophically is very weird since there is nothing remotely random about that register (unlike modern hardware RNGs), but in practice it makes the game effectively unpredictable (just ask any speedrunner trying to mitigate metroid knockback).

Source: http://bgb.bircd.org/pandocs.htm#timeranddividerregisters

10 Likes

this is pedantic and totally orthogonal to the point you’re making but believe it or not the way you’ve imagined this technical limitation is the exact opposite of the way the NES worked and was in fact its primary strength as a platform. in general, consoles with directly addressible ROM didn’t need to “load” sprites (with some exceptions around timing, the point was that cartridge ROM could be read directly the same as RAM, it just wasn’t writeable), and the NES specifically was uniquely good at mapping ROM tiles directly to the video output “framebuffer” (not technically a framebuffer but understandable as such), compared to other computers that lacked dedicated hardware for doing that and would need to interrupt the CPU or something.

15 Likes

True hardware RNG is only useful for encryption key generation, as that’s the only situation where the RNG is faced with an adversary that’s motivated enough to get at any deterministic reality beneath and where it’s really bad if they succeed. So they started to become prevalent along with HTTPS encryption becoming the main way to communicate on the internet.

That Metroid 2 approach sounds unusually primitive, but at least until the mid-2000s the standard way to generate random numbers was philosophically similar. You’d take a timesource + a call counter and mash it through multiple levels of mathematical hashing so that it can give you far-apart numbers even if you call it multiple times in close succession, what’s known as a PRNG (pseudo-RNG). And I’m pretty sure a ton of non-security-critical software continues to use PRNGs, as you can easily write one with vanilla code in any programming language, and it’s proven to work just fine.

13 Likes

remember when ethereum launched and a bunch of people made casino apps that were super easy to exploit because they used pseudo-rngs with hardcoded seed numbers? I always think of that whenever someone starts talking about how crypto is the future

15 Likes

16kHz is 2^14, DMG’s clock speed is 4.19MHz, 2^22. so it was incremented every 2^8 (256) cycles

4 Likes

it is also helpful to think about old consoles’ limited amount of RAM in this context, because it didn’t need to hold assets, only the program state

4 Likes

It sounds like in this case, the problem is that Ethereum’s pathetically limited “smart contract” language doesn’t provide access to a system clock.

But I’d note early consoles fundamentally have a variation of this problem too: since they don’t have network access or a battery-powered clock, they’re always in the exact same state when they turn on, and any clock-based seed is really “time since console turned on”.

Chrono Trigger’s battle RNG seed is populated from system clock when you hit “start game” on the title screen and is 100% counter-based from that point on, so that game has RNG-controlling speedruns that rely on pressing “start game” on the exact right frame and resetting if the first RNG event isn’t as expected

11 Likes

SelectButton

15 Likes


The Game Boy Advance DS

11 Likes

Oh yeah, I’m loosely familiar with the use cases and general ideas behind PRNGs. I just thought it was funny considering how history is rife with people making very bad PRNGs on accident (with RANDU being the canonical example), while M2 found a workable solution (for its purposes) by not making a PRNG at all.

I mean, I’m thinking about of Metroid 1 refactored it’s RNG in localization and ended up being remarkably worse. I wish I knew the technical details better, but the jist of it is that whether or not the RNG produces even or odd numbers is almost entirely dependent on the hardware state on reset. It has such a profound and obvious effect on the game that speedruns are required to include initial the reset or power on in their footage. (The current fix hackers use is to replace the RNG with a simple 8-bit LSFR.)

4 Likes