Admin

Admin
Katılım
24 Tem 2024
Konular
313
Mesajlar
556
Çözümler
4
Skor
4,597
Puanları
93
Oyun çevirisi ve Türkçe yama geliştirme süreçlerinde karşılaşılan en büyük teknik sorunlardan biri, metin uzunluklarının orijinal satır sınırlarını aşması ve buna bağlı olarak oyunun çökmesidir (crash hatası). Bu teknik rehberimizde, GitHub üzerinde açık kaynak olarak geliştirilen MH-Pointers-Tool aracını kullanarak, oyun dosyalarındaki pointer (işaretçi) hesaplama, offset tespiti ve string (metin) yeniden konumlandırma (re-location) işlemlerini adım adım inceleyeceğiz.

Tersine mühendislik (reverse engineering) ve ROM hacking ile uğraşan yerelleştirme geliştiricileri için hazırladığımız bu kapsamlı rehber sayesinde, karakter sınırı engeline takılmadan profesyonel yamalar hazırlayabileceksiniz.


MH-Pointers-Tool Nedir? Ne İşe Yarar?​

MH-Pointers-Tool; sıkıştırılmamış binary dosyalarda (.bin, .dat, .exe, .eboot), metinlerin bellekteki adreslerini tutan pointer yapılarını otomatik olarak tarayan ve düzenleyen bir geliştirici aracıdır.

İngilizce bir kelimeyi (örneğin 4 karakterli "Save") Türkçe karşılığıyla (4 karakterden uzun olan "Kaydet") değiştirdiğinizde, aradaki karakter farkı sonraki bellek adresini (offset) bozacağından oyun çöker. MH-Pointers-Tool, uzayan yeni metni dosyanın sonundaki boş alanlara (00 - Null Byte) taşır ve o metne işaret eden pointer adresini saniyeler içinde otomatik olarak yeniden hesaplar.

MH-Pointers-Tool ile Adım Adım Pointer Düzenleme (Nasıl Yapılır?)​

İşleme başlamadan önce, üzerinde çalışacağınız orijinal oyun dosyasının yedeğini aldığınızdan ve sisteminizde güncel .NET Runtime paketinin kurulu olduğundan emin olun.

turkce-yama-pointer-hesaplama-2aba2125d0dbb1c67cc9.webp

1. Dosya Yapısını Analiz Etme ve Şema Oluşturma​

Her oyun motorunun bellekteki veri dizilimi farklıdır. Programın dosyayı doğru okuyabilmesi için veri yapısını tanımlamanız gerekir:

  • Programı çalıştırın ve File -> Open diyerek düzenlemek istediğiniz dosyayı içeri aktarın.
  • Structure Settings (Yapı Ayarları) panelinden oyun motorunuza uygun pointer mimarisini seçin (16-Bit, 32-Bit veya 64-Bit Little Endian / Big Endian).
  • Metinlerin şifrelenme türünü (ASCII, UTF-8 veya Unicode) doğru şekilde işaretleyin.

2. Pointer ve String Taraması (Scanning)​

  • Ayarları yaptıktan sonra Scan Pointers butonuna tıklayarak otomatik tarama işlemini başlatın.
  • Araç, belirlediğiniz kurallara göre dosya içindeki tüm anlamlı metinleri (string) ve onlara referans veren işaretçileri (pointer) listeleyecektir.
  • Sol panelde listelenen adreslerin (Offset) doğruluğunu bir Hex Editor (Örn: HxD veya ImHex) yardımıyla çapraz kontrol edin.

3. Türkçe Çeviri Girişi ve Otomatik Re-location​

  • Düzenlemek istediğiniz satırın üzerine gelin ve Target Text (Hedef Metin) alanına Türkçe çevirinizi yazın.
  • Yazdığınız metin orijinal sınırları aştığı anda program durumu otomatik olarak "Re-located" (Yeniden Konumlandırıldı) şeklinde güncelleyecektir.
  • Araç, dosyanın sonundaki kullanılmayan 00 (Null) byte alanlarını hesaplayarak Türkçe metni oraya yazar ve orijinal pointer adresini bu yeni konuma bağlar.

4. Kaydetme ve Dosya Bütünlüğü Testi​

  • Çeviri işlemi tamamlandıktan sonra File -> Save As diyerek dosyanızı farklı kaydedin.
  • Düzenlenen dosyayı oyunun dizinine atarak test edin. Karakter taşmalarından kaynaklanan arayüz bozulmalarının ve çökmelerin tamamen giderildiğini göreceksiniz.

    mh-pointers-tool-nedir-ne-ise-yarar-24f38022c093e47334da.webp

Geliştiriciler İçin Teknik İpuçları ve Sorun Giderme​

  • Oyun Siyah Ekranda Kalıyor veya Çöküyor: Bazı modern oyun motorları pointer adreslerini mutlak (Absolute) değil, bağıl (Relative) olarak hesaplar. Eğer oyununuz çöküyorsa, araç ayarlarından Relative Offset seçeneğini aktif hale getirmeli ve oyun motorunun taban adresini (Base Address) girmelisiniz.
  • Metinlerin Sonu Kesiliyor: Dosyayı içe aktarırken veya elle düzenlerken string sonlandırıcı kodların (\0 veya hex tabanında 00) silinmediğinden emin olun. Bu kodlar silinirse oyun motoru sonraki satırları da tek bir metinmiş gibi okumaya çalışır.

MH-Pointers-Tool GitHub İndirme Bağlantıları​

Geliştirici aracının en güncel kaynak kodlarına ve derlenmiş sürümlerine aşağıdaki resmi proje sayfası üzerinden ulaşabilirsiniz.

Soru ve Teknik Destek: Projelerinizde karşılaştığınız offset hesaplama hatalarını, hata loglarını (log files) veya çökme raporlarını bu konu altından bizlerle paylaşarak teknik destek alabilirsiniz. Herkese başarılı yama projeleri ve iyi çalışmalar dileriz.
 

Bu konuyu görüntüleyen kullanıcılar

HAKKIMIZDA

TurkceYama.Org, oyunlar ve yazılımlar için Türkçe dil yamaları oluşturma ve paylaşma konusunda lider bir kaynaktır. Amacımız, uluslararası oyun ve yazılımları Türk kullanıcılar için erişilebilir ve anlaşılır hale getirmektir. Site üzerinden, çeşitli oyunlar ve uygulamalar için hazırlanmış Türkçe yamaları bulabilir, bu yamaları nasıl oluşturacağınız hakkında bilgi edinebilir ve kendi projelerinizi toplulukla paylaşabilirsiniz. TürkçeYama.Org, detaylı rehberler, güncel yamalar, teknik destek ve topluluk forumları ile kullanıcıların dil desteği ile ilgili tüm ihtiyaçlarını karşılamayı hedefler. Türkçe içeriklerin kalitesini artırmak ve oyun deneyimini zenginleştirmek için bize katılın, bilgi alışverişinde bulunun ve katkıda bulunun!

Geri
Üst Alt