Showing posts with label Gameboy. Show all posts
Showing posts with label Gameboy. Show all posts

Sunday, 15 May 2016

Binary Glyph Visualiser

Been rather unwell past week so haven't managed to get much hobby coding done.

I did mess around with a method to visualize Binary files/programs based on byte glyphs. Probably not of much utility but I really like the neat hieroglyph-like symbols it produces :3


Throw in some syntax highlighting and you get a better sense of the structure inherent in bytecode. This is a whole program from a certain bootloader, congrats if you can guess what :)

Friday, 1 April 2016

Gameboy Tileset Viewer

Continuing on from my experiment last week to load and display the byte values of binary data as coloured dots, this week I've created a picture viewer. My dataset of choice continues to be from the Pokemon Blue Gameboy cartridge. Mostly for nostalgia's sake and also because at less than a Megabyte in size there is a chance to get an overview of it in its entirety onscreen at once.

The original gameboy had a black and white screen which could display 4 colours; black, dark grey, light grey and white. (Although due to the LCD used they tended to be a bit greenish. This meant a pixel's colour could be defined by 2 bits. The Gameboy used a tiling method to display images with each tile composed of 8 by 8 pixels. Essentially this means each tile is 16 bytes in memory. (for a more in depth description see here )

It took me a while to get my JavaScript code to view each part of the input data as being 8-bits but once I got it to stop defaulting to 16-bit it was easy to iterate over an entire bank of the cartridge to get this:


On the left is a rough overview of the 25th, 16KB block of rom. On the right is that same binary data converted into Gameboy tiles. It's so cool to see recognizable tiles from the game! There are grass, flower and tree tiles. Some tiles used for interiors, even the entire ship the SS Anne : 3

What really intrigues me is the tiles which stand out as being identifiable as real tile data, as opposed to some other kind of binary data are visible within the overview on the left. Generally tile data is higher byte values, hence lighter. I expect you could do some neat statistical analysis to automate identification of tile data.

Anyway I'll continue my foray into nostalgia driven disassembly; I've had a look for text encodings and have tried to work out the basic formatting and scripting functions which Pokemon Blue had. ie. printing the players name, playing 'item get' noises and clearing the textbox. Perhaps more usefully I've been looking at the instruction set of the Gameboy's processor, the Z80 (or some variation) I might end up decompiling machine code into actual assembly! :D

Friday, 25 March 2016

Binary Visualiser

Inspired by the Binary Visualiser explained and demo'ed at the other end of that link I messed around making a quick version myself:



In the above image blue denotes text byte values, green any other positive byte values and black zero. I will leave what the file could be up to your imagination :P (not that the whole file's data is visualised here, only about half) This particular file exhibits some interesting striping and the last quarter of the file is mainly text.

I doubt this will be of much interest to people who aren't as fascinated by data visualisation as I am. Ideally I would find a way to divide a binary executable into likely; logic, audio, graphical and text data. This topic would probably descend into disassembly though, which is sadly a bit of a legal grey area :/ A pity as it is wonderful to see computer code at the level of bits and bytes.