Arkiv för september, 2013

How to fix that Linux only see joystick movement in one direction

Posted in allmänt grinande with tags , , , on 2013-09-08 by Kristian

Some joysticks, notably the Retro-bit Atari adapter, do not work properly with (recent) versions of Linux, only one direction on each axis is detected.

Kernel debugging reveals that the events are sent from the USB device properly, and that they are filtered away somewhere on the way. The reason for this is that the joysticks send out of bounds values to the operating system, and that Linux, being standards compliant, remove the out of bounds events.

There is a driver for the retrobit adapter, https://github.com/robmcmullen/hid-atari-retrobit, unfortunately, that did not work for me. I also have other joysticks with the same problem and had figured out a solution earlier.

Step 1 is to build a new kernel. Make sure that the HID subsystem is built as a module, that simplifies the testing a lot.

Step 2, find the ”hid-input.c” file.

Locate this comment:


/*
* Ignore out-of-range values as per HID specification,
* section 5.10 and 6.2.25
*/

Immediately below that comment (or a very similar comment), you will find an ”if” clause. Replace the code between thecurly brackets with


if(value < logical_minimum)
value=field->logical_minimum;
else
value= field->logical_maximum;

The result will be similar (but depending on the kernel version not always identical) to this:


if ((field->flags & HID_MAIN_ITEM_VARIABLE) &&
(value < field->logical_minimum ||
value > field->logical_maximum)) {
// dbg_hid("Ignoring out-of-range value %x\n", value);
// return;

if(value < logical_minimum)
value=field->logical_minimum;
else
value= field->logical_maximum;

}

Rebuild the kernel, install it and the new modules, reboot, done.

C64 revival

Posted in allmänt grinande on 2013-09-07 by Kristian

En av de saker jag ofta har ångrat att jag gjorde mig av med är min C128, men just då så fanns det ingen ekonomisk möjlighet att skaffa en ny dator utan att fasa ut den gamla.

Som tur är så finns det utmärkta C64/C128-emulatorer sedan ganska många år tillbaks, och de går att kompilera och köra på enkortsdatorer typ Raspberry Pi, med begränsningen att man behöver stänga av CRT-scanlinje-emuleringen och använda SDL istället för X för att få tillräcklig prestanda.

Det finns även USB-adapters för tangentbord och joysticks, och man kan handla c64-tangentbord på ebay… hmm…

20130905_130201

 

Planen är alltså att bygga en C64 i trä, stoppa in ett riktigt tangentbord, en RPI, en styrenhet för tangentbordet, och sedan ha en maskin som är funktionellt ekvivalent med en riktig C64 fast med moderna anslutningar och nätverksdisk via Wi-Fi.

Brödburk eller version 2?

Det första man behöver bestämma sig för är om man skall bygga en brödburk eller en platt C64. Skillnaden ser man på bilderna nedan.

C64C, from Wikimedia commons, CC-BY-SA 3.0, user MOS6502

C64C, from Wikimedia commons, CC-BY-SA 3.0, user MOS6502

 

C64 breadbox, from Wikimedia, picture in public domain, user Evan-Amos

C64 breadbox, from Wikimedia, picture in public domain, user Evan-Amos

Den ”platta” är helt klart snyggare, men breadboxen är antagligen lättare att göra och bör framför allt kunna ge mer plats att stoppa in hårdvara i, det kommer att behövas plats för en wifi-dongle, en usb-hub, adapterkortet till tangentbordet, och en raspberry. Alltså är målet en breadbox. Fördelen med en sådan är dessutom att jag har kvar min VIC-20 som går att använda som mall.

 

 

Arkadspel

Posted in nörderier with tags , , on 2013-09-07 by Kristian

Förr, på den tiden, så gick man till Liseberg max en gång om året och om man hade riktigt mycket tur så fick man spela galoppbanan, whac-a-mole, och kanske något arkadspel i spelhuset.

Starkast minne har jag av defender, som var flångsvårt, spy hunter  (som finns i en förvånansvärt bra port till C64), samt det cocktail-kabinett med Space Invaders (eller möjligen Galaxian, jag har ett svagt minne av färger…) som fanns på hotellet vi bodde på i London 1980-ish.

Eftersom jag har mindre förstånd än snickerikunskaper så bestämde jag mig för några månader sedan att det var en bra plan att bygga ett eget kabinett. Efter CJ hade skrivit om något åt det hållet på facebook så var det kört.

Kravspecen blev efter ett tag:

  • Plattskärm, dels för alla tjockskärmar är återvunna, dels för att minimera storlek och värme.
  • Kontrollpanel liknande neo-geo, eftersom det är en plattform som stödjer flera olika spel. Hittade sedan en variant på facebook med två extraknappar.
  • Plywood, inte MDF, eftersom man kan båtlacka eller betsa plywood och få den att se okej ut, MDF måste i princip lackas, och det är jag ännu sämre på än att snickra.
  • Skall se ut som en riktig maskin (förutom målningen…), vad är annars poängen?
  • Tunnare än en riktig för att få plats i hörnet, se ”plattskärm” ovan…

Letar man på internet så finns det precis som med allt annat konstigt (n+1) sites som debatterar rätt sätt att bygga på, och efter ganska mycket letande slutade det med ”Project Mame” som bas till kabinettet. Det är gjort för plattskärm och är därmed tillräckligt smalt för att få plats på 2 skivor plywood till skillnad mot 3 som hade krävts för ett tjockare kabinett.
Materiallista:

  • 2 skivor byggplywood – 285 kr styck på Beijer = 570 kr
    (rätt ful, men man får leta lite så man får skivor som ser hyfsat okej ut. Är man bättre på snickrande än jag så kan man köpa finplywood istället)
  • Joysticks, knappar, ipac ve och coin mech från arcadeshop, ca 1100:-, har dock inte fått pinnen till joystick nummer två ännu så jag är lite negativt inställd. Joy nr 1 kommer att bli en C64-joystick istället.
  • Roterbar och tiltbar monitorhållare – 249 kr från netonnet
  • Pluggningskit (borr, mothåll, riktmojänger, plugg), 24:- på Clas Olson, för att kunna bygga en låda
  • Grenuttag 6 delar, Jula, 39:-
  • Expansionsbeslag till låda, ur arkivet 0:-
  • Insexskruv 4 mm + mutter + brickor, att montera joysticks med, 60:- biltema
  • Laptop – ur arkivet, 0:-
  • USB-hub, ur arkivet, 0:-
  • Tangentbord, kablar, etc, ur arkivet 0:-
  • Monitor 17″ 4:3, donerad av släkten efter fråga på facebook, 0:-
  • Högtalare samt sub-bas, ur arkivet 0:-
  • Båtlack, 2 x 0.75 liter, biltema. 200:-
  • Lacknafta, biltema, 30:-
  • Hammarlack, svart, biltema, 80:-, att dels måla bezel till monitor med, dels måla kanterna med så det ser ut som om de har T-moulding.
  • Diverse skruvar, lim, etc, ur arkivet, 0:-
  • Gångjärn, Clas Olson, 59:-
  • Skruv till gångjärn, ur arkivet, 0:-
  • Skruvöglor, att hålla fast högtalarna med, ur arkivet, 0:-
  • Nintendo till VGA-adapter, console.se, 299:-
  • Nintendosensorbar (batteridriven kopia), 149:-, Kjell
  • Litet relä för anslutning av coin mech, 50:-
    • Kommer ej ansluta coin mech, åtminstone inte om jag inte skaffar en riktig dörr, det blev en knapp på kontrollpanelen för ”mynt” istället.
  • Flatstiftshylsor, 40:- fråm Kjell +  50:- från Biltema
  • USB-genomföring, 239:-, Conrad
  • Sony-Ericssonladdare, modell Ä, att driva sensor bar med, ur arkivet, 0:-
  • USB-pinne, 32 Gb, att ha konfigurationer etc på, Kjell, 200:-
  • Penslar, clas ohlson, 108:-
  • lackslippapper, clas ohlson, 43:-
  • Plastskivor, biltema, ca 370:-
  • Joysticks, analoga, ca 1100:-, som ersättare för de digitala joystickarna som jag bara fick 1.5 levererade av från arcadeshop.de

Totalkostnad: 4999 kronor för materialet.

Bygge

Snickerier

När jag började bygga gjorde jag en ganska drastisk ändring mot project mame, istället för att skruva skivorna mot läkt så valde jag att fräsa ut spår i dem så att man kan sätta i dem i varandra istället.

DSC_3242

Det blev ett betydligt bättre resultat än jag trodde från början, kanterna göms och det blir tätt och fint. Jag använde även en kantfräs för att runda av kanterna på plywooden. Fräsen användes också för att få bitarna exakt likadana, man spänner fast mallen under en grovutsågad sida och fräser den rak med en fräs med kullager på.

DSC_3239Allt gick över förväntan bra att bygga, bytte min 19″ widescreenskärm mot en 17″, som gav samma höjd men bättre formfaktor.

_home_foto_20130608_006__DSC_3264

Sen fick jag för mig att jag skulle göra en låda att ha laptopen i. Detta visade sig vara något av ett mörker, man kan nämligen inte borra in plugg så himla bra i plywoodkanter. Det löste sig dock med lite laminatlim som jag hade över. I efterhand hade en halvhög låda räckt, så hade plexit för kontrollpanelen kunnat gå ner över den övre delen av lådan. Får se om jag orkar ändra det, plexi är ett elände att såga i.

Kontrollpanel

Kontrollpanelen är byggt med två stycken Ultrastik 360 som har knapparna anslutna direkt till sig, samt en ipac ve som är ansvarig för startknapparna, paus, och coin in.

Ett ännu ej löst problem är att min IPAC VE inte går att programmera som utlovat med linuxprogramvaran, de har nämligen ändrat hårdvara i dem efter nyår. Kasst, men de verkar jobba på problemet, eller nåt. Delvis löst genom att de nya analogjoystickarna har ”button in”, så knapparna, förutom coin, start, paus, sitter direkt på joysticks.

Plexidetaljer (Bezel, Marquee, Kontrollpanelsskydd)

Ok, rent strikt är det inte plexiglas utan nån mysko plastskiva från biltema, men ändå. Plasten bearbetas med ”träverktyg”, dvs hålsåg och sticksåg. Det är viktigt att inte köra för snabbt för då smälter den. Till viss del minimeras effekten av detta om man har skyddsfilmen kvar på plexin (vilket är en väldigt bra idé från början pga repor), då kan man dra bort överflödig smält plast lätt. Hålsågningen vattenkyldes. Att ta hål för knapparna var den enskilt mest ansträngande delen av jobbet.

Bezel (monitorram) maskerades med maskeringstejp där monitorn skulle synas, sedan fick den ett tjockt lager svart hammarlack på baksidan. Skyddsplasten på framsidan satt kvar när den målades. Resultatet blev en djupsvart lätt spegelaktig effekt som jag tyckte var väldigt bra.

wpid-20130907_111259.jpg

Kvar att göra

Det jag fortfarande inte är riktigt nöjd med är frontenden, lutar mot att bygga en som visar ”top 9” av de spel man spelar som förstasida, och som har möjlighet att välja annat om man vill.

Lackningen får dessutom vänta till nästa år, det är för dåligt väder ute. Både trädetaljerna och undersidan av plasten över kontrollpanelen skall lackas (kontrollpanelen skall vara svart). Funderar även på att göra om lådan och böja plexin över kanten så den täcker överdelen och den utdragbara delen är lägre. Plastglaset skulle kunna bytas mot glas också, det är svårt att få rent utan att bli flammigt.

%d bloggare gillar detta: