Untitled installation featuring Shitwave

October 18th, 2011

An untitled collaboration between Simon Mattisson and Marcus Olsson. A Gameboy in a dark room is overclocked until it crashes. I’m almost getting Saw vibes from this. The Gameboy is modded by NeX and is actually being overclocked. The sound is produced by Shitwave.

Untitled from _-_- on Vimeo.

Syncing monotribe to LSDj using the sync jack (no MIDI)

September 28th, 2011

Monotribe has jacks on the back for sync in and out. The sync output outputs 15 ms 5V pulses, which can either be rising or falling. (There’s a setting for this.) The sync input can also trigger on either a positive or a negative edge. (There’s a setting for this as well.)

You can trigger this input from LSDj. There are two things to think about:
1) The signal from the headphone jack is too weak. You need a ProSound modded DMG with the volume turned all the way up. (Other models untested, may or may not work…)
2) The monotribe requires a single clean rising edge to trigger correctly. The pitfall when using LSDj is that for example a square way, or a sawtooth wave, or even the noise generator, will trigger multiple steps. For this reason, you cannot use the pulse channels for this without getting a lot of false triggers. But you can use either the wave channel or the noise channel with somewhat predictable results (almost no false triggers) using a couple of tricks.

In this video I’m showing you how. As you can see, the video also shows which buttons I were pressing at any one time in case anything is unclear. Below is an explanation for the things show in the video.

1) Using the wave channel

The idea of this method is to create a wave that doesn’t oscillate. Instead of a sawtooth wave or a sine wave, you have a constant voltage. The easiest way to do this is by creating a synth with zero volume and moving all samples to the top.
Select+B, right until everything is selected, up until the samples are at the top.
(After recording this I realized that an even easier way to do the same thing is to set the VSHIFT parameter to 80, but this is good exercise in using the wave editor.)

The instrument used needs to be a wave instrument and have PLAY set to MANUAL. At this point, the instrument hould be ready to use. Place a note on on each step in the sequencer where you want to trigger the monotribe.

2) Using the noise channel

The Gameboy noise channel actually doesn’t produce real noise, but pseudo-random noise by changing amplitude between 0 and 1 in ways that sound random to humans. The Gameboy allows you to control the pitch of the noise, and at very slow pitch settings, it can take a second between the changes. This can be to sync the monotribe by first turning on the sound quickly to trigger the sync function, and then turning it off again, so the noise channel’s oscillations won’t trigger any more steps after that.

The way to do this is by setting the shape to 54 and usinng a table that turns off the sound output with the O command. (Trust me, I’m a professional.) I also changed the envelope to F8 to get the maximum amplitude possible.

General instructions

Use either the wave method or the noise method, not both. Both methods should give you OK stability from 40 BPM to 255 BPM, but sometimes you’ll see glitches, especially if you adjust the tempo.

If you have an appropriate left/right splitter cable, you can pan the sync instrument to the left and all other instruments to the right, to get both sound and sync out of one Gameboy. If any sound instrument is panned to the sync channel, the monotribe will start rushing.

Always start the monotribe first (or stop/start it before you restart LSDj) if you want things in sync. Otherwise, it will start at the step where it received the last pulse before it stopped.

Even when following all instructions, it may happen that the monotribe misses a beat when you press play, in particular the first time you press play after turning on the Gameboy. If so, stop LSDj, stop/start the monotribe and try again.

Tip 1: Adding some swing

You can add some swing in LSDj, just like when using Korg’s iOS app SyncKontrol. Swing, or shuffle, basically means that you delay every second note to get a more natural and less straight feel.

For this, I’m using the groove function in LSDJ. Since I laid out the the sync notes as 1/8th notes, I need to make a groove pattern that is 4 steps for it to have any effect. This is an LSDj technique that doesn’t need the monotribe to work. Go here to learn how the groove function in LSDj works.

Tip 2: Using the noise channel as a random trigger source

If you want to get random trigger pulses that are not synced to the tempo, or anything else, you can create a noise instrument with a low shape value, just like in the noise example below. If you let it play, it will trigger the monotribe at seemingly random intervals.

If you have any questions or thoughts, ask below.

500 infernal terror!

August 8th, 2011

My webhost recently started moving their customers to their new generation of servers, running LiteSpeed. This has caused me some grief the last few hours. One of my sites consistently showed a “403 access denied” error, seemingly no matter what I tried to do to remedy the problem. With some hard trying, I managed to make it display a “404 not found” instead, still seemingly randomly.

It turns out there were two problems, both most likely caused by buggy interpretation of .htaccess files by LiteSpeed. The first problem came from these two lines:
Allow From All
Order Allow,Deny

As it turns out by experiment, LiteSpeed handles these statements differently from Apache. Apache will start off by making a list of all the applicable rules, and then evaluating them in the order specified in the Order statement. In this example, first all Allow rules will be evaluated, then all deny rules. If there are any matches, Deny will take precedence since it’s last in order. If there are no matches, Deny will also take precedence since it’s the second argument. Of course, in this case everyone will be allowed since there’s an Allow From All statement, unless there are matching Deny rules. This is well documented in the Apache manual and (hopefully) well understood by web developers.

LiteSpeed on the other hand is dependent on where statements are placed in the source code. In the above example, the Allow From all statement is ignored, or possibly overridden by some implicit form of Deny From all. Not really sure… Moving Allow From all to after the Order statement will make it work. Also, changing the Allow statement to something more specific, like Allow From but still placing it before Order will suddenly make it trigger. Not sure what’s up with that. Perhaps the LiteSpeed authors are trying to make it work how they think people think it will work. Or maybe they’re trying to do some optimizations by trying to abort the evaluation of the file as early as possible. Or maybe they just don’t know how these rules are interpreted by Apache. In any case, fact of the matter is that it doesn’t work as it is supposed to.

The next problem is how LiteSpeed handles errors in .htaccess files. It seems like whatever you do, you can’t get a 500 internal error from LiteSpeed if your .htaccess rules are incorrect. Completely invalid rules will be ignored, whereas as they would give a 500 internal on Apache. Malformed rules will give you a 404 not found instead of a 500 internal error, making it difficult to pinpoint the exact error. I’m not sure if this is a “feature” of LiteSpeed so they can say that their server will never have internal errors, or if it’s a secondary error similar to the “Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request” errors that you sometimes see on badly configured Apache servers.

The culprit this time was the following rule:
RewriteRule ^(.*)$ wiki/index.php?title=$1 [PT,L,QSA,B]
LiteSpeed apparently doesn’t support the B modifier (escape characters like & when building the query string) which caused the server to barf. However, since what I got was a 404 error, and not a 500, I thought the rule somehow rewrote the URI to something that didn’t exist. It was not until I replaced the B with a bunch of random characters that I understood what was going on.

All in all, all of this may not seem like a very tough nut to crack, but there’s more. For some reason, an index.html file had its permission mask set to 400, or r——–, which in UNIX persmission terms means that the file will only be readable by its owner, and not by users in the same group, or “anyone”. This was a placeholder page that the web host had put their, but I’m not sure how it got that permission mask.

When the rule works as it should, the root URL http://packetsofknowledge.se/ should be rewritten to the MediaWiki index.php. However, when I tried simply deleting/renaming my .htaccess, I still got a 403 because of the permissions of the index.html. However, since I hadn’t noticed that, I assumed at that point that the issue maybe wasn’t .htaccess related.

To summarize, when you have different error sources, the number of ways something can fail increases exponentially.

Why dead horizontal lines are harder to fix…

July 21st, 2011

There’s a (relatively) well-known method of fixing dead lines on the DMG-01 (classic Gameboy) LCD screen which consists of dragging a hot soldering iron across the connection of the brown plastic connector with an epoxy blob, and the glass. The right spot in underneath where there’s normally a black rubber strip. This will reflow the glue, solder or whatever is used for the attachment, and the method can usually successfully fix dead vertical lines.

How not to fix dead horizontal lines on a DMG-01

Sometimes people ask whether horizontal lines can be fixed as well. I’ve always assumed that the connector on the right side of the screen, which would be at fault if there are dead vertical lines, is basically identical, and that the only problem with fixing horizontal lines is the more awkward position of the connection — the “ribbon” is connected on the bottom side of the LCD glass, so you need to fit the soldering iron into a small corner without damaging anything.

How not to fix dead horizontal lines on a DMG-01

However, the ribbon connector on the right side is different and more fragile. If you look at the top image, you’ll see a connector that looks brown. Technically speaking, this is called a flexible PCB (printed circuit board.) Just like on a regular, rigid PCB — like the display daughterboard itself — you have copper traces for connections and a green solder mask. The black blob in the middle is an integrated circuit, not unlike the chips you would see on any other circuit board, only that this one is hidden within a blob made of epoxy, and the circuit on the chip is connected directly to the copper traces, rather than using external pins soldered to a circuit board.

The right side connector has a similar flexible PCB, but the last stretch of the connection is made by a flimsy white plastic material which is easily damaged by the heat from a soldering iron. The actual connectors are not made of copper but possibly carbon or some other conductive material. My advice is, do not try to fix dead horizontal lines. You’ll likely just mess up the connector as seen below.

How not to fix dead horizontal lines on a DMG-01

If the English language made any sense…

April 27th, 2011

I'm a catastrophe

“If the English language made any sense, a catastrophe would be an apostrophe with fur”
~Doug Larson

Simon Lundströms manga-dom och jakten på de friade bilderna

February 5th, 2011

(Mixed language post. Swedish=blue left border. English=red left border. Warning! No hotlinking, unless you have a goatse fetish!)

I mitten av 2010 dömdes manga-översättaren tillika -experten Simon Lundström (Eller Zimeon om man känner för det) för barnpornografi-innehav för 51 st. tecknade bilder. Målet överklagades och hamnade i hovrätten. 28/1 meddelade svea hovrätt att 12 av bilderna som tingsrätten dömde honom för inte ansågs utgöra barnpornografi i lagens mening.

Jag skulle kunna diskutera det totalt absurda i att lagen, med den goda föresikten att skydda barn, förbjuder tecknade bilder som inte föreställer ett faktiskt övergrepp, men det har redan gjorts på ett flertal ställen i den svenska bloggosfären. Så istället tänker jag försöka mig på att testa mina Google-skillz och stilla min nyfikenhet genom att försöka hitta de bilder som bedömdes ligga inom lagens råmärken.

In mid-2010, the renowned Swedish manga expert and translator Simon Lundström was convicted for possession of child pornography in the Uppsala District Court, for 51 images found on his hard drive. He appealed the conviction. The Svea Court of Appeal upheld the charges, but ruled that 12 of the images weren’t child pornography according to the law.

I could discuss the absurd law, which basically creates a thought crime, but instead, I will try to still my curiosity and test my Google skills, to see if I can find the 12 images that were ruled to be legal under Swedish law.

Efter lite letande hittar jag detta inlägg på anime.se där de tolv filnamnen från rättegångsprotokollet finns uppradade. (Så vitt jag kan utröna finns det inga bilder i protokollet, och inte heller några filnamn angivna för de filer som ansågs vara olagliga av hovrätten.)

Fyra bilder ansågs inte nå upp till lagens definition av “barn”: isen01.jpg, c_girl.jpg, SINO1S.JPG, SINO2S.JPG
Åtta bilder ansågs inte nå upp till lagens definition av “porr”: han.050.jpg, han.051.jpg, n09.jpg, tsurupeta3.jpg, 022x.jpg, CRSN0201.PNG och två filer vid namn _09.JPG. (Kanske två kopior av samma fil.)

My first lead is this post in the anime.se forums (in Swedish) which lists the file names of the twelve legal files, taken from the court protocol. (As far as I understand, no actual images are attached to the protocol, as well as no file names for the images deemed illegal.)

Four pictures did not depict children, as defined by the law: isen01.jpg, c_girl.jpg, SINO1S.JPG, SINO2S.JPG
Eight pictures did not depict pornograhy, as defined by the law: han.050.jpg, han.051.jpg, n09.jpg, tsurupeta3.jpg, 022x.jpg, CRSN0201.PNG and two files named _09.JPG, possibly duplicates.

Read on…

Yo dawg, we heard you like like-likes!

January 31st, 2011

Made out of boredom… (Click for slightly higher resolution…)
Yo dawg, we heard you like like-likes

Stop saying like - unintended irony
Whoever put up this poster scored a few “unintended irony” points for misspelling “Academy of Linguistic Awareness” as “Acadamy of Linguistic Awarness”.

Unfinished LSDj drafts

November 21st, 2010

So, I’ve decided to share with you a few videos of a few LSDj drafts that I’ll probably never finish. In each video I also show some of the techniques I’ve used. I think the songs kind of suck, but perhaps they can inspire someone. The names are just what I’ve happened to call the files in LSDj, so the names are nonsensical. Feel free to comment or criticize. More will come in a while… (I tend to not finish my songs…)





Public release of LittleFM 0.4

November 9th, 2010

Click here to come to LittleFM’s main page!

LittleFM 0.4 beta

It’s finally time for the release of LittleFM 0.4, which is an alternative file manager for LSDj that lets you store songs in the flash memory of the cartridge, for increased storage and security. I was going to make it feature complete before releasing, but since I haven’t been making any major improvements to it for months, I thought I’d release this version as it is, for the moment.


Before using LittleFM, please read the description below to understand how i works and what it is and what it isn’t. (Better spend that extra time than do a mistake and lose data because you didn’t realize how LFM works…)


LittleFM is an alternative file manager for LSDj that lets you store 8 “projects” (savs) in flash memory. These can be saved and loaded just like you would save or load a sav file from/to your computer.

In the long run, it’s also supposed to become a full drop-in replacement for LSDj’s own file manager, allowing you to load, save and delete files within a sav. To this end, LittleFM is not yet feature complete. Version 0.4 can only load files, not save or delete them. However, the load function is much faster, slightly more glitch resistant, and warns you when you’re trying to load a file that is corrupted. (Rather than loading forever or crashing as LSDj’s manager might do.)


LittleFM comes in the form of an IPS patch. To install it, you need a copy of the LSDj 4.0.5 ROM and an IPS patcher. WinIPS seems to work well enough on Windows. If you’re on some other OS, or want to try a different patching software, check out Zophar’s Domain. Simply use the LSDj 4.0.5 ROM as the source file and the IPS patch as the patch. This will output a patched ROM that you can use.


LittleFM can currently only save savs to the flash of cartridges based on the GB Flasher design, such as BleepBloop and SmartBoy cartridges.

This feature does not work on EMS cartridges, either the old blue ones or the newer EMS USB cartidges, because they don’t allow the Gameboy program to write to flash.

Other, more exotic cartridges might or might not work. If you have any other cartridge, or technical information on how to write to the flash of the white Nintendo Power cartridge, please contact me.

However, it’s still fully possible to prepare a ROM image that contains a number of pre-made savs and load those as needed, since that doesn’t require you to write to flash from the Gameboy.

Backing up

  • If you’ve stored songs in flash and want to back them up to your computer, make sure to choose 2048 kB as the size in the transfer program, or your song data won’t be backed up.
  • Clicking erase in the transfer program will (obviously) erase any files saved in flash. Think before you click!

Gameboy functionality

Flash operations

  • Provides backup to flash and increased storage.
  • load/save project loads/saves the FULL sav, including all the files
    files to one of 8 flash banks. However, it will not confirm that
    you’re saving to the right one, so be careful not to ovewrite a
    different project!
  • Flash/load song does not work yet.
  • Clear project: Obvious what it does, eh? ;) (Note: No need to
    manually clear a project before saving.)
  • Load song from flash does not work. Thus, you can’t load an
    individual song from flash yet.

RAM operations

  • Load song does exactly the same thing as the regular LSDj file
    manager, but faster and more securely. If you get an error message,
    there’s a small chance that there’s a bug in the program, but a
    greater chance that the sav is actually corrupt. Report what the error
    said to me and please attach the sav for analysis. (LFM will display
    an error where the regular manager would load forever or do something
    else strange.)
  • Save song. No workie in this version! :(
  • Del song. No workie in this version! :(
  • You also can’t create a new empty song with LFM. Use the regular
    manager for that.

General usage

  • The menu system should be self-explanatory for LSDj users.
  • You can press B at the main menu to exit to LSDj.
  • In LSDj you can also press a Tetris/Zelda style sel+start+B+A to get back to LFM. It works even if LSDj is hung up because of extreme table/vibrato/kit pressure. (Might be safer than turning the power of the Gameboy off.)
  • However keep in mind that this function will not do anything “special” about LSDj’s key handling. In other words it’s fully possible to hit B+A first and accidentally a chain or note. Something to look out for if you’re wondering where that chain went.

Planned features

  • Make LFM a feature complete replacement for LSDj’s file manager.
  • Various usability improvements.
  • Song trading over link cable.
  • Possibly even kit trading over link cable!
  • A “chkdsk” option that lets you verify that your songs are 100% free from corruption.
  • A super-duper patcher that program for computers, that lets you patch any LSDj version with LittleFM as well as do file management better than LSD-manager.

But, in all honesty, programming super-fast “spaghetti” assembly language takes time and effort. If you’ve fallen in love with LittleFM and you want to see the it evolve, you can encourage me by donating a dollar or three so I can keep my caffeine level high at all times. All donations of $2 or higher will be credited here with a name and link of your choice. Or, if you’d feel like it, buy me Flickr Pro. Or just say thanks and reports any bugs you encounter. :)


February 17, 2010 Herr Professor Peter Lewis Swimm 75 SEK
November 9, 2010 Battle Lava 42 SEK (Meaning of life, yay!)
November 26, 2010 Rei Yano 70 SEK

Jason Scott - An Internet historian with a taste for the obscure

October 6th, 2010

So this is the kind of stuff that keeps me up at night when I should be sleeping.

Meet Jason Scott - the guy who is literally an Internet historian. Apparently, what started out as a hobby, as a result of his own involvement with the BBS world, later became a full-time job as he managed to raise $25,000 on Kickstarter. The calling of his life is basically to collect as much (preferably obscure) information as he can for the future, both digital and physical. Text files. Cracktros. Shareware CDs. Floppy disks. Old issues of 2600 magazine with hardware projects that that came with the magazine at the time. He know has a container full of old goods, which, as he puts it, he doesn’t own, but is only preserving for the future.

So this post will just link to his sites. I’ll leave it to you, the reader, to explore his works. I actually haven’t explored most of his sites yet, so this post is in part a reminder to myself.

I only found out about Jason today when watching his Defcon 18 presentation (part 1 2 3 4) called “You’re stealing it wrong - 30 years of inter-pirate battles”. It’s the story of how the piracy scene has evolved over the years, all the way from when IBM sold hardware and software as a bundle, to the days of Apple ][ cracking, BBSs sharing scanned images from Playboy, all the way to the internal politics of today’s scene. It contains equal parts nostalgia and humor. (BTW, the videos were uploaded by ChRiStIaAn008 who’s uploading talks from various security conferences. Highly recommended despite the ghawd-awful background image.)

These sites of his are listed at the end of his presentation:
bbsdocumentary.com is the website of Jason’s documentary about the BBS world.
textfiles.com contains various text files from BBSs and other places, sorted in 40 categories. Puts my own Gameboy file archive, that I’ve hardly started working on, to shame.
cd.textfiles.com contains a shit tonne of shareware CDs from the 90s for those may be interested.
getlamp.com is not a site where you can get a LAMP stack; rather, the name alludes to old text based games such as Zork, and Get Lamp is the name of a documentary about those. (Side note: For my Swedish reader, I recommend the classic text-based game Stugan!)
Archiveteam is a site dedicated to mirroring content.
Geociti.es is an effort to mirror as much as possible of Geocities after it was shut down.
Sockington is one of Jason’s two cats.
Welcome to Internet! A hearty welcome (cordial reception) , in case this is your first day online.

Quoting Martin Korth: “And you? Given the ability of free choice, full control over your mind and body, where would you click?”