Posts filed under 'koodi'

Vammala Party 2020

Vammala Party – jolla on taas kotisivutkin – saapui vääjäämättä, mutta koronatilanteen vuoksi osallistuminen oli tällä kertaa mahdollista myös streamin välityksellä. Entryjä tuli taas tehtyä muutamaan kompoon enemmän ja vähemmän onnistuneesti: hutaistut tuplainvideot menestyivät mainiosti, samoin kuin satunnainen kännykkäkuva, siinä missä omalaatuinen Processing-demo ja teknisesti edistynyt petskari jäivät kompon hännille. Levykkeenheitossa jäin niukasti toiseksi, mikä kertonee ainakin vuodesta toiseen tasaisesta tuloskunnosta 🙂

Tuplaimet:

edit: Päivitin viimevuotisen tuplainentryn paremmalle tuplaimelle: Slapsticksucker

edit2: Demon voi nyt katsoa videonakin.

Add comment July 19th, 2020

Vuosikatsaus 2019

Olipa siinäkin taas vuosi. Päällimmäisenä mieleen ovat jääneet monenlaiset velvoitteet, kahden työn välillä pomppiminen sekä lähes krooniseksi kääntyvä uupumus. Muuttaminen on aina raskasta puuhaa, ja vaikka vaihdoimme vain kämppää samassa talossa, niin melkoinen huhkiminen siihenkin tarvittiin. Ei vuosi toki mitään pelkkää kurjuutta ollut: muksuista on alati iloa – jos sitten lisästressiäkin – ja tutkimuksen saralla monenlaista tuli valmiiksi. Harrastuksille on jäänyt aikaa vaihtelevasti, mutta näistä kaikista tarkemmin sitten omissa kohdissaan.

Töiden paiskintaa

Kahden vuoden puolipäiväinen postdoccini pelikulttuurien tutkimuksen akatemiahankkeessa tuli juuri loppuunsa, joten nyt on palattava täysipäiväisesti opetushommiin Aallossa. En toki ole lopettamassa tutkimuksen tekemistä mihinkään ja pysyn hankkeessa roikkumassa edelleen jollain nimikkeellä, vaikka palkka lakkaakin juoksemasta. Ajan jakaminen kahden työpaikan välillä ei ole ollut mitenkään helppoa, ja opetustehtävien pakottavan luonteen vuoksi tutkimus on usein joutunut väistämään. 2018 oli aika kuiva julkaisujen suhteen, mutta viime vuonna pitkään limbossa roikkuneita papruja tuli pihalle peräti oikein mukavasti. Tässä näitä tärkeimpiä:

Olen laiska kirjoittelemaan mitään yksinäni, joten suurin osa on yhteisjulkaisuja muiden kanssa. Musiikissa julkaistun träkkeripläjäyksen tein kuitenkin ihan peräti itse. Yksin kirjoittamisessa on joitakin selviä etuja, kun muutoksia voi tehdä nopeasti, eikä erilaisia tyylejä tarvi sovitella yhteen. Toisaalta motivaatiota on vaikeampi pitää yllä, kun kaikesta on vastuussa lähinnä itselleen.

Skenepuuhat

Tämä puoli oli jälleen hieman paitsiossa, mutta eipä sentään kokonaan. Suurin osa skenetyksestäni keskittyi jälleen PETSCII-grafiikan ympärille muodossa tai toisessa: sain aikaiseksi jokusen kuvan ja pitkästä aikaa myös entistä ehomman version editoristani. Samoille “markkinoille” tuntuu olevan jo kovasti tunkua, mutta ainakin toistaiseksi näkisin, että omassa kikkaleessani on sujuvin työnkulku, kunhan vaan jaksaa opetella niitä pikanäppäimiä. Ainoa varsinainen koodaamani demo oli Vammala Partyille Processingilla väsätty Machine Make Machine, jota ei tosin sen virallisemmin julkaistu.

Hieman meta-skenetyksen puolelle menee vuoden toinen merkkipaalu, demoskenen hakemus kotimaiseen elävän kulttuuriperinnön luetteloon. Suomen hanke on osa isompaa kokonaisuutta, jonka tavoitteena on saada demoskene UNESCO:n aineettoman kulttuuriperinnön listalle. Oman osuuteni työryhmässä piti alkujaan olla pieni, mutta lopulta päädyin kirjoittamaan lähes koko hakemuksen ja hankkimaan sille tukijatkin. Katsotaan, miten käy!

Shakkivuosi

Innostus ja omat kyvyt ovat aaltoilleet stressitason mukaan, mutta shakkia tuli harjoiteltua ja pelattua jälleen verrattain ahkerasti. Osallistuin laskujeni mukaan ainakin neljään viralliseen kilpailuun ja päälle vielä puistoshakin Helsingin mestaruuskisoihin. Mitään sanottavaa menestystä ei edelleenkään herunut, mutta vahvuuslukuni (Selo) lipsahti sentään 1400:n päälle ja pari kertaa voitin jopa selvästi vahvempia pelaajia. Nurkissa alkaa olla jo sen verran paljon välineistöä, että koitan hillitä enimpiä hankintoja – toki perheeseen silti ilmaantui taas muutamat uudet napit sekä laudat, ja vissiin pari shakkikelloakin.

Tärkeämmässä roolissa olen joka tapauksessa ollut perheen varsinaisen lahjakkuuden huoltajana. Poitsu kuskasi tänä vuonna kotiin peräti kolme SM-mitalia, joista viimeinen oli se pitkään odotettu kulta koululaisten SM-kisoista Espoosta. Lisäksi pikashakista hopeaa keväällä ja nuorten SM:istä pronssia. Näiden ansiosta aukesi samalla mahdollisuus osallistua kansainvälisiin kisoihin, joihin ei vielä kuitenkaan pystytty repeämään aikataulujen takia. Vuosi loppui vielä mukavasti pääkaupunkiseudun tokaluokkalaisten jaettuun koululaismestaruuteen. 2020 tulee olemaan jälleen se vaikeampi joka toinen vuosi, kun samassa sarjassa ovat vastassa vuotta vanhemmat pelaajat.

Koneiden koppulointia ja hieman käyttöäkin

Huomattavan suuri osa vapaa-ajasta on seonnut tietokoneiden ja niiden ohjelmien säätämiseen. Tällä erää ei niinkään retroraudan äärellä kuten yleensä, vaan pikemminkin kohtuullisen tuoreiden PC-koneiden. Satunnaisesta päähänpistosta keväällä alkanut koneprojekti kasvoi lumipallon lailla, ja lopulta kaikki perheen käyttökoneet menivät vaihtoon. Osa virittelystä on ollut hieman tuskallista (ja kallista) kantapään kautta opettelua, mutta suurelta osin ihan hauskaakin, ja tunnen nyt olevani paremmin kartalla muisteista, näyttiksistä, prosuista ja muista nykytekniikan ihmeistä kuin pitkään aikaan.

Käytettyjen bisneskoneiden kunnostus ja myynti nousi 2019 entistä näkyvämmäksi kotimaisen tietoteollisuuden haaraksi, ja samoista markkinoista kamppailevat jo varmaankin kymmenet yrittelijät; katsotaan nyt sitten, alkavatko jossain vaiheessa pudotuspelit. HP:n raatoja meillekin hankittiin edullisuuden ja luotettavuuden nimissä, vaikka näin jälkiviisaana olisin ehkä tehnyt toisin, sillä merkkikoneiden laajennettavuus on vähän niin ja näin.

Alati kehittyvä Proton osoittautui isoksi jutuksi Linux-pelaajalle, kun ennen hankalan tunkkauksen takana olleet tuhannet Windows-pelit tulivat helposti saataville Steamin kautta. Vuoden merkittävimpiä kokemuksia olivat etenkin Inside sekä joskus ammoin hankkimani Tales of Monkey Island -sarja. Samalla vauhdilla rupesin hakkaamaan läpi muitakin Mankeja, eikä jäljellä ole enää kuin Escape, jonka karu 3D-grafiikka ja etenkin kankea ohjaus ovat toistaiseksi onnistuneet viivyttämään maaliin pääsyä.

Leffat: sitä sun tätä

Shakki- ja lännenelokuvien vahtaaminen on jatkunut yhä, tosin aiempaan verrattuna jokseenkin säästöliekillä. Näistä saattaa taas joskus päätyä jotain julkaisuksi asti, kunhan sopiva tilaisuus tarjoutuu. Noin muuten ruudulla on pyörinyt jälleen paljon scifiä ja ihan vuoden loppua kohti hieman pukudraamaakin (Ylpeys ja ennakkoluulo -BD on tulossa postissa). Uusien sisältöjen haalimisen sijasta olen palaillut jälleen myös vanhojen klassikoiden äärelle: Alien toimi edelleen kuin häkä, vaikka Scottin myöhemmät yritelmät kuinka hyvänsä ovatkin yrittäneet paskoa sarjan maineen 🙂

Länkkärivuoden parhaita aiemmin näkemättömiä teoksia oli tuoreehko The Sisters Brothers. Pitkään odottanut The Ballad of Buster Scruggs pitää nähdä viimeistään tänä vuonna – sopiva tilaisuus voisi olla vaikkapa kevään länkkärimaraton. Maratonit pyörivät vanhaan malliinsa ja katsojamäärä oli sikäli korkea, että eiköhän tuokin perinne tule hengissä pidettyä. Scifin puolella Aniara oli vaikuttavan kyyninen kuvaus ihmismielestä, ja jostain syystä aikanaan täysin ohi mennyt Moon sekin vuoden parhaita kokemuksia. Eräänä sivujuonteena katsastin vielä rillumarei-elokuvat.

Semmosta. 2020 pitää yrittää huolehtia hieman paremmin niin fyysisestä kuin psyykkisestäkin terveydestä – enemmän lepoa, jos vain suinkin mahdollista ja vähemmän stressaavaa silppua. Parempaa vuotta ja jaksamista kaikille muillekin ryytyneille!

Add comment January 1st, 2020

Vammala Partyiltä palatessa

Viikonloppuna pidettiin taas Vammala Partyt – Ikaalisissa. Ohessa omia kilpailutuotoksiani sekä Emilin PETSCII-kuva (Monster). Ajettavassa muodossa CSDb:n partysivulla. Menestystä ei kompoissa irronnut, lukuun ottamatta YouTube-mashuppiani Slapsticksucker. Processingilla väkästettyä Demoa (Machine Make Machine) tuskin julkaistaan tuossa muodossaan sen virallisemmin, mutta itse effu nähnee vielä käyttöä joskus.

Add comment July 28th, 2019

Reissussa lutraamista

Tuoreet Proton-kokeilut olivat sen verran positiivisia – käytännössä kaikki testaamani pelit toimivat – että päätin laajentaa Windows-emuloinnin (ok, periaatteessa ei ole kyse emuloinnista) skaalaa entisestään. Toinen Protonia vastaava, niin ikään Wineen perustuva härpätys on Lutris, jolla pitäisi myös saada paljon lisää pelejä käyttöön. Asennus ei sinänsä paljon vaatinut ohjeiden mukaan PPA:n avulla, mutta aivan Protonin tasolle hiottu softa ei tunnu olevan: alati ongelmaisesta Esyncistä tuli virheilmoitus, jonka mukaan file descriptoreita ei ole tarpeeksi, vaikka niitä totisesti on. Esyncin saa onneksi pelikohtaisesti tässäkin kytkettyä pois.

Lutriksen perusnäkymä

Kunnianhimoinen tavoitteeni oli saada Epic Games Store toimimaan ja sieltä etenkin maineikas Journey, joka oli jäänyt tähän mennessä Pleikkareilla kokematta. Störe asentui periaatteessa ihan helposti, vaikka kaikenlaista varoitusta nähtiinkin, mutta sitten se onneton asensi päivityksen, joka ei mennyt läpi, ja yrittely jäi siihen. Netistä löytyi onneksi jonkun Winetricks-purkka, jota hiukan muokkaamalla dotnet48 meni uusiksi koneeseen, ja kauppakin suostui päivittymään. Näin ikkään:

WINEPREFIX=~/epic-games-store WINE=~/.local/share/lutris/runners/wine/ge-protonified-4.10-x86_64/bin/wine ~/.local/share/lutris/runtime/winetricks/winetricks --force dotnet48

Epic Games Store koko “komeudessaan”, vaikka usko meinasikin välillä loppua

Seuraavaksi piti sitten, kuten odottaa saattaa, luoda jälleen yksi tunnari lisää jälleen yhteen palveluun. Tämän jälkeen Journey asentui heittämällä ja lähti myös ilman sen suurempia konstailuja päälle: äänet toimivat, graffa-asetuksia ja resoa voi säätää, ja tietysti itse peli toimii. Ainoa kauneusvirhe on ikkunoitu tila, jonka kanssa tuntuu tulevan pelkkiä ongelmia. Akkuna menettää fokuksensa, sen paikka määräytyy vähän randomilla jne. Koko ruudussa meno on kaikin puolin asianmukaista, jos nyt päivitysnopeus ei kaikin ajoin ehkä ihan tasaisena pysykään (pidin toki resoa täysillä 1440p:nä sekä graafisia hienouksia päällä).

Voyage Voyage, aito ruutukaappaus Linuxista

Tästä säädöstä jäi siis käteen muutakin kuin känsät. Puolen tunnin testailun jälkeen iski kameran jatkuvan pyörimisen takia päälle jo kohtuullinen pahoinvointi, joten en ole ihan varma, kuinka paljon Jörniä tulee lopulta pelattua, mutta joka tapauksessa tämänkin option toimivuus tuli todettua. Winen, ja sitä myöten Protonin ja Lutriksen kautta Linux-pelaaminen on tätä nykyä aivan eri kanteissa kuin vielä vuosi sitten – hyvältä näyttää, vaikka täysin idioottivarmoja ratkaisut eivät vielä olekaan.

edit: Jos asiat eivät tunnu lähtevän käyntiin tai päivittyvän, niin “ps aux” kertoo, mitä edellisen session prosesseja on jäänyt taustalle jumimaan. Killiä perään.

Add comment July 21st, 2019

Nepailua Vammala Partyillä

Jokavuotinen kesäparty on taas kunnialla lusittu, vaikka hiukan raatoisa olo vaivasikin jo ennen ja etenkin jälkeen – helleaalto osui tälläkin kertaa juuri tuohon viikonloppuun, joten hiki on ollut ja nukkuminen vähän niin ja näin. Luovaa aikaa oli seonnut melkoisesti uuden kameli.net-serverin asennukseen, mutta palaan siihen aiheeseen myöhemmin. Merkittävin saavutukseni tällä erää lienee levykkeenheittokilpailun voitto, sillä onhan viime kerrasta jo useita vuosia. 90-luvulla ja vielä 2000-luvun alussa olin aina kärkikahinoissa, mutta uusien kilpakumppanien ja oman kangistumisen myötä sijoitukset ovat olleet heikompia. Skenekompoihin tein kiireessä kaksi nepakuvaa, Kafkis (hires Multipaintilla) ja Posandeerit (PETSCII omalla edikalla), sekä Yzin kanssa vielä Tiskari-vitsidemon, joka sitten sattui voittamaan komponkin. Emil osallistui Lumpeet-kuvalla, joten perheestä oli myös muuta edustusta.

Add comment July 16th, 2018

Takaisin koodihommiin

Väikkäritohinoiden kesken oli hyvin vaikeaa tehdä juuri mitään ylimääräistä – jos aikaa olisi ollutkin, niin jaksamista ei. Nyt, kun olen koulun penkiltä luultavimmin lopullisesti poistunut, niin ehdin jo hiukan palata skenepuuhien äärelle (vaikka nykyisessä elämäntilanteessa kesä”loma” onkin lähinnä vajaan parin kuukauden lastenhoitonakki). Ensimmäinen tuotos syntyi Vammala Partyille: Nothing but PET SKI on tunnetun PETSCII-demon nimeen perustuva pikku vitsi, jota kuorruttavat kuitenkin Yzin kelpo biisi ja Teron iloluontoiset grafiikat. Hiukan merkittävämpi comeback nähtiin puolestaan vajaa viikko sitten Assemblyillä, kun useampikin Fit-jäsen (Yzi etunenässä) synnytti MS-DOS:lle Deep Hyttynen -demon. Itse tein pari efektiä ja muuta sekalaista hanslankarointia. Kesän kuluessa ehdin verrytellä sormia myös merkkigrafiikan parissa: Pärekori, Pop-o-pupu ja Pasila–Manhattan.

Add comment August 10th, 2017

Skeneaktivoitumista @Vammala Party

Pitkällisen skenetutkimuksen jälkeen teki mieli vaihteeksi oikeasti tehdä jotain, ja kun Vammala Partykin oli taas tulossa, rupesin värkkäämään kompokuvia ja -demoja. Lisäkimmokkeena toimi Lieves!Tuoreen 20-vuotisjuhla. Olen tehnyt pikseligraffaa aika vähän, joten kokonaisen kuvan piirtämiseen meni kauan — toisen tekeleen pohjalla oli sentään 2013 aloitettu multicolor-kuvanraakile. Työkaluna oli Teron Multipaint. PETSCII on tutumpi ja kepeämpi formaatti, joten pari kuvaa syntyi nopeastikin. Itse kompo meni persiilleen, mutta kaikkiaan olen silti ihan positiivisesti yllättynyt lopputuloksesta. Piirtelyn lisäksi koodasin kaksi pientä MSX-demoa. Bonarina vielä VIC-20:lle tehty Rock joka tiesi… liikaa! eli 1983 julkaistun tietokoneella tehdyn sarjakuvan takaisinkonversio. Kerron Rockista lisää tuonnempana. Aiheeseen liittyviä linkkejä:

Add comment July 18th, 2016

Spirobolic-rakkolevätyyny

Somessa tuli taas vastaan joku terveyttä ja hyvinvointia kohentava höpötuote, joita tuntuu markkinoille ilmaantuvan tasaiseen tahtiin. Tuoreessa muistissa lienevät vielä vaikkapa Skudo-säteilysuojaPower Balance -hologrammiranneke sekä Valkee-korvavalot, eikä homeopatiakaan ole koskaan kartalta kadonnut, vaan tunkee pikemminkin jo apteekkeihinkin. Tästä intoutuneena innovoin puppugeneraattorin, joka soveltuu alan tuotekehitykseen – reloadilla lisää tuotteita: http://www.kameli.net/~marq/energia/

Toteutukseen meni kaikkiaan parisen tuntia PHP:llä. Suurin osa ajasta kului avainsanojen kaiveluun netistä. Tuotemerkki sekä -nimi muodostetaan molemmat satunnaisesti alku- ja loppuosasta (“Bene-“, “Rosa-“, “Vita-” ja sitten “-dol”, “-san” tm. perään), minkä jälkeen arvotaan virkkeeseen loppuosan mainesanat niin ikään taulukoista. Tuotekuvauksen jälkimmäinen puolisko käyttää samoja datoja kuin alkukin, mutta yksinkertainen logiikka varmistaa, ettei mikään aiempi sana toistu. Joitakin hieman kummallisia yhdistelmiä tulee edelleen, mutta se oikeastaan sopii tähän käyttöön.

“Rosasan-pellavalaastari piristää voimakkaasti solujen luonnollista aineenvaihduntaa sekä tukee hermoratojen kokonaisvaltaista ionisaatiota.”

Add comment May 27th, 2016

Cracking the Oric hires

During the last few days I’ve spent hours and hours trying to understand how Oric (Oric-1 and Atmos) hires graphics work. Compared to most 8-bit home computers of the 1980s the mode is notably different with its “serial attribute” based layout. If you know how teletext works, you’ll easily notice certain similarities. You can find multiple elaborate explanations of Oric graphics online, but I’ll try and distill their essence into a few minimalistic rules:

  1. There are 240 by 200 pixels described by 8000 bytes located at A000h (followed by three hard-wired lines of text which we will omit). One row is 40 bytes.
  2. There are eight colors to choose from: black, red, green, yellow, blue, magenta, cyan and white ie. a typical 3-bit BGR colorspace from 0 to 7.
  3. For each byte – describing six not eight pixels – you can do one of the following:
    1. Change the ink color. Six pixels of paper color will be displayed in this 6×1 block. Byte contents: 0..7.
    2. Change the paper color. Six pixels of the new paper color will be displayed. Byte contents: 16..23.
    3. Display pixels using the current ink (1) and paper color (0). Byte contents: 40h + bitmap in the lower-order bits.
  4. If bit 7 is on, the block will be displayed in inverted colors. Note that the inversion does not affect the result of ink/paper change operations, only the outlook of the 6×1 block. The inversion logic is a bitwise not:
    1. black – white, 000 – 111
    2. red – cyan, 001 – 110
    3. green – magenta, 010 – 101
    4. yellow – blue, 011 – 100
  5. Every new row starts with white ink and black paper.

In addition there’s stuff like 50/60 Hz, blinking and text mode setting, but we’ll skip them too. At first the ruleset seems quite simple, but once you actually start thinking of how to do graphics with it, things don’t look that easy anymore. Let’s warm up with a little close-up of a real Oric piccy (“Yessagician” by Dbug):

clashornot

This is the left edge of the screen and the gray lines denote 6 pixel block borders. How would you choose the operations for displaying the pixels – in particular the area I’ve outlined with a red rectangle?

Solutions: the completely black lines we could show as pixels as the line starts with white ink and black paper, but there’s many other possible solutions too. Every black 6×1 block might actually contain an ink change or perhaps setting the paper to black again. Or setting the paper to white and turning the inverse bit on. The 6×1 blue blocks we could create by simply changing the paper to blue, after which the next identical block could contain an optional ink change.

As to the marked area, however, we need to do something else. Changing the paper to blue on the left leaves us with white/blue which will not do for the next block as there are pixels to be displayed. The only possible solution is to turn paper yellow and invert the colors for both of the blocks. An inverted white/yellow pair provides the needed black/blue for the bitmap.

The first two questions I tried to solve were “Is this picture a legal Oric hires image?” and “How to display a legal image using the possible operations?” There’s more to converting a random image to the Oric, but these two problems have to be understood in order to get anywhere. A first bruteforce solution which didn’t even check all the possible combinations took several minutes to solve just one row of a simple image on a recent i5 computer, so clearly something else had to be done.

For each 6×1 block containing one or two colors there can be multiple solutions. Two-color blocks are the easy case: there’s the bitmap and the colors inherited from the left, possibly inverted. One-color blocks are a different ballgame altogether, since they can contain paper changes, invisible ink changes or they might even be a bitmap. All of this with or without inversion, of course. Another difference is that a two-color block needs to get proper colors from the left, whereas a single-color one can be displayed anytime with a paper change.

The following image tries to convey a conceptual model of how it works:

dag

Each column in the graph represents a 6×1 block and its multiple possible solutions. Some could call this a directed acyclic graph. The first block can be displayed in four different ways, the next only in two and so on – in reality the numbers are a lot higher with singe-color blocks. The arrows denote possible movement from left to right: each way of displaying a given block here limits the options for the next block. For example a block which leaves ink/paper as white/black does not provide for its neighbor in need of red color.

Instead of a recursive approach starting from the left and trying out all the possible solutions it is enough to simply loop through the columns, create the links, optionally dropping the dead-ends (solutions leading nowhere on the right or with no supply from the left) and duplicates (same in/out combinations). If there is a path that runs all the way from the left edge to the right, we can conclude that this particular row is legal. More than one path is possible, but that doesn’t really matter. Walking back from right to left we can collect one legit representation for the row, thus solving the two “research questions”.

When it comes to dealing with images that do not comply or converting a random jpeg, I don’t have much to say yet. Different approaches will lead to better or worse approximations – as of now I simply turn offending two-color blocks to single-color ones, but much more could be done. Further reading and examples here:

edit: some first thoughs on dealing with non-conforming images. The first thing I’d try is make a graph with approximate solutions, make the errors the weights of the vertices and use a shortest path algorithm such as Dijkstra’s to find the nearest possible approximation.

edit2: here’s a bit more visual representation of the bits as a bonus.

Add comment May 26th, 2016

Pixel Polizei is out

A project I’ve been working on for the last few weeks is now out: Pixel Polizei is a helper tool for the retro artist. The purpose is to let the “graphician” draw using whatever software they happen to like, check/force color clashes and finally save the outcome in native formats that can be viewed using emulators or the real deal. So far there is support for these machines and screen modes:

  • Amstrad CPC modes 0 and 1 with or without overscan
  • C-64 hires and multicolor
  • MSX screen 2
  • Oric hires
  • Plus/4 hires and multicolor
  • ZX Spectrum

More formats and platforms will appear when I find the time and motivation again. As usual, the tool should work on Lin/Mac/Win as long as Java 7 or newer is installed. Open source, too.

ppolizei-plus4

Add comment May 17th, 2016

Previous Posts


Kommenttien virta

Aiheet