- Zaxxon recreation sa x86-64 assembler, direktang tumatakbo mula sa UEFI at may GPLv3 open source code.
- Nalutas ang mga hamon: lag-free input (mouse/joystick), tumpak na timing, at isang PPU-type na graphics engine na may 128 FPS at walang tunog.
- Compilation sa MASM x64 at pag-link sa MSVC; BOOTX64.EFI sa EFI/BOOT/ ng isang partition ng GPT, na hindi pinagana ang Secure Boot.

May mga proyekto na nagpapataas ng kilay at nag-iisip: wow, kakaiba ito. Ang Inkbox Software ay nagbigay-pugay sa lumang paaralan Ibinabalik ang isang klasikong isometric arcade game at ginagawa itong mag-boot nang direkta mula sa PC firmware, nang walang operating system sa pagitan. Ang kanilang muling pagbibigay-kahulugan sa Zaxxon (1982) ay higit pa sa isang kuryusidad: ito ay ganap na naka-program sa x86-64 assembly language at inilabas bilang open source sa ilalim ng lisensya ng GPLv3.
Ang pinaka-kapansin-pansin na bagay ay hindi lamang ang resulta, ngunit ang paglalakbay. Ang pilosopiya ng proyekto ay "back to metal": iwanan ang mga layer ng operating system, samantalahin ang hardware Kung walang mga tagapamagitan, ipinapakita nila na posible pa ring bumuo ng isang pinakintab na karanasan sa paglalaro kung saan kadalasan ay nakikita lang namin ang mga diagnostic tool. At oo, mayroong isang nagpapaliwanag na video na may mahaba at nakakaaliw na teknikal na pangkalahatang-ideya na nagdedetalye kung paano nangyari ang lahat at kung anong mga hadlang ang naranasan sa daan.
UEFI bilang panimulang punto: bakit mahalaga ang eksperimentong ito
Karamihan sa mga mapaglarong eksperimento sa UEFI Nananatili ang mga ito bilang mga demo, teknikal na laruan, o mga payload na nilo-load "sa loob" ng kapaligiran ng firmware. Dito, gayunpaman, ang diskarte ay naiiba: ang makina ay nagbo-boot at ang unang bagay na makikita mo ay ang laro, nang hindi dumadaan sa isang operating system o isang intermediate na menu. Ang detalyeng iyon ay gumagawa ng lahat ng pagkakaiba sa mga tuntunin ng pagiging kumplikado at karanasan ng user.

Ang UEFI ay ang modernong kapalit para sa luma BIOS At, bagama't mayroon itong mga serbisyo para sa pagpasok/paglabas, timing at video, Hindi ito idinisenyo upang mag-alok ng isang sopistikadong karanasan sa paglalaroPinipilit nito ang mga may-akda nito na magbayad para sa mga pagkukulang sa mababang antas ng engineering: mula sa kung paano magbasa ng mga kontrol sa real time hanggang sa kung paano gumuhit nang buong bilis nang hindi napunit o nakakainis na latency.
Ang halaga ng panukala ay doble. Sa isang banda, nagpapakita na ang firmware ay maaaring mag-alok ng higit pa sa mga utility pagsasaayos at pagsubok. Sa kabilang banda, nagsisilbi itong praktikal na aral sa kasalukuyang arkitektura ng PC, mga timing, at disenyo ng mga minimalist na graphics engine na hindi umaasa sa mga "luxury" na aklatan.
Binubuo ito ng Inkbox ng isang makapangyarihang ideya: pagod na sila sa operating system na nagtatakda ng bilis at mga limitasyon. Ang kanilang tugon ay magprograma sa wikang pagpupulong, nang walang operating system, upang masulit ang hardware.Ito ay hindi isang anti-anumang manifesto; ito ay isang deklarasyon ng malikhaing kalayaan, na may dagdag na insentibo na maaaring suriin ng sinuman ang code at i-fork ito salamat sa bukas na lisensya nito.
Ano ang Space Game para sa x64 at ano ang layunin nitong makamit?
Ang proyekto ay may simple at mapaglarawang pangalan: Ang Space Game para sa x64 ay isang Zaxxon libangan para sa x86_64 platform na naka-package bilang UEFI image. Walang mga emulator na kasangkot, o isang "tradisyonal" na port na nakasalalay sa SDL, DirectX, o katulad: ito ay isang BOOTX64.EFI binary na naglo-load na parang ito ang boot system.
Nangangahulugan ito na, sa sandaling ihanda mo ito sa isang disk na may EFI partition, Nag-boot ang PC at diretsong kumilosWalang desktop, walang background na serbisyo, walang window manager o kumplikadong driver: tanging ang firmware, binary at iyong hardware ang tumutugon nang eksakto sa kung ano ang hinihingi ng assembler dito.
Tapat sa diwa ng orihinal, Pinapanatili ng libangan ang isometric aesthetic at ang walong-bit na pakiramdam ng arcade. Upang makamit ito, gumawa sila ng isang uri ng makina na ginagaya ang isang klasikong PPU (Picture Processing Unit), ang uri na ginawang visual na istilo ang mga limitasyon. Isa itong teknikal na tango na nagpapadali din sa isang napakakontroladong pipeline ng pag-render.
Sa pampublikong repository nito ay makikita mo ang source code at mga tagubilin para sa pag-compile, pag-link at pagpapatakbo ng laro sa totoong hardware. Ang set ay inilabas sa ilalim ng GPLv3upang ito ay mapag-aralan, mabago at maipamahagi muli sa ilalim ng mga tuntunin ng isang lisensya na kilala sa komunidad ng libreng software.
Mga teknikal na hamon: input, timing, at offline na video
Alam ng sinumang naka-tinker sa UEFI na ang suporta sa keyboard, orasan, at graphics nito ay utilitarian, hindi "gamer". Ang unang malaking balakid ay ang pasukanAng karaniwang UEFI na keyboard ay nagpapakilala ng panloob na pagkaantala na parang clunky at hindi tumpak para sa paglalaro. Nakakaabala ang lag na ito sa kamadalian na hinihiling ng mga arcade, kaya humanap ng ibang ruta ang Inkbox: input ng mouse/joystick para sa mas tumutugon at tuluy-tuloy na karanasan.
Ang pangalawang hamon ay ang timing. Nang walang operating system na nagbibigay ng mga programmer na may mataas na resolusyonGamit ang mahusay na chewed monotonic timers at pampered thread planner, kailangan nating mag-imbento ng mga matatag na mekanismo para sa sukatin ang latency...upang ihanay ang mga frame at mapanatili ang pagkakapare-pareho ng engine ng laro. Ang video ng proyekto ay nakatuon sa puntong ito nang detalyado, dahil ang pagtukoy sa oras ay kalahati ng labanan sa gameplay.
Sa harap ng graphics, ang solusyon ay nagsasangkot ng isang renderer na kinokopya ang gawi ng isang retro PPU. Nagsisimula ito sa isang base buffer na may mababang resolution (256×256)Ito ay sapat na para sa lumang-paaralan console aesthetic, at mula doon ang panghuling imahe ay pinaliit at pinagsama-sama. Ang resulta ay presko at pare-pareho, na may aesthetic consistency na inaasahan mula sa isang remake na gumagalang sa orihinal na visual na pagkakakilanlan.
Nalampasan ang mga hadlang na iyon, Ang huling pagpapakita ay mukhang kasingkinis ng seda: 128 FPSMga tuluy-tuloy na animation at tumutugon na mga kontrol sa pagpindot. Gayunpaman, mayroong isang sadyang pagkukulang: walang tunog na ipinatupad sa ngayon. Ang isang solidong visual at gameplay na karanasan ay mas mainam kaysa sa pagkalat ng sarili nitong masyadong manipis sa unang pag-ulit.
Paano ito buuin: compilation at linking tools
Ang code ay nakasulat sa 64-bit assembler at umaasa sa mga tool ng Microsoft para sa pagpupulong at pag-link. Ang Microsoft Macro Assembler (MASM) sa x64 mode ay ginagamit para sa pagpupulong.Ang proseso ng pag-link ay pinangangasiwaan ng Microsoft Visual C++ Linker (MSVC Linker). Walang magic na kasangkot: ito ay mga kilalang tool sa loob ng ecosystem. Windows na gumagawa ng binary na katugma sa UEFI.
Ang resulta ng compilation ay isang karaniwang UEFI executable: BOOTX64.EFIAng file na iyon ay ang dapat ilagay sa landas ng boot inaasahan ng firmware: EFI/BOOT/, sa loob ng EFI system partition (ESP) ng isang disk na may GPT partition table. Kung galing ka LinuxGumagamit ka man ng macOS o isang modernong Windows system, ang istrukturang ito ay magiging pamilyar.
Ang pag-setup ay diretso na may ilang mga kinakailangan lamang. Pumunta sa mga setting ng firmware at huwag paganahin ang Secure Boot Upang maiwasan ang mga signature lock, piliin ang disk kung saan mo kinopya ang BOOTX64.EFI bilang boot device. Kung nasa lugar na ang lahat, agad na ilulunsad ng makina ang laro nang walang anumang karagdagang mga screen sa paglo-load.
Para sa mga gustong mag-eksperimento sa iba't ibang device, may malinaw na bentahe: Ang UEFI ay isang malawak na sinusuportahang pamantayan sa mga x86_64 machineHangga't ang iyong hardware ay 64-bit at ang iyong firmware ay nagpapatupad ng UEFI, dapat mong subukan ang muling paggawa nang walang masyadong problema. Palaging nakakatulong na i-verify na pinapayagan ka ng firmware na huwag paganahin ang Secure Boot.
Hardware scaling, debugging, at iba pang mga opsyon
Higit pa sa mga pangunahing kaalaman, ang proyekto ay nagdaragdag ng isang napaka-kagiliw-giliw na ideya sa mga tuntunin ng pagganap: isang "hardware scaling" mode Ginagamit nito ang iba pang mga processor ng application (ang mga core ng system) upang mabilis na ma-convert ang buffer ng laro sa isang 1024x1024 na target. Ito ay isang maliit na tour de force ng parallelization sa loob ng UEFI environment: ang laro ay gumuhit sa 256x256, at ang panghuling resolution ay pinarami nang hindi pinaparusahan ang frame rate.
Kung mas gusto mo ang pagiging simple o ang iyong kagamitan ay katamtaman, maaari mong i-disable ang scaling na iyon. Sa kasong iyon, itinatapon ng program ang 256x256 buffer sa screen kung ano man.Pagpapanatili ng isang mas perpektong pixel na hitsura habang binabawasan ang computational load. Depende sa iyong mga kagustuhan, maaari mong unahin ang visual na kadalisayan o dagdag na sharpness.
Para sa mga gustong makita ang "ang lakas ng loob", may mga toggle na idinisenyo para sa pag-unlad. Mayroong isang pagpipilian upang ipakita ang mga hitbox (ang mga collision box) na makatuwiran lamang kung aktibo ang pag-scale ng hardware, dahil mas malinaw at mas mapapamahalaan ang overlay sa mas matataas na resolution.
Maaari ding i-activate ang diagnostic overlay. Ang debug mode ay nagtatapon ng impormasyon sa consoleKabilang dito ang mga detalye ng control input at bilang ng column ng render engine. Kung inaayos mo ang mga timing, latency, o katumpakan ng pagbasa ng device, napakahalaga ng data na ito para maunawaan kung ano ang nangyayari sa bawat frame.
Pagganap at karanasan sa paglalaro
Ang pinakamahusay na tumutukoy sa eksperimentong ito ay kung ano ang pakiramdam niya sa pamamahala. Makinis na gameplay sa 128 FPS At ang tuluy-tuloy na tugon ay lumilikha ng isang napaka-arcade na pakiramdam: lahat ay nangyayari sa eksaktong sandali, nang hindi nag-o-overthink ang system. Ang immediacy na ito ay resulta ng masusing kontrol sa pipeline: mas kaunting mga layer, mas kaunting kawalan ng katiyakan.
Kahit na walang tunog, ito ay isang ganap na kasiya-siyang laro. Ang diin ay sa gameplay at visual na kalinawanSa isang palette, sprite, at pag-scroll na pumupukaw sa walong-bit na panahon nang hindi gumagamit ng mga modernong filter o hindi kinakailangang post-processing. Kung pupunta ka para sa nostalgia, mananatili ka para sa pagtatanghal.
Ang isyu ng pasukan ay nararapat ng hiwalay na palakpakan. Iwasan ang UEFI "standard" na keyboard —dahil sa built-in na pagkaantala nito— at ang pag-opt para sa mouse/joystick ay hindi lamang maiiwasan ang isang problema, ngunit nagpapatibay sa pagkakakilanlan ng arcade ng muling paggawa. Ito ay kapansin-pansin sa katumpakan kapag nag-aayos ng mga tilapon at sa kung gaano kahusay na pinahihintulutan ng laro ang mabilis na pagwawasto.
Sa kasalukuyang mga multicore system, ang scaling mode ay ginagawang 1024x1024 na display kaagad. Ipamahagi ang scaling work sa mga core Binibigyang-daan ka nitong mapanatili ang isang 128 FPS frame rate nang hindi nagpapawis, habang sa simpleng mode ang "raw" na 256×256 aesthetic ay nag-aalok ng hindi kompromiso na retro texture.
pagiging tugma at kakayahang magamit
Isa sa mga lakas ng panukalang ito ay ang saklaw nito. Ang binary ay idinisenyo upang tumakbo sa anumang x86_64 machine na may UEFI, na sumasaklaw sa napakalawak na spectrum ng mga desktop PC at laptop kontemporaryo. Walang partikular na modelo o tatak ang kailangan; ito ay sapat na upang matugunan ang pamantayan at payagan ang EFI na magsimula nang walang hadlang.
Kung gusto mong mag-tinker, bukas ang pinto. Kasama sa repositoryo ng “Space Game para sa x64” sa GitHub ang code, dokumentasyon, at mga mapagkukunan para makapag-compile at makabuo ka ng sarili mong imahe. Kahit sino na kumportable na sa MASM at sa MSVC linker ay mararamdaman sa bahay; at ang mga walang perpektong dahilan para matuto.
Ang paglilisensya nito sa ilalim ng GPLv3 ay hindi maliit na detalye. Tinitiyak ng pagpipiliang iyon na babalik ang kaalaman sa komunidadAt ang anumang derivative ay magpapanatili ng parehong pagiging bukas. Para sa mga proyektong pang-edukasyon o reverse engineering lab, ito ay isang kayamanan: maaari mong basahin, baguhin, ihambing, at sukatin nang walang pagmamay-ari na mga paghihigpit.
Ang kwento sa likod nito: motibasyon at mga aral na natutunan
Bakit nakikisali sa ganitong gulo? Ang motibasyon ng may-akda ay kasing teknikal at pilosopiko.: upang alisin ang mga hadlang ng operating system, upang muling matuklasan ang programming Sa gitna ng bagay, at muling makuha ang arcade essence ng "what you see is what you get." Ang diwa na ito ay isinasalin sa hindi gaanong sinabi at epektibong mga pagpipilian sa disenyo.
Ang video na kasama ng proyekto ay isang bonus. Ito ay hindi isang trailer, ito ay isang masterclass Ito ay tungkol sa kung paano haharapin ang mga tunay na limitasyon ng firmware at kung paano gawin ang mga ito sa isang nakakahimok na karanasan sa paglalaro. Ang sinumang nahirapan sa mga timer, latency, at pagboto ng device ay magpapahalaga sa antas ng detalye.
Mayroong pag-aaral sa lahat ng dako: mula sa pagpili ng mga input device hanggang sa drawing pipeline at scaling. Gayahin ang gawi ng isang retro PPU Ito ay hindi lamang nostalgia; isa itong pragmatikong desisyon na naglilimita sa problema, umiiwas sa mga panlabas na dependency, at nagbibigay ng pagkakaugnay-ugnay sa panghuling aesthetic.
Ang diskarte na ito, sa pamamagitan ng paraan, ay nagreresulta sa isang code na maaaring basahin at pag-aralan. Ang programming sa x86-64 assembler ay hindi karaniwan ngayonAt mas mababa pa sa antas na ito ng mapaglarong ambisyon. Para sa kadahilanang ito, ang halaga ng edukasyon ng proyekto ay napakalaki para sa sinumang tunay na gustong maunawaan kung ano ang ginagawa ng hardware sa bawat pagtuturo.
Mga praktikal na detalye para sa pagsubok nito sa iyong computer
Kung gusto mong malaman, narito ang pangunahing ruta: Nag-compile ka sa MASM sa 64 bits, nag-link ka sa MSVC at makukuha mo ang BOOTX64.EFI binary. Kokopyahin mo ang file na iyon sa EFI (ESP) partition ng isang disk na may GPT table, ayon sa path na EFI/BOOT/, at ihanda ang iyong firmware na mag-boot mula sa device na iyon nang hindi pinagana ang Secure Boot.
Ang ilang mga firmware ay nagdaragdag ng kanilang sariling "pagkatao", kaya tandaan. Maaaring kailanganin mong pilitin ang boot order O piliin ang disk nang manu-mano mula sa mabilis na boot menu. Sa sandaling lumitaw ang logo ng UEFI ng gumawa at nagsimula ang proseso ng boot, kung tama ang landas, direktang pupunta ka sa laro.
Para sa mga pagsasaayos ng pagganap, walang misteryo. I-enable ang hardware scaling kung gusto mo ng 1024x1024 Sa pinakamataas na kalinawan at maraming mga core, huwag paganahin ito kung naghahanap ka ng malinis na 256x256 na imahe. Kung nagde-debug ka, ipakita ang mga hitbox at panel ng diagnostics: makikita mo ang naitala na input at ang bilang ng column na pinangangasiwaan ng engine nang real time.
Bilang isang tala sa kaligtasan: Ang hindi pagpapagana ng Secure Boot ay isang kinakailangan para sa binary na ito.Tandaang ibalik ang pagbabagong ito kung gusto mo, kapag tapos ka nang maglaro. Hindi ito isang hindi pangkaraniwang hakbang sa mga proyekto ng UEFI sa bahay, ngunit magandang tandaan kung nagtatrabaho ka sa mga production team.
Higit pa sa laro: epekto at mga posibilidad
Ang pagtutuon lamang sa retro nod ay magiging hindi patas. Ang gawaing ito ay nagbubukas ng pag-uusap tungkol sa kung ano ang maaaring gawin sa UEFI May disiplina sa engineering at malinaw na mga layunin. Ngayon ito ay isang klasikong arcade game; bukas ito ay maaaring isang advanced na graphics utility, isang hardware testing environment, o mga interactive na karanasan na hindi nakadepende sa pag-install ng kahit ano sa isang disk.
Para sa eksenang pang-edukasyon, ang apela ay kaagad. Isang mahusay na nagkomento na imbakan ng assemblerAng dokumento, na sumasaklaw sa input, timing, graphics, at light parallelization sa loob ng UEFI, ay isang natatanging mapagkukunan sa pag-aaral. Mahirap isipin ang isang mas maliwanag na lab para sa pag-unawa sa modernong arkitektura ng PC nang walang mga layer ng operating system.
Sa maker at retro community, malinaw din ang ripple effect. Upang mabawi ang ganap na kontrol sa pipeline Ito ay mapang-akit. Nakuha nitong muli ang diwa ng DIY noong '80s at dinadala ito sa isang moderno, standardized na kapaligiran. Marami ang magiging inspirasyon na mag-eksperimento sa kanilang sariling mini UEFI engine batay sa mga prinsipyong ito.
At para sa mga nais lamang maglaro saglit, ang panukala ay higit pa sa paghahatid. Ito ay mabilis, ito ay malinis, at ito ay kamangha-manghang. I-boot ang iyong PC at dumiretso sa isang binagong classic nang hindi nakakakita ng desktop. Kung naghahanap ka ng isang arcade session na walang distraction, mahirap humingi ng higit pa.
Ang isang ideya na lumaganap sa buong proyekto ay ang awtonomiya. Kapag kinokontrol mo ang bawat pagtuturo, kinokontrol mo ang karanasan.Hindi ka nakadepende sa mga update sa OS, task scheduler, o driver. May mga gastos—walang tunog sa ngayon, walang comfort layer—ngunit bilang kapalit ay makakakuha ka ng isang kaaya-ayang teknikal na laruan at isang manifesto ng pagiging malikhain.
Kabilang sa maliliit na teknikal na hiyas, ang alternatibong pamamahala ng input sa clunky na UEFI na keyboard at ang paggamit ng mga application processor para sa scaling ay namumukod-tangi. Ang detalyeng iyon ng "light" parallelization sa loob ng firmware Ito ay isang paalala na ang pamantayan ay nag-aalok ng mas maraming pahinga kaysa sa karaniwan nating pinagsamantalahan sa araw-araw.
Kung masisiyahan ka sa pag-alam sa source code at commits, magkakaroon ka ng magandang oras sa pagsusuri sa organisasyon ng proyekto, ang kalinawan ng mga nakagawian, at kung paano nareresolba ang mga edge na kaso. Ang desisyon na ibahagi sa ilalim ng GPLv3 Tinitiyak niya na walang sinuman ang nagpapanatili ng kanilang alas: kung ano ang natutunan dito ay umiikot at lumalaki sa mga kontribusyon ng iba.
Sa huli, ito ay higit pa sa isang simpleng port, Ito ay isang pahayag ng layunin na nakabalot sa mga pixel.Binubuhay nito ang isang paraan ng pagprograma at paglalaro —nang walang anesthesia o harnesses—na may kagandahan pa rin sa 2025. At ginagawa nito ito nang may paggalang sa orihinal at teknikal na pagpapatupad upang magkatugma, simula kung saan walang inaasahang makakita ng laro: ang firmware mismo.
Masigasig na manunulat tungkol sa mundo ng mga byte at teknolohiya sa pangkalahatan. Gustung-gusto kong ibahagi ang aking kaalaman sa pamamagitan ng pagsusulat, at iyon ang gagawin ko sa blog na ito, ipakita sa iyo ang lahat ng mga pinaka-kagiliw-giliw na bagay tungkol sa mga gadget, software, hardware, teknolohikal na uso, at higit pa. Ang layunin ko ay tulungan kang mag-navigate sa digital na mundo sa simple at nakakaaliw na paraan.