A „8 bit today” kategória archívuma

Az 1986-os Metroid játék visszafejtett, kommentezett forrása

Romhacking.net:

This compressed file contains 9 text files that make up the entire source code for the original Metroid game for the NES. (…) At this time, the source code is still a work in progress but it is much farther along than the original document. The title page is completely documented. The intro routine, end routine, password scheme and sound engine are described in detail. About a third of the game engine is detailed and about half of each game area page.

A játék motorjának lényege így indul:

UpdateWorld:
LCB29: ldx #$00 ;Set start of sprite RAM to $0200.
LCB2B: stx SpritePagePos ;
LCB2D: jsr UpdateEnemies ;($F345)Display of enemies.
LCB30: jsr UpdateProjectiles ;($D4BF)Display of bullets/missiles/bombs.
LCB33: jsr UpdateSamus ;($CC0D)Display/movement of Samus.
LCB36: jsr AreaRoutine ;($95C3)Area specific routine.
LCB39: jsr UpdateElevator ;($D7B3)Display of elevators.
LCB3C: jsr UpdateStatues ;($D9D4)Display of Ridley & Kraid statues.
LCB3F: jsr $FA9D ; destruction of enemies
LCB42: jsr LFC65 ; update of Mellow/Memu enemies
LCB45: jsr LF93B
LCB48: jsr LFBDD ; destruction of green spinners
LCB4B: jsr SamusEnterDoor ;($8B13)Check if Samus entered a door.
LCB4E: jsr $8B79 ; display of doors
LCB51: jsr UpdateTiles ; tile de/regeneration
LCB54: jsr LF034 ; Samus <--> enemies crash detection
LCB57: jsr DisplayBar ;($E0C1)Display of status bar.
jsr LFAF2
jsr CheckMissileToggle
jsr UpdateItems ;($DB37)Display of power-up items.
jsr LFDE3

Aki nem ismerné az eredetit, itt megnézheti, vagy 3DS-re is meg lehet kapni az ambassador program keretén belül, én már próbáltam, csodás.

Station 37

Én tényleg nehezen találok szavakat, amikor ilyen fantasztikus játékokba botlok, amit — ingyen — adnak az embernek. A Station 37 egy egyszerű 16 bit érát felidéző platformer, ahol egy tűzoltóval kell embereket kimenteni. Fújni tudjuk a lángokat, csákánnyal ütni az utunkba kerülő törmeléket és ugrálhatunk is. Amint nálunk van egy delikvens, lelassulunk persze, úgy kell kivinnünk az embert.

Hárman csinálták: egyik fickó programozta és rajzolta (!), a másik szintén kódolt, míg egy harmadik írta hozzá a csodás zenét. Érdemes kipróbálni (Windows-os, de remekül elfut VMware-ben is), 16 bites bitplane effektek a háttérben a forróságot szimbolizálva, igényes, szép, dícséretes munka! A weblapjuk? Hibátlan.

Árok

SG.hu: CoV találkozó és demóparty Ajkarendeken

2011. július 29. és 31. között ismét megrendezésre kerül Ajkarendeken az Árok party, a 8 bites számítógépek megszállottjainak mekkája.

Az idei találkozó lesz a 13. a sorban – így idéntől az Árok party a világ leghosszabb történelemmel rendelkező retro-találkozója. Bátran ajánlható a retro számítástechnika szerelmesei, a Commodore 64, C= Plus4, Atari és Spectrum demoscene képviselői és persze a téma iránt érdeklődők számára. Lesz CoV találkozó, SIDrip Alliance koncert, Newcomer Ultimate Final ősbemutató, versenyek, vetélkedők és demoscene vetítések.

A dolog érdekessége, hogy Rucz Lajosék is mennek (a programon látható, hogy lesz CoV kerekasztal), visznek magukkal CoV relikviákat, Getto hazajön Amszterdamból, illetve tiszteletét teszi még Csernoch “Jean” János is Panamából.

Tökéletes

Rob Hubbard: Sanxion OST (1986)

* recorded from a real C64 with SID 6581R2 week 03/1983
* noise fixed with 1nF cap from ext-in to GND
* advanced noise removal with “HiFiSID buffer board”
* A/V port desoldered and modified to separate RCA outlets
* recorded using a Sony MZ-RH10 HI-MD recorder
* cuts and fade with Sound Forge 10
* 44KHz 16-bit stereo FLAC level 8

Q&A
Q: What is a “HiFiSID buffer board”?
A: It’s a SID-socket daughterboard for killing the SID’s background noise. The MOS 6581/8580 has five address lines and eight data lines connected to the C64′s buses. These lines are buffered with two 74(LS)245 octal bus tranceivers which effectively remove the background noise before it ‘arrives’ to the SID chip, without altering the audio output characteristics (like a noise-removing op.amp. solution does for example). The daughterboard utilizes the SID-socket’s DC input and GND for the octal bus tranceivers, draws power to the SID’s 12V and 5V inputs directly from the motherboard’s voltage regulators (7812 & 7805) and is grounded directly the PSU’s GND-pin. It was originally invented by the mighty Grue/Beyond Force, and perfected by the powerful Dr.Biotek and the notorious Lemming/FIG.

Link’s Awakening

Elkezdtem tolni újra minden idők egyik legjobb játékát, a Legend of Zelda: Link’s Awakeninget. Fogalmam sincs, mikor játszottam ezzel a csodálatos játékkal utoljára, viszont baromira visszajön minden, mintha csak tegnap lett volna. Mondom nekilendülök, nulláról. Hajrá! Megszerzem a kardot, végigjárom az egész térképet, beszélek, megvizsgálok mindent. Elmegyek az erdőbe, ott a mosómedve, mondja is, hogy rá kell szórnom valamit, még emlékszem is arra, hogy ő valójában az a fater átváltozva, akinek a házában felébredtem.


intro anim

De nem tudok rájönni, hogy megy tovább a sztori. Kb 30 perce voltam játékban, mondom, nem hiszem el, hogy egy 1993-as, majdnem 20 éves játék ki tud babrálni egy 34 éves, meglett (!) emberrel. Nekilendültem újra, végigbeszélek megint mindent mindenkivel, próbálok rálelni, hogy hol lehet az a nyomorult por, amit rá kell szórnom a mosómedvére, hogy továbbmenjen a sztori. Nem jöttem rá. Nem viccelek: háromszor végigvizslattam a rohadt térképet, mindent próbáltam, semmi.

Aztán azt mondtam: Józsi, nem nézheted meg a leírást. (Buzi-e vagy?)

Átvizsgáltam mindent még kétszer. Az összes nyomorult tile-t, az összes képernyőn, semmi. Aztán el kellett mennünk itthonról dolgokat csinálni. Hazajöttünk, nekilendültem újra. Hasztalan. HASZTALAN. Aztán elkezdtem logikával: Józsi, look, a játékban 30 perce vagy, baszki. Hidd el, hogy a megoldás ennél egyszerűbb kell, hogy legyen. Ott van valahol az orrod előtt.


az egyik első gameplay képernyő

Nem volt ott. Kifogtam az összes halat az egyik képernyőn. Próbáltam a majmot. Kiszedtem a boltból a Yoshi figurát, odaadtam az egyik NPC-nek, az adott egy másik dolgot, azt egy másik NPC-nek adtam, így tovább. Semmi, áll a sztori. Aztán visszamentem a boltba. A szállítószalagon ott mentek az itemek. Az egyik ezek közül egy kis erszény-féle. Ebben lenne a por? Kizárt. Ennyire nem gyökerek. 30 perc alatt jut el az ember a mosómedvés részig, kizárt, hogy egy ilyen pribék résznél lehet megkapni a mágikus port, amit a mosómedvére kell szórni, hogy továbbmenjen a sztori.

(Aki nem ismeri a részt: kis kampót kell távirányítani és időzíteni, egy futószalagon mennek mindenféle itemek, azt kell eltalálni — egy próba 10 pénzbe kerül, ami viszonylag drága a játék elején. Ez inkább amolyan fun cucc, mint story device.)

Nekiálltam kihalászni az erszényt a futószalagról. Másodikra sikerült. Időzítettem, befigyeltem, hol kell nyomni a gombot, másodikra jó lett. Hiába, a sok pixelrutin. Irány a mosómedve: működött. Ez rendben is van. De elkezdtem azon töprengeni, hogy miért volt ilyen nehéz. Elvégre az erszényt ennél egyszerűbben kellett volna megkapni. A boltból kiszedni a futószalagról nehéz cucc, ráadásul nem is nagyon lehet kísérletezni, mert viszonylag drága, főleg a kezdő játékosnak. Nem lehet, hogy ennyire bonyolult feladvánnyal induljon egy játék.

Megnéztem a leírást, hogy tényleg jól oldottam-e meg. Sőt, kettőt is megnéztem. Hát nem. Gyerekek, hát nem. Az erdőben van egy barlang, ahol — figyelem — el lehet mozdítani a köveket. EZ MI?! Az egész játékban, de tényleg, az ember fasza konkrétan négyrét áll, mert bármikor próbál csinálni valamit, mindig jön a szöveg, hogy nana, ezt nem tudod felemelni pusztakézzel. Sőt, tudom is, hogy lesz majd egyik kastélyban kampó, azokkal lehet köveket felemelni. Erre kiderül, hogy az erdőben levő barlangban el lehet tolni a köveket. Kész.

Szerintem ez design probléma. Lehet, hogy valahol jelezték, hogy ott tolhatók a kövek, volt valami clue, bár nem hiszem. Kicsit fasszal megbaszottnak érzem most magam. Megoldottam ugye a rejtélyt, de kb. ötször (5x) annyi idő alatt, ráadásul az igazi megoldásra nem jöttem rá. Grrrr.

És ez csak az első 30 perce a játéknak. Jegyzetelnem is kéne, akkor nem lenne annyi backtracking. Egy 34 éves gamer naplójának feljegyzéseit olvasták.

Függöny.

A Commodore 64 programozása

Nézzük csak meg ezt a music playert!

processor    6502
    org      $0810
             lda #$00
             tax
             tay
             jsr $1000
             sei
             lda #$7f
             sta $dc0d
             sta $dd0d
             lda #$01
             sta $d01a
             lda #$1b
             ldx #$08
             ldy #$14
             sta $d011
             stx $d016
             sty $d014
             lda #irq
             ldy #$7e
             sta $0314
             stx $0315
             sty $d012
             lda $dc0d
             lda $dd0d
             asl $d019
             cli
loop:        jmp loop
irq:         jsr $1006
             asl $d019
             jmp $ea81

    org $1000-$7e
    INCBIN “music.sid”

Sokan nem értenek ebből sokat, hiszen a fenti a #9-es fejezet példaprogramja egy most márciusban indult blog kezdeményezésből, ami megmutatja teljesen az alapoktól a Commodore 64 programozását. Onnan kezdve, hogy megírjuk, lefordítjuk és emulátorban futtatjuk életünk első Assembly programját, odáig, hogy egy viszonylag komplex interruptot írunk — fantasztikus!

Azt hiszem találtam magamnak egy új hobbit, már csak azt nem tudom, mikor fogok tudni neki időt szentelni. Soha életemben nem programoztam C64 assembly-t, viszont mindig is érdekelt! Gyerekkoromban ücsörögtem a könyvek fölött és arról álmodoztam, hogy egy napon majd én is. Úgy érzem, ez a nap egyre közelebb és közelebb jön, éljen.

(Fenti program egyébként annyit tesz csak, hogy ráteszi egy interruptra a music playert, ami innentől “magától” fog szólni. C64-en érdekes módon úgy kell zenét írni, hogy konkrétan programozni kell magát a hangchipet. Ezt persze a player kód megcsinálja, viszont ahhoz, hogy meg is szólaljon, nekünk kell mindig “meghívogatni” a lejátszót, viszont korrektebb rátenni egy interruptra, ami magától mindig megteszi ezt, mi pedig bőszen csinálhatunk mást — ez amolyan 8 bites multitaszk féleség. A fenti példa csak annyit csinál, hogy ráprogramozza a zenében levő assembly kódot az interruptra. Erős, mi?!)

The Wonderful Towers of Mr Imp

Akinek tetszett a specci grafikával megrajzolt 8 bit retró játék a “L’Abbaye des Morts” (januárban írtunk róla), mindenképpen skubizza meg a Wonderful Towers of Mr Imp című hasonló platformert — remek indie munka.

Ez már nem ingyenes, 5 dollárért (kevesebb, mint 1 rugó) kapjuk meg a teljes játékot, de van próba verziója is, amivel kipróbálhatjuk magunknak. Per Ellefsen április végén indította weblapját, ahol, önmeghatározása szerint “no-bullshit arcade games in the 8bit tradition” stílusban publikál.

A két minta screenshotból sok nem látható, érdemes kipróbálni. Windowsra készült, de virtualizálva is tökéletesen fut.

Rengeteg sikert kívánunk neki és mindenkinek, aki életben tartja ezt a tökéletes zsanrát és a ’80-as éveket. Vivát, de tényleg. Annyira örülök, hogy tudok blogolni ilyesmikről. Best. Hobbi. Ever.

I Fight Dragons – KABOOM!

A chicagoi NES-rock band, az “I Fight Dragons” elkészült a bemutatkozó albumuk felvételével, hamarosan boltokban a KABOOM! Kicsit (khm) poppos, viszont nagyon jól bánnak a 8 és 16 bites videójátékokkal, szeretem mindkét EP-jüket, ami vásárolható az iTunes boltból (Cool Is Just a Number, Welcome to the Breakdown). Aki még nem ismerné, nagyjából ez a hangzás:

Ez pedig a most feltöltött exkluzív koncertfelvételük (csaj már nincs velük egyébként, Brian Mazzaferri frontember meg átment … Háry Jánosba?):

Remek NES album 2011-ből: Equilibrium

Egy csodás Junkboy grafikával méghozzá!

Tracklist:

Kulor — 思い出の古里 (4:33)
Blitz Lunar — Sapling (3:46)
Velathnos — Poseidon (3:05)
nq\skrju — Waves to Lullaby (1:44)
C-jeff — Maroon (3:12)
RushJet1 — Calming Winds (2:28)
Tony Thai — どんな苦境でも諦めず (4:19)
FearofDark — Recovery (4:42)
surasshu — Rebirth (2:25)

Az album ingyenesen letölthető MP3 (gyorsabb letölteni tőlünk közvetlenül, poszt végén a direkt link) vagy FLAC formátumban, a kiadó oldalán pedig online is hallgatható. Nagyon élvezetes!

Gadget örömöm van, megosztanám

Írtam ma délelőtt egy posztot az Eldpack-et inspiráló Bitmap Bros játékokról. A hozzászólások között _alesi_ írta, hogy a játékok képi világát meghatározó grafikusa egy bizonyos Dan Malone. Nem tudtam róla semmit, viszont Lindával épp indulóban voltunk a Kopaszi Gátra, így már nem tudtam utánaolvasni.

Elvittem a deszkát, gondoltam, majd hunyorgok a napon vele. Leheveredtünk a fűbe (kurva jó a Kopaszi gátra kimenni piknikezni, ajánlom!), olvasgattunk, beszélgettünk, deszkázgattunk. Én bepöcköltem a szifon 4 “personal hotspot” funkcióját, egy éves wifis iPad modellemmel egyből belülről láttam a gridet, első dolgom az volt, hogy Dan Malone-nak utánaolvastam.

Kiderült, hogy a fickó rajzolta a C64-es (eredetileg: Amstrad CPC) játékot, a Cauldront (C64 kazettamásolós időkben a mi régióverziónk: Hexenküche), utána pedig az Antiriad című játékot, amit teljes egészében egymaga rajzolt. (YouTube longplay itt)

Az Antiriad volt az első komolyabb C64 befosás-behugyozás élményem, azt még az 1001 játék alapján játszottam, és minden élményem vele kapcsolatban annyi volt, amennyit ugye ott elolvashattam róla. Ne feledjük, hogy a ’80-as évek végén még a floppy játékmásolós rendszer volt itt a vasfüggöny mögött. Apró trivia: gyakorlatilag az Antiriaddal egy időben jelent meg a Nintendo eredeti Metroid játéka. A két játék közötti levő némi hasonlóság állítólag a véletlen műve.

A gáton deszkán olvasgatva megtudtam, hogy a játékot nemcsak teljes egészében Dan Malone pixelezte, de még egy 16 oldalas képregényt is rajzolt hozzá intrónak:

Kis keresgélés után megtaláltam a képregény beszkennelt PDF-jét is, rákoppintottam, majd megnyitottam iBooks alkalmazásban, és ott, a napsütésben, a Kopaszi Gáton gyakorlatilag a tenyeremen hordozva, végigolvastam.

Fantasztikus élmény volt ennyi év után ilyen közelségbe kerülni, és ennyi mindent megtudni a játékról ennyire egyszerűen és magától értetődően.

Valaki kérdezte a hozzászólások közt, hogy használom az iPad-et, ez a sztori egy tökéletes példa rá. Hatalmas termék, hatalmas az internet, uraim, egy fantasztikus korban élünk.