Dreamcast Mimarisi

Rodrigo Copetti tarafından hazırlanan pratik bir analiz

EuropaYou tarafından çevrildi

Erişilebilirlik araçları veya eski tarayıcılar kullanıyorsanız, 'klasik' sürüme geçin.




Destekleyici görüntüler

Model

Image
Dreamcast.
Japonya'da 29/11/1998, Amerika'da 09/09/1999 ve 14/10/1999'da Avrupa'da satışa sunuldu.

Anakart

Image
Anakart
Revizyon 'VA1' gösteriliyor.
Resmi dokümanlarda sistemin 128KB flash bellek içerdiği belirtilirken, bu anakart nedense 256KB EEPROM yongası içeriyor.
Pil ve denetleyici bağlantı noktaları 'Ön panel' adı verilen bir ek kartta bulunuyor.
Image
Önemli parçaları etiketlenmiş anakart

Diyagram

Image
Ana mimari diyagramı
Önemli veri yolları genişlikleri ve hızları ile etiketlenmiştir.

Giriş

Sega Dreamcast, hem oyun geliştiricilerine hem de konsol oyuncularına hitap etmek için selefine (Satürn) göre birçok yeni özellik sundu. Bu Sega’nın konsol pazarını fethetmek için son girişimi olsa da, Dreamcast’te öncülük edilen bazı teknolojiler devam etti ve gelecekteki ana akım cihazlara taşındı.


İşlemci (CPU)

Şaşırtıcı olmayan bir şekilde, Sega CPU’larını geliştirmek için yine Hitachi’yi seçti. Eğer önceki Sega Saturn hakkındaki makaleyi okuduysanız, işte size SH işlemcinin bir sonraki nesli: muazzam 200 MHz hızında çalışan SH-4 [1]. Peki, bu işlemci hakkında ilginç olan ne?

Ekstra iş

Bir oyun konsolu CPU’sunun ortak işleri arasında bir oyunun mantığını idare etmek, düşman yapay zekasını çalıştırmak ve GPU’yu talimatlarla beslemek yer alır. Dreamcast’te SH-4, perspektif dönüşümlerinin hesaplanması gibi geometri verilerini işleyerek grafik işlem hattının çoğunda da yer alır. Sonuç olarak, vektör işlemlerini hızlandırabilen 128 bit SIMD birimi içerir [2].

Bellek erişiminin iyileştirilmesi

CPU, sanal adresleme için özel bir Memory Management Unit (Bellek Yönetim Birimi) veya ‘MMU’ içerir, bu CPU’nun fiziksel bellek adres alanı 29 bit genişliğinde olduğu için bu yararlıdır. Böylece dört TLB’nin yardımıyla programcılar 32 bitlik adresleri performans kaybına uğramadan kullanabilirler.

Adresleme için sadece 29 bit gerektiğinden, fazladan üç bit bellek korumasını kontrol eder, sırasıyla bellek haritasını değiştirir ve önbelleği atlatır [3] [4].

Bu özelliklerin kullanılıp kullanılmayacağına programcı karar verir. Bu sistem için oyunlar kesinlikle bellek korumasına ihtiyaç duymaz ve MMU’nun açılışta manuel olarak etkinleştirilmesi gerekir.

UMA yok ama…

Bu sistem, tanınmış bir rakibi gibi katı Unified Memory Architecture (Birleşik Bellek Mimarisi) veya UMA etrafında tasarlanmamış olsa da, G/Ç erişimini GPU’ya devretmektedir. Bu da CPU’nun kendi özel RAM’i ya da seri arayüzü (ki bunlar da bağlı) dışında bir şey alması gerektiğinde GPU’dan talepte bulunması ve gerekirse beklemesi gerektiği anlamına geliyor.

Özel sorgular

Bu CPU aynı zamanda Paralel I/O veya ‘PIO’ olarak adlandırılan ve aynı anda birden fazla I/O konumunu manipüle etmek için kullanılan benzersiz bir işleve sahiptir. Sega bu pinleri CPU’nun GPU’nun video modunu manipüle edebilmesi için bağlamıştır (bu konuda daha sonra daha fazla ayrıntı verilecektir).


Grafikler

GPU paketi 100 MHz hızında çalışan Holly adlı özel yapım bir çiptir, VideoLogic (şimdi Imagination Technologies olarak biliniyor) tarafından tasarlanmış ve NEC tarafından üretilmiştir. Holly’nin 3D çekirdeği VideoLogic’in PowerVR2’si (‘PowerVR Series2’ ve ‘CLX2’ olarak da adlandırılır).

Image
Sonic Adventure (1999).

VideoLogic, 3D motorunun yapımı için Karo Tabanlı Ertelenmiş Görüntü Oluşturma (TBDR) adı verilen alternatif bir yaklaşım seçti.

TBDR, tüm kareyi bir kerede oluşturmak yerine (geleneksel Anında Mod Oluşturucuların veya ‘IMR’nin yaptığı gibi [5]), oluşturma alanını ’karo’ adı verilen birden çok bölüme ayırır. Ardından, her bir karo üzerinde ayrı ayrı render işlemini gerçekleştirir ve sonuç nihai kareyi oluşturmak için birleştirilir [6].

Bu yenilikçi tasarım ilginç avantajları da beraberinde getiriyor:

Imagination’ın bu verimli teknolojiyi ileriye taşıyarak ilk nesil iPhone, iPhone 3G, Nokia N95 ve Dell Axim x51 gibi inanılmaz sayıda cihaza güç veren Seri 4 PowerVR çekirdeklerini üretmesi hiç de şaşırtıcı değil.

Mimari

Dreamcast’in GPU’sunun iki ana bileşenine bir göz atalım [7]:

Karo Hızlandırıcı

Image
Karo Hızlandırıcının Mimarisi.

Render işlemi başlamadan önce, Karo Hızlandırıcı olarak bilinen bir bileşen ön işleme gerçekleştirir. İşlem, geometrinin render edileceği birkaç 32x32 karo kutusu tahsis ederek başlar.

Ardından, Karo Hızlandırıcı:

  1. CPU tarafından verilen geometri verilerini ve çizim komutlarını alır (DMA veya geleneksel aktarımları kullanarak).
  2. Bu verileri dahili bir formata dönüştürür.
  3. Geometriyi koordinatlarına göre her bir karo’ya dağıtın. Geriye kalan geometri ise atılacaktır.
  4. Ortaya çıkan Görüntüleme Listelerini oluşturur.

Bu Görüntüleme Listeleri daha sonra 3D motoru tarafından yorumlanır: PowerVR2.

PowerVR2 Çekirdeği

Image
PowerVR2 Çekirdeğinin Mimarisi.

Grafiklerin hayata geçirildiği yer burasıdır, Karo Hızlandırıcıdan alınan Görüntü Listeleri çekirdeğe dahili bir çerçeve arabelleği kullanarak tek bir karenin geometrisini oluşturmasını söyler. Süreç şöyledir:

  1. Image Synthesis Processor (Görüntü Sentez İşlemcisi) veya ‘ISP’ ilkelleri (üçgenler veya dörtlüler) alır ve görünmeyen çokgenleri kaldırmak için Hidden-Surface Removal (Gizli Yüzey Kaldırma işlemi) gerçekleştirir. Ardından, Z tamponlarını ve şablon tamponlarını hesapladıktan sonra veriler, diğerlerinin arkasında görünecek çokgenlerin işlenmesini önlemek için Depth Testing (Derinlik Testi) ve bir 2B çokgenin (Mask (Maske) olarak da adlandırılır) arkasında yer almaları halinde görünmeyecek geometriyi ayıklamak için Stencil Tests (Şablon Testleri) işemlerinden geçer.
    • Bu testlerin boru hattının başlangıcında nasıl etkin bir şekilde gerçekleştirildiğine dikkat edin. Bunun aksine, geç z-tamponlama kullanan önceki konsollar geometriyi işlem hattının sonunda atmaktadır. ISP yaklaşımı, sonunda atılacak olan geometrinin işlenmesini önler [8] ve böylece kaynak tasarrufu sağlar.
  2. Texture and Shading Processor (Doku ve Gölgelendirme İşlemcisi) veya ‘TSP’ karo alanı üzerinde renklendirme, gölgelendirme ve çoklu efektler uygular.
    • Dokular karo dışa aktarılana kadar uygulanmaz, yani ortaya çıkan fazla çizim (varsa) dolgu oranını düşürmez.

İşlem tamamlandıktan sonra, işlenen karo VRAM’deki ana çerçeve arabelleğine yazılır. Bu işlem tüm karolar bitene kadar tekrarlanır. İşlem tamamlandığında, ortaya çıkan çerçeve arabelleği Video kodlayıcı tarafından seçilir ve video sinyali aracılığıyla gönderilir.

Büyük resim

Mimari farklılıkların yanı sıra, Tekstür ve Gölgeleme İşlemcisi, bu konsolun eski Saturn’dan ne kadar uzak olduğuna dair bir fikir veren birçok yeteneğe sahiptir. İşte bazı önemli örnekler:

Detay Kazanma

Holly artık selefine göre ~10 kat daha fazla poligon çizebiliyor, işte model tasarımlarının artık o kadar da sınırlı olmadığını gösteren bir Önce ve Sonra örneği. Onları kurcalayın ve ne kadar fark olduğunu görün!

Tel ÇerçeveYüzeyDokular
3D model
Satürn için Sonic R (1997).
286 üçgen (veya 185 dörtgen).
Tel ÇerçeveYüzeyDokular
3D model
Dreamcast için Sonic Adventure (1999).
1001 üçgen.

Video Modları

Video sistemi birden fazla ekran türünü ve formatı destekleyecek şekilde tasarlanmıştır, bu nedenle video kodlayıcı aşağıdaki sinyal türlerini destekleyen tek şekilli bir sokete çıkış verir:

Şimdi, Dreamcast bunların hepsini aynı anda kodlayamaz, bu nedenle GPU ve Ses işlemcisi, istenen sinyali oluşturmak için hangi video/ses veri yollarının etkinleştirileceğini koordine eden Görüntü Modu adlı bir register içerir. CPU, takılan kablonun türünü algılar (video konektörünün hangi ‘seçme bitlerinin’ aktif olduğunu kontrol ederek) ve GPU’ya gerekli değerleri yazar. Son olarak, değerler Ses işlemcisine iletilir.

VGA kesinlikle aşamalı bir sinyal türü olduğundan (geleneksel interlaced sinyalin aksine), yalnızca interlaced video için tasarlanmış oyunlarda bazı uyumluluk sorunları ortaya çıkmıştır. Bu oyunların kodlarında açıkça belirtilmiştir ki oyun, VGA üzerinde görüntülenmeyecek ve kullanıcı VGA kablosunu başka bir türle değiştirene kadar CPU oyunu engelleyecektir.


Ses

Ses işlevselliği, Yamaha tarafından üretilen özel bir çip olan AICA tarafından yönetilir. Bu, Satürn’de kullanılan SCSP’nin geliştirilmiş bir versiyonudur ve dört bileşenden oluşur:

Geliştirmeye yardımcı olmak için, resmi SDK farklı ihtiyaçlar (sequencing, decoding, vb.) için birden fazla ses sürücüsü içeriyordu.

Evrim

Mega Drive/Genesis günlerinden bu yana çok yol kat ettik, ses sentezinde ne kadar ilerleme kaydedildiğini göstermek için, burada aynı kompozisyonu kullanan biri Mega Drive ve diğeri Dreamcast için iki oyun örneği var:

Mega Drive için Sonic 3D Blast (1996).
Bir önceki model, anında ses sinyalleri üretmek için FM sentezi gerçekleştirir.
Dreamcast için Sonic Adventure (1999).
Yeni ses alt sistemi PCM örneklerini sorunsuz bir şekilde işler.

Sonic Adventure’ın bestecileri bir FM çipi programlamak yerine müziklerini kendi bünyelerinde üretmiş ve daha sonra CRI Middleware tarafından geliştirilen kayıplı bir format olan ’ADX’e kodlamışlardır. Dolayısıyla, 64 PCM kanalından yalnızca ikisini (stereo) kullanır.

ADX sıkıştırması, oyunun bellek veya bant genişliği sınırlaması olmadan GD-ROM’dan veriyi çözümlemesine ve akışa geçirmesine olanak tanır. Ana CPU ve ARM7’nin iş yükünü dengelemek için birden fazla yaklaşım olduğundan sürücü birçok şekilde uygulanabilir.

Uyanık Kalma

Bir şekilde, bu çip aynı zamanda BIOS’a Gerçek Zaman Saati (RTC) sağlamaktan da sorumludur, ayrıca AC gücü olmadan çalışmaya devam etmek için bir saat piline bağlıdır.


İşletim Sistemi

2 MB’lık ’Sistem ROM’u, konsol açıldığında oyunu başlatan bir BIOS veya küçük bir kabuk depolar.

BIOS ayrıca GD-ROM sürücüsünden okuma gibi G/Ç işlevlerini [9] basitleştirmek için oyunların kullandığı rutinler içerir.

Kabuk

Geçerli bir oyun diski takılı değilse, konsol grafik kabuğunu önyüklemeye devam eder.

Image
Disk olmadan önyükleme yaptıktan sonra shell.

Kabuk, kullanıcının aşağıdaki gibi temel ancak gerekli görevleri yerine getirmesini sağlamak için basit bir grafik kullanıcı arayüzü içerir:

  • Henüz başlamadıysa oyunu başlatır.
  • VMU’da depolanan kayıt verilerini değiştirir (bu cihaz hakkında daha sonra daha fazla ayrıntı!).
  • Takılı bir Ses CD’si varsa müzik çalar.
  • Bazı ayarları değiştirir (Tarih, Saat, Ses, vb.).

Windows CE

Dreamcast’in duyurulmasından bu yana, konsolun Windows CE’yi çalıştırabileceği söyleniyordu: Windows’un gömülü cihazlarda kullanılmak üzere tasarlanmış sadeleştirilmiş bir sürümü. Bazı kullanıcıların konsollarında tam bir Windows CE masaüstü ortamı görmeyi bekledikleri düşünüldüğünde bu biraz yanıltıcıdır.

Image
Windows CE logosu kasanın ön tarafına damgalanmıştır.

Gerçekte, bu ‘işletim sisteminin’ amacı Nintendo’nun Nintendo 64 ile yaptığına çok benziyordu: programcılara belirli işlemleri basitleştirmek için adil bir soyutlama katmanı sağlamak.

Microsoft, Windows CE’yi Dreamcast’e getirmek için Sega ile birlikte çalıştı [10]. Sonuç, grafik, ses ve hata ayıklama sağlamak için gereken minimum bileşenlere sahip bir CE alt kümesiydi. Bu, geliştirme için Microsoft’un yıldız IDE’si Visual Studio’nun kullanımını içeriyordu.

Bazı geliştiriciler bu seçeneği çok cazip buldu. CE ile birlikte gelen ses-grafik çerçevesi DirectX 6’dan başkası olmadığından, o dönemin binlerce PC oyunu teorik olarak Dreamcast’e kolayca taşınabilirdi…

Ancak Dreamcast ile geleneksel PC arasındaki mimari farklılıklar göz ardı edilemeyecek kadar büyüktü [11]. Ayrıca, bu sistemin yerleştirilmesi oyunun yükleme süresini artırdı (sonuçta, ’OS’nin bir diskten yüklenmesi gerekiyordu) ve Windows CE, Dreamcast’in kaynaklarının önemli bir kısmını tüketti (şaşırtıcı olmayan bir şekilde, PC’ler zaten bundan muzdaripti).

Sonunda, ‘Dreamcast için Windows CE’ geliştiriciler için tercih edilen bir başka SDK oldu (genellikle Dragon SDK olarak anılır). Bununla birlikte, önemli sayıda Dreamcast oyunu Windows API’lerini ve DirectX’i seçti.


Giriş/Çıkış

GPU ayrıca Sistem Veriyolu adı verilen G/Ç’nin çoğunu işlemek için başka bir modül içerir. Aşağıdaki arayüzleri sağlar:


Oyunlar

Geliştirme esas olarak C veya C++ ile yapılmıştır. Mevcut C++ derleyicileri başlangıçta işlevsellik açısından çok sınırlı olduğundan, ilk başta C önerilen seçimdi.

Sega ayrıca Sega Katana Geliştirme Kutusu adı verilen PC benzeri bir kule şeklinde geliştirme donanımı da sağlamıştır. Bu, geliştirme için geliştirilmiş G/Ç’ye sahip Dreamcast donanımıdır. Ayrıca resmi Katana SDK ve Windows 98 PC’ye kurulacak araçları içeren bir CD ile birlikte geldi.

Geliştiricilerin bunun yerine Dragon SDK’yı seçmesi durumunda, DirectX 6.0 ve Visual C++ 6.0 da onlar için kullanılabilirdi.

Medya Ortamı

Oyunlar GD-ROM’larda saklanır; bunlar, daha yüksek yoğunluğa sahip CD-ROM’lar olup (bir gigabayt kapasitesine ulaşır), sadece çukurların daha yoğun bir şekilde yerleştirilmiş olduğu CD-ROM’lardır. Hızı 12x’dir, bu da Satürn’ün 2x CD okuyucusuna kıyasla oldukça iyidir.

Çevrim içi platform

Dreamcast, oyunların çevrim içi oyun için çevirmeli bir hizmeti ‘aramak’ için kullanabileceği bir modem modülü yüklü olarak gönderildi. Sega iki hizmet sağlıyordu: SegaNet (Amerika ve Japonya’da kullanılan) ve Dreamarena (Avrupa’daki muadili).

Oyuncular, bazı oyunlarla birlikte verilen ekstra bir disk olan DreamKey’i kullanarak bir hizmete kaydoldular. DreamKey bir hesap açmak için bir web tarayıcısı sağlıyordu. Başlangıçta, DreamKey bölgeye bağlı olarak önceden yapılandırılmış bir hizmet olarak geldi, ancak daha sonraki revizyonlar kullanıcıların herhangi birine bağlanmak için ISS ayarlarını değiştirmelerine izin verdi.

Ayrıca, kullanıcının internette PC tarzı sörf yapmak istemesi durumunda satın alınabilecek Dreamcast markalı bir klavye ve fare de vardı.

Ne yazık ki, SegaNet ve Dreamarena piyasaya sürüldükten iki yıl sonra durduruldu. Bu nedenle, bu tür hizmetler ekstra araçlar kullanılarak taklit edilmediği sürece (DreamPi gibi, bir kullanıcı topluluğu tarafından tutulan sunucuların yardımıyla bunları kopyalayan bir Raspberry Pi görüntüsü), yalnızca bunlara dayanan oyunlar kullanılamaz hale geldi.

Etkileşimli hafıza kartı

Dreamcast’in sahip olduğu bir diğer yenilikçi özellik de Visual Memory Unit (Görsel Bellek Birimi) veya ‘VMU’ idi. Kontrol cihazına takılıdır ve bir bellek kartı olarak hizmet etmenin yanı sıra, [12] içeren tam teşekküllü bir cihazdır:

Image
VMU kontrolcüden ayrılmış.
Image
VMU takılı olmayan kontrolör.
Image
VMU takılı kontrolör.
  • Bir Sanyo LC86K87: 8 bitlik düşük güçlü bir CPU.
  • Dört ek simgeye sahip bir 32x48 Tek Renkli LCD: Çerçeve tamponu olarak 196 B XRAM (harici RAM) kullanılarak komut verilir.
  • İki seri konektör: Biri IN ve diğeri OUT için.
  • Altı fiziksel düğme: VMU kontrol ünitesinden ayrıldığında kullanılır.
  • 16 KB’lık bir Maske-ROM: BIOS-IPL’yi depolar.
  • 64 KB Flash: 32 KB tek bir programı saklamak için (konsoldan aktarılan) ve diğer 32 KB Dreamcast’in kayıtlarını tutmak için.
  • 512 B RAM: 256 B sistem için ayrılmıştır ve program için yalnızca 256 B kullanılabilir.

VMU’nun iki çalışma modu vardır:


Korsanla Mücadele ve Homebrew

Tescilli GD-ROM formatının kullanılması, oyunların izinsiz kopyalarının üretilmesini (ve diğer konsollarda çalıştırılmasını) engellemeye yardımcı oldu. Dreamcast oyunları aynı zamanda bölge kilitlidir, yani bir konsol farklı bir bölge için tasarlanmış bir oyunu çalıştırmayı reddedecektir.

Korsan Korumasını Baypaslamak

Uygulamada, Sega’nın büyük bir arka kapıyı açık bırakması nedeniyle korsan karşıtı önlemler tamamen işe yaramazdı: MIL-CD. Music Interactive Live-CD ya da ‘MIL-CD’ Sega tarafından bir Audio-CD’yi interaktif programlarla genişletmek için yaratılmış bir formattır… ve Dreamcast bununla uyumludur [13].

Sonunda, yetkisiz ticari diskler (hile yükleyiciler, film oynatıcılar, vb.) Sega’nın onayı olmadan konsolda çalışmak için MIL-CD’ler olarak gizlendi. Daha sonra, farklı bilgisayar korsanlığı toplulukları bu açığı inceledi ve CD-ROM’ları kullanarak korsan oyunları önyüklemek için geçici bir çözüm buldu. Bu da internette durdurulamaz bir ISO dalgasının yayılmasına neden oldu.

Sonrasında bazı sorunlar ortaya çıktı: GD-ROM’lar bir gigabayt veri depolayabilmesine rağmen, CD-ROM’lara sadece ~700 MB sığabiliyordu, peki ’ripper’lar daha büyük oyunları CD’ye sığacak şekilde nasıl küçültebilirdi? Sığdırana kadar müzik ve grafikleri yeniden sıkıştırarak. Hatta iki diske bölmeyi bile deneyebilirler. Sonuçta, oyun verileri artık tek bir blob değil (eski bir kartuştaki gibi), artık hiyerarşik olarak dosyalar ve dizinler halinde düzenleniyor.


Hepsi bu kadar

Image
Buraya bir sürü şey yazabilmek için almak zorunda kaldığım bir Dreamcast.
Yaşına göre çok da kötü değil!

Umarım makaleyi okumaktan keyif almışsınızdır. Yazıyı üniversitedeki son yılımın başlangıcında bitirdim.

Muhtemelen bundan sonra çok meşgul olacağım, ancak bu makaleleri yazmaktan keyif alıyorum, bu yüzden umarım bir sonraki makaleyi birkaç hafta içinde alırsınız!

Bir dahaki sefere kadar!
Rodrigo


Katkıda Bulunma

Bu makale Konsolların Mimarileri serisinin bir parçasıdır. Eğer ilginç bulduysanız lütfen bağış yapmayı düşünün. Bağışınız, mevcut ve gelecek makalelerin kalitesini artırmama yardımcı olacak araç ve kaynakların satın alınmasını finanse etmek için kullanılacaktır.

Donate with PayPal
Become a Patreon

Ayrıca eBook sürümünü İngilizce olarak da satın alabilirsiniz. Kârları bağış olarak kabul ediyorum.

Image

Bu makale için arzu edilen araçların ve en son kazanımların bir listesi burada takip edilmektedir:

### Interesting hardware to get (ordered by priority)

- Nothing else, unless you got something in mind worth checking out

### Acquired tools used

- A Dreamcast console with controllers and VMUs (£40)
- A game (Sonic Adventure, £9)

Alternatif olarak, değişiklikler önererek ve/veya çeviriler ekleyerek yardımcı olabilirsiniz.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-dreamcast,
    url = {https://www.copetti.org/writings/consoles/dreamcast/},
    title = {Dreamcast Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Dreamcast Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://www.copetti.org/writings/consoles/dreamcast/. [Accessed: day- month- year].
Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Kaynaklar / Okumaya Devam Edin

Korsanlıkla Mücadele

İşlemci (CPU)

Oyunlar

Grafikler

İşletim Sistemi

Fotoğrafçılık


Rodrigo Copetti

Rodrigo Copetti

Umarım bu makaleyi beğenmişsinizdir! Yazar hakkında daha fazla bilgi edinmek istiyorsanız buraya tıklayın ve eğer desteklemek isterseniz buraya tıklayın

rsslinkedintwittergithub facebookreddit