Posts filed under 'retro'
Yzin vastaavasta – ja pitkästä – listasta innoittuneena päätin itsekin kerätä vuoden 2013 puuhia yhteen paikkaan, jotta ihan itsellenikin tulee hieman kokonaiskuvaa siitä, mitä tänä kiireisenä vuonna on ehtinyt tapahtua.
Skenekoodaukset
- Ensimmäiselle ulkomaanpartylleni, Revision’13:lle, tehtiin Yzin ja Manun kanssa MSX-demo Amurisus
- Lisää MSX-tuotantoa Vammala Partyille: karaokedemo Abrels
- Ja vuoden viimeisenä MSX-demona Alternative Partyille Amurisusin (Amurisuden?) eräänlainen jatko-osa Atsarias
- Zoo’13:lle pikainen BASIC-viritys nimeltä Beisikki demo
- Ensimmäinen oikea C64-produktio, The First Ball, syntyi Heikkisen ja Yzin kanssa. Myöhemmin porttasimme hänet vielä Plus/4:lle.
- Vuoden suurin menestys oli monipuoliseksi kasvanut PETSCII-editori, joka löysi yleisönsä ilmeisen hyvin. Päätyi jopa Pouetin top 2013 -listalle työkalusarjassa.
PETSCII-Grafiikkaa
Kirjoituksia
Muita sekalaisia touhuja
Olihan sitä siinä jo. Muuten vuosi on mennyt juniorin kasvua seuratessa, länkkäreitä katsellessa ja tutkimuksen parissa. Kiitos Koneen säätiön tutkimusapurahaa on vielä ensi vuodellekin, joten kirjoittaminen jatkuu ahkerasti.
December 30th, 2013
Heikkisen Teron kanssa yhdessä kirjoittamani artikkeli Kungfumestarit kuvaputkella – kamppailuelokuvien ja -pelien suhde 1980-luvulla on juuri ilmestynyt WiderScreen-verkkojulkaisun numerossa 4/2013. Käsittelyyn otetaan karate-, kungfu- ja ninjaelokuvat sekä niiden vaikutus varhaisiin mätkintäpeleihin. Tärkeimpänä teoreettisena viitekehyksenä on remediaatio, mediasta toiseen siirtyminen. Historiaosuudesta tuli hieman pitkä, joten sivumennen artikkeli toimii myös johdantona kamppailupelien ja -elokuvien varhaisvuosiin.
December 13th, 2013
Virittelin jo aiemmin kasaan Joyduino-projektin, jolla sai emuloitua Atari-joystickiä PC:n näppäimistöltä. Projektissa oli kuitenkin kaksi ongelmaa: kolvaamista vaativa tarpeettoman mutkikas piirikortti ja hieman epämääräinen sarjaportin käsittely omalla ohjelmalla. Kuulin vasta myöhemmin, että Arduinon pinnit saa suljettua laittamalla ne input-moodiin, mikä teki kytkinpiirit tarpeettomiksi. Eli kun virtuaalisen joikkarin kytkintä ei paineta, pinni on sisääntulona ja kun painetaan, niin pinni vaihdetaan ulostuloksi ja laitetaan nollaan. Tältä pohjalta riitti tehdä triviaali johto D9-naarasliittimestä piikkirimaan, joka menee Arduinon headerin pinneihin 8..GND (ylös, nappi, alas, vasen, nappi 2, oikea, maa). Tulitusnappi 2 tässä MSX:n mukainen – muissa laitteissa saattaa olla eri piikissä. Oman C-ohjelman sijasta tein isäntäohjelman tällä kertaa Processingilla, niin se toimii saman tien useilla alustoilla. Arduinoon pitää ensin ladata Firmata, jotta Processing toimii sen kanssa. Firmata ei ole järin nopea, sillä aikaa haaskaantuu yksittäisten pinnien erikseen kääntelyyn ja protokollaan, mutta tässä tapauksessa nopeus oli ihan hyväksyttävä. Omaa, luultavasti pahempaa lägiään tulee Processingin päivitystaajuudesta, mutta sekään ei ollut vielä liikaa. Esimerkki täällä:
http://www.kameli.net/~marq/kode/joikkari.pde
Firmatan lisäksi tarvii asentaa Arduino-tuki Processingille, joten mikään avaimet käteen -ratkaisu tästäkään ei tullut. MSX:n kakkosnapin vahingossa sohimisesta voi seurata ongelmia joillakin koneilla – pinniä saatetaan käyttää muihin tarkoituksiin, joten joikkaportin pinniin 7 ei yleensä kannata kytkeä mitään. Toinen detsku on, että pelikone kannattaa käynnistää tai johto kytkeä vasta ohjelman herättyä, sillä muuten porttiin tulee ei-toivottuja painalluksia. Näppikseltä pelaaminen on jo kohtuullisen hyödyllistä, jos ehjää Atari-joystickiä ei satu olemaan, mutta vielä hyödyllisempi tämä viritelmä olisi vaikkapa joypadin kanssa. Katsotaan, iskeekö inspiraatio sellaisenkin tukemiseen jossain vaiheessa.
edit: Nappi 2 ja vasen menevät tosiaan ristiin piuhassa, koska huomasin vasta jälkikäteen, että MSX:ssä kakkosnappi onkin eri pinnissä. Helppo muuttaa koodista (ja muutenkin järjestys on aika satunnainen).
edit2: Äh, menköön. Tässä se joypad-tuki. Nappien ja kontrollerin nimeä joutunee vaihtamaan, mutta muuten toiminee suorilta: http://www.kameli.net/~marq/kode/joikkari2.pde
December 9th, 2013
Kortinlukijoiden kasvavaan kasaan liittyi kasibittiatareille tarkoitettu SIDE2, jälleen kerran Lotharekilta hankittuna. Merkittävin ero SIO2SD:hen verrattuna on se, että SIDE2 ei teeskentele olevansa massamuisti koneen sarjaväylässä, vaan se on pieni näppärä moduuli, johon sujahtaa CF-kortti. Compact Flash ei ole mikään varsinainen sijoitus tulevaisuuteen, mutta ainakin vielä kortteja saa ihan kaupasta. Siinä missä SIO2SD vaatii työlästä nappien näpyttelyä ja pienen näytön tihrustamista, valitaan SIDE2:ssa ladattava ohjema ihan koneen näytöltä näppäimistöä käyttäen: moduulilta käynnistyy suoraan tiedostovalitsin.
So far so good, niin kauan kuin on tarkoitus ladata ainoastaan XEX-muotoisia yksittäisiä tiedostoja, joita esimerkiksi useimmat demot ovatkin. Laitteiden ero tulee vastaan siinä vaiheessa, kun on tarpeen käyttää ATR-muotoisia levyketiedostoja: SIO2SD selviää niistä suoraan, kun taas SIDE2 vaatii avukseen Ultimate 1MB -muistinlaajennuksen ja päälle jonkun verran säätöä (Lotharek lupaili videolla, että tulevaisuudessa ATR:t toimisivat ilman Ultimateakin). Tuore Ultimate olisi toiminut suoraan, mutta omani oli sen verran vanha, että se piti ensin flässätä uudempaan ohjelmaversioon. Tiedostovalitsimeen pitää mennä tämän jälkeen hieman epäintuitiivisesti muistinlaajennuksen asetusruudun kautta, jossa painetaan noin sekunti L-kirjainta. Käyhän se näinkin ja latausnopeus on mainio. Kaikki kokeilemani demot toimivat, lukuun ottamatta normaalia tarvetta rämpyttää joidenkin kohdalla BASIC-ROM:ia päälle tai pois.
Kumpi sitten on parempi ostos? Kallistun lievästi tämän testailun perusteella SIDE2:een, sillä muistinlaajennus on joka tapauksessa hankittava demoja varten. Käytettävyys on parempi, tilantarve pienempi ja latausnopeus – ainakin foorumien mukaan – suurempi. SIO2SD puolustaa paikkaansa, jos budjetti on pieni, kalikan haluaa modata koneen sisälle tai jos koneessa ei ole lisämuistia. Valmiiksi koteloituna ja kaapelin kanssa jälkimmäisen hinta harppaa reippaasti ylöspäin, jolloin rahallinen etu katoaa. Muut mahdollisesti kytkettävät lisälaitteet voivat puolestaan vaatia vapaata SIO- tai moduuliporttia. Kolmas vaihtoehto siirtelyyn on jokin SIO2PC-varianteista, jotka kuitenkin vaativat aina sen isäntäkoneen ja toimivat vanhaa sarjaversiota lukuun ottamatta heikosti Linuxissa.
December 2nd, 2013
Omistan, kuten aika moni muukin tuttu, vanhan version 1541 Ultimatesta, jota voisi lyhyesti luonnehtia kuusnepan levariemulaattoriksi tai kortinlukijaksi (on siinä paljon muutakin toiminnallisuutta). Kakkosversiossa on kuoret mukana, mutta ykkönen toimitettiin pelkkänä piirilevynä, joka istuu kovin suojattomana koneen takana. Itse kyhäsin kuoret Bebekin laitekotelosta, mutta aika moni ei ole vaivautunut moiseen vaan käyttää moduulia ilman mitään kuorta. Tällä hetkellä kuoria ei ole edes missään myynnissä. Sehän ei käy, joten koteloprojekti kaksi sai olla kuori Ultimatelle. Pitkän vääntämisen ja iteroinnin jälkeen tuli lopulta valmista:
Jälki on 3D-printille tyypillisesti hiukan rösöistä, mutta malli toimii hyvin ja moduuli mahtuu koneeseen sisälle. Suunnittelu oli pirullisen tarkkaa, sillä piirikortti on vain hiukan kapeampi kuin kuusnelosen moduuliportin aukko ja sisällä tila vielä kapenee. Niinpä seinät oli pakko jättää ohuiksi ja silti itse Ultimate mahtuu vain niukin naukin sisälle. Ylimääräisenä ponnistuksena pitää tehdä pikapuoliin vielä erillinen versio Ethernet-liittimen sisältävälle mallille, koska niitäkin on aika monella. Bonuksena nykersin vielä pienet jalat, jotka voi ruuvata takakanteen niin, että moduulin takareuna on tuettu pöytään. Tarvittavat STL-filut ladattavissa taasen Thingiversestä.
November 20th, 2013
Lately I’ve been looking a bit into Commodore 64 and Plus/4 programming and even got a couple of demos done with friends. Plain PETSCII-based stuff should be rather easy to port between the two: change the character/color RAM writes to a different address, remap the colors and fix the MMIO addresses. So far so good, but converting the audio is a completely different matter. TED contains just two simple sound channels, so it can’t really reproduce the glorious SID sounds.
To remedy the situation, some Plus/4 hackers designed so-called SID cards, which occupy the module port and contain a real SID chip, these days most likely a 8580 because of its better capabilities and lower voltage. On a C64 the registers reside at $d400, which is very inconveniently in the middle of the free memory on a Plus/4, so they had to be relocated. According to this PCB design, apparently known as Synergy SID-Card, there is a “German” version, which resides at $fd40 (de facto standard these days) and the “Hungarian” version, which can be found at $fe80. Not a huge problem to support two base addresses, even though some extra work is required. Modern SID cards, such as the aforementioned Synergy or NST’s Audio Extension, readily accept both for compatibility reasons.
Unfortunately, there’s a bit more to it than just that. On a C64 the SID runs at 985 kHz, but on a SID card the basic frequency is around 886 kHz – about 11% less. The rate is halved from the main CPU clock frequency on the cart. In effect, a tune composed for C64 will be off-key and most effects such as ADSR envelopes will sound wrong. NST’s Audio Extension contains a separate 985 kHz clock that solves the problem, but simpler cards don’t. Thus, notes and other parameters need to be finetuned for the new SID frequency. There is software that can help to automate the process in some cases.
Our demo, The First Ball, was first coded and composed for the C64, so the tune had to be converted. It took some manual fiddling and the end result isn’t 100% faithful to the original, but good enough. We used Goattracker for composing. It doesn’t support Plus/4 right away, but can be easily configured to do so by fiddling with the configuration file. On *nix systems you should find the file at ~/.goattrk/goattrk2.cfg. Scroll a bit forward and you’ll find the base address ($d400), which you can change to $fd40. A few rows later you can set Custom SID clock cycles. 886000 is probably good enough, but if you want to be precise the exact value is 886723, at least according to my newbie calculations. After this you should be able to export the tune so that it can be played back on a Plus/4. A bit more elegant solution could be devised, but we decided to simply export the song again with a different base address to support those pesky cards at $fe80. I’m kinda suspicious as to whether any realistic end user owns such card these days, though.
One more thing: even if VICE is a great piece of software, it doesn’t get the aforementioned frequencies right. At least on 2.1 the frequency is double compared to a real SID card. Plus4emu does things right, so test/develop with that.
edit: The VICE bug should be fixed in the following revisions.
November 15th, 2013
Mikon ja Manun kanssa kirjoittamani artikkeli Suomalaisen peliteollisuuden valtavirtaa ja sivupolkuja julkaistiin juuri Pelitutkimuksen vuosikirjassa 2013. Aihe on nyt kovasti esillä, kiitos Supercellin, Grand Crun ja Angry Birdsin, joten siihen ovat tarttuneet hiljattain muutkin kirjoittajat. Akateeminen julkaisusykli on hidas, joten osa kirjoitetusta edustaa jo lähes vuoden takaista tilannetta, mutta suurin osa tekstistä on sentään edelleen ajan tasalla.
November 11th, 2013
Commodore 64:n valtavasta kulttuurisesta vaikutuksesta kertoo jotain se, että vielä vuonna 2013 järjestetään laitteelle keskittyneitä demotapahtumia. Vietin viikonlopun Viialan seurahuoneella Zoo 2013 -partyillä, johon oli saapunut noin 70 skenettäjää lähes joka puolelta Suomea. Aiemmin Zoo oli järjestetty vuosina 1997 ja 1998. Kävin itsekin paikan päällä ’98, sillä tapahtuma oli kätevästi silloisen opiskelupaikkani TTKK:n pommisuojassa. Tällä kertaa meininki ei vaikuttanut läheskään yhtä sisäsiittoiselta kuin 15 vuotta sitten, minkä lisäksi olin itsekin huomattavasti paremmin kartalla nepaskenen suhteen.
Yleisen häröilyn lisäksi ohjelmaan kuului tietysti asiaankuuluvia kompoja. Vaikka pelit ovatkin olleet toisinaan hankala aihe skenelle, niin nyt mittelöihin kuului klassista Barbariania, Decathlonia ja Sex Gamesia. Itseäni kiinnostivat enemmän skenekompot, joita oli tuttu valikoima musiikista grafiikkaan ja demoihin. Hiukan poikkeuksellisempia olivat PETSCII- ja BASIC-kompot, joista ensinmainittu olikin koko partyn suosituin. PETSCII on ollut viime aikoina kovasti tapetilla, minkä lisäksi merkkigrafiikkaa on helppo ja nopea tehdä vaikkapa täysiveriseen demoon verrattuna. Tunsin hiukan suorastaan isällistä ylpeyttä, kun PETSCII-editorillani oli tehty lukuisten kuvien lisäksi grafiikkaa myös demoihin.
Motivaatio sattui kohdalleen, joten tein itsekin kaksi pikaista PETSCII-kuvaa sekä osallistuin kahden demon tekemiseen. Pitkään välttelemäni 6502- ja C64-koodaus osoittautui hiukan odottamaani helpommin lähestyttäväksi ja C-kääntäjä cc65 tasoitti tietä entisestään. Sekä BASIC-demo Beisikki demo että PETSCII-henkinen The First Ball voittivat sarjansa, joten debyytti meni enemmän kuin hyvin. Kuvat eivät tällä erää sijoittuneet kärkeen – kuten tuppaa käymään lähes aina – mutta ainakin PET Games kirvoitti yleisöstä röhötystä 🙂
November 10th, 2013
Itänaapurin vanhassa tietotekniikassa on omaa viehätystään kummallisuutensa ja kotipolttoisuutensa vuoksi. Hankin hiljattain Yamahan Neuvostoliittoon viemän MSX2-koneen ja jo aiemmin ZX Evolutionin, joka on monipuolinen FPGA:lla toteutettu Spectrum-klooni. Tällä viikolla sain kuitenkin vielä aidomman asian, vuonna 1989 valmistetun Leningrad 1:n, joka oli suosituimmasta päästä neuvostoajan Spectrum-klooneja. Lenkkaria on paketoitu erilaisiin kuoriin, joista itselleni sattui asiaankuuluvan armeijanharmaa versio. Koneen mukana tuli reippaasti kuumeneva muuntaja ja pari tuntematonta piuhaa, mutta ei mitään manuaalia tai ohjelmia.
DIN-liittimet ovat varsin tyypillisiä neukkuklooneille, eikä tämänkään koneen kohdalla tarvinnut pettyä: perässä on peräti kuusi eri dinniä, kaikki viisipiikkisiä. Onneksi porteissa edes lukee mitä mikäkin tekee: Kempston, joystick, tape, video (joka tosin on pelkkä tyhjä liitin), RGB ja power. Ensi alkuun kuvittelin, että RGB-portti olisi samanlainen RGBI kuin Spectrum 128k:ssa, mutta muutaman tunnin epätoivoisen yrittelyn ja piirikaavion lueskelun jälkeen paljastui, että se on ihan normaali RGB, jossa on synkkapinnin lisäksi äänet. Signaali tuntuu tulevan hieman matalalla jännitteellä, joten videomonitorilla on tekemistä synkronoinnissa ruudunpiirron alkupuolella. Poikkeuksellisena ratkaisuna DIN-liittimen kuorta käytetään välillä maana, jolloin liittimistä saa kuusi signaalia viiden sijasta. Loput liitännät olivat selvästi helpompia ratkottavia: kasettiliittimen pinnit selvisivät piirikaavion perusteella ja joikkaportin ihan kokeilemalla. Kempstonia en saanut toimimaan ainakaan vielä, mutta toinen joikkaportti on kytketty Spectrumeille tyypillisesti näppäimistöön ja tuottaa numeroita 6..0. Adapterin rakentamisessa ei kauan mennyt ja nyt pääsen pelaamaan kunnollisilla Atari-liitäntäisillä joystickeillä karun näppäimistön sijaan.
En tiedä mistä kassakoneesta tai teollisuusrobotista tuo näppäimistö on peräisin, mutta kirjoitustuntuma on heikko jopa alkuperäiseen kuminappikoneeseen verrattuna. Osa napeista on hapettunut ja ottaa huonosti, minkä lisäksi jokunen kirjain jumitti pohjassa ennen jousten pientä venyttelyä. Kytkimet ovat yksittäisiä, joten korjailu onnistunee helposti tarvitsematta vaihtaa koko näppiskalvoa. Vielä aidommalta kone näyttäisi, jos näppäimistössä olisi kyrilliset merkit, mutta nämä irtolaput ovat ihan englanniksi. Ylipäänsä Lensku on hyvin uskollinen 48k-klooni eikä siinä ole turbomoodeja, uusia grafiikkatiloja tai edes kyrillisiä kirjaimia. Valitettavana puolena – monien halpakloonien tavoin – koneesta puuttuu laajennusväylä, joten esim. divIDEä ei saa kiinni.
Tällä hetkellä tilanne on se, että ohjelmia saa ladattua PC:n äänikortilta soittamalla, kuva tulee näkyviin, äänet kuuluvat, näppäimistöltä saa hakattua merkkejä ja pelit toimivat kotitekoisen joystick-adapterin kanssa. Pari pientä ärsytyksenaihetta pitää vielä yrittää korjata: RGB-kuva on vääristynyt sekä elää yläreunasta, ja muuntajanreppana pitää vaihtaa johonkin ajanmukaisempaan ylikuumenemisen vuoksi. Positiivinen lopputulema yhtä kaikki, sillä lähtökohtaisesti en odottanut liikoja laitteen toimivuudelta.
edit: Vielä kootusti tarvitut modaukset/kolvaukset/säädöt:
- Näyttöjohto: r, g, b, synkka ja maa SCART-johtoon. Synkka ei ole kaksoinen, joten voi vaatia vielä jotain hienosäätöä.
- Virtalähde: ylikuumeneva neukkutekeles olisi saattanut tärvellä koneen, joten tein pienen adapterin AT-powerin molexille.
- Joystick-adapteri: Atarin D9:stä viisipiikkiseen dinniin. Kempston ei tunnu toimivan samalla pinnijärjestyksellä?
- Siirtopiuha: helpoin tapaus, riittää vetää kuulokeliittimeen maa ja RD-signaali.
- Satunnaisten näppäinten kosketuspintojen siivoamista ja jousien venyttelyä.
November 1st, 2013
Tein 3D-printatusta moduulikuoresta – hieman varman päälle – resetti/pausemoduulin. Piirilevyksi sahasin kiinalaisilta hankitun ISA/PCI-diagnostiikkakortin, joita saa posteineen reilulla eurolla (moduulin kortinreuna on samalla jaolla kuin ISA-kortin). 3D-printattua ABS:ää on helppo muotoilla: melkein kuin kynttilää vuolisi. Osittain lienee kysymys siitä, että printtiä ei tehty millään täydellä täytöllä. Näkemäni perusteella PLA on kovempaa ja kestää jonkun verran taivuttelua, joten se voisi olla soveltuvampi materiaali kuorille. Pohjan kehikkorakenne sopi piirilevylle kuten pitääkin ja pienenä bonuksena pikaliima otti hyvin kiinni, joten sain kuoret siististi yhteen päädystä, joka oli muovin käpertymisen takia hieman auki. Noita punaisia kytkimensurkimuksia pitäisi välttää viimeiseen saakka, mutta nyt ei sattunut muuta sopivaa olemaan. Lopputulos toimii ja mahtuu sievästi moduulipaikkaan, mikä todistaa vahvasti kuorikonseptin toimivuuden puolesta.
October 27th, 2013
Next Posts
Previous Posts