[-] Redkey@programming.dev 2 points 6 months ago

PS2 can only run PS1 games (close to) natively from optical discs. The system that switches the PS2 over to PS1 mode can only be triggered physically by the drive, and once in PS1 mode the console can no longer access most of the PS2 hardware, including any storage attached to the network adapter.

There is a way to "convert" PS1 games to run from internal storage (POPStation), but it actually just wraps the PS1 image in a software emulator for PS2.

[-] Redkey@programming.dev 3 points 10 months ago

Sure. Almost 40 years ago I started learning to program as a kid, and the only reason I knew the word "syntax" at all was because the default error message in my computer's BASIC interpreter was "SYNTAX ERROR". I didn't learn what it actually meant until many years later, in English class.

I taught myself with the excellent Usborne books, which are now all downloadable for free from their website. You won't be able to use them as-is (unless you get your kids to use an emulator for an old 8-bit home computer), but I'm sure you can still get some useful ideas, and maybe even copy small sections here and there.

As others have mentioned, my school also taught us a little LOGO, which was a bit of fun for me but rather simple. I remember that most of my classmates enjoyed it, though.

[-] Redkey@programming.dev 3 points 11 months ago

Alas, that's already the name of a game engine.

[-] Redkey@programming.dev 3 points 11 months ago

If you're not going to jailbreak a New 3DS (probably my choice if I was focusing on DS and 3DS games, because those real dual screens make a difference), then why not just get a controller to use with the smartphone you probably already have in your pocket? Even a mid-range smartphone will match or beat most inexpensive handhelds for retro game emulation.

[-] Redkey@programming.dev 2 points 1 year ago

I've been trying to research the various glitches and variations between versions because I'm working on something that uses some undocumented features and precise timing. Unfortunately, I don't have one good link that explains it well.

The issue stems from how player objects (the 2600 equivalent to sprites) are placed horizontally. For good and interesting reasons which are also technically involved and complicated, programmers can't just send an X value to the graphics chip. Instead there's a two-step process. First, the program sends a signal to the graphics chip when the TV raster is at approximately the desired horizontal position on the screen. Then, because it's often not possible to nail the timing of that signal to the exact pixel position, the graphics chip has a facility to "jog" the various graphical objects left or right by a very small amount at a time.

According to the official programmers' documentation, this final "jog" should only be done at one specific time during each video scanline. If we only do it this way, it works correctly on pretty much every version of the console. However, doing it "correctly" also introduces a short black line at the left side of that scanline. If we instead send the "jog" signal at certain other times, no black line appears. Additionally, the exact distances moved change depending on when we send the signal, which can be worked around or are sometimes even beneficial.

Kool-Aid Man uses these undocumented "jog" timings, as several games did. But it displays a score counter at the top of the screen by using the player objects placed very close together. It seems that the console versions in question (later 2600 Juniors and some 7800s) are more sensitive to the timing being used, as you can sometimes see the parts of the score flicking left or right by one pixel.

The Atari 2600 also has a hardware collision detection system, which reports when any two moving screen objects overlap with each other or the background. Once a collision occurs, the relevant flag will stay set until the program clears it. Kool-Aid Man uses this system to detect when the player character touches enemies. But the program only clears the collision flags once, at the bottom of each frame, and the same player objects are used to draw the score. So when the two parts of the score flicker into each other, it registers as a collision between player objects, which the game interprets as a collision between Kool-Aid Man and a Thirsty.

As you mentioned, I've read that setting the console switches a certain way can prevent this issue, but I'm not sure why. My guess is that setting some switches one way rather than another causes a conditional branch instruction that checks the switches to branch rather than fall through, which takes one extra instruction cycle (or vice versa), which is then enough to stabilize the score display and stop the parts from colliding.

[-] Redkey@programming.dev 2 points 1 year ago

"NPM install" isn't going to be the direct result of a race condition in JavaScript. And while I'm not familiar with Python, I'd guess that an "Indentation error" wouldn't be one either. A missing library or syntax error that's only discovered by executing a particular branch is still just a missing library or syntax error, not a race condition.

Also, while Node.js is popular, it isn't an integral part of JavaScript in the way that the other errors are integral to their respective languages.

[-] Redkey@programming.dev 2 points 1 year ago

I've had to interact with too many people who say this with a straight face.

[-] Redkey@programming.dev 3 points 1 year ago

I think the DC had the technical strength to go up against the PS2, not just early on, but for quite a while. The PS2 is incredibly flexible in theory, but looking at its library it seems like most developers just used Sony's default rendering setups. If you ignore the quickie PS1-to-DC ports and only compare titles which got equal effort from developers, it can be hard to tell the difference, and in some cases I'd even say the DC version looks a little nicer.

In this alternate universe where the DC didn't get killed off prematurely, what might've eventually turned the tide for the PS2 would be having between 1.5 and 2 times as much RAM (depending on how you account for different distribution), although that advantage may not have existed if it weren't for the large gap between their release dates.

But Sony could afford to delay for two years; consumers waited for them. Sega couldn't sustain launch-pitch marketing for that long, especially with an actual console on store shelves that people could experience firsthand, as opposed to teaser videos of what the console "might" be capable of. Few publishers or consumers wanted to invest in a console before the clear winner of the previous generation had entered the market.

All that being said, I don't know that the DC was really under-utilized, in technical terms. I feel like a good proportion of the games in its library are using almost all of the power it had under the hood. Perhaps Sega's management and engineers had learned their lesson from the Saturn, because the DC seems very straightforward from a programming perspective. It's almost ironic that it lost to the PS2, which took flexibility and parallelism to heart at least as much as the Saturn did, if not more.

[-] Redkey@programming.dev 3 points 1 year ago

Seconding Markor for Android. I originally installed it because I was sick of all the note-taking apps that store your notes away in hidden directories and proprietary formats. I've been using it for years and it's not let me down yet.

[-] Redkey@programming.dev 2 points 2 years ago

I just wanted to say that I checked the site yesterday on two different devices, and there was no link (the relevant text was visible, but not a link).

I happened to look again today, and now the link is available on both devices.

[-] Redkey@programming.dev 2 points 2 years ago

Yep, this works well. I used to have a cheap, old, secondhand ultralight notebook that I used for work, and I installed Lakka to a tiny bootable USB drive so that on evenings when we planned to gather at one colleague or another's house after work, I could just throw the drive and a couple of controllers in my bag and we could have a nice, clean, 100% emulation-focused system to game on. Even a 10-year-old laptop with Lakka should smash a Raspberry Pi 4's cost/performance ratio.

I usually plugged in power and a display, but of course as a laptop it was fine for using on the go, too. Not quite a handheld, but still very portable.

Another option is one of the cheaper ARM-based handhelds with a USB port and HDMI output, so you can still play on a big screen at home. I later got a Retroid 2 for this, which also worked well, but needed a bit more technical fiddling than the Lakka laptop, and couldn't emulate a few things at full speed. The Retroid 3 should be better, or there are other options such as Ambernic, Game Park, and PowKiddy.

Now, I just use my phone with a Bluetooth controller, and optionally an HDMI output dongle when I'm at home. If your phone doesn't support HDMI over USB-C natively (mine doesn't), look into a DisplayLink compatible USB dongle. If you check specs carefully you can even find some that work over USB 2.0 for older/cheaper phones. They have a free app for Android phones.

view more: ‹ prev next ›

Redkey

0 post score
0 comment score
joined 3 years ago