- Orijinal Xbox için Halo 2 HD yaması, çalıştırılabilir dosya değişiklikleri, konsol donanım modifikasyonları ve benchmark aracı geliştirmeyi bir araya getirerek 480p’nin ötesinde 720p ve 1080p render etmeyi denemiş bir projeydi
- Mevcut Halo 2, 480p olarak belirtilmesine rağmen dahili olarak 640×480 back buffer’a çizip GPU’nun bunu 720×480’e upscale etmesiyle çalıştığından, HD desteği için D3D buffer’larının ve video modu işlemenin birlikte değiştirilmesi gerekiyordu
- 720p’de çalıştırmak, standart 64MB RAM ile mümkün olmadığından 128MB RAM yükseltmesi ve kernel hot patch gerektirdi; GPU için bitişik fiziksel belleğin üst 64MB’den de ayrılabilmesi için kısıtlama aşıldı
- Performans; triple buffering, texaccum render target tiling ve GPU’nun 233.33MHz’ten 300MHz’e overclock edilmesi gibi yöntemlerle iyileştirildi; Zanzibar benchmark sahnesi yaklaşık 19FPS’ten 27~28FPS seviyesine çıktı
- Ek RAM, texture ve geometry cache’lerinin büyütülmesi ile HDD aktarım hızının iyileştirilmesinde de kullanıldı; nihai yama 720p’yi pratikte kullanılabilir hale getirdi, ancak 1080p daha çok ekran görüntüsü amaçlı bir bonus niteliğinde
Proje hedefi ve donanım varsayımları
- Hedef, orijinal Xbox sürümü Halo 2’ye HD çözünürlük desteği eklemek ve modifiye edilmiş konsol donanımının nereye kadar dayanabileceğini görmekti
- Çalışma kapsamına oyun yaması, Xbox konsol donanımı değişiklikleri ve performans benchmark’ı için özel araçlar yazmak dahildi
- Projenin temelini oluşturan modifiye Xbox “god box” olarak adlandırılıyordu ve şu değişiklikleri içeriyordu
- Standart 733MHz Pentium 3 CPU’nun, özel bir interposer kartıyla 1.4GHz Pentium 3 türevi CPU ile değiştirilmesi
- CPU’nun yaklaşık 2GHz’e kadar overclock edilebilmesi
- Ek RAM ve SSD kullanımı
- Donanım modifikasyonlarını destekleyen özel kernel veya BIOS imajı kullanımı
- Halo 2’nin desteklediği en yüksek video çözünürlüğü 480p’ydi; amaç 720p ve mümkünse 1080i desteği eklemekti
- Çözünürlük artırıldığında pixel shader hesaplama miktarı artıp GPU yükü büyüdüğü için, çalışmanın buna değmesi için GPU overclock’unun mümkün olması gerektiği düşünüldü
- Daha sonra GPU’da yaklaşık %15 overclock mümkün hale geldi ve “GENESIS-3” konsolu geliştirme için hazırlandı
Halo 2’nin 480p’si ve dahili render yapısı
- Halo 2 kutu üzerinde 480p desteklediğini belirtse de, D3D present parameter’da
D3DPRESENTFLAG_PROGRESSIVEayarlanmamıştı ve ekran boyutu ölçeği de her zaman1.0fidi - Dahili
screen_bounds, video modundan bağımsız olarak 640×480 ayarlanıyordu- Orijinal Xbox’ta 480p, 720×480 olarak ele alınıyordu
- Halo 2, 640×480 back buffer’a render ettikten sonra GPU bunu 720×480’e upscale edip video encoder’a gönderiyordu
- Widescreen modunda, 1.33:1 anamorphic kamera kullanılarak aynı 640×480 yüzeye daha geniş görüntü sıkıştırılarak render ediliyordu
- Bu yöntem, TV’nin stretch modunda yatay sıkıştırmayı telafi etmeyi amaçlıyor olabilir
- Yamaya anamorphic scaling’i kapatan bir seçenek de eklendi
HD render için D3D yaması
- Çözünürlük desteği için üç fonksiyon ana değişiklik hedefi oldu
_rasterizer_detect_video_mode: 720p’de de progressive scan etkin olacak şekilde değiştirildi_rasterizer_init_screen_bounds: video moduna göre 640×480, 720×480, 1280×720, 1920×1080 boyutlarını ayarlayacak hale getirildirasterizer_device_initialize: D3D back buffer ve present flag ayarları
- 1080i modunda ekran genişliğinin 1920 olup olmadığı kontrol edildikten sonra
D3DPRESENTFLAG_PROGRESSIVEkaldırılıpD3DPRESENTFLAG_INTERLACEDayarlandı - İlk değişikliklerden sonra ana menüde mavi filtre kayboldu; tekrarlayan çizgiler ve su geometrisinin kesilmesi sorunları ortaya çıktı
- Sorunların bir kısmı back/front/depth buffer’lar için hardcoded 640×480 view kullanılmasından kaynaklanıyordu
- Aynı belleği farklı genişliklerle gören texture/surface view’ları oluşuyor ve scan line yerleşimi kayıyordu
D3D belleği ve render target’ların yeniden yapılandırılması
- Orijinal Xbox, CPU ve GPU’nun aynı RAM’i kullandığı unified memory mimarisine sahipti
- PC’deki gibi VRAM üzerinde D3D allocation oluşturup GPU’nun yönettiği bir yapı değildi
- CPU, texture, render target, vertex buffer gibi bellekleri oluşturup adresi doğrudan GPU’ya verebiliyordu
- Halo 2 yaklaşık 25 render target kullanıyor, ancak gerçekten ayrı buffer allocation sayısı yalnızca 4~5 civarındaydı
- Birçok render target aynı belleği farklı resource view’larıyla paylaşarak bellek tasarrufu sağlıyordu
rasterizer_primary_targets_initialize, D3D’nin oluşturduğu back/front/depth buffer’dan ek render target ve texture view’ları oluşturuyor, boyutu 640×480 olarak hardcode ediyordu- Yama, bu fonksiyonu hook ile sararak orijinal fonksiyon çalıştıktan sonra texture/surface boyutlarını mevcut back buffer çözünürlüğüne göre düzeltti
- Tiled memory’nin pitch’i standart
width * bppdeğerinden farklı olabildiği içinD3D_CalcTilePitchile hesaplandı - Yanlış pitch özellikle 1080i’de çizgili efektler oluşturabiliyordu
- Tiled memory’nin pitch’i standart
texaccum render target boyutunun düzeltilmesi
- Ana menüde su geometrisinin kesilmesi, texaccum render target’ının 640×480’e sabitlenmiş olmasından kaynaklanıyordu
- Xbox DirectX implementasyonu, pixel shader pass başına yalnızca 4 texture örneklemesine izin veriyordu
- 4’ten fazla input texture gerektiren nesneler birden çok pass ile render edilmeliydi
- texaccum layer, önce detail texture’ları birleştiriyor, sonra lightmap pass’i için input olarak kullanılıyordu
rasterizer_targets_initialize, texaccum render target’ını 640×480 olarak ayırıyordu_rasterizer_alloc_and_create_render_target, hook ile sarıldı vetarget_index == 1olan texaccum target’ının genişliği ve yüksekliği mevcut back buffer boyutuna değiştirildi- Bu değişiklikten sonra su geometrisi kesilmesi ortadan kalktı ve harita yüklenirken göze çarpan render sorunları da kalmadı
- Mavi filtre sorunu basit bir boyut kontrolü güncellemesiyle çözüldü, ancak ayrıntılı süreç atlandı
720p çalıştırmayı engelleyen bellek sınırı
- 720p’ye ayarlandığında oyun açılışta çöküyordu; sebep, büyüyen front/back/depth buffer ve rasterizer target’lar nedeniyle bellek yetersizliğiydi
- Orijinal Xbox’ta tüketiciye yönelik 64MB RAM modeli ile geliştiricilere yönelik 128MB RAM dev kit/debug console bulunuyordu
- Retail kartlarda da ek RAM çipleri için yer fiziksel olarak mevcuttu
- RAM çipleri lehimlenip modifiye kernel kullanılırsa ek 64MB’ye erişilebiliyordu
- 720p ve üzerini çalıştırmak için 128MB RAM yükseltmesi gerekiyordu
- Normal 480p’nin de RAM yükseltmesi olmadan çalışması için oyunun bellek içi texture cache’inden bellek almak gerekiyordu; bu durumda texture pop-in artıyordu
Halo 2 bellek yöneticisi yaması
- Halo 2, başlangıçta kullanılabilir 64MB’nin yaklaşık 48.9MB’ını tek büyük runtime data alanı olarak ayırıyordu
- Bu alan level metadata, texture, geometry, animation, sound cache, rasterizer target, network/simulation resource’ları gibi bölümlere ayrılarak kullanılıyordu
- Bellek kullanımını görselleştirmek için XboxImageGrabber yazıldı
- Page table entry’leri gezilerek RAM kullanım durumu bitmap olarak görselleştiriliyordu
- Runtime data alanı 0x80061000 adlı hardcoded adrese ayrılıyordu
- map dosyasındaki tag data bu temel adrese göre serialize edildiğinden, bu verinin her zaman aynı adreste bulunması gerekiyordu
- Diğer runtime data taşınabiliyordu
- Taşınacak alanlar olarak rasterizer target, texture cache ve geometry cache seçildi
- Belirli allocation çağrıları hook edilerek debug memory region’a taşındı
- Yeni level yükleme gibi serbest bırakma zamanlarında uygun free çağrıları eklendi
- Runtime data alanı boyutu da küçültülerek israf azaltıldı
physical_memory_mallocderleyici tarafından inline edildiği için her call site için ayrı patch gerekiyordu
Xbox kernel hot patch’i ve üst 64MB fiziksel bellek
- GPU’ya verilen bellek adresleri fiziksel adres olmalıydı ve ilgili bellek aralığının bitişik olması gerekiyordu
- GPU’da page table veya sanal adres çevirisi kavramı yoktu
- 128MB RAM kernel’inde bile varsayılan olarak fiziksel bitişik allocation yalnızca ilk 64MB içinde mümkündü; sanal allocation ise 128MB’nin tamamında yapılabiliyordu
- Üst 64MB page table entry’lerini elle kullanarak GPU belleği gibi kullanma testi başarılı oldu
- Üst 64MB’de GPU için fiziksel bellek kullanılamaması donanımdan değil, kernel’deki yazılım kısıtlamasından kaynaklanıyordu
MmAllocateContiguousMemoryExiçindeMAX_USABLE_PFNkontrolü vardı- Mevcut değer 0x83FE0000 idi; bu da 64MB - 128KB’ye karşılık geliyordu
- Üst 128KB, 64KB GPU scratch alanı ve 64KB CPU page table için ayrılmıştı
- Yama, oyun boot sırasında konsolda 128MB RAM olup olmadığını kontrol ettikten sonra
MmAllocateContiguousMemoryExiçindemov edx, 0x3FDFdeğerini bulup 128MB yapılandırmasına uygun yeni değerle değiştirdi - Daha sonra
MmAllocateContiguousMemoryExveMmFreeContiguousMemorykullanılarak 128MB’nin tamamında bitişik fiziksel bellek ayrılıp serbest bırakıldı - Yan etkileri de vardı
- Oyundan çıktıktan sonra cold reboot olmadan dashboard’a dönmek veya DVD tray eject gibi warm reboot yapmak, bir sonraki uygulama/oyunda ciddi grafik artifact’lerine ve çökmelere yol açabiliyordu
- Bunu gizlemek için oyundan çıkışta cold reboot’u zorunlu kılan ek bir yama eklendi
720p/1080p render sonuçları ve performans darboğazı
- 720p render görsel olarak iyileşti, ancak ağır sahnelerde FPS 10’un altına düşecek kadar performans düşüktü
- 1080p’de native render mümkündü, fakat Xbox konsol çıkışı yalnızca 1080i sinyal verebiliyordu
- D3D back buffer doğrudan dump edildiğinde GPU’nun video encoder için half frame’e dönüştürmesinden önceki 1080p ekran görüntüsü alınabiliyordu
- Performans ölçümleri standart Xbox, yalnızca CPU’su overclock edilmiş god box ve CPU+GPU overclock edilmiş god box olmak üzere üç yapılandırmayı karşılaştırdı
- Zanzibar’daki ağır nokta “zanzibar benchmark scene” olarak kullanıldı
- İlk ölçümlerde üç yapılandırmanın FPS’i neredeyse aynıydı ve performans grafiğinde sebebin swap stall olduğu görüldü
- Halo 2, vsync on ve double buffering kullanıyordu
- GPU’nun vblank bekleyip swap chain rotasyonunu gerçekleştirememesiyle stall oluşuyordu
Triple buffering ve GPU darboğazının doğrulanması
- Çözüm olarak back buffer count 2’ye çıkarıldı; 1 front buffer ve 2 back buffer olmak üzere toplam 3 buffer kullanan triple buffering uygulandı
D3DPRESENT_PARAMETERSiçindeBackBufferCount = 2,D3DSWAPEFFECT_DISCARD,D3DPRESENT_INTERVAL_ONEayarlandı- Halo 2’nin render motoru double buffering varsayımıyla back/front buffer pointer’larını her frame’de değiştirdiğinden, swap hook ve primary target initialize hook da düzeltilmek zorunda kaldı
- İki primary render surface ve texture view’ın her zaman mevcut back buffer’ı referans etmesi sağlandı
- Oyun dahili olarak iki pointer’ı swap etse bile aynı belleği işaret ettikleri için fiilen no-op hale geldi
- Zanzibar benchmark sahnesinde standart GPU ile FPS yaklaşık 22FPS oldu
- Öncekine göre yaklaşık 3FPS artış
- 30FPS cap’e göre yaklaşık %10 artış
- swap stall ortadan kalktı ve GPU kullanımı maksimuma çıkarak darboğazın GPU olduğu doğrulandı
GPU ve RAM overclock’u
- texaccum render target’ını tiled memory’ye çevirerek ek 1~2FPS elde edildi
- Zanzibar benchmark sahnesi yaklaşık 19FPS’ten 23~24FPS’e iyileşti
- god box’ın GPU overclock durumunda Zanzibar benchmark sahnesi 27~28FPS kaydetti
- Haritada dolaşırken çoğunlukla 30FPS korunuyordu, yalnızca bazı ağır bölgelerde düşüş oluyordu
- BIOS’u yeniden flashlama gereksinimini önlemek için GPU clock generator’ın memory-mapped IO register’ı oyun başlangıcında doğrudan ayarlandı
- GPU clock hesaplaması,
NVPLL_COEFFiçindeki M, N, P değerleri ve 16.6667MHz base clock’a dayanıyordu- Varsayılan N değeri 28, 233.33MHz GPU clock üretiyordu
- N değeri değiştirilerek yaklaşık 8MHz aralıklarla ayarlanabilir hale getirildi ve ini dosyasıyla yapılandırılabildi
- 300MHz GPU overclock’u, Zanzibar benchmark’ında standart GPU’ya kıyasla yaklaşık 3FPS ek artış sağladı
- GPU’ya göre overclock sınırı çipten çipe değişiyordu
- 1.0~1.4 revision konsolların GPU’larında sınır çoğu zaman low 300MHz aralığında görülüyordu
- 1.6 revision konsol GPU’sunun 400MHz üzerinde stabil çalıştığı örnekler vardı
- RAM clock da test edildi
- Xbox memory bus teorik maksimum bant genişliği 6.4GB/s, pratik kullanılabilir değer ise yaklaşık %70’i olan 4.5GB/s olarak ele alındı
- RAM varsayılan olarak 200MHz’e yakın olduğundan yaklaşık 10MHz artırmak bile kararsızlığa yol açabiliyordu
- Yaklaşık 208MHz ayar testinde 0.7FPS artış gözlemlendi
- 250MHz destekli RAM çipleri de sipariş edildi, ancak yazı yazıldığı sırada kurulum ve ek test yapılmamıştı
Pop-in azaltma ve cache genişletme
- Halo 2’de başlangıçta da texture ve geometry pop-in sorunları vardı; 2000’lerin başındaki mekanik HDD kullanan konsollarda bu daha belirgindi
- Ek RAM kullanılarak texture cache ve geometry cache genişletildi
- Varsayılan geometry cache single-player haritalarda 6.5MB, multiplayer haritalarda 7MB idi
- texture cache harita boyutuna göre değişiyor; tag data’nın arkası ile low detail texture cache’in önündeki boş alanı kullanıyordu
- Cache’ler LRU yöntemiyle çalışıyordu
- Her 30 frame’de, son 30 frame boyunca kullanılmamış veriler kaldırılıyordu
- Cache dolduğunda çağıran taraf zorla eviction belirtiyor ya da load isteği başarısız olup sonraki frame’de yeniden deneniyordu
- Texture’ların low/medium/high LOD buffer’ları olabiliyordu
- high LOD yükleme başarısız olursa medium veya low LOD deneniyordu
- Önce düşük LOD görünüp sonra yüksek LOD’ye geçilmesiyle pop-in oluşabiliyordu
- Haritalar ayrıca 2×2’den en fazla 8×8 boyutuna kadar emergency low detail texture cache içeriyordu
- Normal texture yükleme başarısız olsa bile modeli geçici olarak ekranda çizmek için kullanılıyordu
- Xbox Live arkadaş menüsü açılıp kapatıldığında arazinin aşırı düşük çözünürlüklü texture’larla görünmesi, bu cache’in kullanımıyla ilişkiliydi
- Bungie debug build’inin grafik görselleştirme özelliği yeniden oluşturularak cache kullanımı doğrudan izlenip boyut ayarı yapıldı
- Nihai ayarda geometry cache 20MB’ye, texture cache ise sabit 30MB’ye çıkarıldı
- Her iki cache de varsayılan ayarlara göre neredeyse iki kat büyüdü
- Outskirts açılış cutscene’inde Master Chief hemen yüksek çözünürlüklü texture ile gösteriliyor ve cache’te boş alan da kalıyordu
- Kalan pop-in’i azaltmak için HDD aktarım hızı da artırıldı
- Varsayılan UDMA 2 yaklaşık 33.3MB/s
- UDMA 3 yaklaşık 44.4MB/s
- 80 pin IDE kablosu varsa UDMA 5 ile yaklaşık 100MB/s’ye kadar ayarlanabiliyordu
- Standart IDE kablosunda yaklaşık %10, yükseltilmiş IDE kablosunda teorik olarak %300’e kadar aktarım hızı artışı sağlıyordu
- Nihai 720p bellek profili, 128MB RAM’in %75’inden fazlasını kullanıyordu
- 1080p modunda swap chain ve rasterizer target bellek kullanımı çok büyük olduğundan cache boyutlarının küçültülmesi gerekiyordu ve pratikte 128MB’nin çoğu kullanılıyordu
Sonuç
- Genel olarak 720p yaması oynanabilir seviyeye kadar iyileştirildi; 1080p desteği ise daha çok ekran görüntüsü amaçlı bir bonus niteliğinde
- Performans ve bellek değişikliklerinde hâlâ iyileştirme alanı olsa da, bu sonuç Halo 2 ve Xbox konsolunun sınırlarını ciddi biçimde zorladı
- Halo 2 HD yama indirmesi ve kaynak kodu GitHub üzerinde yayımlandı
1 yorum
Hacker News yorumları
Yazının altındaki video bağlantısı: https://www.youtube.com/watch?v=O_nk21389u8
Videoda orijinalin yükseltilmiş 480p hâli ile 720p’nin yan yana karşılaştırması yer alıyor; yaklaşık 7. dakikadan itibaren de 720p elde ederken yaklaşık 30 fps oynanışı korumak için nelerin gerektiği açıklanıyor.
Yazı da harika, ancak daha yüksek çözünürlük için gereken değişiklikleri özetleyen video da iyi.
720×480’in 16:9 çözünürlük olmadığı ya da “gerçek 480p” olmadığı yönündeki şikâyetler aslında 1970’lerdeki ITU standartlaştırması tarafına yöneltilmeli: https://tech.ebu.ch/docs/techreview/trev_304-rec601_wood.pdf
Şubat 1980 tarihli bir notta, Avrupa standardının tüm etkin tarama çizgisi sürelerini karşılamak için etkin satır başına örnek sayısının 715,5’ten büyük olması gerektiği belirtilmişti; daha sonra Rec. 601 ve SMPTE 125’te kullanılan 720 örnek, “çalışan” ilk değer olarak yerleşti.
Rec. 601, parlaklık kanalı için etkin satır başına 720 örnek, renk farkı sinyallerinin her biri için 360 örnek sağlıyordu; HDTV tanımlanırken de bu mevcut TV sisteminin yatay çözünürlüğü ikiye katlanıp 16:9 en-boy oranı uygulanarak satır başına 1920 örnek ve 1080 satıra ulaşıldı.
1280×720 aşamalı tarama sistemi de aynı 720 piksel ailesine dahildir ve dijital TV, DVD ve MPEG tabanlı sistemlerin çoğu bu 4:2:2 temel standart biçiminden türemiştir.
“Hacker ruhu”nun kendisi tamamen meşru, ama konsola bellek ekleyip GPU’yu overclock etme zahmetine girerek Halo 2’yi bu şekilde oynamanın PC sürümü yerine ayrıca bir nedeni var mı merak ediyorum.
Kusurları çeşitli seviyelerde ayrıntılı ele alan birçok video da var.
https://youtu.be/03K2Uz3s1hg?si=zaFO1XdzMcFvI1F6
Yeterince mümkün olduğunu, hatta belki daha iyi olduğunu kanıtlıyormuşsun gibi olur.
Belki psikolojik bir engele yakın bir şeydir, ama çoğunlukla hafif ve eğlenceli taraftadır; popüler bir cihazın en yeni modelini herkesten önce alma takıntısının karşı ucu gibi.
İkisi de bir tür üstünlük hissi verir.
Halo 2 bugün hâlâ çevrimiçi lobilerde ya da campaign modunda oynanabiliyor; ayrıca 343’ün orijinal grafiklerini veya remaster HD grafiklerini seçmek de mümkün.
Metinde “tag veri sistemi mümkün olduğunca esnek ve hızlı olacak şekilde tasarlandı; iç işleyişi mühendislik açısından muazzam. Blam motorunu en esnek motorlardan biri yaptığını düşünmemin tek başına nedenleri üzerine bir yazı yazabilirim, ama bu yazıyla ilgili değil” denmiş; o yazı gerçekten yazılırsa kesinlikle okumak isterim.
O kadar acemiydim ki nasıl çalıştığını takip etmek bile zordu; o kadar dinamiktikti ki böyle bir yapının mümkün olmasını temelde anlayamıyordum.
Oyuncu konumunun, ayarları olan bir silahla aynı bağlamda yer alması ve efektlerin bile aynı listenin içinde bulunması nasıl mümkün, anlayamıyordum.
Bugün ilgimi çeken birçok şey de eninde sonunda bu kavramların etrafında dönüp duruyor.
Xbox ve Halo 2 modlama döneminin günümüzde geri dönmesini isterdim
O dönem kariyer seçimimi ciddi biçimde etkiledi ve hâlâ Halo 2’nin tüm zamanların en yenilikçi çevrim içi oyunu olduğuna inanıyorum
Oyun kayıtlarını yükleyen basit bir araç satın almak, birkaç dakika içinde soft mod yapılmış bir Xbox elde etmeye yetiyordu; ama bugünün konsolları e-fuse patlatıyor, downgrade’i engelliyor ve çok daha fazla güvenlik sertleştirmesi içeriyor
Insignia’nın Halo 2 desteğini başlatma projesiyle birlikte, klasik Halo 2 için gerçekten harika bir dönem
Bugün yazılım mühendisi olmamın nedenlerinden biri, bir web sayfasının nasıl çalıştığını kolayca inceleyebilmem, program belleğiyle oynayabilmem ve donanımı açıp içine bakabilmemdi
Halo PC döneminde seviyeleri modlarken bir oyunun içine nelerin girdiğini çok öğrendim; “BSP”nin ne olduğunu bilmek işe yaramaz bir trivia olabilir ama daha fazlasını anlayabileceğime dair güven verdi
Bugün de teknolojiye başlamak ve öğrenmek mümkün, ama bunu gerçekten kurcalayarak yapmanın yolu pek görünmüyor
Yazılımları kırmak ya da debug etmek çok daha zorlaştı; imkânsız değil ama giriş bariyeri çok yükseldi
Web sayfaları hâlâ incelenebiliyor, ancak günümüzde birçok site küçültülmüş ve obfuscate edilmiş JavaScript canavarını ayakta tutan div yığınlarına dönüştü; oyunlarda ise içerikleri sunucudan stream etme bağımlılığı arttığı için çoğu zaman bu baştan zorlaşıyor
Donanımda da cihazı tuğlaya çevirebilecek güvenlik prosedürleri, yapıştırılmış çerçeveleri açmak için sıcak hava tabancası ve kalıcı hasar riskini göze almak gerekiyor
Bu değişikliklerin her birinin bir nedeni vardı elbette, ama süreç içinde eğlencenin büyük kısmı da kayboldu; bugünün araçları teknik olarak daha iyi olsa da oyun modlama eskisi gibi değil
Bugün de PC veya Steam Deck gibi PC tabanlı konsollarla yeterince kurcalama yapılabiliyor; kilitli olacak şekilde tasarlanmış kapalı konsollarla neden uğraşmak gerektiğini pek anlamıyorum
Piyasadan ucuza alınabilen özel x86 donanıma erişim kazanmak dışında ne elde edildiği de belirsiz
Güçlü modlama topluluklarına sahip rekabetçi çevrim içi FPS’ler PC’de zaten 10 yılı aşkın süredir aktifti
Project Cartographer sayesinde aktif bir topluluk var: https://halo2.online/home/
Bu kişi, günümüzde Bungie’nin kendi IP’sine gösterdiğinden daha fazla Halo 2’ye adanmış gibi
IP’nin sahibi Microsoft, geliştirmeyi ise 343 Industries üstleniyor
Bungie’nin şu anda Destiny/Destiny 2’si ve yakında çıkacak Marathon extraction shooter’ı var
O oyuna inanılmaz çok zaman harcadım; benim gibi o büyüye kapılmış başka birinin daha olduğunu görmek güzel
Yine de bu düzeyde adanmışlık saygı uyandırıyor
Fazla sinik gelebilir ama projenin kendisi gerçekten harika
Yine de CPU’yu değiştirip overclock etmek, RAM’i artırmak, katı hâl depolama eklemek ve GPU’yu da overclock etmiş bir durumu orijinal Xbox’ın sınırlarına kadar zorlamak diye adlandırmak doğru mu, emin değilim
O noktada aslında artık Xbox değil gibi
Bir Honda Civic’e motor ve süspansiyon modifikasyonları yığıp sınırlarına kadar zorladığını söylerken “ama gerçekten hâlâ Civic mi?” diye sormak teknik olarak doğru olabilir, fakat laf ebeliği gibi de duyulabilir
Yazarın istediği başlığı koyma hakkı var; zihinde bunu “OG Xbox’ı ölmeden hemen önceki noktaya kadar modlamak” gibi okuyabilirsiniz
Halo 2, 360’ta daha yüksek çözünürlükte çalışabildiği için bunun orijinal Xbox’ı hedefleyen bir modlama projesi olduğunu netleştirmek faydalı
Kelimenin tam anlamıyla modifiye edilmemiş Xbox’tan değil, modlama hedefinin orijinal Xbox olduğundan söz ediliyor
Standart IDE kablolu konsolda aktarım hızının %10 arttığı, yükseltilmiş IDE kablosu kullanılırsa teoride %300’e kadar artabileceği de belirtilmiş
128 MB RAM varsa ek RAM’den yararlanarak 720p ve 1080i video modlarını açabiliyor, doku ve geometri bellek önbelleğini artırarak pop-in’i neredeyse ortadan kaldırabiliyorsunuz
Sadece 480p istiyorsanız stok konsolda GPU’yu overclock edip farklı bir IDE kablosu kullanmanız yeterli
SSD ile ilgili ifade istemeden yanlış anlaşılmaya yol açmış gibi; muhtemelen 80 pin kablo ve SSD kombinasyonu kastedilmiş olabilir
Overclock edilmiş CPU gerekli değil ve CPU darboğaz da değil; artırılmış RAM ise yalnızca 720p ve üzerini istediğinizde gerekiyor
Bu geri bildirimi ilettim, blog yazısı bu kısmı daha net hâle getirecek şekilde güncellenebilir
Retro bilgisayar sahnesi böyle; otomobil modifikasyonu da benzer
Kimi insan fabrikadan çıktığı hâliyle kusursuz bir Corvette ister, kimi de 50 yıl daha yeni bir motor takılmış Model A ister
Tanıdık ve bilinen bir şeyi kendi isteğine göre bükmek harika bir şey
İş yükü muazzam
Arkadaşı “doom”un kimliğini açıklamak istememesi de ilginç