return to table of content

Notris: A Tetris clone for the PlayStation 1

TheMagicHorsey
12 replies
22h33m

Is there an open, simple, handheld gaming platform that is cheap, and has good documentation so hobbyists and kids can make games for it?

I know people will say pick up a cheap Android phone. And perhaps they're right, but Android is not simple. It has so many things going on that you just can't write a C program and start playing with it. You have to learn a dozen Android quirks and deal with the Android operating system.

Is there something where you can just upload a program to flash and the device just boots into the program and you start playing?

parl_match
1 replies
22h4m

The Panic Playdate isn't entirely open, but there is an excellent simulator, and itch.io support for titles.

jmcphers
0 replies
18h28m

+1 for the Playdate. The thing is incredibly friendly to developers and sideloaded games are first-class citizens. In addition to a really pleasant SDK there's also Pulp which is very easy for kids to use to make simple games (and has enough depth to be used to make real games).

https://play.date/pulp/

snvzz
0 replies
13h7m

Not open. They specifically asked for open.

clktmr
1 replies
22h26m

You might want to take a look at the Analogue Pocket.

turtlebits
0 replies
20h8m

Pico-8 or Makecode Arcade are great starting points and can run on hardware easily.

lwansbrough
0 replies
22h29m

Idk if it’s the best recommendation in the space but there are consoles like the Miyoo Mini (and many more) that are capable of running anything from Atari to PSX in the palm of your hand.

duskwuff
0 replies
17h50m

You can indirectly target Android / iOS devices using frameworks like https://love2d.org/ - there's apps like Love2D Studio which can launch packaged applications, or you can build a standalone application.

badsectoracula
0 replies
21h29m

Well, if you don't put too much emphasis on the "hand" part of "handheld", Steam Deck is basically a PC running Linux and you can program it in any language you want.

As a bonus you can gain some muscle by carrying it around.

Alternatively, some of Anbernic's and other similar manufacturers of "retro handhelds"'s machines run plain Linux (usually derived from OpenDingux for MIPS-based devices, but most newer stuff are ported to ARM) with a simple launcher. I have one of the older MIPS-based devices running OpenDingux (GCW Zero from ~2013)[0] and you can use SDL and C/C++ (or Free Pascal in my case). Anbernic RG350 is basically a remake of it (same hardware, just better screen) and there are some variations at a software level (running the same or a similar MIPS CPU). Other devices are based on ARM (IIRC the devices ending in 1 - like RG351/RG351M/RG351P/etc - use ARM with an OS derived from OpenDingux). Note that some use Android, though they also use a different naming scheme (and they mention it).

Sadly Android-based devices are the most common and since they are largely used for emulators, the manufacturers rarely post full tech specs but there are dedicated communities and YouTube channels from where you can find what exactly OS they run and with what architecture.

But all that said, Steam Deck might be the simplest choice (though not the lightest, both in terms of weight and price).

[0] https://img.itch.zone/aW1hZ2UvNjM4NTE4LzQ3MDk2MTguanBn/origi...

rgbrgb
9 replies
22h50m

Last year I got my hands on a rare, black PlayStation 1. This is called a Net Yaroze and is a special console that can play homebrew games as well as ordinary PSX titles. It was part of a special Sony project to get hobbyists and students into the games industry.

I wonder what the post-mortem on this initiative was like. Seems like they didn't pursue it in future consoles but dang it would be pretty cool if there was a hobbyist section of the PS5 store that anyone could put small games in.

parl_match
2 replies
22h5m

Seems like they didn't pursue it in future consoles

FWIW, they did:

PS2 had an official linux distro, which was intended to be a sequel

PS3 had an "other os" mode, which allowed you to run your own, unsigned OS. This was eventually removed in a firmware update, due to piracy.

ronsor
1 replies
20h13m

Ironically the removal brought more piracy.

parl_match
0 replies
15h22m

That's not really what the cause of it was, tbh.

paulmd
1 replies
21h18m

it's unfortunately quite gimped, basically UWP-only and running with the system capped to around 1/4th of the typical performance, so it's not really that useful.

if the EU hadn't specifically exempted games consoles, it would be legally incompliant with the gatekeeping requirements.

favorited
0 replies
19h55m

The Net Yaroze had similar limitations. You couldn't access the disc drive, so all of your game's data had to live inside your executable binary, which needed to fit in RAM. It was hobbyist hardware, not intended to compete with actual dev kits, which were ISA cards that contained real PlayStation hardware, which you would slot into your PC.

toast0
1 replies
21h31m

Sony released a linux kit for PS2 [1], which was conceptually similar to Yaroze, but I think PS2 Linux didn't have apis for all of the PS2 hardware. The PS3 initially shipped with an OtherOS option[2], which was later removed, but is also conceptually similar again without access to all the hardware.

I haven't heard of anything similar with the PS4 or PS5; I'm guessing Sony is unlikely to provide similar widely available options in the future, but who knows. They did PR expanded access for "indie developers", but I don't know what the process looks like to get that.

[1] https://en.wikipedia.org/wiki/Linux_for_PlayStation_2

[2] https://en.wikipedia.org/wiki/OtherOS

lxgr
0 replies
20h4m

At least some of these efforts were supposedly related to Sony's attempts at getting various Playstation models classified as computers instead of video game consoles for import tariff or tax reasons.

While the tariff classification plot never seems to have worked out, Sony did also around the same time apparently succeed in creating a perception of the PS2 as being so dangerously fast as to needing export controls as a munition(!): https://www.zdnet.com/article/google-pixel-9-pro-xl-vs-samsu...

With the PS3, both attempts eventually succeeded, but in a way that backfired at Sony gloriously: The US Navy actually did end up using the PS3 as a supercomputer! https://phys.org/news/2010-12-air-playstation-3s-supercomput...

The only problem: They were selling the console as a loss leader, making money only via games and game licenses. Once somebody had finally taken them up on their "it's a computer, not just a game console!", they were very quick to remove the "Other OS" boot capability in a firmware retroactively.

JD557
0 replies
22h14m

Seems like they didn't pursue it in future consoles

I don't think this is entirely true.

Sure, there was nothing like the Net Yaroze, but the PS2 came with Yabasic[1] on the demo disk and had a Linux distro[2], and the PS3 also had a Unix support[3].

While some of this might have been for tax benefits, I still think it fits in the spirit of Net Yaroze.

1: https://en.wikipedia.org/wiki/Yabasic#PlayStation_2

2: https://en.wikipedia.org/wiki/Linux_for_PlayStation_2

3: https://en.wikipedia.org/wiki/OtherOS

a-dub
6 replies
22h33m

notably sony also made a handful of "yaroze" units for hobbyist developers. you couldn't ship, but you could write, compile, run and i believe share within the yaroze community.

yaroze was outside of my budget, but thankfully there was another option, there was a commercial game cheat device that could be reflashed with a "caetla" rom which when hooked up to the parallel port on a pc, could be used to ship binaries over from linux. the gcc-mips toolchain worked a treat and there was a header file laying around that implemented the user space wrappers for making system calls into the in-rom kernel.

my fun exploratory project: porting the mpg123 decoder over to the psx1, thereby bringing mp3s to the living room. i was able to get it to decode one frame at a time very slowly on the r3000 (25mhz) cpu with no fpu, but didn't have the skill at the time to embark on an optimization project that maybe could have made use of the rudimentary graphics acceleration (it was some kind of limited integer math accelerator, iirc).

segmondy
1 replies
21h2m

yeah, it's called the gameshark, for about $20. You could hook it up to your PC and hack on it, best of all the toolkits were Linux/FreeBSD. outside of SPIM, psx introduced a bunch of hackers to r3k and showed us that the future didn't have to be x86.

a-dub
0 replies
18h38m

it was this whole exercise that convinced me to pick up a book on mips "see mips run" which was a first self-study deepdive into microprocessor architecture.

fun times!

AlyssaRowan
1 replies
21h54m

You didn't even need Caetla. You could do that straight-up with the original ROMs for some of the cartridge series (FCD), and X-Link from DOS (or, if you were prepared to get involved with a bit of spicy linux 2.3, bitbang the parallel port yourself from the /dev/ interface for it at the time, the protocol was really simple). You get a live memory monitor you can watch (made it really easy to make cheat codes or look inside stuff for fun), and you can write and debug anything you want - in many ways it was nicer than the official Psy-Q kit Sony adopted, I thought.

Except to be fair, I didn't have a C toolchain, but R3000 assembly language is really nice when you get used to the delay slot.

a-dub
0 replies
21h48m

i guess you'd discover that protocol by playing with a yaroze/caetla/etc with some of of device listening in between and recording the words?

never really got into using the parallel port as a cheap dio until building science rigs years later... (and some fun experiments with using it to do cheap adc when in college)

jdboyd
0 replies
22h22m

I wanted one of those things so badly. It inspired me to buy a used DECstation 5000 to get my hands on something with an R3000 CPU to try writing code for the CPU until I could hopefully someday get a Yaroze. That idea didn't really go anywhere though. Thinking that the DECstation was a useful step towards a Yaroze was probably only wishful thinking. I wish I still had the computer, but then there are a lot of things I wish I still had.

goldfishgold
0 replies
16h35m

Article discusses the Yaroze in the first few paragraphs.

BaculumMeumEst
6 replies
21h51m

God damn do I love playstation 1. I just dug up my old PS4 controller, installed OpenEmu on my Mac, and started on Silent Hill 1.

I used OpenEmu way back in the day, it was the best emulator experience I'd ever had. Glad to see it is actively supported and as good as ever.

101008
5 replies
19h9m

Wait, is that easy? I have a Mac, and a old PS4 controller.

BaculumMeumEst
3 replies
18h0m

Like the other dude said you need a bios. OpenEmu will tell you exactly what files it needs and ask you to drag and drop them into the app window, you'll easily find them on GitHub.

Other than that, it has all the emulators you'll ever need built-in, and controller pairing/config is super easy. For a PS4 controller, you just hold down the PS button and share button until the light starts flickering to put it in pairing mode, then bring up the bluetooth menu on your Mac to connect. The whole process is super quick and painless.

The interface looks so good too. Add roms and you get a nice little UI with all the box art for each game automagically.

I implore you to set aside a few minutes and give it a try, you won't be disappointed.

101008
2 replies
15h20m

I installed OpenEmu and evreything but I couldn't find supported games for PS1 :-( I downloaded a few 7z files, but when I tried to drag them to app they failed. I gave up

commodoreboxer
1 replies
15h3m

7z is an archive format. You have to extract it first. PSX games will usually be an iso, a bin, or bin and cue files.

101008
0 replies
1h30m

I did get a 7z that I extracted. Then inside there was a bin file and a cue file. Importing any of those failed (the cue file was very small, with references to the bin file, but the names in those references didn't match the bin file, so I dont now if they are corrupted or what)

newzisforsukas
0 replies
18h43m

You need a PS1 bios and a rom or disk image as well.

djmips
5 replies
22h42m

I did a PS1 project for GGJ 2024 and found it rather difficult to do in the 2 days I allocated! I did get as far as building and running and used the ps1n00b. I'm the end I was able to burn a CD and launch into a 3D environment where you could fly around a checkerboard flat plane. Very exhausting but fun.

Next time I'll budget more time for a PS1 project, especially 3D even if my original goal was just a simple flight around some very simple terrain I barely got anything working. Nevertheless it was magical to see the project boot on real hardware!

dietrichepp
2 replies
21h55m

That’s a difficult project. Congratulations for even getting a 3D environment you can fly around!

My own experience is that it’s so difficult to make homebrew games not just because of the technical challenges you have to solve making the game, but also because of the poor experience with tools and debugging. Pretty soon, you find your project taking up more time than you can reasonably spare. I think it’s impressive when people manage to get something interactive working on these old consoles, anything at all beyond a “hello world” template.

djmips
1 replies
21h33m

Indeed the art pipeline alone is a huge challenge - and particularly so on these first generation 3D consoles. There is some GL like aspects to the rendering side as well but with a _lot_ of idiosyncracies. I was sweating it. I feel like N64 would be slightly easier.

dietrichepp
0 replies
18h57m

I’m not sure the N64 would be easier. The graphics hardware in the N64 is complicated.

In some ways the console is really modern (perspective-correct texture interpolation, z-buffering, subpixel positioning). On paper, it seems a lot like a more modern system. But the hardware complexity is a beast. and the design is permeated with bottlenecks. Half of the graphics pipeline is taken up by the RSP, which is a fully programmable vector processor--sounds cool, but in practice it is unapproachable. 4 KiB of texture memory (and if you use a palette, half of it is the palette). RAM bandwidth is barely fast enough to handle 3D scenes.

https://www.copetti.org/writings/consoles/nintendo-64/

The folks working on LibDragon have done a lot of work to make homebrew a better experience, but you’ll note that support for 3D graphics is still only in a preview branch.

https://github.com/DragonMinded/libdragon

atan2
1 replies
17h50m

Could you run the CD with the project on original stock hardware? Or was it a modded PlayStation?

djmips
0 replies
17h44m

People are edging closer to figuring out how to burn CDs that can boot on unmodified hardware but it's still unsolved for the average person. I used a modded PS1.

It's still very stock other than the bypass.

herpderperator
4 replies
22h25m

Is there any information about the tilting in the demo video? How does that work?

avensec
3 replies
22h13m

It has to do with the laser being worn out. This method slows the CD motor down, helping the burned game be read. People have done it by pressing firmly on the lid, which puts pressure on the top of the spindle, causing motor strain. Some people put the whole unit on its side. Other methods include adding two CDs to the spindle, obviously with the data one on the bottom, to add the strain.

There is also a 3D-printed weight disk people use at https://www.thingiverse.com/thing:4838168 .

herpderperator
2 replies
21h58m

How does a worn out laser/motor affect how a burned game is read compared to the genuine discs? I don't follow.

urbandw311er
0 replies
21h28m

Presumably the laser is dimmer and less efficient and therefore giving it more time to scan and read each bit compensates for this.

recursivecaveat
0 replies
21h18m

I think burned discs are of lower quality generally, so that's the distinction.

HanClinto
3 replies
23h17m

Excellent accomplishment, and wonderful writeup!

I appreciate the quote at the bottom of the article:

Those of us who love computers need to have something slightly wrong with us, an irrationality to our rationality, a way to deny all the evidence of our eyes and ears that the hostile box of silicon is dead and unyielding. And fashion by cunning machinery the illusion that it lives.
pragma_x
1 replies
22h31m

That and this wonderful tongue-in-cheek advice:

Writing your own PlayStation game in C is actually very simple: all it requires is to make no mistakes whatsoever.
minasmorath
0 replies
21h35m

Another great reminder to the rest of us that simple and complex are not analogous to easy and hard.

pwillia7
0 replies
5h43m

I saved that quote too!

philistine
2 replies
17h58m

Every. Single. Tetris clone which has -tris in the title ends up receiving a very scary cease and desist.

Rename your project if you don’t want to receive such a letter or worse, if you don’t want GitHub to be hit with a DMCA against your project.

I know. It sucks.

bena
1 replies
16h8m

Mine never was. Literally called it “clonetris”.

philistine
0 replies
4h28m

Well it seems you last released yours in 2002. That's literally 20 years ago. Things have changed a bunch since then.

m4tthumphrey
2 replies
22h3m

Great write up and very interesting!

Slightly off-topic but I literally just bought a PS2 purely to play the original Track and Field games. So much nostalgia! I really wish they would redo these games for the modern consoles!

Robelius
1 replies
21h43m

This is brining back memories of playing with my older siblings. For the long jump, I would smash the buttons as quick as possible and then my sibling would time (triangle?) to jump before the line....looking back at it they probably just wanted me to do the most tiring task.

m4tthumphrey
0 replies
21h36m

The button mashing is the best part! So many interesting techniques to get faster !

laweijfmvo
2 replies
23h44m

interesting perspective of someone who is presumably quite competent in javascript and learning/seeing c for the first time. i guess i'm just old but i'm used to everyone having exposure to c (or a c-style language) as their first language.

badsectoracula
1 replies
23h37m

I am used to thinking that if i want to post code that "anyone" would understand it'd be in C but i wonder if nowadays JavaScript would be a better choice (as long as it applies to JS anyway) for a "lingua franca".

(Python might be another choice but i don't really like writing it :-P)

cubefox
0 replies
22h22m

One problem with C or C style code like JavaScript is that it often uses opaque special characters like various different brackets where the meaning isn't self-explanatory. E.g. "if (A) {B}". This can be expressed more naturally with "if A then B end if" in pseudocode. Or another C offender: "a = b". In pseudocode this would typically be "a ← b" or perhaps "a := b".

atan2
0 replies
19h28m

second that. i'm taking the pikuma.com course and it is WAY better than i first thought it would be.

486sx33
1 replies
19h41m

“More precisely: I was worried that if I tried to learn C, and failed, I'd discover that I wasn't actually a very good programmer after all.”

To everyone reading HN: Most people feel this way when they step into something new.

Please don’t ever let it stop you from trying

commodoreboxer
0 replies
15h2m

"Sucking at something is the first step towards being sorta good at something."

slowhadoken
0 replies
22h7m

I used to think writing a game to PC was the best idea but the more I write the more I respect consoles. Especially considering all the retro game preservation going on, both in terms of emulation and FPGA.

seism
0 replies
23h0m

Props for doing a self organised retro hardware hack and writing up in so much glorious and gory detail! You might mention some of the PSX game jams on itch.io and GGJ for those preferring a more social setting.

lxgr
0 replies
20h0m

What a great writeup!

For anyone wanting to dive deeper on the PS1 hardware, I can't recommend this writeup enough: https://www.copetti.org/writings/consoles/playstation

It's part of a great series on various retro and not-so-retro game console.

firesteelrain
0 replies
19h3m

Can the SDK used allow you to run the games in a PS1 emulator like Sony PS1 Classic ?