Posts filed under 'retro'

Plus/4, SID cards and Goattracker

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.

Add comment November 15th, 2013

Suomalaista pelihistoriaa

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.

Add comment November 11th, 2013

Zoo 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ä 🙂

beisikki__demo thefirstball petgames

Add comment November 10th, 2013

Muistojen, puistojen Leningrad 1

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.

neukkuspeku1 neukkuspeku2

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ä.

Add comment November 1st, 2013

3D-printti käyttöön

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.

resettimoduuli

3 comments October 27th, 2013

3D-printtauksen alkeet

Suunnittelin hiljattain ensimmäisen 3D-printattavan esineeni: MSX:n moduulikuoren. Pulikalle pitäisi oleman sosiaalista tilausta, koska kuoria ei voi tällä hetkellä mistään ostaa (Sunrisellä kuoria periaatteessa on, mutta eivät ne mitään lähetä) ja niitä tarvitaan mm. kaikenlaisiin rakenteluprojekteihin. Kun kukaan muu ei näyttänyt valmista mallia vielä tehneen, niin tein sitten itse. Wings 3D on tuttu ohjelma ja sopii vapaalla kädellä muokkailuun hyvin, mutta mittatarkkaan työstämiseen huomattavasti heikommin, joten käsin mittailtu ja mallinnettu kotelo oli lopulta lähinnä “sinne päin”.

Ihan tuosta vaan mallia ei voi tekaista, jos se on tarkoitus onnistuneesti tulostaa. Reunaehdot riippuvat printteristä, mutta ainakin ilmassa roikkuvat osat ja kovin pienet yksityiskohdat ovat out. Tarkkuus on rajallinen eli toleransseja on jätettävä esim. yhteen puristuvien kansien tapauksessa. Samalla pitäisi vielä mieluusti optimoida tulostusaikaa ja muovin kulutusta, joten kaikenlaista pitää huomioida, ja sittenkin lopputulos on pitkälti printteristä kiinni. Ultimaker sekä Reprap ovat yleisiä ja edullisia standardilaitteita säätäjien parissa, joten niitä voi käyttää referensseinä. Eka oma protoni tulostettiin ABS-muovilla jollain tuntemattomaksi jääneellä koulun teollisella printterillä. Toinen vaihtoehto on biohajoava ja kosteutta siten huonosti kestävä PLA-muovi.

Pitkähkön suunnittelun ja yksityiskohtien hieromisen jälkeen lopputulos oli yllättävän hyvä:

moduuli4 moduulifoto

Vahvensin vielä kannen tappeja juuresta sekä laajensin sisätilaa millillä vaakasuunnassa, minkä jälkeen pistin mallit jakoon:

Epäilyttämään jäivät oikeastaan enää kannen ruuvikiinnitykset, jotka eivät välttämättä kestä lukuisia moduulin aukomisia. PLA saattaa olla murtumisalttiimpaa kuin ABS, mutta seuraava säätäjä saa sitten korjailla mallia oman printterinsä mukaisesti kuten parhaaksi näkee. Valkoinen on väärä väri tulostukseen nopean nuhjaantumisensa vuoksi, mutta tässä tapauksessa asialla ei ole niin merkitystä. Jään mielenkiinnolla odottelemaan muiden säätäjien kokemuksia moduulien printtaamisesta eri laitteilla. Tästä viisastuneena seuraava hanke sujunee jo helpommin – työn alle on tulossa kohta 1541 Ultimaten kuori.

Add comment October 25th, 2013

Neuvosto-MSX saapuu talouteen

Härö-MSX:ien kokoelma täydentyi tämän viikon perjantaina, kun pitkän puljaamisen jälkeen sain lopulta Yamaha YIS-503 III R:n. Kyseessä on Jammun Neuvostoliittoon koulukoneeksi myymä MSX2-versio, jossa on erikoisuutena kyrillinen näppäimistö sekä opetuskäyttöön tarkoitettu omanlaisensa lähiverkko. III R:ää edelsi II R, joka näyttää aivan samalta, mutta on sisuksiltaan paljon vaatimattomampi eli MSX1. Tarkkoja vuosilukuja en ole löytänyt mistään, mutta 1988 tuskin on kaukana todellisuudesta. Verkkovirta on liitintä myöten suoraan sopiva, mutta näyttöstandardin ollessa SECAM pitää kuva ottaa RGB-liittimestä, joka on täysin sama kuin muissakin japanikoneissa (joskin haudattu tuskallisen syvälle koneen sisuksiin). Kone oli saapuessaan aika eläneen näköinen, mutta pyyhkimisen ja ihmesienikäsittelyn jälkeen osoittautui varsin hyväkuntoiseksi.

Näppäimistö on tarkoitettu venäjän kirjoittamiseen ja kyrilliset aakkoset saa RUS-napilla (“PYC”) helposti päälle. Länkkärimerkit eivät ole missään määrin QWERTY-asettelun mukaisia, joten niitä saa haeskella sieltä täältä, mikä tekee normaalienkin toimintojen suorittamisesta hurjan hidasta. En ole vielä ehtinyt selvittää, onko näppäimistö todellakin johdotettu omalla tavallaan vai tekeekö muunnoksen viime kädessä BIOS ohjelmallisesti.

Lähiverkkoa en pysty mitenkään testaamaan ilman toista konetta, mutta ainakin kävi selväksi, että moduuli aiheuttaa silkalla läsnäolollaan ongelmia: esim. mikään demo ei käynnistynyt, vaan ruutu jäi mustaksi ja musiikin sijasta kuului sekalaista rutinaa. Ongelma liittyy oletettavasti siihen, että verkkomokkula käyttää keskeytyksiä normaalista poikkeavalla tavalla. Jos konetta haluaa oikeasti johonkin käyttää, niin on ihan perusteltua napata koko moduuli irti häiriköimästä. Voi toki olla, että ongelman voi jotenkin ratkaista ohjelmallisestikin.

Jammussa ei ole levyasemaa – tiedostot on jaeltu lähiverkon kautta – joten jonkun sortin kortinlukija tai vaikkapa Nowind on käytännössä pakollinen. Muistia on eurooppahenkisesti kätevät 128+128k, siinä missä saman ajan japanikoneissa muistia oli vain 64+128k. Kone jäänee itselläni lähinnä mielenkiintoiseksi kokoelman koristeeksi, sillä käyttökoneena kokoelman muut MSX2:t ovat käytännöllisempiä.

yamaha2 yamaha1

Add comment October 20th, 2013

Atsarias aonem

Toistaiseksi ei ole jäänyt vielä yhtään Alternative Partyä väliin, joten tänäkin vuonna piti vääntäytyä paikalle. Tapahtuma näyttää jossain määrin palanneen juurilleen, sillä demot olivat huomattavasti paremmin edustettuina kuin moneen vuoteen – virkkaukset ja kolvaukset on ilmeisesti ulkoistettu muihin tapahtumiin kuten Wärk:Festiin. Paikan päällä näytti hieman autiolta ja monta vakioskenenaamaakin puuttui, joten yleisöä ei oltu tällä erää tavoitettu aivan optimaalisesti. Autiuden tunnelmaa korosti iso tyhjä lattia salin keskellä. Positiivisena puolena kompoissa nähtiin myös uusia tekijöitä seniorien seassa.

MSX:n 30-vuotisjuhlan ja Lieves!Tuoreen 15-vuotisen Altpartytaipaleen velvoittamina rupesimme edellisenä iltana vääntämään produa kasaan epätoivon vimmalla. Tyylillistä suuntaa ja teknologista alustaa tarjosi keväällä julkaistu Amurakis, jota voisi luonnehtia VJ-palikkademoksi. Täysimittaista demoa lähdettiin tekemään, mutta kun lopullinen koko oli 13 kilotavua, niin tuotos päätyi lopulta 64k-introkompoon. Äänestäjät ymmärsivät hyvän päälle, joten kategoriasta tuli voitto kotiin 🙂 Suosittelen katsomaan demon oikealla koneella, mutta jos sellaista ei satu olemaan, saa Youtube-videostakin hieman käsitystä aiheesta.

atsarias1 atsarias2

Add comment October 20th, 2013

Plus/4:n SID-moduuli

Plus/4 oli Commodoren kummallinen ja epäonnistunut sivupolku – kuusnelonen myi kuin häkä ja silti markkinoille piti tuoda varmuuden vuoksi halvempi suunnilleen samantasoinen epäyhteensopiva laite vuonna 1984. Hämmennyksen takaamiseksi sillä oli vielä samaan tekniikkaan perustuvat sisarmallit C16 ja 116. Grafiikkaominaisuudet olivat monessa suhteessa jopa paremmat kuin 64:ssä, mutta äänten osalta Plus/4 oli vaatimaton laite: äänikanavia on vain kaksi ja niistä saa pihalle kanttiaaltoa; toiselta myös kohinaa.

Plus/4-harrastajat olivat ääniin tyytymättömiä, joten tilannetta korjaamaan kehitettiin itäeurooppalaisittain omatoimisesti SID-moduulit, joiden avulla koneesta sai kuusnelosta vastaavaa mainiota ääntä. Hankin itse jo vajaa vuosi sitten modernin unkarilaisen toteutuksen nimeltä NST’s Audio Extension, jossa on bonuksena mm. normaali joystick-portti ja D/A-muunnin. Kun lopulta ehdin pulikkaa säätämään, totesin jemmassa olevan vain vanhan mallin SID-piirejä (6581), kun tuohon käy vain 8580. Huutonetistä tärppäsi kohtuuhintaan risa 64C, jossa oli onneksi ehjä SID, minkä jälkeen sain moduulin lopulta käyttökuntoon.

Asetuksiin ei ollut mitään tarvetta koskea, mutta halutessaan SID- ja TED-ääniä voi reitittää eri tavoin. Päädyin itse ohjaamaan moduulin ääniulostulon koneen AV-porttiin videomonitoria ajatellen. Peleistä ja pelien käännöksistä aika monikin tukee ilmeisesti SID-laajennusta, mutta itseäni kiinnostivat lähinnä demot. Pouetin listan kärkipäässä on monia tuotoksia, joissa on ainoastaan SID-musiikki, ja hyvinhän ne tuntuvat toimivan. Hieman vierasta ajatusmaailmaa tällainen moduuli silti edustaa – eikö samalla vaivalla olisi voinut käyttää sitä kuusnelosta tai yrittää venyttää sisäistä piiriä ennennäkemättömiin suorituksiin?

nst

2 comments October 14th, 2013

Edikka löytää yleisönsä

Olen yllättynyt todella positiivisesti siitä, että reilussa viikossa tekemäni PETSCII-editori on löytänyt kohdeyleisönsä – ilmeisesti saatavilla olevat työkalut tosiaan olivat riittämättömiä, kuten parilta graafikolta kuulin. Lahjakkaat tyypit ovat tehneet hienoja kuvia ahkerasti, mikä pitää myös koodarin motivaatiota toistaiseksi yllä. Joitakin poimintoja kootusti tässä; kuvia on varmaan vielä enemmänkin, mutta en ole löytänyt kaikkia ja jotkin on pakattu/ripattu sellaiseen muotoon, ettei niitä tiedostosta enää tunnista.

Mitään erityisen tärkeitä ominaisuuksia ei edikasta enää puutu, mutta olemassaolevia voisi parannella sieltä täältä sekä bugeja korjailla. Ehkä merkittävin puutos on animaatioiden saralla: olisi kätevää saada tehtyä monia eri frameja, joiden välillä voisi vaihdella. Sekin on kehitteillä, mutta vaatii hiukan lisää keskittymistä. Plus/4-tuki olisi hauska kuriositeetti ja luultavasti helppo toteuttaa, kunhan vielä keksii, mihin sen massiivisen värivalitsimen sijoittelee ja miten tekstimoodi on teknisesti toteutettu.

Edit: Plus/4 on nyt tuettu ihan täysipainoisesti.

Add comment October 9th, 2013

Next Posts Previous Posts


Kommenttien virta

Aiheet