Son İletiler

Sayfa: 1 2 3 [4] 5 6 7 ... 10
31
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 13 Nisan 2025, 01:34:24 »
Mükemmel!

bittiğinde bize de tam bir dökümantasyon sağlayabilirsen sevinirim.

Resim konusunda, forum yazılımımız biraz eski, işletim sistemimiz de epey eski ondan güncelleyemiyoruz. işte muhabbet biraz yavaş gitse yeni sunucuya taşınacağım, ama henüz mümkün olmadı. Yani sonuç olarak telefon ekranlarında bit kadar görünmesin diye bir responsive tema kullanıyoruz. O tema resimleri böyle büyütüyor bazen, bilen birinin uğraşması lazım ama sıkıcı işler olduğundan ben bakmadım :D

Yeni versionda bu sorunların olmadığını umarak katlanıyrouz. Yani aslında imaj büyüklüğünü ayarlamak mümkün ama çok çetrefilli, önce normal şekilde imajları yükleyip gönderiyi yazıp gönderiyorsun, sonra edit diyorsun, üretilen imaj url'lerini copy ediyorsun bir yere sonra attachment olarak değil de IMG olarak geri ekliyorsun falan IMG tag'inde width propertisi var istediğin büyüklüğe getiriyorsun ama uğraşmaya değer mi bence değmez :D

Bir alternatif de göndermeden önce resimleri küçültmek.
32
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: dashersw 12 Nisan 2025, 22:03:18 »
Biraz daha dig ettim. 04 bir şey gösterme demiştik, 0403 resimli bir şey gösterme. bundan sonra gelen 0d resim ID’si. İlk senaryoda 0403 iki kere geçiyor, birinde köpek, birinde baygın adam resmi var.

Daha sonra dedim ki bunları manipüle etmenin daha kolay bir yolu olmalı, böyle dosyayı değiştir diskete yaz yeniden başla falan çok uzun iş…

Neden daha önce denemedim bilmiyorum ama, Mac'te vAmiga kullanıyordum FS-UAE ile birlikte... vAmiga çok kullanışlı geldi... ama memory visualizer'ı biraz sıkıntılıydı. Konsolu da vardı ama pek önem vermemiştim. Bugün biraz daha baktım, konsolda direkt memory'ye erişip değiştirebiliyoruz... Önce daha önce bahsettiğim "inventory ekranı açma" sekansıyla oynadım, o dolarla kıvrık arasındaki byte mark'mış :))) 5 dolar, 10 mark, 30 kıvrık falan verilebiliyor. 03 de item gerçekten, başka bir item'la değiştirilebiliyor. Yanındaki word’e yeni bir item da eklenebiliyor. vAmiga makinenin anlık snapshot'ını alıp yüklemeyi de sağladığı için memory'deki byte'ları değiştirerek ne olduklarını görmek çok daha kolay hale geldi. Bu şekilde bu resim gösterme opcode’unu test ettim, gerçekten de tahminim doğruymuş, başka başka değerler vererek başka resimler göstertebiliyoruz :)

Fantastik gelişmeler gerçekten. State machine’i çözmeye çok az kaldı, bu haftasonu bunu bitirmek istiyorum. Tabii bu daha ilk bölüm. Event’leri uzunluklarına göre bölme işi her bölümde çalışıyor ama ilk bölümün haritasındaki 1111 1112 şeklinde giden metadatalar ileriki bölümlerde daha farklı. Orada belki başka opcode’lar da olacaktır.

orijinal baygın adam:
 [ You are not allowed to view attachments ]  
silikonbaba: 
 [ You are not allowed to view attachments ]  

--------

Bu arada resimleri küçük göstermenin bir yolu yok mu ya? Bulamadım forumda :(
33
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 12 Nisan 2025, 17:14:09 »
belki şöyle random bir bilgi belki faydalı olur. Yanlış hatırlamıyorsam Amiganın veri yolu 16bit, adres yolu24bit. 68k registerlerı 32 bit ama veri yolu 16 olduğundan tek fetch'de 16'sı doluyor. Diğer taraftan adres yolu ise 24 bit, Bir adres depolanması gerektiğinde zaten 2 fetch gerekeceği için %95 ihtimalle adresi ya da offseti 32bit olarak saklıyorlar, fazladan görünen 00'lar ya da random byte'lar oradan gelebiliyor.

68K big endian olduğu için genelde sıfırlar başta oluyor, yani hex 00 00 00 0A görürsen büyük olasılıkla indeks 0A 'nın olduğu adreste değil de, ondan üç ya da 1 önceki adrestedir. en baştaki xx 00 00 0A xx olanda da çok nadiren random data bulunabilir çünkü eğer bu değer bir adres ise ilk byte çöpe gidiyor. registerin önceki değerinden kalma bir artifact olabilir.

34
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: dashersw 12 Nisan 2025, 16:00:32 »
Ufak bir update: senaryo dosyalarında event'ler de length byte'la birlikte sadece sıralı olarak tutuluyorlar.

Senaryo dosyalari AmBk formatında demiştik, 20 byte header'ı var. Sonrasında 12 byte metadata var, asıl data 33. byte'tan başlıyor. Metadatanın ilk word'ü (2 byte'ı) senaryodaki event sayısını gösteriyor (haritadaki metadata olan odalarla örtüşüyor). Sonraki word'ü ilk event'in uzunluğunu gösteriyor (ama garip bir şekilde uzunluklar ikişer kere kaydedilmiş.). Neyse, arada birkaç ne idüğü belirsiz byte var, sonra ilk event'in uzunluğu 32. byte'ta. Dediğim gibi, 33. byte'tan itibaren bu uzunluk kadarını okuyunca ilk event'in bütün trigger ve metinlerine ulaşıyoruz. Sonra bir word atlıyoruz (bu duplike—ama 2 fazla—length byte'ı). Bir sonraki word yine uzunluk, sonra sıradaki event var.

Böyle böyle bütün event'leri düzgün parse edip görebiliyorum. Conditional event'lerin state machine'ini hala çözemedim, fakat 0x05'in soru, 0x08'in savaş olduğunu söylemiştim. Inventory'yi unutmuşum, 0x0409 da inventory'yi açıyor.

Örneğin üzerini aradığımız adamın üzerinden kısa zopa çıkıyor. Byte sekansı şöyle: 04 09 05 00 01 00 03 00 00 00 00. Biz bu ekranda 5 dolar, 1 kıvrık, bir de kısa zopa buluyoruz. Demek ki 3. byte dolar sayısı, 5. byte (belki word'dür) kıvrık sayısı, 03 de item olsa gerek. Memory'de kısa zopa 3. item'a denk geliyor, dolayısıyla hesap tutuyor gibi.

Bu arada 0xac de aslında caesar cipher'la encode edilmiş, aslında 0xb6, yani paragraf karakteri :))

Bunun için bir visualizer yazdım, elini yüzünü toplayıp atacağım. Fakat branching logic'i çözememek beni deli ediyor :)
35
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 11 Nisan 2025, 20:13:29 »
Biraz progress daha yaptım! Diğer senaryo dosyalarıyla tam örtüştüremedim henüz ama 1. senaryoda metin sonrası kontrol byte'ı olmayan 5 tane 0x0d00 var. Bunlar haritadaki odaların mesajlarıyla örtüşüyor! Yani örneğin koku olan 23. odanın metadatası 1 1 1 4, 4. 0x0d00'dan sonra "burası amma pis kokuyo bee !" mesajı var. Baygın adamın olduğu 49. odanın metadatası 1 1 1 2. Yani 2. 0x0d00'dan sonra bu senaryo başlıyor. Çok ilginç bir durum var, aslında buraya ilk girdiğimizde üstünü arayalım mı mesajı çıkıyor. Ama senaryo dosyasında önce "bu herif hala ayılmamış mı" mesajı yazılmış. Ama sonuçta bu da örtüşüyor.

Yani oyunun en azından ilk bölüm için senaryo item'larını 0x0d00 ile ayırdığını ve sayarak nereye tekabül ettiğini bulduğunu söyleyebiliriz.

ben de farkettim bunları fakat şu 0x0d00 çok tutarlı değil, birkaç yerde vardı yanlış hatırlamıyorsam, benim tahminim o belirteci amos koyuyor.

yani normalde bunlar birer array'de tutuluyordur. DIM Events(32,5) gibi birşeydir, amos bu girdileri 00 ile ayırıyor olabilir. diğer taraftan 0x0D = Carrier Return (13=Enter) olduğundan böyle satır satır alt alta yazılan şeylerde de kullanılıyor o sebeple çok da emin olamadım, amosta bir array üretip compile edip üretilen sonuca bakmak lazım. Çünkü tutarlı da değildi. Neyse şimdilik buraları sana bırakıyorum, hazır ilerleme göstermişken hızını kesme :D Ben soruları (08) farketmemiştim mesela. İyi yakalamışsın orayı. Eline sağlık.
36
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: dashersw 11 Nisan 2025, 14:28:22 »
Biraz progress daha yaptım! Diğer senaryo dosyalarıyla tam örtüştüremedim henüz ama 1. senaryoda metin sonrası kontrol byte'ı olmayan 5 tane 0x0d00 var. Bunlar haritadaki odaların mesajlarıyla örtüşüyor! Yani örneğin koku olan 23. odanın metadatası 1 1 1 4, 4. 0x0d00'dan sonra "burası amma pis kokuyo bee !" mesajı var. Baygın adamın olduğu 49. odanın metadatası 1 1 1 2. Yani 2. 0x0d00'dan sonra bu senaryo başlıyor. Çok ilginç bir durum var, aslında buraya ilk girdiğimizde üstünü arayalım mı mesajı çıkıyor. Ama senaryo dosyasında önce "bu herif hala ayılmamış mı" mesajı yazılmış. Ama sonuçta bu da örtüşüyor.

Yani oyunun en azından ilk bölüm için senaryo item'larını 0x0d00 ile ayırdığını ve sayarak nereye tekabül ettiğini bulduğunu söyleyebiliriz.
37
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: dashersw 11 Nisan 2025, 13:04:14 »
Senaryo dosyalarıyla biraz daha zaman geçirdim... bir takım bulgular var, pek faydalı olmasa da.

Daha önce senaryodaki metinlerin caesar encoding ile kodlandığını söylemiştim. Text byte'larına binary değeri olarak 0x0a ekleyince gerçek değeri buluyoruz. Yani 5d 57 68 5f 66 aslında 67 61 72 69 70 olarak decode edilmeli, ki bu da ASCII tablosuna göre "garip" kelimesi oluyor.

Senaryo dosyalarında metinlerden önceki byte okunacak metnin uzunluğunu belirtiyor. Örneğin birinci bölümde Bu herif hala ayIlmamIS mI ? diye bir mesaj var, sonundaki line terminator'la beraber 29 karakter, dolayısıyla bu metinden önceki byte'ın değeri 0x1d. Bu arada satırları bitirmek/ayırmak için 0xac kullanılıyor. Yani her metinden sonra bir de 0xac var.

Bu arada ASCII'de türkçe karakterler olmadığı için ekip aşırı zeki bir şey yapmış, Türkçe karakterler büyük harfle tanımlanmış. Yani s normal ama S aslında ş. Büyük ihtimalle bu yüzden oyunda büyük harf yok hiç... çok merak ediyordum nedenini çocukken :)

0x05 ile başlayan sekanslar soru sekansları, sonraki iki byte seçeneklerin kelime uzunluklarını veriyor. Örneğin evet/hayır soruları için sekans 05 04 05—evet 4 harf, hayır 5 harf. Her sorudan sonra 01 02 01 01 geliyor... bu bir çeşit branching olmalı, birinci seçenek seçilirse şu, ikincisi seçilirse şu gibi. Yani evet seçilirse 1. değişkeni 2 yap, hayır seçilirse 1. değişkeni 1 yap gibi... ama kesin çözümünü bilmiyorum.

0x08 ile başlayan sekanslar savaş durumları. İlk bölümde köpekle savaşıyoruz. Senaryolar bütün kodu ve state'i içinde barındırıyor olmalı, dolayısıyla kiminle ve kaç kişiyle savaşılacağı da senaryonun içine gömülü olmalı. Köpek savaşı sekansı 08 00 0d 01 00 00 00 00 gibi bir şey. Her byte'ın anlamını bilmiyorum, fakat 0d, yani 13, savaşılacak canavarın ID'si olmalı. Memory dump'ından baktığımda canavarlar şu sırada: irospa ipna lavuk maganda hIrgIz bahCIvan lale savaSCIsI dadaS meycik yuzIr faytIr kIlerik ayI kOpek ... ve evet, köpek 13. canavar. Sonrasında gelen 01 de olan köpek adedi. Dosyanın bu kısmını değiştirip 01 yerine 03 yazdım, 3 köpek çıktı :)))

Bunun dışında, senaryo dosyaları içinde header'da filan bir değişken haritası tanımlandığını, senaryodaki her bir mesajın bu değişkenleri bir şekilde kullandığını ya da değiştirdiğini düşünüyorum.

Haritada biz 13. odada başlıyoruz, 3. odaya çıkmaya çalışırken senaryonun ilk mesajı dISarIdan garip hIrIltIlar geliyor... çıkıyor. Bu da şu demek, mesajlar odalara girerken tetikleniyor ve duruma bağlıysa odaya girişini engelleyebiliyor.

Haritalardan decode ettiğimiz metadataları senaryoyla örtüştürmeye çalıştım fakat çok başarılı olamadım. Sadece 3 nolu oda için senaryodaki ilk mesajın oncesinde 01 01 01 01 byte'ları var. Burada beklediğim şu olurdu, haritadaki metadatanın birebir eşleniğinin senaryo dosyalarında olması, oyun motorunun da buna göre araması. Fakat görünen o ki bu biraz daha kompleks bir yapı. Örneğin 23. odada sürekli burasI amma pis kokuyo bee! mesajı çıkıyor, conditional değil, ama önceki byte'larında bunu 23. odayla eşleyen bir byte yok.

Bununla birlikte emin olduğum başka bir yapı her senaryo item'ı öncesinde ve sonrasında senaryo değişkenlerini değiştiren bir takım kontrol byte'ları olduğu. Örneğin baygın adamın üzerini aramak için evet'i seçersek inventory ekranı açılıyor ve bir takım paralar vs bulunuyor (buradaki byte'ları açılan inventory ile karşılaştırmadım ama hangi item'dan kaç adet bulacağımız burada yazıyor olmalı). Fakat sonrasında hemen bir anahtar bulma mesajı çıkıyor. Bundan sonra biraz daha karışık bir seri byte var—eminim burada oyun değişkenlerine anahtarın bulunduğu yazılıyor, çünkü 55. odada anahtarın olma ve olmama durumuna göre "bu kapı kilitli" mesajı gösteriliyor ya da gösterilmiyor.

Şimdilik önbulgularım bu şekilde :)

Senaryo dosyalarını daha rahat gözlemleyebilmek için ekteki gibi bir uygulama yazdım. Kodunu da ekliyorum. Oyunun herhangi bir senaryo dosyasını açıp örüntü arayabilirsiniz :)

  [ You are not allowed to view attachments ]  
  [ You are not allowed to view attachments ]  
38
Etkinlikler / Ynt: Retro Garaj Satışı - RGS#1
« Son İleti Gönderen: Hifly 10 Nisan 2025, 14:22:55 »
RGS Açık Artırmaları Sıralı Tam Listesi

Walkie Talkie - 10 TL
TDK Ses Kaseti (Sıfır 2 adet) - 10 TL
3.5 Disket (Sıfır paketinde) - 20 TL
IBM PS/2 1.44 Floppy Drive - 5 TL
Commodore 64 (Kutulu) - 310 TL
Sega Game Gear (Kronik kapasitör sorunlu) - 60 TL
Atari 2600 (Klon)- 40 TL
Sinclair ZX Spectrum  (7 kopya kaset ile) - 70 TL
Nintendo SNES Set (2 orijinal oyun ve kolla) - 285 TL
XBOX (1. Generation) - 200 TL
Vestel MSX - 150 TL
Amiga 500 (sadece anakart ve alt kasa) - 100 TL
Escort Serial Mouse - 5 TL
Amstrad CPC 464 (teyp lastiği sorunlu) - 165 TL
Nintendo Dsi (üst ekran kırık) - 30 TL
Commodore 64 (garanti etiketi açılmamış ve temiz) - 200 TL
C64 DTV - 230 TL
Arcade Joystick (Serial - PS/2) - 30 TL
Microsoft Mouse (PS/2) - 7 TL
Commodore 64 Orijinal Kaset Oyunlar x 2 - 120 TL
Sega Dreamcast (Sadece konsol) - 100 TL

2019 yılı fiyatlarına bakıp ağlayabiliriz. Son beş yılda; en çok altın mı, gümüş mü, konut mu, döviz mi kazandırdı sorusunun yanıtı retro bilgisayar ürünleri olabilir. Bazıları 10 kattan da fazla  :)

Altınla yarışmış desek daha doğru olur sanki:

5 sene önce bugün altının onsu 1.700 USD. 6,70 kurla çarparsak 11.390 TL
Bugün altının onsu 3.115 USD. 38,00 kur ile çarparsak 118.370 TL

10 kattan fazla getirmiş. Orta ve uzun vadede en garanti yatırım her zaman altın. Hindistan ve Çin son senelerde boşuna deli gibi altın alımı yapmıyor. Yatırım tavsiyesi değildir.
39
Etkinlikler / Ynt: Retro Garaj Satışı - RGS#1
« Son İleti Gönderen: unay 10 Nisan 2025, 13:04:04 »
Bu arada çok güzel etkinlikmiş, hele ki 2019 da bile bu kadar katılım olması (satılan ürünlere bakarak tahmin ediyorum) bekleyeceğim bir şey değil.

Bu işlere sardığım 4-5 ayda gözlemlediğim, çoğu kişi eski heyecanının 10 da 1'ini bile duymuyor artık.
Bu tip etkinlik ya da buluşmalar azalmış. Cihazlar kaldırılmış raflara-depolara, arada bir indiriliyor.
Kimisi bir daha hiç indirmeyeceği MSX2 cihazını ancak konusu geçince hatırlıyor. Konusu geçmişken, @Alco ver şu MSX2 yi ekonomiye kazandıralım  :)
Boş boş durmasın, turşu mu bu?
40
Etkinlikler / Ynt: Retro Garaj Satışı - RGS#1
« Son İleti Gönderen: Alco 10 Nisan 2025, 12:39:52 »
Atari 2600 (Klon)- 40 TL
Arcade Joystick (Serial - PS/2) - 30 TL

Bunlar diğer ürünlerin fiyatlarına göre tuzlu olmuş sanki.
:D Olsun, yine de alan kazandı.
Sayfa: 1 2 3 [4] 5 6 7 ... 10