Thursday, December 18, 2014

Recent commits : a month in bitbox

Hi all !

Here are some news about the recent commits of the bitbox engines, kernels and other bits since last month. You can look at the git history to find them

Wednesday, December 3, 2014

New Game : Boulder Dash clone

Why, yes a clone of boulder dash was one of the simple games I wanted to implement.

It's not completely finished (missing new sounds, levels, and ennemies), but the main elements are here in their 640x480 glory, inc. sound&music, basic gameplay, intro screen

Here is the repository (including a binary release for eager testers :)

Everything in the game is tile-based, and the whole game data is in fact just a uint8_t[] array of tile references, with its small finite state machine. The main and only .c file is 380 lines- not that I am so proud of it, it grew quite organically, but eh : now is better than never.

Demo (click on it to see fullscreen)

Monday, November 17, 2014

Presenting bitbox at "le capitole du libre" in Toulouse

I was kindly invited to present the bitbox as part of the "Capitole du libre" meeting, where I presented the hardware and software conception during a nealy one hour talk with many interesting questions after. The project has found a few very welcome new enthusiasts !

It really was a pleasure to discuss with everyone there, working on free / opensource games, awesome operating systems or nice little games that beg to be implemented on the bitbox ...

That, and many interesting more general conferences about opensource or blender (yay). The slides are in french, but I plan to include them

The big problem is that it entails so many new ideas and directions that my sleep deprivation will not be much better for another year I guess ...

Tuesday, November 11, 2014

Simple modes

Some have expressed the interest for simple modes for the Bitbox. An recent commit is providing such mode , on top of the standard kernel.

The so-called simple modes are called like this because they provide a frame buffer interface, so the application programmer will only have to write bits and bytes to the video memory - much like it's done on PC. So the interface is a vram buch of memory and a color palette (because the tradeoff is a reduced palette or resolution)

There are two examples in the bitbox SDK (one of them below), but generally you'll need to define a simple makefile variable VGA_SIMPLE_MODE=X with the given mode and include the standard makefile.

(Yes it's currently defined at compile time - if your program needs to switch between two modes at runtime, it might be time to switch to a standard kernel / engine - it's not difficult !)

Monday, October 6, 2014

New kernel modes (including 800x600@56Hz !)

Since a recent commit, developers now have a better way to set modes.

The kconf.h kernel configuration file allows now several modes, selectable through your project Makefile config options.

Current defined timings include  :

- 640x480, 60Hz @ 168MHz clock (default one), 7 clocks per pixel
- 320x480, 60Hz @ 168MHz clock (repeat each line twice to use as 320x240 display)
- 640x480, 60Hz, overclocked at 192 MHZ,  7 clocks per pixel (longer vsync time)
- 800x600, 56Hz ! overclocked a bit at 180MHz. Yes the bitbox can do 800x600, 56fps.
You only have 5 clocks per pixels here however, so you'd better optimize that blit loop.

other modes can be created by adding config lines to the kconf.h file, all timing computation is based on number of pixels for Porch begin/end/sync and display sizes in pixels ; however be sure to get the right clock ratios to run USB/SDIO clocks at 48MHz !

yes, testkernel can work at 800x600 (sorry bad pic)

Friday, October 3, 2014

Beat Blocks beats hit Bitbox !

New program ! A Beat Box project on the Bitbox. Used to make rhythms with drums samples, you know.

It sports 8 tracks with two possible instruments on each of them (16 different instruments max), looped on a 16 beats track.

It is controlled by a USB gamepad or a keyboard, and can be used live (ie changing patterns or editing them)

It works by playing and modifying patterns on a mod file on the SD card (samples can be bigger than the bitbox memory), so you can create drumkits quite easily with a Tracker and play/modify it on the bitbox.

Of course, it's free and open sourced ! See sources and graphics on GitHub

Saturday, September 13, 2014

"I love playing. The keyboard is my journal."

Well, now we can join Pharrell Williams and play the Bitbox with an USB Keyboard since commit 3a983ff

The USB code can now read USB keyboard and produce events, and a small function has been added to emulate the gamepad with a keyboard, so to get basic keyboard support you need to add one line in games. Or just check for the events yourself.

Keyboard can be read from an application by using the event_get() function , which returns a (possibly empty) event, check for e.type = evt_keyboard_press or evt_keyboard_release events, and then get the modifiers (Control, Shift...) state in e.kbd.mod and the keyboard code e.kbd.key bytes.

The code themselves are position-dependent, not letter-dependant (by example on a QWERTY keyboard the Q letter has the same code than the AZERTY 'A' letter, thanks to the USB norm for that), so if you want to type some text, use the appropriate translating tables. (there are two key maps available on the kernel for now, QWERTY and AZERTY).

All key codes ("Usages") can be found on the HID Usage Tables, Usage Page 7.

All of it is defined in the bitbox.h file.

The bootloader 2 has been upgraded with it, by additionally displaying the last key pressed or released on screen. Also, the examples now include keyboard usage.