B-em 2.2.2kk on julkaistu

Olen todella väsynyt Intelin kamalan CPU bugin takia, joka siis tuli julkiseksi vasta eilen. Kaikissa Intelin CPU raudoissa on paskamainen vika, joka sallii kernelin muistin lukemisen userspacesta. Ilmeisesti esimerkiksi www-selain voi ajaa ilkeämielistä Javascript-koodia, joka pyörii selaimen muistiavaruudessa käyttöjärjestelmän näkökulmasta, mutta koska prosessorissa on vakava vika, se päästää prosessit lukemaan osia RAM-muistista, joita ei missään nimessä saisi lukea! Esimerkiksi Kerberos-tikettejä pystyy kuulemma varastamaan ja ties mitä muuta, mistä en ole vielä kuullut.

Koska bugi on rautatasolla, kaikki käyttöjärjestelmät kärsivät tästä ongelmasta. ATK-alalle tällaisilla on työllistävä vaikutus. Ei helvetti hei.

Joka tapauksessa koodasin vielä illalla hieman C:llä ja sain valmiiksi Tom Walkerin kirjoittamaan b-em BBC Micro emulaattoriin yhden itselleni hyödyllisen lisäominaisuuden: tuen USB-ohjaimelle. Toisin sanoen, lisäsin ns. joystick-to-keyboard mappausmahdollisuuden, jolloin BBC Micron pelejä voi pelata USB-ohjaimella eikä tarvitse tyytyä näppäimistöön. BBC Micro oli siitä kummallinen 8-bittinen mikrotietokone 1980-luvulla, että siinä ei ollut tukea Atari-tyylisille digitaalisille joystickeille. Analoginen portti kyllä oli, mutta se vaati harvinaiset erikoisjoystickit, joita ei ollut juuri kenelläkään. Siksi esimerkiksi Boulder Dash on vain näppäimistöohjauksella, joka on kaameaa!

Miten mappaus toimii? Hyvin yksinkertaisesti. Allegro 4 peliohjelmointikirjasto lukee Fedora Linux 27:ssä USB-ohjainta ja kääntää sen liikkeet ja napinpainallukset näppäinten painalluksiksi. Ja tarkkaan ottaen nimenomaan emuloidun BBC Micron näppäimistölle. Esimerkiksi Boulder Dash ei siis tiedä mitään USB-ohjaimesta, vaan se luulee saavansa ohjauskomentoja BBC Micron näppäimistöltä. Mutta koska eri peleissä on käytössä eri näppäimet, pitää b-em emulaattorille kertoa ennen pelin käynnistymistä mitä näppäimiä USB-ohjain "painaa". Tätä varten tein mahdollisimman yksinkertaisen konfiguraatiotiedoston, joka on aina pelikohtainen ja se kerrotaan emulaattorille komentoriviparametrina. Oli yllättävän tuskallista selvittää BBC Micron näppäinkoodeja, mutta lopulta sain Boulder Dashin toimimaan vanhalla Logitech Rumblepadilläni:

old logitech rumblepad usb controller
bbc micro boulder dash 01
bbc micro boulder dash 02

Onneksi Tom Walkerin koodi oli niin selkeää, että USB-ohjaintuen lisääminen oli lopulta helppoa. Itse asiassa Walker oli jo alustanut Allegron 4:n joystick alijärjestelmän, sillä ilmeisesti on olemassa jokin BBC Micro malli, jossa on digitaalinen joystick. Mutta siitä ei ole näissä peliasioissa mitään iloa, sillä pelit eivät tue sitä. Siksi tarvittiin pelikäyttöön joystick-to-keyboard mappaus.

B-em 2.2.2kk on saatavissa täältä sekä binäärisenä RPM-pakettina Fedora Linux 27:lle että lähdekoodi-RPM:nä.

Ai niin. Tein joy2key mappaustiedoston myös Blagger pelille, mutta se tuntuu BBC Microlla olevan niin järkyttävän vaikea peli, että en tiedä jaksaako siihen keskittyä. Blagger ei ole helppo kuusnelosellakaan.