Extract FLI animation frames to PNG

The original animations in Ocamel were created in Autodesk Animator, saved in FLI animation format. In the original release I was using a third party Pascal library to run them, but in the 10th Anniversary Edition I had to create my own renderer in C++. One of these days I had the need to extract animation frames to a usable file format, and so the FLI Extractor project was born.

Based on my own FLI player class, its sole purpose is to extract animation frames to PNG image files. It is a simple Windows command line application, with no effort whatsoever to make it cross-platform. I released the code as open source on GitHub complete with a binary release, but it’s not guaranteed to work and comes with no warranties. You know the drill, if something doesn’t work, you’re quite welcome to fix it.

Share Button
Tagged with: , , ,
Posted in Blog

Samsung Galaxy S3 boot loop backup without root

This is the story of how I managed to back up the internal storage of my unmodified non-rooted Samsung Galaxy S3 which was stuck in a boot loop. It may or may not work for other Android devices and there is no guarantee that it will work for you. However if your data is important to you, it worths a shot. No external SD card is needed for this and the phone and software wasn’t modified in any way. If you don’t care about my ramblings, jump right to the bottom for the solution in the section Riding the loop.

Something went wrong

About a week ago my android phone got into a boot loop for no apparent reason. One minute I was checking the time, in the other it was frozen with black screen and blue LED on. I took the battery out then put it back in, and off it went into a boot loop, switching between my carrier’s and the Samsung logo.

As most of the stuff I use on my phone is either an online service or synced, I wasn’t really bothered, although I wasn’t looking forward to spend an hour again to customise all the settings. Once I got over the shock of losing all my three-star levels and unlocked goodies in all Rovio games, there was one thing I really wanted to get off: my photos and videos. I’m not too keen on using a cloud service to take care of all my personal memories, and the ones on my phone were never backed up as I only used it if I had no time or I was too lazy to get a proper camera. Of course, all the data was on internal storage, as with 16GB of space, who needs an SD card?

I knew I couldn’t take the phone back to the shop, as they would have started with a full wipe and factory reset losing all my data. So what other options are there?

Download Mode

This was the first thing I found online, but despite the name, it doesn’t let you download anything. By holding down the volume down, home and power buttons, your phone boots into download mode. The only thing you can do here is to root your phone and flash custom Android images onto your device by downloading a program called Odin to your PC.

I thought I would be able to dump my phone’s full memory to a file, but the dump feature in Odin was always disabled, and I don’t actually know what it is for.

Another thing conveniently suggested on the internet is to flash custom recovery images to the phone which would allow me to create a full backup to an external SD card. First of all, I had no SD card that would have been big enough to hold all the data. Secondly, I still had no idea what was wrong with my phone, and losing the warranty by flashing stuff on it wasn’t really compelling to say the least. Better try something else…

Recovery Mode

Download mode’s little sister is the recovery mode, which gives you some limited options to troubleshoot your device without the danger of bricking it. You can boot into this mode by holding down the volume up, home and power buttons. You can try clearing the cache here, but it didn’t help in my case and was still stuck in a loop.

Another advantage is that in recovery mode, you get an ADB connection to your PC via USB. ADB is an android management tool that comes with the android developer SDK. You can look at the system log, backup files and even connect to your device’s linux shell. The downside is that in recovery mode you can’t access shit. The internal storage is not mounted in the file system and you can’t mount it without root access.

Riding the loop

While I was fiddling with my phone, I noticed that after the third or fourth boot loop iteration, it has connected to my PC via USB. As the Android system hasn’t started up, it wasn’t mounted as a USB mass storage device, but I could connect to it via ADB, the management tool from the development SDK. To my surprise, even though Android itself was rebooting over and over again, the underlying linux system worked perfectly and allowed a stable shell connection. From there I realised that the SD card was already mounted and I could access my files. Here are all the steps to copy them off:

  • Install the Android Development SDK to a folder of your choice.
  • Connect the device to the PC via USB cable and switch it on. Let it run continuously in the boot loop.
  • Start up a windows command line shell with cmd.exe
  • In the shell, navigate to the folder of the SDK tools under [SDK Folder]/platform-tools.
  • Once the phone is connected to the PC, run adb shell from the command line.
  • Within the ADB shell, find your internal storage and make sure you can see your files. For me it was under /storage/sdcard0.
  • Close the ADB shell with the exit command.
  • Make a backup folder within platform-tools (mkdir backup).
  • Copy the files off by running adb pull /storage/sdcard0 backup from the Windows shell.

Once it started copying, leave your phone in the boot loop until it finishes, for me it took about 30 minutes. As the device is hard at work, it can become quite warm, make sure it doesn’t catch fire though.

It turned out that my boot loop was caused by a software issue, once I copied my files off I did a full wipe and factory reset in recovery mode and it was working perfectly again. While connected via USB in the boot loop you can even run adb logcat to see some error messages, but for me it wasn’t much of a help, nothing obvious came up and I couldn’t have done anything about it anyway. To get a nice filtered colour-coded log, install the Eclipse Java IDE.

That’s it, I think I’ll pay more attention to backing up the files on my phone in the future.

Share Button
Tagged with: ,
Posted in Blog

Welcome home, Ostudio!

I am delighted to report that 15 years after its birth, Ostudio finally has a home. While we missed the initial registration of a domain name, the one in its home country has finally became available, and I did not hesitate this time. Ostudio’s new home can be found on… drumrollostudio.hu.

Contrary to popular belief, Ostudio did have a website a long long time ago, but it faded into well deserved oblivion, together with its failed free hosting provider. That one was created with the hideous Netscape Composer if anyone remembers, and used all kinds of scary random decorations and animated GIFs which made many websites in the 90s so awesome.

At the moment our new home is nothing more than a placeholder page to show the world that we’re out there, but make sure to celebrate the website’s launch with us in the “near future”. Let’s all hold our breaths while we’re making something up to commemorate this big event accordingly.

Share Button
Tagged with: , , , ,
Posted in Blog

Ostudio’s cancelled projects

While in recent months I posted about Ostudio’s amazing games of the past, not all projects have been so fortunate to see the light of day. I think it’s time to mention some of the least fortunate ones, where sometimes even a playable development demo version was a luxury. Please welcome our first entry in the list: the unique, the ambitious, the violent, the one and only Flipper in the Snow.

It was supposed to be Ostudio’s entry as a fighting game featuring its well-known characters. Troubled with all sorts of development issues, the game was cancelled in March 1999. Read more on its dedicated page.

This is only the first entry in the list of failed projects and the best is yet to come. Watch the Ostudio page for future updates.

Share Button
Tagged with: , , ,
Posted in Blog

NumGuess updates and EsoInt

I’m happy to report that most NumGuess versions have been updated according to the guidelines. With Perl only missing a minor feature, non-compliant versions are down to Assembly, Jasmin and Brainfuck, of which the latter is not expected to receive an update anytime soon.

In the past couple of weeks I was looking at Ruby on Rails to keep my development skills up to date, and learned a bit of Ruby along the way, which of course means that I committed a new fully compliant NumGuess version to the repo.

I was also looking at adding another esoteric version, but the main problem with eso languages is that sometimes it’s a real pain to find a compiler/interpreter online. This gave me an idea, and I started a new side-project: EsoInt, an open source universal esoteric programming language interpreter. Bear in mind that the project has just started, and “universal” means that it supports “more than one” language, 7 so far to be exact:

  • Befunge-93
  • Blub
  • Brainfuck
  • Brainfork
  • COW
  • Ook!
  • Spoon

Most of them are Brainfuck variants: Brainfork and COW are minor extensions, while Blub, Ook! and Spoon are direct translations with different “syntax”. Befunge-93 is the only other original language there.

I’m still not sure how Ruby fares solving other coding problems, but developing a simple interpreter for these languages was pure joy: its abundant string operations, regex support and dynamically sized arrays were all very useful. It’s also cross-platform, so nothing stops you to get some esoteric action on both Windows and Linux.

Equiped with my own interpreter, nothing stops me to develop a Befunge-93 version of NumGuess. Fingers crossed, stay tuned.

Share Button
Tagged with: , , ,
Posted in Blog

Jedi Outcast source code released

This is one way to ease the pain: Raven Software has released the source code for Jedi Knight II: Jedi Outcast. It can be downloaded from this SourceForge project page, released under GPLv2.

UPDATE: The source code for its sequel, Jedi Academy was released as well. This way.

Share Button
Tagged with: , , ,
Posted in Blog

Rest in peace LucasArts

It is a sad day for old gamers like me, and it’s not just a late April fools: the mighty hammer of Mickey has struck as Disney shut down LucasArts after acquiring it in a mega-merger at the end of last year. All of their current projects were cancelled including Star Wars 1313. While it is understandable from a business point of view (they should have been shut down in the early 2000s), but as a gamer it’s really sad to see them go.

Some of their Star Wars games has a special place in my heart, like the Jedi Knight series where you could experience most jedi powers in first person; their great space simulators X-Wing and TIE Fighter; and Empire at War which was an interesting RTS/4x hybrid. For the sake of remembering the good things let’s forget Force Commander with its horrible UI, buggy gameplay and the remixed Imperial March. No doubt that we’ll see more Star Wars games in the future developed externally, which might actually be a good thing considering that the most recent Star Wars games I really liked was the Knights of the Old Republic series, developed by BioWare.

As big a Star Wars fan as I am, LucasArts’ greatest achievement for me lies in their legacy as the father of point-and-click adventure games. They introduced the SCUMM engine with Maniac Mansion in 1987 (then as Lucasfilm Games), which was used in many great adventures to come: from the funny Monkey Island series, though the silly Sam & Max, the legendary Day of the Tentacle, to the more serious Full Throttle, and The Dig, the best point-and-click sci-fi adventure. Even though sales were declining and the adventure gaming era was coming to an end, they came out with Grim Fandango in 1998. While commercially unsuccessful, it had a remarkable art-style and a unique story, I usually consider this 3D adventure masterpiece the end of adventure gaming.

If you want to play the above adventures and happen to have the original files, grab a copy of ScummVM, ResidualVM or DOSBox. Thanks to these great open source projects, these great memories are saved from digital decay.

As for the future of adventure gaming, we can only hope that Disney will outsource the rebirth of some of these classics to Telltale Games, which was founded by former LucasArts employees after Sam & Max: Freelance Police, a sequel to the original Sam & Max: Hit the Road, was cancelled in 2004.

Share Button
Tagged with: , , ,
Posted in Blog

Private Git code hosting with GitLab

I was recently looking at ways to host our development projects’ codebase at work. The current situation is far from ideal: all the code is stored on a Windows shared folder somewhere on our network, to my defense, they’re mostly properly version controlled in git repositories. Some projects are edited in place over the network in the working directory, typically web projects. Others are bare repos cloned to my local harddrive, they’re usually contain code that needs compiling, especially bigger android projects with zillions of tiny xml files, which would be too slow to use through a network share.

I love what GitHub has to offer in terms of features and ease of use, but if you’re as paranoid as me regarding online services storing private source code, you’d want to keep your code local behind your own network or server cabinet. And no, GitHub enterprise would be far too expensive for our small team, starting at a minimum of 20 user license for US $5000 per year.

GitLab merge request screen

GitLab merge request screen

Rather than building a git host server myself, I was browsing around GitHub for a solution which offers nice features out of the box. I came across GitLab, which turned out to be perfect for the job. It’s supported on Ubuntu, built with Ruby on Rails, using the Nginx webserver and has a very clean and easy to follow step-by-step installation guide. I grabbed the latest Ubuntu 12.10 server release, copy-pasted all the terminal commands and in the end it just worked. The only thing I had to set is the password, write our fully qualified domain name and IP address in a couple of config files, and we were good to go.

The interface is not really original, in fact it’s more or less a direct copy of GitHub’s, which is a plus if you’re used to it and it’s similarly easy to use. It has all the features you’d want in a private code host such as team management, user-private repos, issues, code browser with syntax highlighting, inline code comments, merge requests, wiki and multiple user-access levels. With its support of event hooks, nothing stops you to develop scripts to make it an integral part of your deployment process.

It is being actively developed with releases coming out on 22nd of each month. It’s free and open source, build a VM and give it a go. If you’re looking for a free private git host, look no further, I can fully recommend it.

Share Button
Tagged with: ,
Posted in Blog

Oscorch

oscorch-screenshot1A new classic has been added to the Ostudio page: Oscorch, our reimagination of the mother of all games. Enjoy a pure multi-player artillery game with well-known and never-before-seen characters. Up to 10 tanks from 9 teams with unique colours, beautiful gradient backgrounds make this game an unforgettable experience.

Developed in 2002, it has 640×480 high resolution graphics, stunning 256 colours and no annoying sound effects that would destract you from destroying your foes. Read more about the game on the dedicated Oscorch page.

Share Button
Tagged with: , ,
Posted in Blog

NumGuess brainfucked and guidelined

One day Kapa and I were chatting about the project, and he jokingly asked who is going to do the Brainfuck version. “Hell yeah, I will”, I said, without realising what I was getting into. I heard about Brainfuck before, but never tried to do any actual programming in it. But it shouldn’t be to hard, right? Well…

It is an extremely simplified esoteric programming language with only 8 commands. To keep the application state, you get access to a byte-array with sufficient size (usually at least 30k elements depending on the interpreter/compiler) and a pointer pointing to the first element when the program starts.

The 8 commands are each represented by a symbol:

  • + and - increments or decrements the current array element.
  • < and > moves the array pointer to the previous or next element.
  • , takes one character input into the current array element.
  • . outputs the current element as a character.
  • [ jumps to the next ] if current element is 0.
  • ] jumps back to the previous [ if current element is non-0.

And that’s it. All other characters in the program file are ignored.

Apart from being extremely limited, there is one key thing that’s completely missing for our number guessing game: every program will execute exactly the same way and without access to any kind of varying data (like the timer), we have to rely on user input in order to generate a “random” number.

Read more ›

Share Button
Tagged with: ,
Posted in Blog
GitHub
GitHub Octocat

DarthJDG @ GitHub

  • Status updating...

If you find something useful, please feel free to buy me a cup of coffee.