Building an Atari ST

DSC02540.JPG, oct. 2020

This is the first article of a series I am writing about a home project I started in late 2019 : implementing an Atari ST on a FPGA board.

Edit: The following articles on this project are on the project's website.

Continue reading...

We accidentally your Oculus

We accidentally your Oculus Last weekend I was at Silly Venture 2k18 in Gdansk, Poland. I presented a new 4kB Atari ST intro, titled "We accidentally your Oculus".

Continue reading...

Silly Talk on MPP

I gave a “Silly Talk” presentation on my MPP file format, and on the techniques used for encoding multi-palette pictures for the Atari ST, while I was at the Silly Venture 2016 demoparty, in Gdańsk, Poland.

This was a good opportunity to talk about the multi palette technique, and also to give an insight of my job on my research field, which is operations research.

Continue reading...

zzlib-pico8

I wrote a specific version of zzlib, my implementation of the gzip/inflate depack algorithms in Lua, for the PICO-8.

Continue reading...

zzlib: a zlib depacker implementation in Lua

I did a Lua implementation of a depacker for the zlib/deflate algorithm. It’s quite efficient for Lua code, even though it obviously won’t compete with a compiled implementation. It can be useful in Lua environments where no access for native C libraries are possible, like the PICO-8 platform.

Performance tests show that typical run times to depack lua-5.3.3.tar.gz on my 2013 i5 laptop are 0.87s with Lua 5.3, and 0.28s with LuaJIT 2.0.4.

The source code and documentation are available on Github, and is made available under the WTFPL license.

MPP version 1.1

Antiques Hicolor picture #3 by Mic of Dune

It's been a long time since I haven't released an update of my Multi Palette Picture (MPP) image conversion code for Atari ST compatible computers. It's mostly a bug fix release, which improves image stability quite much on some hardware.

An extra feature was added in the encoder, which consists in an exact solver which finds optimal palettes at the price of a lot of computing time. It is mostly for curiosity purposes, since the highest heuristic optimization levels provide similar quality conversions, at much higher speed.

As usual, the conversion code is released as both binary formats for Windows and Atari TOS, and source code under the WTFPL licence.

Have fun with this release ! :)

Melina by p0ke - titeiko - zerkman

Melina by p0ke - titeiko - zerkman

I participated to a Raspberry Pi demo, which just participated to the alternative platform demo competition at the Evoke demoparty in Köln, Germany. We got the fifth place out of six, which is rather logical since this prod was neither technically nor artistically impressive. But it was fun to do anyway, especially on that platform !

You can download and run it on your Pi aswell. It requires a Raspbian Linux system. It can be run directly from the console, and it was successfully tested on a 256 MB model with memory configuration of 64 MB of VRAM and 192 MB of RAM.

UFO demo by Dune and Sector One

UFO demo by Dune and Sector One

I was at Sillyventure 2012, a demoparty in Gdansk, Poland, where Chuck and I finished debugging UFO demo, which competed at the oldskool demo compo in Numerica Altparty #2 in Montbéliard, France in 2009, and even won the first prize!

Since then, we released Antiques, among other things, and never found the time to fix annoying bugs in UFO to release a proper version. We took profit from the time we had at the party to finish fixing it, so now it is available to the public!

It works on Atari STe and Falcon, with at least two megabytes of memory.

Graphics are from Mic, music is by Dma-Sc, code by Chuck, Frost, ST Ghost and me.

Hoping you'll like it! And remember, the truth is out there.

Atari ST(e) Multipalette Picture file format

Too much time since I haven't written to this blog!

From last time, among other things I have participated to the Antiques demo, an Atari STe demo by Dune and Sector One. This is to my opinion a great Atari demo, which is really worth the look. It features great physics and 3D effects by Chuck, great graphics from Mic and awesome music from Dma-Sc. All of this put together by the Sector One conductor, ST Ghost.

In this demo I have done minor helper animation code, like the intro and the greetings part. I also used a new method for displaying still pictures with a large number of colors available on the screen.

Here is for instance one of such pictures, by Mic:

Antiques Hicolor picture #1 by Mic of Dune

Can you believe this picture can be displayed by an Atari STe, which is supposed to be able to only display 16 colors per picture, from a palette of 4096 colors? Well it can! Basically, Atari ST coders know from a long time how to display pictures with more than 16 colors. This is done by synchronizing palette changes with the screen refresh. Some graphics programs even take profit from such techniques like the famous Neochrome Master which allows to schedule the palette changes at determined vertical positions in the image, or Spectrum 512 which even allows to display more than 16 colors in a single scanline, typically 44 of them. The method used in Antiques demo allows to display 56 different colors per scanline from 29791 possible shades, making use of the blitter chip for that purpose.

In fact, the display method was not the trickiest part in the project. The biggest challenge was to determine a method to generate the data (pixels and palette) to make images look the best as possible when displayed on the STe. A program like Spectrum 512 uses a very basic method to construct image data. It also behaves badly when it has to deal with numerous colors. Of course it had to run on the Atari, with very limited processing power.

My method uses a heuristic method to generate pixel and palette data. It spends a lot of processing power to run a simulated annealing based search method to try and find the best data for each scanline of the picture. The image generation is written in C language and is rather well optimized, to reduce useless computations and make the overall run time acceptable on a modern computer. The program even works on the Atari, if you have enough patience ;)

I have diversified the display method from a single STe-only method to four different methods, the remaining three being also able to run on a plain ST (only 3375 colors are available on the ST though). One mode supports fullscreen, allowing a picture resolution of 416x273 pixels with 48 different possible colors per scanline. I created my own file format to support the different display modes and image types. This format is called MPP, for "Multi Palette Picture".

I am releasing the code of the image converter and the file viewer running on the ST and STe. The Mega STe is also supported. The code is available under the WTFPL public license, which basically corresponds to the public domain. People can use it for what they want, use the code in file conversion plugins, make better sophisticated viewers, etc. You will find the link to the archive at the bottom of this article. I also provide an archive with different sample images. Hoping people will do funny things with that code!

myscat: A MaxYMiser song merger tool

I have recently been asked by Dma-Sc from Sector One to make a simple tool to merge MaxYMiser song files (in .mys format) into a single song file containing both songs. So here comes myscat !

It takes two song files as input, and builds a new file with all patterns from both files, and with a pattern sequence such as the contents of the first song is played first, and the contents of the second song is played second. Patterns from both files appear in the same order as in the original files, and patterns from the second file are renumbered.

myscat runs from the command line, and if no arguments are provided it takes files named "1.mys" and "2.mys" as input, and produces a "out.mys" file as output. You will find more information about command line argument formatting in the included information text.

The C source code is included. It compiles fine with vbcc as well as gcc. myscat is distributed under the WTFPL license.

A realtime Mandelbrot fractal zoomer for PS3

I made a fractal zoomer on the mandelbrot set for the jailbroken Playstation 3. All the computations are done using the SPU's of the Cell processor. The generator is able to render more than 10 frames per second, and for some parts of the Mandelbrot set the framerate can achieve 60 fps ;)

It works as an installable package, to be installed from USB storage via the "Install Package" game menu option of jailbroken PS3's.

Use the analog sticks to scroll and zoom, then you can make a screenshot using the "square" button. Screenshot images are stored to USB storage. Use the "start" button to reset the original settings, and hit "cross" to exit. Enjoy !

A realtime Mandelbrot fractal zoomer for PS3

A realtime Mandelbrot fractal zoomer for PS3

Visit the prod page on pouët.net

See a demonstration video on YouTube

Browse the source code on GitHub

Coast II Coast 4ktro for Atari ST

I went to Sillyventure 2010 in Gdansk, Poland. It was a demoparty only for Atari computers (8bit, ST/STE/TT/Falcon). This party was really cool, and many thanks to Grey/Mystic Bytes for having organized almost everything alone ! That was really impressive work.

At this party, I presented a 4 kB intro for the Atari ST. Its name is ``Coast to Coast'', as a homage to the Black Monolith Team screen named ``Coast'', released in 1991 in the well known Punish Your Machine megademo for the Atari ST. This intro features realtime-rendered Mandelbrot fractals where each pixel value is really computed (ie, we actually compute a Mandelbrot suite), unlike BMT who actually decompressed pre-rendered images, or Leonard of Oxygene who uses ugly approximations.

This intro also features a nice chip tune by Dma-Sc, and a dot flag effect in fullscreen.

I hope you enjoy it as much as I enjoyed making it !

The intro on Pouet.net

Video on the Dead Hackers Society website

A real time raytracer

I began playing with ray tracing. Unlike some geeks who almost started programming by writing raytracers, I never thought it would be of any interest, since it generally could not lead to real time animation. Then, the PS3 arrived.

Continue reading...

Freezer 3D engine released

A few weeks after having released the retrostation ps3 demo, and after having done massive cleanup, autotools setup and written a small set of sample programs, I now release the 3D engine and animation system of retrostation, in the form of a library package, whose codename is "Freezer".

Freezer is distributed under the terms of the GNU Lesser General Public License

The Freezer source code is on Github. If you want to contribute, please get in touch with me. My e-mail address is in the README file of the package.

"retrostation" demo released !

I am very proud to announce the release of my PS3 demo called retrostation.

I know it is a bit late compared to sony's decision to completely remove the Install Other OS functionality from the new firmware release of latest April 1st. However, I started this project more than two years ago, so I definitely wouldn't stop this until it is done. I also know about people who still haven't updated their system, because they are aware of what they will lose, so this is a way to show them what they can do with a ps3 system, even without hardware 3D acceleration.

The demo is an animation of different kinds of 3D objects. Some of these have been designed by Mic of Dune, who did a really good job. Others are coming from old Atari ST demos. I let you try and find out from which demos they come from ! Objects of the last kind are algorithmically generated: blobs and text in separately-animated pieces.

The music has been composed by Dma-Sc of Sector One, who also did a great job in the final design of the whole animation. I personally also use my own demoscene nickname in the demo, which is Zerkman of Sector One.

The demo runs on any PS3 system with a linux OS installed on it. It runs in framebuffer mode. Ensure you set the screen mode to 720p 1280*720, and disabled the Xorg server before running the demo.

I hope you'll like the demo as much as I liked making it.

The entry on the pouët.net website is here. From there, you can download a binary version of the demo, as well as a video of the demo (HD 720p, 60 fps).

Cross compile a Debian kernel for PlayStation 3

A previous article in this blog was dealing with building an optimized Linux kernel for Debian GNU/Linux on a PlayStation 3. This however required to build the kernel on the PS3 itself, while you may also have a powerful multi-core PC which should be able to do the job a lot faster.

This article deals with compiling a kernel Debian package on a PC running Debian GNU/Linux, through the use of a cross compiler.

Continue reading...

A PlayStation 3 firmware update file extractor

Official PlayStation 3 firmware update files basically are uncompressed archives containing different subparts.

The pupextract program I wrote basically is a one-hour project which just takes a firmware update file as input, and separate the different subparts into different files. One of these output files, which I called update.tar, is a simple GNU tar archive, containing the (encrypted) files for the firmware update. Another one contains the end-user licence agreement (EULA), while some contain basic information such as the release version number, and others contain empty or unknown data.

Not sure it will be useful for many people, but I decided to release it under the GPLv3 free software licence.

Download source code of pupextract v0.01

Distributed programming using Git

I am being used to programming on *nix systems for many years. I quite early discovered the interest of using source code managers (SCM's) such as CVS at first, then Subversion (also called SVN) when it imposed itself as a valid replacement for CVS.

I used them a lot, first for simplifying some collaborative working tasks, such as code sharing and history keeping, and second for home projects, in a easy way for backup, history tracking, and working on the same set of files on different computers at the same time.

This came to become seriously problematic when I tried to use Subversion for both collaborative work, and centralizing my work among different computers.

And then, Git appeared, and it solved all my problems.


Continue reading...

Software rasterizer project on PlayStation 3

As you may know, it is possible to run user programs on the Sony Playstation 3 console, provided you install a Linux-based system. However, it is not possible to directly access the GPU of the console, meaning hardware 3D rendering is currently impossible for -most- PS3 users.

Continue reading...

Sony drops otheros feature from new PS3 Slim

On August 18th 2009, Sony unveiled the new PlayStation 3 (PS3) computer entertainment system to be available in stores beginning from September 1st, 2009.

The new system is reduced in size, weight, power consumption, and price, which should be good news to most gamers worldwide.

But for hackers who began the adventure of Cell programming on the PS3, or simply Linux supporters on the PS3 platform, a single sentence at the end of the official announcement changes the good news into a nightmare:

The new PS3 system will focus on delivering games and other entertainment content, and users will not be able to install other Operating Systems to the new PS3 system.

What this simply means is that Sony arbitrarily decided to stop supporting the otheros feature for this new hardware, sentencing PS3 Linux and amateur Cell programming to become underground.

This is really sad news for the supporters of the PS3 system, which seems to be percieved as a simple betrayal by people who have been spending days of free time mastering the achitecture and developing tools and libraries in the objective of a future public release.

This really disappointing decision from Sony will encourage hacking that leads to piracy. It also removes an important development environment that allows new developers to learn how to write software for the Cell architecture. This leads to a larger pool or resources available to build software for the system.

- page 1 of 2