260
Fucking nerd. (hexbear.net)
top 43 comments
sorted by: hot top controversial new old
[-] invalidusernamelol@hexbear.net 121 points 1 week ago

This is why the War Thunder fan base is the best, they'll leak top secret military plans just to settle a disagreement on the forums risking court marshall and felony charges.

[-] Le_Wokisme@hexbear.net 76 points 1 week ago

no a nerd would've released it because that's more interesting.

[-] ALostInquirer@lemm.ee 32 points 1 week ago

yeah, what do you even call this?

[-] Lemister@hexbear.net 73 points 1 week ago* (last edited 1 week ago)

Teacher’s pet. True Nerds™️would have walked across mount everest barefooted merely to get a lost copy of cut content of the adventures of glup shitto.

[-] AssortedBiscuits@hexbear.net 35 points 1 week ago

Square, snitch, dweeb, suck-up, kiss-ass, scab, or worst of all, R*dditor.

[-] Le_Wokisme@hexbear.net 15 points 1 week ago

pulling a Jeff Goldberg

[-] Awoo@hexbear.net 71 points 1 week ago

Imagine not at least copying it before sending it back

Incredible

[-] AssortedBiscuits@hexbear.net 42 points 1 week ago

The absolute worst was all the R*dditors sucking off OP in the original thread.

[-] Horse@lemmygrad.ml 37 points 1 week ago

blizzard people are absolute freaks

[-] XiaCobolt@hexbear.net 25 points 1 week ago
[-] blobjim@hexbear.net 9 points 1 week ago

they might've, ya never know.

[-] ShinkanTrain@lemmy.ml 60 points 1 week ago* (last edited 1 week ago)

Imagine not selling it to the highest bidder and uploading a copy after you get the money

[-] AssortedBiscuits@hexbear.net 48 points 1 week ago
[-] HexReplyBot@hexbear.net 5 points 1 week ago

A Reddit link was detected in your comment. Here are links to the same location on alternative frontends that protect your privacy.

[-] FlakesBongler@hexbear.net 42 points 1 week ago

Thirty pieces of Reddit Silver

[-] Real_User@hexbear.net 12 points 1 week ago
[-] Dirt_Owl@hexbear.net 39 points 1 week ago

Hate these types of gamers with a passion

[-] thelastaxolotl@hexbear.net 36 points 1 week ago

Redditors are the worst

[-] shath@hexbear.net 31 points 1 week ago

looking into it looks like he was told to send it back by the blizzard legal team and he asked lawyers if he had to. he did.

not putting shade on him but like fuck being targeted like that, the only way this could've been done would've been to fuckin NOT POST THAT SHIT ON REDDIT

[-] nfreak@lemmy.ml 15 points 1 week ago* (last edited 1 week ago)

Seems like they got in a storage unit auction and immediately went to asking reddit about it LMAO

Like come on dude. I get being cautious about it, and being concerned about it getting traced back to them if it did leak online. But that's game preservation gold right there.

I hope they at least saved a local copy before sending it back but I doubt it.

[-] AssortedBiscuits@hexbear.net 9 points 1 week ago

Like come on dude. I get being cautious about it, and being concerned about it getting traced back to them if it did leak online. But that's game preservation gold right there.

"I didn't leak it. Some dude broke into my house and stole the CD in order to dump its contents online because I bragged about it on Reddit like a dumbass. My bad."

[-] Meltyheartlove@hexbear.net 30 points 1 week ago* (last edited 1 week ago)

I have a bunch of old pre-release demos and give aways from the 90s but I doubt they had any source code for games but I think I remember some for software at least.

[-] BountifulEggnog@hexbear.net 25 points 1 week ago

If they aren't already there, you should rip 'em and throw it up on archive.org or something

[-] Meltyheartlove@hexbear.net 16 points 1 week ago

I will have a look in a few months when I visit my parents and do just that in case I find anything. doggirl-thumbsup

[-] proceduralnightshade@lemmy.ml 29 points 1 week ago

They could've done both lol

[-] vegeta1@hexbear.net 28 points 1 week ago

You laugh but getting updoots from redditors for the wholesome chungus keanu 9000 move is priceless.

[-] dat_math@hexbear.net 26 points 1 week ago* (last edited 1 week ago)

tasteless: noooooooooo

artosis: YOU HAD THE HIGH GROUND!

help me escape these tulpas

[-] SpiderFarmer@hexbear.net 25 points 1 week ago

Not on the same level, but I'd love to get my hands on one of those Pokemon distribution carts. None of them are actually useful outside of the Shiny Zigzagoon with a glitch-fix kernal, but it would be special to me.

That Zigzagoon one was the Mario Kart demo or pre-order bonus disc on GameCube I think?

[-] carpoftruth@hexbear.net 12 points 1 week ago

What on earth is source code anyway

[-] buckykat@hexbear.net 34 points 1 week ago

Source code is the (nerd) human readable form of software. To run it you put it through a thing called a compiler that translates it into the ones and zeros the computer processor can actually process, and those raw ones and zeros are how proprietary software is generally distributed.

Having the source code means it's easy (for nerds) to change the software or to run it on other kinds of processors.

[-] carpoftruth@hexbear.net 15 points 1 week ago

Hm ok. So one writes source code in a coding language, it gets turned into 1s and 0s. Why can't you go back? Source code gets compiled into a specific order of 1s and 0s, but the same set of 1s and 0s could be made from different types of source code?

[-] Le_Wokisme@hexbear.net 21 points 1 week ago

it's pretty hard to un-bake a cake

[-] HelluvaBottomCarter@hexbear.net 18 points 1 week ago

It's like trying to figure out the exact tools used to build a house by looking at the finished house. You can figure out some tools (a hammer, a paintbrush, etc) but it's hard to know exactly. Programs are so interdependent on the components that make them up, guessing isn't a good solution.

[-] oscardejarjayes@hexbear.net 17 points 1 week ago

Why can't you go back

You sort of can, there are de-compilers like Ghidra that can help with this, but it usually takes a lot of manual effort to properly decode.

the same set of 1s and 0s could be made from different types of source code

Yeah, basically. Companies will also take extra steps to make it so people can't get source code from software, since it's their proprietary IP and whatever.

[-] bluesheep@lemm.ee 17 points 1 week ago

Like others said, you sort of can. But I also want to add that things like functions names, or comments explaining how a function works, are not needed by your computer when running the program, and thus they get lost after compiling. After running a program designed to reverse engineer a compiled program, you'll be able to see a very dumbed down version; no meaningful function or variable names nor comments explaining the code. You have to figure those out all by yourself.

And add to that that some companies/programmers make some parts of the program difficult to read on purpose, so you have more guesswork to do when reverse engineering, and you've got a giant task ahead of you reverse engineering even small games.

On a side note, the original source code can also just be interesting or funny to read. Valve's source code comments come to mind.

[-] HexReplyBot@hexbear.net 3 points 1 week ago

I found a YouTube link in your comment. Here are links to the same video on alternative frontends that protect your privacy:

[-] buckykat@hexbear.net 13 points 1 week ago

You can go back but it's very difficult. Only the biggest nerds can do it, with great dedication and time. That process is called reverse engineering.

For a very simple example, suppose I wrote some code to add how many apples Jack and Jill have together. The source code might look like

jackApples = 3

jillApples = 4

numApples = jackApples + jillApples

But the computer doesn't care about Jack, or Jill, or apples for that matter. It only cares about numbers. So when the compiler puts it into ones and zeros all those useful names get dropped. And when I decompile the binary (what we call those ones and zeros) what I get back might look more like

var1 = 3

var2 = 4

var3 = var1 + var2

And if I want to change how many apples Jill has it's a whole process of trial and error to figure out which variable is Jill's number of apples.

Now expand that to thousands or millions of lines of code and you begin to see why nerds want source code instead of binaries.

[-] addie@feddit.uk 4 points 1 week ago

The compiler will see that var3 is just two numbers added together and replace it with 7, which saves having to do an addition every time you run through that code, and is therefore faster. var1 and var2 may be removed from the output as well; shorter code runs faster since you can fit more in the cache. In fact, since var3 is just a number, you can replace every place that it's used with a 7 as well; if you have some functions:

// be careful!  if the number of apples is less than six then the UI will not line up properly
auto getTheNumberOfApples() -> int {
  auto jackApples = 3;
  auto jillApplies = 4;
  return jackApples + jillApplies;
}

auto appleWeight() -> float {
  return 0.2 * getTheNumberOfApples();
}

... then the compiler will look at all that, delete the lot, and just use 1.4f wherever the appleWeight() function was called. Comment is gone, the decision making is gone, it's impossible to go backwards any more.

[-] Halosheep@lemm.ee 1 points 1 week ago

I'm not a professional programmer and just a hobbyist, but if you also had a set function that changes jackApples to an input integer, what happens at compilation?

[-] addie@feddit.uk 2 points 6 days ago

That disables a whole pile of the potential optimisations, of course. You could define jackApples as a "static variable" (as opposed to making it eg. a field in a class or struct):

namespace {
  auto jackApples = 3;
}

auto setJackApples(int newJackApples) -> void {
  jackApples = newJackApples;
}

The most obvious consequence of this is that jackApples now has an address in memory, which you could find out with &jackApples. Executable programs are arranged into a sequence of blocks when they're compiled, which have some historical names based on what they used to be for:

  • the header section, which identifies what kind of program it is, and where the other blocks start
  • the text section, which contains all of the executable code, and which might be made read-only by the OS.
  • the data section, which contains variables that have a known value at startup
  • the bss section, which contains variables that we know will exist but don't have a value. Might be zero'd out by the OS, might contain unknown leftover values.
  • after those sections, the heap starts. This is where we allocate anything that we don't know the size of at startup. Your program will ask the operating system to "move the end of the heap" if it needs some space to eg. load a picture from disk that your program will then use.
  • at the very end of memory, and counting down, the OS will allocate "the stack". This is where all of your variables that are local to each function are kept - it's the "working area"

Because it's statically allocated, jackApples will be in the data section; if you opened up the executable with a hex editor, you'd see a 3 there.

getTheNumberOfApples() will be optimised by the compiler to return the contents of the memory address plus 4. That still counts as a very simple and short function, and it's quite likely that the compiler would inline it and remove the initial function. The actual process of calling a function is to:

  • push the address of where we are in the program onto the stack
  • push any variables used by the function onto the stack (which would be none, in this case)
  • if on x86 / x64, do a whole pile of stack alignment operations :-(
  • set the address of "where we are in the program" to the address of the function
  • push some extra space on the stack for all the variables used by the function
  • run all the code in the function
  • put the result of the function into one of the CPU registers
  • pop all of our "working space" back off the stack again
  • pop the address of "where we came from" off of the stack, and make that the place that we'll continue running the program for

That takes a while, and worse - modern CPUs will try to "pipeline" all the instructions that they know are coming so that it all runs faster. Jumping to a function might break that pipeline, causing a "stall", which slows things down enormously. Much better to inline short functions - the fact that the value is "number in memory address plus four" might be optimised away a little wherever it's used, too.

[-] sodium_nitride@hexbear.net 11 points 1 week ago

To add on to what the others have said, the compiler will also optimise your code (which is why professional coders write in common patterns as much as possible, so the compiler can recognise them and optimise).

So many times, you literally won't even have the same program.

Also machine understandable code (assembly or 1s and 0s) is different depending on the processor used. You could give me machine code made for a risc-v processor and I could reconstruct a c program that made it. But if I had the same program compiled for an x86 processor ...

[-] alexandra_kollontai@hexbear.net 3 points 1 week ago

It's Blizzard, if he'd held on to it he'd probably have gotten Inscryption'd

this post was submitted on 08 Apr 2025
260 points (99.6% liked)

games

20829 readers
333 users here now

Tabletop, DnD, board games, and minecraft. Also Animal Crossing.

Rules

founded 4 years ago
MODERATORS