Author Topic: Stuff that fries your potatoes with olive oil of HAPPY.  (Read 628564 times)

『フエハデ』

  • Sr. Member
  • ****
  • Posts: 287
  • COMO UN JEFE
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2055 on: January 04, 2016, 03:29:57 AM »
If the "Best. Game. Ever." awards weren't meant to capture contemporary trends in gaming, they would have only held it once. QED.

Ocarina of Time is good for its era, much the same way Final Fantasy VII is, buuut we've had nearly 2 decades of constant improvement and innovation since then. I love Super Mario RPG, but I wouldn't call it a better game than e.g. FFX because the experience is nearly incomparable.

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2056 on: January 04, 2016, 10:12:10 AM »
Oh yeah, no doubt. I tried revisiting Final Fantasy VII a couple of years ago and, while I still enjoy it, the sheer amount of grinding is a bit of a turn off. I have a lot of games that I need to get through and I no longer have the time or the desire to spend 200 hours doing what amounts to watching numbers go up. And yes, I realize how strange that sounds coming from an MMO fan, but at least there you get some social interaction.

I've gotten considerably more enjoyment out of the iOS port of FF7 because it has some band-aid "fixes" for that (though I think that they should have offered an "increased exp" option rather than simply offering "now you're OP, lol" button). I've been watching news about the remake with great interest to see what kind of new mechanics they bring to the table.

With regards to the actual contest itself, I've no doubt that nowadays GameFAQs uses it as a means to drive traffic to their site more than anything else. All the more reason why I think it's hilarious that people take them as seriously as they do.
"This is a machine for making cows."

vladgd

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2057 on: January 04, 2016, 01:52:49 PM »
Ive been living under a rock and I even get exposure to undertale. Also those things are just popularity contests so, the most popular(not the best, typically) will win. Though talking about it, instead of "best game ever" how bout "gamefaq's most popular game of the year", fits better than "best game" imo.

And about grinding in ff7, of all ff games? I played it about...shit it was a while ago, but like 9 years ago, and I specifically remember even running away from a lot of battles and still being sufficient to complete the game with no real effort. (albiet, a few select grinding spots, I don't recall them being too bad). I had a way worse time in ff10 if anything, with the grinding. I just didn't really use magic at all, didn't let materia lower my max hp and whatnot (mostly used the yellow type materia), and physical attacks the whole way through.

But iunno, we all play games differently. I probably grinded a hell of a lot more than I needed to in other games that most people probably didn't need to grind much at all in. (ff12, im looking at you, you stupid game)
« Last Edit: January 04, 2016, 02:01:50 PM by vladgd »

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2058 on: January 04, 2016, 06:35:52 PM »
That's why I brought up my totally original conspiracy theory. "Most popular game of the year" just doesn't have the clickbait appeal of "Best. Game. Ever."

FF7 could definitely be beat at lower levels, but there were some encounters that were a little rough at lower levels (and low level runs generally require very specific equipment to be possible). If you do opt to use magic and summons, the materia grinding alone is certainly worth a mention. If you wanted to have decent magic/summon representation across your party (which was a pretty big deal later in the game, when you had to equip multiple parties) or even have the abilities at a reasonable level it would take quite a bit of experience.

Using physical attacks throughout probably saved you a lot of headaches in the long run, I'd wager. Admittedly, I've never tried that kind of run (now that you mention it I can definitely see it being pretty damn effective), but a lot of the fun for me is fiddling around with materia combinations. Like you said: we all play differently, YMMV, etc.

FF8 was significantly streamlined in that regard. I believe last time I played through FF8 (which, again, was in the late 90s and early 00s) I beat it with an average party level of around 15 with a relatively short playtime. That fucker scaled like Oblivion, yo. Certainly a more enjoyable experience for me (though I greatly prefer the story and general aesthetic of FF7), but the game mechanics were a bit weird (you need to use GFs to gain the item ability? WTF?!) and somewhat poorly explained. The way that junctioning was implemented was also pretty goddamn ridiculous and kind of discouraged magic use. I found myself gravitating towards physical attacks and GF summons, using Aura to proc limit breaks and stockpiling everything else to pump my attack/speed stats up. I think it was actually easier to break FF8 than it was FF7. It certainly took less time (outside of that motherfucking draw system).
"This is a machine for making cows."

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2059 on: November 08, 2016, 06:13:11 PM »
My new laptop has been making me very happy:

Dell Precision 7710
CPU: Intel Core i7-6820HQ, 2.70GHz (boosts to 3.60GHz)
RAM: 16GB DDR4 2133MHz
SSD: 256GB Samsung SM951 M.2 NVMe
HDD: 1TB HGST 7200rpm
GPU: AMD FirePro W5170M (and, of course, an Intel HD 530)
Display: Dell UltraSharp UHD (4K), with PremierColor

And it has some other doodads, like a backlit keyboard, fingerprint reader, smart card reader (I...actually do have some Mifare cards lying around), docking port, webcam, etc. It's a hell of a performer, too.

I ended up going the workstation route because I was tired of dealing with the numerous quality control issues on my ASUS G750. For as many negative things as I had to say about the Dell Inspiron 17R that I made the mistake of buying (basically, they took a system with a thermal system designed around an i3 and stuffed an i7 and dedicated GPU into it...gee, I wonder why it overheated), at least it didn't just randomly break while it was just bloody sitting there. The display on the ASUS started dying mere weeks after the warranty had expired, and in the process of opening the case, one of the screw posts broke while I was loosening the screw. I've literally never seen that happen, and I've dissected some of the cheapest laptops on the market.

Let's not even get into the highly variable battery life, the mushy keyboard, the fucking AWFUL sound (ASUS jammed the speakers behind the display hinge), bizarre design decisions (wi-fi module under the keyboard on a 17" laptop), the display quality of the panel they selected (you couldn't see it well unless you were at just the right angle, and the color rendition was really off...oh, and it fucking killed itself), the fact that the thing was a fingerprint magnet, and the firmware being buggy as sin (I'm not kidding when I say that the backlight control would suddenly stop working at random). Actually, yeah, let's get into all of that.

You know what laptop doesn't have the problems that I mentioned above? The cheap ASUS touchscreen laptop that I bought my mom to replace her old Inspiron E1505. A cheap ultrabook is better assembled and more reliable than one of their premium laptops. What the everloving fuck.

So yeah, enough was enough. I already spent almost as much on my last two craptops as I did on this one, and this one is far more likely to stand the test of time. Not only that, but if something does go wrong, this thing is covered by a three year on-site warranty. If something happens, they send out a contractor to fix it at my house. Score.

About the only complaint I can think of is that it doesn't have a numlock light. It's kind of a bizarre omission. It almost looks like the intention was to provide a software indicator for it, but the system didn't ship with it preinstalled. There is a dedicated light for the capslock key, so that just seems really strange to me. The keyboard doesn't feel quite as good as the one on the M4800, but the keys are all crisp and responsive. There is a dedicated calculator button (which is surprisingly handy when you get used to it) and a few media keys--previous, play/pause, and next--but, unlike the M4800, there are no dedicated volume keys. Instead, you have to use Fn-F1/F2/F3 for mute, volume down, and volume up, respectively. Also unlike the M4800, the arrow keys are half-sized, but that's not really a huge deal.

One of the Fn-key things that makes a ton of sense is the way that Dell bound Fn-Left and Fn-Right to home and end, respectively. If you're at all used to using Macs, that makes getting the cursor to the end of the line feel very familiar (in macOS, home and end move you to the home and end of the document--Cmd-Left/Right move the cursor to the beginning/end of a line). PgUp/PgDn are right above the left/right keys, flanking the up arrow, which makes paging through documents feel incredibly intuitive.

11/10 best laptop evar
"This is a machine for making cows."

『フエハデ』

  • Sr. Member
  • ****
  • Posts: 287
  • COMO UN JEFE
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2060 on: November 15, 2016, 02:21:37 AM »

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2061 on: November 16, 2016, 09:38:36 AM »
I came. Twice.
"This is a machine for making cows."

vladgd

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2062 on: February 22, 2017, 10:54:34 PM »
I've been away from Infected Mushroom since they started experimenting. I mean they had some good stuff, but also some bad stuff. While I respect trying to do new things, doesn't mean I'm going to like it.

Their latest album doe...



breh, they're bak. This album is going to be a go to jogging album for me.

Not to mention the album cover is sick as hell.



I don't even listen to electronic music much at all anymore(i'm a hip hop head now a days), but this is bringing me back.
« Last Edit: February 22, 2017, 10:57:46 PM by vladgd »

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2063 on: February 25, 2017, 01:30:09 AM »
Woo! I'm gonna have to check that out. Thanks for the heads up!

Edit: Just listened and...damn. So fucking good.

Also, I'm pretty pumped because I just successfully reverse engineered the saved game checksum algorithm for a game from 1993! Fun way to spend a Friday evening (though I admittedly did spend a lot of it cursing the segmented memory model). ;D
« Last Edit: February 26, 2017, 01:53:40 PM by Spectere »
"This is a machine for making cows."

vladgd

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2064 on: February 27, 2017, 04:34:19 PM »
I'm curious what kind of computer wizardry is required to do stuff like that.

As of recent I've been more interested in learning programming for fun, but apparently I'm dumb enough to find even installing python to be challenging, so that's where I'm at right now, lol.

Bobbias

  • #1 Poster
  • Hero Member
  • *****
  • Posts: 7210
  • 404 Avatar not found.
    • View Profile
    • Magnetic Architect
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2065 on: February 27, 2017, 09:09:01 PM »
reverse engineering is still beyond me. best i ever accomplished was bypassing a cd key in an obscure game, but there was a secondary copy protection involving missing content causing crashes lol. all i did was figure out the correct change to the jump instruction to bypass the check window entirely.
This is going in my sig. :)

BANNED FOR BAD PUNS X_x

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2066 on: March 01, 2017, 04:12:18 AM »
I'm curious what kind of computer wizardry is required to do stuff like that.

In this case, it was a matter of unpacking and tearing open the executable file with a disassembler (IDA, in this case).

I looked for the file write functions (_fwrite, in this case) and looked at what segments of code were calling that. I saw a piece of code that was going through a data structure that was the size of the saved game, did a rough transcription of what it was doing in LINQPad (basically a nice way of running .NET code without creating a new project) and voila!

Here's an explanation of the checksum code:

Code: [Select]
mov al, [si-4780h] - Retrieves a byte and stores it into the al register.

add [bp+checksum1], al - Adds the retrieved value to the first byte of the checksum.

mov al, [bp+checksum1] - Moves the first byte of the checksum into the al register.

cbw - Expands al into a word and stores it into the ax register.

push ax - Pushes the ax register onto the stack.

mov al, [bp+checksum1] - Moves the first byte of the checksum into the al register.

cbw - Expands al into a word and stores it into the ax register.

mov dx, ax - Loads the contents of the ax register into the dx register.

pop ax - Pops the top value off of the stack and stores it in the ax register.

imul dx - Multiplies the value in the ax register by dx and stores the result in the ax register.

mov [bp+var_2], al - Stores the contents of the al register into a temporary variable in memory.

mov al, [bp+checksum1] - Loads the al register with the first byte of the checksum.

sub al, [bp+var_2] - Subtracts the contents of the al register with the contents of the temporary variable.

mov dl, [bp+checksum2] - Pushes the second byte of the checksum into the dl register.

add dl, al - Adds the value in the al register to the value in the dl register, then stores the output to the dl register.

mov [bp+checksum2], dl - Stores the dl register to the memory location holding the second checksum byte.

Here's a couple of core concepts:

Registers: These are tiny bits of memory within the processor. Put simply, whenever a mathematical operation is done, the numbers are typically loaded into registers, calculated, and the resulting output is moved from a register back into memory. While you can't store a whole lot of data in registers, because they're located in the processor core, reading and writing to them is extremely fast.

The two registers in the above code are ax and dx. These can hold 16-bit (0 to 65535) values. The upper and lower bytes of these registers (8-bits each, or 0 to 255) can be addressed individually using ah/dh and al/dl, respectively.

Stack: This is a section of memory set aside for some processor operations. The name is apt, as it simulates having a stack of objects. You can place (push) an arbitrary number of objects on the stack and remove (pop) them in the reverse order that you put them on (you can technically bypass this rule, but that's beyond the scope of this post). This is known as LIFO, or last-in, first-out.

There is one important bit to keep in mind. First, as I mentioned, the al register holds values from 0-255. What happens, then, when the value exceeds that? There's no checks to make sure that it never exceeds 255, after all. Basically, the value wraps around. If you take 255+1, you'll get 0. The same wrap-around can happen when we hit the subtraction a bit later on. The same thing occurs with the multiplication instruction (imul) as well.

There is one other noteworthy thing. It looks like the cbw instruction isn't necessary. After all, couldn't you just push al and be done with it? Unfortunately, no. The 8086 processor can only push 16-bit words, so you have to push ax. The game was written in C and presumably uses chars to hold the checksum values, and cbw is the cleanest way to preserve the sign prior to pushing the value to the stack (if you want to learn more about how signed values--i.e. ones that can either be positive or negative--are stored, look up two's complement).

So...yeah! That's how the saved game checksumming in Dungeons of the Unforgiven works. Woo.

Edit: Here's the C# equivalent of the above assembly code (assuming that cs0 and cs1 are bytes and i is one byte of file input):

Code: [Select]
cs0 += i;
cs1 += (byte)(cs0 - cs0 * cs0);

It's funny how verbose things appear to be when you dive down to a much lower level.

As of recent I've been more interested in learning programming for fun, but apparently I'm dumb enough to find even installing python to be challenging, so that's where I'm at right now, lol.
A lot of those languages tend to have fairly unintuitive Windows installers, honestly. Some of them (and, if I remember correctly, Python is in this camp) are fairly easy to install, but actually being able to use the interpreter is a different story, since it doesn't usually set paths and stuff up for you.

One thing you may want to look into is Microsoft Visual Studio. I seem to remember it supporting Python fairly well. One caveat is that VS is heavily project-based, so you won't be able to just pop open a script and go, but it's easily one of the best programming suites out there.

reverse engineering is still beyond me. best i ever accomplished was bypassing a cd key in an obscure game, but there was a secondary copy protection involving missing content causing crashes lol. all i did was figure out the correct change to the jump instruction to bypass the check window entirely.

That's basically how I "fixed" Milk Chan's old O2Jam server. The server software that he was using had a bunch of highly annoying nag screens that would pop up, so I used OllyDbg to locate the offending segments of code and disabled them.

I don't remember if I jmp'd past them or replaced the calls with nop's. It's been a while.
« Last Edit: March 01, 2017, 10:51:55 AM by Spectere »
"This is a machine for making cows."

vladgd

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2067 on: March 03, 2017, 12:12:20 AM »
Another thing I am curious about, having dipped my toes into the programming ocean (not having gone far AT ALL), it made me realize that this shit is wayyyyy more complicated than I had originally thought (and your post verified this). If I put time into one language, will it therefore make other languages way easier to comprehend? I know each language is different in what it does, and the whole higher level lower level languages and whatnot, but if I put time into python (basically because people say it's one of the easier languages, and you can actually get some actual work done with the thing) will it make...iunno C easier to understand even if it is a lower level language?

I'm teetering on piddling around with this stuff on the side as like a hobby type of thing, but then I get bogged down by "well I don't know anything and even tutorials are way over my head" territory.

I blame this asshole for spiking my interest since his videos typically have a goal, and he vocally goes through his thought process as he gets stuff down.

Spectere

  • \m/ (-_-) \m/
  • Administrator
  • Hero Member
  • *****
  • Posts: 5716
  • printf("%s\n", "Hi!");
    • View Profile
    • spectere.net
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2068 on: March 03, 2017, 06:36:04 PM »
The main reason that my post was kind of complicated is because I was taking apart code from a mere baby step above the lowest level. When you get down to the processor level things tend to get very verbose. 16 lines of assembler ended up translating into a relatively simple formula that can be easily represented into two lines of code in a higher level language.

And yes, experience with one language most definitely makes other languages that follow a similar paradigm easier to understand. Most of the traditional languages (including Python, C, C#, BASIC, etc) are procedural languages (that is, they consist of procedures that contain instructions for the computer to carry out). By learning one you can get a relatively good idea of how things will work in the other languages. You'll probably still need to Google things here and there to understand exactly what's happening in some cases, but the concepts are fairly portable. For example, even though all of the procedural languages that I'm familiar with have a concept of what a for loop is, it is expressed a bit differently in each one. There are other paradigms (such as functional programming) but procedural seems to be where most people start.

I would agree that something like Python, Ruby, or BASIC provide a very good starting point. They allow you to get familiar with those concepts without having to dwell too much on the nitty gritty. Even C#, despite resembling C/C++, takes a much higher level approach to things. With languages like C (and, to a slightly lesser extent, C++) you can very easily wind up digging yourself a giant hole without realizing it. When I started programming, I started off with C++, though I didn't start having fun with it until I started playing with BASIC (QuickBasic, to be specific). After getting a solid handle on things, I find C and C# to be my overall favorites.

I wouldn't dwell on the difficulty of all of this until you start to dig into it. Just take things one step at a time and try not to think about the overall picture. It's like anything else, really. If you look at any concept as a whole--math, any spoken/written language or, hell, video games--it will seem overwhelmingly difficult. Like anything else, if you tackle programming one step at a time you'll be able to manage it.
"This is a machine for making cows."

vladgd

  • Hero Member
  • *****
  • Posts: 635
    • View Profile
Re: Stuff that fries your potatoes with olive oil of HAPPY.
« Reply #2069 on: April 12, 2017, 11:16:32 PM »
Well Python will be on my checklist of shit I need to focus attention on, along with working out. Just need to put my motivation cap on, really hard to get myself to apply myself after an 8-10 hour shift. It's a bad excuse, but after work I just want a beer and mindless youtube or vidya. Goal this coming Easter Sunday when I have nothing going on after morning, piddle more with python, get AT LEAST 3 sets of some compound lifts done. It looks like a lot of fun after you get past the initial learning wall.

But the thing that brought me here...

YOOLA LAYLEE SOUNDTRACK


I've only played the game about 3-4 hours so far, but listening to all the tracks, goddamn. Phenomenal. Like you expect banjo kazooie right? You totally get that, but then it kind of evolves into classic rare games in general, like you hear some donkey kong country influenced stuff (no surprise since the people who did the soundtracks on dkc and bk are making this), and even things that remind me of like battletoads or other rare stuff, like it's not a one trick pony at all in terms of sound.

Like you go from what sounds really similar to the hubworld of banjo tooie

to like guitar influenced dkc minecart levels

it's even got chiptune that gives me mad battletoads vibes for some reason

I don't go into videogames with music in mind, but Rare games was my damn childhood, and listening to this OOZES the golden era when Rare could do no wrong. Did I mention I'm a big banjo fan? Because I honestly believe banjo kazooie is flat out better than sm64 in every way, which it should since it came out later, but damn if my opinion isn't popular. (I like sm64 so im not hating)