Redkey

joined 1 year ago
[–] [email protected] 3 points 1 month ago* (last edited 1 month ago)

The way I see it, there are two separate issues for discussion here.

The first is permanently altering a classic console. That's an issue of historical preservation, and I'm not going to get into that.

The second issue is whether or not, being prepared to go as far as having removed the original optical drive, one might not just as well drop the console entirely and go the emulation route. To me, suggesting this shows a lack of understanding about how emulation works.

A real console consists of IC semiconductors and discrete components that propagate electrical fields and shuffle the occasional electron around. A software emulator is a bag of rules and tricks that tries to replicate the overall output of a console. Even FPGA-based emulators aren't 100% perfect, because their gates and connections aren't configured identically to the original hardware.

Game consoles are very complex systems that operate via the interplay of dozens of intricate subsystems. That's why emulators start off supporting only a handful of games, and rarely reach 100% compatibility. Emulator developers are forever picking the next emulation inconsistency from the bug report list, tracking down what their emulator is doing differently to the original hardware, and then adding a new rule for dealing with that particular case. If they're lucky, a couple of other games will also start working better. If they're unlucky, a couple of other games will start working worse.

(For the interested, the author of BSNES wrote a detailed article about these issues for Ars Technica)

Take the Atari 2600. It's a very old console that was very popular. The community has full schematics not just for the mainboard, but even the CPU and custom video chip. More patient people than me have sat for hours with oscilloscopes and test ROMs to probe the console inside and out. There are emulators that can play every game that was released back in the day without fault. Heck, the emulator I use is so advanced that you can set it to emulate specific revisions of the console with specific CRT TV parameters, and it will glitch in the same way that the game would glitch on that combination of hardware in real life. But it's still not a "perfect" emulation! Homebrew developers are still finding quirks in the real 2600 hardware that the emulators don't replicate, at least until the next update.

I have a PS2 which plays my games from an internal hard drive, and which has its output fed through an HDMI converter. Why don't I just emulate it? Well, if you want to play FFX, or MGS2, or Ratchet & Clank, that'll work great. Those are popular games, and emulator developers have put a lot of effort into making sure that the rules of their emulation work for those games. But I have dozens of more obscure games that have game-breaking glitches or don't launch at all under emulation. And I also still have hundreds of discs that I don't want to paw through, and are slowly degrading until one day they'll no longer work, as well as an optical drive that gets a little closer to wearing out for good every time I use it, and a big, modern TV that hates analog inputs (not to mention no room for a bulky CRT). Getting the data into the console, and getting the final video and audio out, are both fairly well-understood and usually can be reimplemented reliably. But the heart of the console, where the data is turned into executing code, mixed with player input, and transformed into the output? That's where the actual magic happens.

In my opinion, saying that if you're going to replace an optical drive then you may as well just emulate the whole thing is a bit like saying that if you're going to talk to Angela over the phone instead of in person, then you may as well just replace her with a well-trained AI chatbot.

[–] [email protected] 4 points 1 month ago (1 children)

Why bother? Because feeding data into the console and getting audio-visual signals out of it are both very well understood and can actually be replicated with essentially total accuracy. But the complex operations and subtle interactions of CPU, VDUs, RAM, and other support chips can't. That's the important part of the console, not the optical drive or the analog video output.

Software emulators and FPGA-based systems give it a good try, and can often run the majority of software for a console at an acceptable fidelity for most users, but they're a long, long way from being 1:1 perfect, and the more recent the console, the more games either don't run properly or don't run at all.

[–] [email protected] -1 points 1 month ago

Oh my goodness, replacing the optical drive with a modern solution isn't close to halfway to complete software emulation. It's not even 20% of the way there.

[–] [email protected] 6 points 1 month ago (1 children)

LSD: Dream Emulator must also rank up there, surely? :)

Gorogoa has been on my "pile of shame" for several years now. Perhaps today's the day.

[–] [email protected] 3 points 1 month ago

The morality system was a huge disappointment for me. You said most of what I wanted to say, so I'll be brief.

Right near the start of the game, an NPC outlines the Way of the Open Palm vs. the Way of the Closed Fist, more or less the same way you described them. And I was so excited to see a morality system in which both sides were morally defensible positions. But from the very first Closed Fist follower you meet (just minutes later), they may as well all be monacle-wearing moustache-twirlers who punctuate every sentence with "mwah-ha-ha!"

The worst example that I remember is a bootlegger who's essentially holding a town hostage. Far from following either philosophy as described, he's just plain evil, and in fact I easily came up with (IMO solid) arguments for actually swapping the game's morality labels on the player's options. But no, one option is clearly "evil", so that's Closed Palm, while the other is obviously "good", hence Open Palm.

[–] [email protected] 4 points 1 month ago* (last edited 1 month ago)

I bought it when it came out and played it a little. My Japanese wasn't great then (it's not all that much better now TBH) but I think I understood enough of it to give it a try.

The game itself is split between a dungeon crawler and a management sim. You go dungeon crawling to capture staff to work on games, and the combat system includes timed multiple-choice options, some of which are related to Sega and Japanese gaming trivia. Then once you leave the dungeon, you create game projects from menus, and assign your captured staff to work on them. Your ultimate goal is to claw back Sega's market share from the Dogma Corporation (standard sentai villains and thinly-veiled Sony stand-ins).

There are tons of Sega and Japanese gaming culture references of course, but a lot of these are either just "Hey, remember this?" (and as a non-Japanese gamer, you might not), or in-jokes that can't really be translated. For example, if you're familiar with the "All your base" meme, imagine trying to translate that into Japanese; it's just not going to work because its enjoyment largely hinges on having "lived through it", and the idea itself resists translation anyway.

I didn't get very far due to a combination of language barrier, lack of trivia knowledge, and the unfortunate fact that after the intro section I just didn't find it all that amusing. I live in Japan now and as far as I can tell, these days people still occasionally talk about it fondly but it's not really considered to be a cult classic here.

[–] [email protected] 2 points 1 month ago

Not much of a game really (more of a multimedia slideshow), but I'm finding it very absorbing nonetheless. So far it's striking a good balance of subtle foreshadowing and keeping things relatively brief.

It seems to be running without issues under Wine/Lutris.

[–] [email protected] 5 points 1 month ago

According to the author, the giveaway is in support of World Suicide Prevention Day. Also, at least for me, it looks like it actually runs until the 12th, even though the author just said the 10th.

[–] [email protected] 10 points 1 month ago (4 children)

You're quite right! I didn't notice that.

[–] [email protected] 15 points 1 month ago* (last edited 1 month ago) (6 children)

Many special editions of the Dreamcast were released over the years, in a variety of different colours. However, every special edition Dreamcast that I've seen has had some other visual change besides just the colour.

Looking at the pictures, I suspect that your console has just been put into a replacement aftermarket shell. However, if the bottom half of the console is solid grey, and there's a pale yellow limited edition number sticker on the back, then you have a quite rare Code: Veronica (Claire version) console. I'm guessing that if the sticker was there, though, you wouldn't be here asking about it, as it's a real giveaway.

That being said, it still looks cool, but I don't think it's going to command an especially high price or anything. The controllers were always available in a wide range of colours, although it's funny that the beige controller on the right has the blue European swirl. I guess someone got a deal.

[–] [email protected] 3 points 1 month ago* (last edited 1 month ago)

Whoops! When I looked at the second time that the shift value is calculated, I wondered if it would be inverted from the first time, but for some reason I decided that it wouldn't be. But looking at it again it's clear now that (1 - i) = (-i + 1) = ((~i + 1) + 1), making bit 0 the inverse. Then I wondered why there wasn't more corruption and realized that the author's compiler must perform postfix increments and decrements immediately after the variable is used, so the initial shift is also inverted. That's why the character pairs are flipped, but they still decode correctly otherwise. I hope this version works better:

long main () {
    char output;
    unsigned char shift;
    long temp;
    
    if (i < 152) {
        shift = (~i & 1) * 7;
        temp = b[i >> 1] >> shift;
        i++;
        output = (char)(64 & temp);
        output += (char)((n >> (temp & 63)) & main());
        printf("%c", output);
    }

    return 63;
}

EDIT: I just got a chance to compile it and it does work.

[–] [email protected] 10 points 1 month ago

I first learned about Java in the late 90s and it sounded fantastic. "Write once, run anywhere!" Great!

After I got past "Hello world!" and other simple text output tutorials, things took a turn for the worse. It seemed like if you wanted to do just about anything beyond producing text output with compile-time data (e.g. graphics, sound, file access), you needed to figure out what platform and which edition/version of Java your program was being run on, so you could import the right libraries and call the right functions with the right parameters. I guess that technically this was still "write once, run anywhere".

After that, I learned just enough Java to squeak past a university project that required it, then promptly forgot all of it.

I feel like Sun was trying to hit multiple moving targets at the same time, and failing to land a solid hit on any of them. They were laser-focused on portable binaries, but without standardized storage or multimedia APIs at a time when even low-powered devices were starting to come with those capabilities. I presume that things are better now, but I've never been tempted to have another look. Even just trying to get my machines set up to run other people's Java programs has been enough to keep me away.

view more: next ›