Game Boy Advance – MaxMod Frame Interrupt

gameboy_advance_maxmodAls ich mich vor ein paar Monaten etwas mit der Sound-Hardware und dessen Programmierung von einem Game Boy Advance beschäftigt habe, habe ich verschiedene Bibliotheken bzw. fertige Sound-Player gefunden. Im devkitPro Ordner befinden sich insgesamt 4 Beispiele, die man kompilieren kann. Im Februrar bzw. März hatte ich mir BoyScout angeschaut. Ein Tracker mit 4 Kanälen. Diese Software habe ich dann benutzt, um die Musik (wird man wohl so bezeichnen können!) für meine MSP430 Demo “A Dead Pixel” zu erstellen. Die Tracker Software habe ich dann speziell für den MSP430 geschrieben und mich auf BoyScout dabei gestützt. Aber das ist eine andere Geschichte. Mit MaxMod können mod-Files abgespielt werden. In dem vorhandenen MaxMod Beispiel habe ich ein paar Modifikationen vorgenommen. Normalerweise wird die Musik in der Hauptschleife nach einem Frame aktualisiert. Die Funktion zum aktualisieren muss also immer manuell aufgerufen werden. Dies kann natürlich zu Problemen in der Wiedergabe führen, besonders wenn in der Schleife viele Berechnungen durchgeführt werden und somit der genaue Zeitpunkt des Funktionsaufrufs nicht mehr eingehalten werden kann. Hier bietet MaxMod aber eine Problemlösung. Ein Frame-Update kann per Interrupt durchgeführt werden. Somit wird die Funktion bzw. ISR immer nach einem Frame aufgerufen. Der abgeänderte Beispiel-Code:

Continue reading

Zitate aus dem Internet – Oh Ppl Pls #010

“At first i was like “Who cares?” Then i was all “Holy sweet sonofabitch Jesus. Stalking the neighbor girl just got a whole lot easier.”

“I’ve got something else that’s 19 inches. ( ͡° ͜ʖ ͡°) (It’s a computer monitor)”

“What the fuck is that shredder made out of? Nokia phones?”

“OK but a 40 foot slide is a bitch to clean out when the first kid shits in it”

“This is the whitest videos I’ve ever seen. And I’ve watched a video of white paint drying.”

Eagle 3D PCB rendern

eagle_pcb_3d_top_gold_with_maskVor einigen Tagen habe ich nach einer einfachen, schnellen und kostenlosen Möglichkeit gesucht, um eine Platine (PCB) aus Eagle in 3D zu rendern. Im Internet finden sich natürlich verschiedene Möglichkeiten. In Eagle kann direkt per IDF-to-3D ein PCB in 3D gerendet werden. Dazu wird allerdings eine Lizenz benötigt, und diese ist nicht ganz billig. Eine weitere Möglichkeit bietet z.B. SketchUp. Wahrscheinlich gibt es noch mehr Möglichkeiten, die ich auf die schnelle nicht gefunden habe. Die zurzeit für mich einfachste Methode bietet PCB-Pool an. Hier kann beim Bestellprozess die .brd-Datei hoch geladen werden und es wird direkt ein kleines Vorschaubild in 3D von der Platine erstellt. Ein hochauflösendes Bild kann per E-Mail angefordert werden. Dies dauert meistens nur ein paar Minuten, da man in eine Warteschleife gesetzt wird (kein Realtime-Rendering), ist aber vollkommen akzeptabel. Weiterhin kann auch direkt ein 3D-Modell angefordert werden. Hier ein paar Screenshots von einem Eagle 3D PCB, gerendert von PCB-Pool:

Continue reading

Eagle Leiterbahnlänge per ULP messen

eagle_pcb_trace_length_00In manchen Fällen kann es ein großer Vorteil sein, wenn man dauerhaft die Leiterbahnlänge von bestimmten Leiterbahnen im Auge behalten kann. Solche Fälle treten oft im Bereich von Signalleitungen auf, die im Hochfrequenzbereich arbeiten. Bei diesen Leitungen darf eine bestimmte Längendifferenz nicht überschritten werden. Dies ist zum Beispiel der Fall bei USB 2.0 (High-Speed = 480Mbit/s bzw. 480MHz), USB 3.0, PCIe und noch weiteren Schnittstellen. In manchen Fällen muss ein Längenausgleich der Signalleitungen bzw. Leiterbahnen statt finden. Eagle bietet die Möglichkeit, per ULP (User-Language-Program), die Länge aller Leiterbahnen auf einem PCB automatisch zu ermitteln. Eagle Leiterbahnlänge per ULP:

Continue reading

Game Boy Advance Development – Advance Debugger

game_boy_advanceLetztes Jahr habe ich mich etwas in die Welt der Game Boy Advance bzw. der allgemeinen Game Boy Programmierung eingelesen. Das System ist sehr interessant aufgebaut und es gibt sehr viele Beispiele, Tools und Anleitungen im Internet. Bei dem Programm Advance Debugger handelt es sich um eine sehr schlichte IDE (Entwicklungsumgebung) für die Entwicklung von Game Boy Advance Programmen. Das besondere an dieser IDE, ist eindeutig der Debugger. Hiermit kann man sehr gut seinen Code debuggen, falls man einen Fehler nicht ohne Hilfe erkennt oder um Optimierungen durchzuführen. Weiterhin besitzt die IDE einen eigenen GBA Emulator (sehr praktisch). In diesem Artikel gibt es einen kleinen Einblick und die Einrichtung von Advance Debugger. Wer sich genauer mit der IDE beschäftigen möchte, sollte in die Dokumentation schauen, diese ist sehr gut aufgebaut und geschrieben.

Continue reading

Zitate aus dem Internet – Oh Ppl Pls #009

“Every time they create a foolproof system, the fools will see it as a challenge and try to beat it…”

“id fucking kill you if you started setting up all that shit next to me on a plane.  why cant you fucking listen to music and go to sleep like a normal fucking person you autistic fuck nugget”

“You fucking nailed it so succinctly I had a wordgasm.”

“3310 forever. We shot mine in the back with a CCF rifle and the bullet just lodged in it. The phone still worked.”

“Just like guys & girls going down on areas that we urinate out of. Or those lesser few who dig at that brown star with their tongue.”

“You might want to consider cleaning the dried cum spurts off your mirror before you do a selfie next time.”

“Fun Fact: masturbating when you have allergies relieves a stuffed nose by redirecting blood flow”

“How did his balls fit through those tiny corridors?”

“Dude. That guy straight PCP-ninja’d his way out of there.”

“Bet their drill busted atleast 50 Times and they accidentally killed 20 civilians whilst yelling “HOXTON” as loud ad possible.”

“I see hes testing the dynamic of the current through the usage of the lawn blower to circulate increase amount of oxygen to create a higher combustion.
He might invent the next warp drive to get us to Mars.”

Firefox Sync refresh rate / sync interval

Mit Firefox Sync können Lesezeichen, Add-ons, Tabs, Passwörter, Chronik und Einstellungen über mehrere Rechner synchron gehalten werden. Ich benutze Firefox Sync gerne, um zwischen meinem Hauptrechner und Notebook die Lesezeichen dauerhaft synchron zu halten. Allerdings war mir das Sync Intervall bzw. refresh rate von 10min etwas zu niedrig. Diesen Wert kann man leicht verändern:

  1. In die Adressleiste “about:config” eingeben und Enter betätigen
  2. Warnhinweis bestätigen “Ich werde vorsichtig sein, versrprochen!
  3. In die Suchleiste “services.sync.syncInterval” eingeben
  4. Nun kann der Wert vom Einstellungsnamen geändert werden (siehe “Wert”). Die Zeit wird in Millisekunden angegeben. 600000ms=600s bzw. 600s/60=10min. Um den Wert z.B. auf 5min zu ändern: 5*60*1000ms=300000ms.

Revision 2015 (03.04 – 06.04.2015) – Pics

2015-04-29 01.28.04Ein paar Bilder von Revision 2015 – 03.04 bis 06.04.2015 in Saarbrücken – eine der größten Demopartys überhaupt (Teilnehmer >800). Ich konnte mit meiner MSP430 Demo “A Dead Pixel” den 3. Platz in der Wild Compo belegen. Damit habe ich natürlich absolut nicht gerechnet und war ordentlich pwned, da es meine erste Demoparty war. Es wurden insgesamt 14 Einträge in der Wild Compo gezeigt.

Die Platzierungen:

Continue reading

MSP430 Sound und Musik erzeugen (Tracker)

msp430_music_trackerAnfang letzten Monat habe ich mir mal ein paar Gedanken gemacht zu dem Thema: Sound, Musik und Töne auf dem MSP430 generieren. Da es in diesem Bereich ziemlich viele verschiedene Möglichkeiten gibt, Musik zu erzeugen, habe ich ungefähr eine ganze Woche für das folgende Sound-Modul gebraucht. Der Algorithmus sollte so klein wie möglich bleiben und natürlich sollte die Musik im Hintergrund automatisch abgespielt werden, ohne manuell eine Funktion aufrufen zu müssen. Das bedeutet also: Ein Interrupt muss dafür sorgen, dass die Noten automatisch abgespielt werden. Weiterhin sollte es so einfach wie möglich aufgebaut werden. Also habe ich mich dazu entschlossen, Töne per PWM (Pulsweitenmodulation) zu erzeugen. So wird es auch beim Game Boy Advance realisiert (als grobes Beispiel). Als Grundlage habe ich den typischen Tracker-Stil (auch Rastersequenzer), benutzt bzw. habe dies als Basis genommen. Die Code-Größe bleibt somit ziemlich klein. Zum Einsatz kommt ein MSP430G2553 (wie so oft in letzter Zeit) der zwei Timer besitzt.

Continue reading