Nicolas Allemand

Music, game dev and unicorns.

Hey !

Another try on my Game of Life simulation: this time, the goal was to make it a little better-looking. It was a great opportunity to get my hands on the wonderful shine library, and to work with tweening libraries (which I didn't use in the final version).

Get it here. :-)

LIFE2 screenshot Yay, shaders!

Screenshot of BRIX The good ol' BRIX

Well, it's been a long time since I had this much fun programming something.

I've always been interested in emulation, but I never really took the time to see how it works; I simply felt that it was out of my league. After reading some good articles, I realized I could try emulating the simplest system of them all : the CHIP-8.

Technically speaking, the CHIP-8 is not a real machine, it's a interpreted programming language that anyone can implement. It contains 35 opcodes, a couple of registers, and a unique drawing method; making it really easy to emulate.

After a couple of nights trying to debug some bitwise operations, I managed to complete the emulator. I really encourage all of you to implement your own, as it makes you understand a little bit more how CPUs/computers work (also, that forces you to understand bitwise operations better :P). Almost anyone can do this with a little time! You can grab mine here.

So... What's next? Game Boy?

Screenshot of minesweeper Aw maaaan

A couple of weeks ago, I needed a simple project to test my newest library: signals (to send/receive signals, inspired by the observer pattern), so I decided to make a little minesweeper.
Here's the result, in a couple of evenings of work.

July 26, 1997; Apple introduced Mac OS 8. I remember the long hours I spent in front of my Macintosh, trying the new features of the OS. That's also the first time I had the chance to try HyperCard. One thing really caught my eye: the patterns. Here's a screenshot where you can see the default ones:
Screenshot of Hypercard's patterns window Pretty cool, huh?

I was -and still am- amazed at the ingenuity behind this. The patterns were usually small (17x12 for HyperCard patterns), and only two colours were allowed, yet some of these patterns were awfully complex.
Naturally, I thought this would be a fun idea to re-implement them in a more contemporary engine. I made a little library for LÖVE, which returns a canvas of the desired size, after loading a custom .lua pattern file.

Example of a pattern file:

local p = {}  
p.width = 17  
p.height = 12  
p.data = {2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,}  
return p  

And how to draw it :

local patterns = require 'patterns'

function love.load()  
    canvas = patterns.getCanvas(150, 250, 'my_pattern_file')
end

function love.draw()  
    love.graphics.draw(canvas)
end  

Finally, here's how the pattern editor looks like:
Screenshot of Pattern Editor app

Here :)

Dithered image Having fun with dithering and fixed threshold