• 0 Posts
  • 154 Comments
Joined 1 year ago
cake
Cake day: July 5th, 2023

help-circle
  • 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.


  • 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.




  • 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.


  • 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.





  • Redkey@programming.devtoRetroGaming@lemmy.worldHelp identifying my dreamcast
    link
    fedilink
    English
    arrow-up
    16
    arrow-down
    1
    ·
    edit-2
    10 days ago

    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.


  • 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.


  • 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.



  • There are a couple of different USB devices (usually sold as just cables) that communicate with an app on the Android device. I tried a few that worked well at first, but for some reason became flakier and flakier until they wouldn’t even start after a year or so. I’m pretty sure that the devices are still fine, but the app updates killed the functionality by degrees, to lock out clones and force customers to buy a new device periodically.

    However, there is one decent company with a reliable software and device chain: DisplayLink. They have a free app, and sell their chips to various equipment manufacturers, as well as making some of their own.

    I will warn you that you need to be careful about buying equipment that carries the DisplayLink compatibility logo, because there are some devices that use their chips but don’t support the software. You also need to make sure that the device will work with your phone, i.e. USB 2.0 or USB 3.x. Not all USB-C ports are automatically USB 3.x.

    I got a secondhand HP device intended to be used with laptops for a second display output, but it works great with my phone. HDMI output with sound and negligible lag. I can even use it with a hub and have a wired controller at the same time. Now if only my phone supported simultaneous charge and OTG hosting. Ah well.


  • I got an RP2 (not plus) when it came out, and while it was a very nice little device for the price, I ended up switching back to using my phone, once I found a way to output HDMI over cable from my phone (it doesn’t do it natively, but there’s a way) so I could seamlessly transition to a big TV when I’m at home. The performance on the RP2 just wasn’t good enough when compared to my phone and a Bluetooth controller.

    I kept my eye on the scene for a little while, hoping for something that could do DC, GCN, and PS2 at full speed, since my phone can’t quite do that. But despite claims of various handhelds having this capability, none of them really did; in real tests they would just limp along with a few games at around 50% speed or worse. So I got kind of burned out by the hype and stopped paying attention.

    I’ve just had a look and it seems like the RP4 kinda sorta actually DOES handle PS2 to a large degree. So as long as it’s got a wired HDMI out, it’s not too big physically, and the price is reasonable, I might be back in the market for something soon.



  • In my experience, your request is unrealistic. Bluetooth shouldn’t be too much of a problem, either built-in or with a dongle, but a stick that can emulate much of anything from the PS2 library is going to be ridiculously expensive compared to other options. I’m not aware of any Fire Stick, however new, that could do it. The majority of sticks are good for up to 16-bit, and quite a few that are at the upper end of the sane price range will stretch to PS1, some N64 and Saturn, and maybe even some Dreamcast and PSP.

    If you have to have PS2, I’d really recommend going for a micro-pc or high-end Android box if it absolutely has to be as small as possible.



  • Worse than companies that release doodads virtually identical to things that have been cranked out of Shenzen factories for years as “new and unique” products, are news sites that go along with them.

    I’ve tried a couple of things like this over the years and none of them has been very useable. They’re just too small to really hold comfortably, but also, what do you do with your phone while you’re holding this with two hands? Putting it on a stand on a table is possible in a cafe or library, but not on the train or standing in line.

    Most phone controllers seem to fall into one of two categories; either too small to really use (and with no way to attach them to a phone) like this, or huge, ergonomic things with clips or stretching middles that are too big and bulky to carry everywhere for unexpected gaming time. I have found two small-ish, square-ish controllers with clips and the full, standard range of buttons that work for me (not so small they cramp my hands, not so big and oddly-shaped that I can’t throw them in my bag and forget about them), but I think they’re both out of production now.


  • You say active waiting, but I wonder if you mean a busy-wait? Busy-waiting is generally bad, but don’t forget that your main loop is just what executes when the OS decides to give your program some processor time. If you just check a stored timestamp vs the current clock at the start of each iteration, and then do nothing unless enough time has passed, control will go back to the OS for a bit, not the start of your next loop, so it’s not a true busy-wait.

    The original PC’s hardware timer was… not great, and I believe that the situation only got worse over time. I understand the desire not to waste resources, but modern OSs are designed with the fear of not fully exploiting resources, so there’s only so much you can do.