¡Arriba las Manos! (Hands up!) music disk for the c64

A few weeks ago, we, the Pungas de Villa Martelli, released “¡Arriba las Manos!”, a music disk for the Commodore 64. It includes ten 8-bit songs, an animated hi-res graphic, an easter-egg, and you can control it with a joystick, or a mouse or the keyboard! Not even Apple puts so much love in the UX like us (the future is the c64!) ...

May 30, 2016 · 1 min · ricardoquesada

UniJoystiCle v0.2 coming soon

UniJoystiCle v0.2 coming soon. Changes in v0.2: [NEW] - ESP8266 device: supports 2 joysticks (uses three 4066 ICs instead of two [NEW] - ESP8266 firmware uses AP mode by default. Uses SSID “unijosyticle” + last 2 bytes of mac address [NEW] - iOS Client: Can be configured to use either joystick port [NEW] - iOS Client: Auto-discover ESP8266 firmware using mDNS [NEW] - iOS Client: UniJoystiCle mode also supports up, down and fire (jump) [FIX] - Name: Renamed project from Uni-Joysti-Cle to UniJoystiCle (easier to search, shorter to type) [FIX] - ESP8266 device: replaced NodeMCU LoLin with NodeMCU Amica [FIX] - Sophisticated Glue Material: Uses gaffer tape, instead of duct tape ...

April 23, 2016 · 1 min · ricardoquesada

Announcing the Uni-Joysti-Cle™

The Uni-Joysti-Cle™: The first and only solution to play Commodore 64 video games with your unicycle. Unique immersive experience, much better than VR. It consists of five beautifully designed parts: The _Uni Games_video game for the Commodore 64 The Uni-Joysti-Cle™ WiFi receiver, and its firmware The Uni-Joysti-Cle™ smartphone application A unicycle Sophisticated glue material Find all the information about this revolutionary device here: unijoysticle ...

April 6, 2016 · 1 min · ricardoquesada

The Uni Games - Part II. Reboot

A reboot was needed. I rewrote most of the code. The game is no longer called “The Muni Race”. Instead it is called “The Uni Games” since it will have more than one event (think of “Summer Games” but for unicycles. UNICON basically). The game will have a more-retro look and feel than before. It will only use PETSCII chars, plus sprites. No redefined characters, no bitmaps. Pure PETSCII. Pure retro effects. ...

March 27, 2016 · 1 min · ricardoquesada

Disassembling 6502 code with Radare - Part II

Let’s crack a simple game. If you are not familiar with Radare, read Part I first. Creating and opening a VICE Snapshot file Let’s crack BC’s Quest For Tires since its copy-protection is easy to bypass. Unzip this file: http://tapes.c64.no/tapes/BCsQuestForTires.zip Open the tap file with VICE (the most popular Commodore 64 emulator), and.. …the game has some kind of copy-protection. If we enter invalid codes, we won’t be able to play the game. Since Radare supports VICE Snapshot File format, we can save an snapshot of the game, and analyze it with Radare. In VICE, go to the menu, Snapshot -> Save Snapshot Image… If we select “Save ROMs”, then the BASIC ROM and the KERNAL ROM will be saved inside the Snapshot file, and will be included as Radare sections. Radare VICE Snapshot File (VSF) support lets us inspect: The 64k RAM of the computer at the moment the snapshot was saved The BASIC and KERNAL ROMs in case they were saved. To open a VSF file, just pass the VSF file as the first argument: $ [ 0 r x 2 0 0 b 0 c 0 _ 5 c 6 o 8 p 9 y ] _ > p r o t e c t i o n _ s c r e e n . v s f 0x00005689 is the PC (program counter) at the moment the snapshot was saved.

December 10, 2015 · 8 min · ricardoquesada

Cutting edge coding & debugging techniques during my early days

Cutting edge coding & debugging techniques:

December 5, 2015 · 1 min · ricardoquesada

Constelación Commodore

El amigo @SirArthur72 tiene un podcast de Commodore llamado Constelación Commodore. Es un podcast lleno de información de aquella época. En particular la sección “Bunkerpedia” es para escucharla varias veces, con toda la historia de Commodore, desde sus primeros inicios, hasta el final, lleno de detalles. Una particularidad del podcast, es que cada episodio dura más de 5 horas. En el último episodio (#8), se toca el tema de la C128, y aparezco yo en el podcast contando mis aventuras que tuve con esta linda computadora durante mi juventud. Aparezco alrededor de la hora 4:12 del podcast. ...

November 25, 2015 · 1 min · ricardoquesada

Disassembling 6502 code with Radare - Part I

Radare is an open source portable reversing framework that can do many things, among those things it can disassemble 6502 code. Download and install radare First, download radare from github. You need a recent version in order to disassemble 6502 code. And then install it by running sys/install.sh (or sys/user.sh for local installation): $ $ $ g c i d / t s r y c a s l d / o a i n r n e e s 2 t h a t l t l p . s s : h / / g i t h u b . c o m / r a d a r e / r a d a r e 2 . g i t Loading a c64 .prg Radare has many command line options. But in order to load 6502 programs we need just two: -a6502 to specify the 6502 architecture. -mMemoryAddress to map the file to a certain memory address. Use 2047 for “normal” programs. Usually they start at $0801 (2049), but we have to subtract 2 from the .prg header. Example: $ r 2 - a 6 5 0 2 - m 2 0 4 7 m y g a m e . p r g Disassembling Radare doesn’t have a GUI, like IDA. Instead is has a powerful command line interface (think of GDB). Example: $ [ 0 r x 2 0 0 - 0 a 0 6 0 5 7 0 f 2 f ] - > m 2 0 4 7 m u s i c p l a y e r . p r g And 0x7ff (2047) is the seek address, meaning that all commands will use that address as the base address. Let’s print the first 32 bytes. ( px = print hexa): [ o 0 0 0 f x x x f 0 0 0 s 7 8 0 e f 0 0 t f f 0 0 7 0 0 f 0 1 d f 0 d ] 1 8 c > 0 a p 2 b 2 x 0 1 3 8 2 3 2 3 a 4 9 0 0 0 5 5 0 9 b 6 e 9 3 d 7 2 4 3 1 8 0 a 3 9 9 6 9 3 f A 1 0 0 2 B 0 0 0 c C 0 8 0 d D 0 0 7 f E 8 7 a c F d e 0 1 2 3 . 4 9 5 . 6 . 7 2 8 0 9 6 A 1 B . C . D . E x F . The “2061” that we see, is part of the BASIC “SYS 2061” command that usually appears in all C64 programs. So, let’s disassemble the first 12 instructions from 2061. ( pd = print disassemble): [ 0 x 0 0 0 0 0 ┌ │ │ └ 7 ┌ │ │ ─ │ │ │ └ f ─ ─ ─ f > < < ] > 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x x x x p 0 0 0 0 0 0 0 0 0 0 0 0 d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 @ 0 0 1 1 1 1 1 1 1 2 2 2 d e 1 3 5 8 b c e 1 4 5 2 0 6 1 7 a a a b 9 c d c c c d 8 d 2 0 9 9 8 0 e e a 0 0 1 0 d f f 1 1 e d 2 0 4 0 7 7 a e d 1 2 0 0 c a 0 8 8 s l l l l s i b d d d b e d d d d t n n e e e n i a x y a a y e c c x e 0 # # 0 0 0 0 0 0 x 0 0 x x x x x x d x x 1 2 f 0 0 e c 1 0 a 0 7 8 8 e 0 2 0 d f 1 1 d 4 0 7 a , , y y In case we don’t know the meaning of a certain opcode, we can print its description with ?d: [ s 0 e x t 0 0 i 0 n 0 t 0 e 8 r 1 r 5 u ] p > t ? d d i s s a e b i l e s t a t u s Or if we want to print the description in every disassembled line, we can do: e a s m . d e s c r i b e = t r u e And then disassemble again: [ ┌ │ │ └ 0 ─ ─ x > < 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x x x x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 0 0 1 1 1 1 1 1 1 2 2 2 0 d e 1 3 5 8 b c e 1 4 5 e ] > 7 a a a b 9 c d c c c d 8 d 2 0 9 9 8 0 e e a 0 p 0 1 0 d f f 1 1 e d d 2 0 4 0 7 7 a e d 1 2 0 0 1 c a 0 8 8 2 @ 2 0 s l l l l s i b d d d b 6 e d d d d t n n e e e n 1 i a x y a a y e c c x e 0 # # 0 0 0 0 0 0 x 0 0 x x x x x x d x x 1 2 f 0 0 e c 1 0 a 0 7 8 8 e 0 2 0 d f 1 1 d 4 0 7 a , , y y ; ; ; ; ; ; ; ; ; ; ; ; s l l l l s i b d d d b e o o o o t n r e e e r t a a a a o c a c c c a d d d d r r n r r r n i e e c e e e c n a i i a m h m m m h t c n n c a e e e e e c d d c c n o n n n o r u e e u c t n t t t n r m x x m u u u u m i r m m i r p l x y l u n e e e n e t a a l d s m m d s t w w t a e u o o e u d o i i o t x l r r x l i r t t r o t y y t s h h r y x a w w n b b n b i m m i i b o y y b o l t e e t n y t y t e h m m h o o o o m o z n n o z s m r r m e n e e e n e t e y y e m e r e r a m m o o o t o o r u r r y s y y For more disassembling options just type p?

November 19, 2015 · 5 min · ricardoquesada

Coding for the Commodore 64: What changed in the last 25 years

I stopped developing for the Commodore 64 in 1993. Since then a lot has happened: Back in late 80’s ~beginning of 90’s I did all my coding using the Commodore 128’sMONITOR command That means no text editor, no compiler, no linker. Similar to the debug.com command that used to be in DOS. Since I didn’t use a text editor, I put all my comments in a notepad (I still have that notepad somewhere) I used the Commodore 128’s SPRDEF as the Sprite editor. I used my own character editor called vchar… (later I created a similar one for DOS and Linux) I did some basic graphics using a graphics editor… but I can’t remember which one. I didn’t know any other C64 developer, so I did everything kind of isolated My sources of information wereCommodore Magazine, Tu Micro Commodore and some books. I reversed engineer some games / demos in order to learn tricks. I had a 300 bps modem but I didn’t find any good C64 BBS. I did some cracks for a local company that was “publishing” (AKA pirating) games. In exchange they were providing me games. To put things into perspective it was impossible (I mean IMPOSSIBLE) to get original games in Argentina back then. I knew some basic tricks like how to use more than 8 sprites, how to open the top and bottom borders, some raster effects… but nothing very advanced. I loaded all my programs / games using the disk drive, which was much faster than the datasette, but still very slow I had a fast-loader cartridge to accelerate the disk drive loading times. It also had a rudimentary MONITOR. Although Argentina was using the PAL-N standard I had a NTSC Commodore 128. In Argentina we also had the Argentinean Commodore, called Drean Commodore, which was a PAL-N machine assembled in Argentina And now, in 2015 You have different cross-assemblers like: ACME KickAssembler a more And native assemblers like (the native assemblers were available back then, I simply didn’t know of their existence): Turbo Assembler Many editors like: CharPad (a level editor using characters for Windows. Works with Wine) SpritePad (a sprite editor for Windows. Works with Wine) HermIRES(a PC/Mac/Linux graphics editor) GoatTracker (a music tracker) You even have complete IDEs like: Relaunch64 C64Studio C64 KickAss IDE Cross-crunchers(compressors) like: Exomizer All the existing C64 tricks are documented here (if it is not there, then it doesn’t exist): Codebase64: How to open the side borders Sprite multiplexers 3d effects and much much more Many tutorials. A good place to start is here: Dustlayer All books and magazines from the old days were scanned and are available here: Magazines Books Active community: Lemon64 (English) Commodore Mania (Spanish) An active demo scene: csdb.dk New games… yes people are still releasing new games for the C64, and selling them! RGCD Even recent popular games were ported ( demakes) to the C64: Canabalt( C64nabalt) Super Crate Box(Super Bread Box) Super Hexagon(Micro Hexagon) Cartridges that support loading games from SD memory cards… no more disk drives or datasettes. These cartridges act as fast loaders among other things: Turbo Chamaleon Ultimate 1541 Great Emulators (they emulate everything, including VIC bugs, undocumented opcodes, etc.): VICE (Win/Mac/Linux) CCS64 (Win only) Multi system TVs… (one TV both for PAL and NTSC machines) 220 electronics And probably many other things that I’m forgetting As a reminder, the Commodore 64 was released in 1982!. It is impressive all the things that can be done in a 30+ years old computer! ...

February 2, 2015 · 4 min · ricardoquesada