Redkey

joined 1 year ago
[–] Redkey 10 points 2 months ago (4 children)

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

[–] Redkey 15 points 2 months ago* (last edited 2 months 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.

[–] Redkey 3 points 2 months ago* (last edited 2 months 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.

[–] Redkey 11 points 2 months ago (4 children)

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.

[–] Redkey 8 points 2 months ago* (last edited 2 months ago) (4 children)

I don't know if this will work or even compile, but I feel like I'm pretty close.

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;
}
[–] Redkey 1 points 2 months ago* (last edited 2 months ago)

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.

[–] Redkey 3 points 2 months ago (2 children)

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.

[–] Redkey 10 points 2 months ago (1 children)

I wonder when he last sat down and really played a game for an afternoon. Now that everything is plugged in and ready to go at the push of a few (spreadsheet-tracked) buttons, he has finally overcome all the difficulty of switching consoles and can now play through all the games he's been wanting to play. Right? Right?

[–] Redkey 3 points 2 months ago

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.

[–] Redkey 4 points 3 months ago

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.

[–] Redkey 1 points 3 months ago

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.

view more: ‹ prev next ›