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: fullgrim 04 Mayıs 2025, 03:05:52 »
Burada boş bir teşekkür mesajı ile yer kaplamak istemiyordum ama dayanamadım, yıllardır birileri belki yapar diye umut ettiğim remake projesine sonunda başlanmış olması müthiş. Herkesin eline sağlık ve umarım sıkılıp yarıda bırakmazsınız.

Bu arada merak ettiğim; içerik olarak sadece Amiga versiyonunu mu temel alıyorsunuz? PC port'u CD için geliştirildiğinden ek içerikler vardı, örneğin o port'taki ara videoların AI upscaler ile kullanılabilir hale getirilip dahil edilmesi oldukça hoş olurdu.

https://web.archive.org/web/20110823073420/http://www.stillpsycho.net/Lale_Sava%C5%9F%C3%A7%C4%B1lar%C4%B1_Da%C4%9F%C4%B1t%C4%B1m%C4%B1
32
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Skate 04 Mayıs 2025, 01:34:07 »
Eline sağlık @Ref.

Bence bundan sonrası için ortak bir ToDo list oluşturmanız güzel olabilir. Remake'i tamamlamak için tam olarak neler gerekli, eksikler neler netleşirse iş bölümü yapmak da daha kolay olacaktır.
33
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 03 Mayıs 2025, 03:37:27 »
proje unutulmuş gibi duruyor ama hayır, bu akşam shax'ın bir gazı ile başlayıp disketlerdeki tüm imajları ve spriteları extract ettim.
yüzlerce sprite, duvar setleri, canavarlar, bloklar...

  [ You are not allowed to view attachments ]  


Ayrıca artık odaları çizebiliyorum...

  [ You are not allowed to view attachments ]  
34
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 28 Nisan 2025, 05:16:43 »
Lale Savaşçılarının ilk crack denemesini biliyorsunuz kod metinlerini sıfırlayarak yapmıştım. Bu pek iyi sonuç vermiyor, özellikle önümüzdeki dönemde belki senaryo modlamaya başlayacağız ve executable kısmın sağlıklı çalışmasını istiyorum. Elimizde yepyeni bilgiler var, oyunu da çok iyi tanır hale geldik bu süreçte. Bu sebeple başka bir yöntemle yeni bir crack daha yaptım. Bu da baştan sona test edilmedi elbette ama bu reverse-engineer sürecince test edilecektir.

Bu çok daha temiz bir crack oldu, bu sebeple oyunu denemek isteyenler varsa bunu tercih etmeliler.

Istanbul Efsaneleri - Lale Savascilari (1995)(SiliconWorx)(Tr)(cr REF)[!].zip
35
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Skate 22 Nisan 2025, 19:26:28 »
Arkadaşlar, şu sıralar bu projeye destek verecek vakit bulamamışken arada lafa girip gereksiz yer işgal etmek istemiyorum ama @Ref'in son yorumu üzerine iki noktanın altını çizmek isterim.

1) Visual Studio ve Visual Studio Code, her ikisinin de yeterli derecede JavaScript / TypeScript destekleri var. C# elbette ki Visual Studio'nun öz evladı. Ama ben bir çok farklı dili Visual Studio ile sorunsuz kullanıyorum. Hatta Unity'de JavaScript desteği varken (UnityScript diye geçiyordu) Visual Studio ile kullanıldığını hatırlıyorum. Tabii Unity yıllar önce çöpe attı JavaScript desteğini ama o zamana kadar yanlış hatırlamıyorsam yine Visual Studio ile kullanılıyordu. Özetle Visual Studio'yu C#/C++/VB.Net vs ile sınırlı olarak düşünmeyin. Çok daha fazla dile destek veriyor. Verdiği destekler her zaman kusursuz olmuyor. Örneğin 2010-2012 yılı civarınlarında C++ ve C++/CLI desteği yerlerde sürünüyordu, intellisense çalışmıyordu ki official olarak durum böyleydi, bug değildi yani. MS forumlarında MS çalışanları third party plugin öneriyorlardı. Kısacası evet, C# öz evlat, diğerleri üvey evlat. Ama Visual Studio JavaScript desteklemiyor gibi bir algı yanlış.

https://visualstudio.microsoft.com/tr/vs/features/javascript/

2) Eğer bir şey yalnızca tool ise farklı dilden olması bence "bir yere kadar" sorun değil. Örneğin @Ref C#'dan bir data exporter yazar, ana proje JavaScript olur, kardeş kardeş çalışır her ikisi yan yana. Ama şu noktada sıkıntı çıkıyor. Örneğin @Ref bir structure/class oluşturuyor ve datayı tam o formatta serialize edip kaydediyor, @dashersw aynı datayı yükleteceği noktada eğer aynı dil kullanılmış olsa iki source code ortak library bile kullanabiliyor. Yani üç proje oluyor;

* OpenFRPOSCore
* OpenFRPOSEditor
* OpenFRPOSEngine

gibi. OpenFRPOSCore her iki proje tarafından da kullanılıyor. O zaman dil ya da en azından reflection seviyesinde ortak bir interface kullanımı çok ideal oluyor. Ben geçmişte bir çok projemde bu yapıyı kullandım. Export / import edilen, serialized data yapısı değiştikçe ona göre Core library'i değiştiriyordum, hem toollar, hem engine ikisi de Core üzerinden güncel yapıyı kullanıyordu.

Ancak dil ortak olmadığı durumda da çözümler yok değil. Protobuf gibi kütüphaneler var. Tabii kendiniz de benzerini geliştirebilirsiniz ama bu işinizi epey kolaylaştırabilir.

https://protobuf.dev/

Böyle bir şey kullandığınız durumda çok fazla dil desteği olduğu için farklı iki dil kullanmanız sorun olmuyor. Her ikiniz de farklı iki dilden protobuf kullanıyorsunuz. İki farklı dilden aynı ortak structure üzerinden serialization yapabiliyorsunuz.

Fiilen bir fayda sağlayamadığım noktada bu konudaki yorumlarımı yapıp, hızla uzaklaşıyorum. :)
36
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 20 Nisan 2025, 16:41:28 »
Ahhhh müthişsin! Ben bu iki hafta çok yoğun bir takvime girdiğim için hiçbir şeye bakamadım...

Eline sağlık :) Sanırım tek unify etmemiz gereken şey C# değil JS kullanmak :P

Resimleri extract etmen çok iyi olmuş. Bunların dosya içinde siyah beyaz tutulduğunu, paletin kodun içinde olduğunu konuşmuştuk. Nasıl aldın?

Onu ben de düşündüm ama visual studio gibi bir editörü bırakabileceğimi sanmıyorum :D Eminim chatgpt C#->JS dönüşümünü gözü kapalı yapıyordur. Hatta benim yazdığım berbat koddan daha temiz bir çıktı verir :)

Renkleri, iconlar için, aslında debugger kurcalarken tesadüfen buldum denebilir :D e komutu tüm hardware registerlerini dump ediyormuş. eh renkler de registerde tutulduğu için, ekranda görüntü varken debugger'den çektim, o biraz çetrefilli oluyor. diğerleri, bazı imajların paleti vardı zaten, o imajı paletli olarak yükleyip kilitleyip, diğer imajları sanki o paleti kullanıyor gibi denedim, onlar da oldu. Yani emülatör olunca bir şekilde kolay. Paletlere ihtiyaç duyarsan form1.cs kodları içinde bulabilirsin.

Bu arada kitapçıkta yazdığını görmemiştim, efsaneymiş yahu... o zaman asıl OpenFRPOS yapmak lazım :)))

Ben bu arada oyun motorunu düşünüyorum. First-person yerine izometrik bir şey mi olsa, voxel tabanlı bir şey mi olsa, tilt shift efektli miniaturized bir şey mi olsa... bir yandan da bunları kodlamaya çalışıyorum. Henüz tatmin edici bir şey yakalayamadım ama.

OpenFRPOS gidilecek en mantıklı yol gerçekten. Hem copyright etiğine de uygun.

Oyun motoru işini sana bırakıyorum :D Ben LaleMap diye başladığım için level çözümlemeye doğru kendi kendimi itmiş oldum biraz :D Bulmaca çözer gibi boş vakitlerde bir komut bir komut derken baktım büyüdü iş.

Orjinal oyun haritaları çok küçük. Oyunun "battle" görünümü yine oyun haritasından bir arena yaratıyor, savaşın gerçekleştiği hücre merkezde oluyor ve çevre hücreleri de katarak 3x3'lük bölümden bir harita yapılıyor. Her hücre aynı şekilde küçük dilimlere bölünmüş bu şekilde harita büyütülmüş ama haritalarda detay olmuyor tabi. Bomboş zemin ve duvar, arada çukur falan random spawn olabiliyor monotolluğu kırmak amaçlı. Yani hangi tarzı seçersen seç, ana haritayı biraz daha detaylandırmak gerekecek gibi.

Ben yine baldurs gate görünümünü seviyorum, grimrock'da bunu mükemmel halletmişlerdi, 3D first person ama 2d gibi 90 derecelere kilitli. onu tercih ederim.


Ben de bir taraftan Level editöre başladım, o sırada kalan bilinmeyen frpOS komutlarını da çözerim gibi geliyor 7-8 tane kaldı zaten.


37
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: dashersw 19 Nisan 2025, 23:58:31 »
Ahhhh müthişsin! Ben bu iki hafta çok yoğun bir takvime girdiğim için hiçbir şeye bakamadım...

Eline sağlık :) Sanırım tek unify etmemiz gereken şey C# değil JS kullanmak :P

Resimleri extract etmen çok iyi olmuş. Bunların dosya içinde siyah beyaz tutulduğunu, paletin kodun içinde olduğunu konuşmuştuk. Nasıl aldın?

Bu arada kitapçıkta yazdığını görmemiştim, efsaneymiş yahu... o zaman asıl OpenFRPOS yapmak lazım :)))

Ben bu arada oyun motorunu düşünüyorum. First-person yerine izometrik bir şey mi olsa, voxel tabanlı bir şey mi olsa, tilt shift efektli miniaturized bir şey mi olsa... bir yandan da bunları kodlamaya çalışıyorum. Henüz tatmin edici bir şey yakalayamadım ama.
38
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 18 Nisan 2025, 03:10:49 »
bugün akşam biraz daha ilerlettim senaryo okuyucuyu. otopark bölümünde tanınmayan komut yok ama belirsiz parametreler sürüyor. @dashersw kusura bakma senin seçtiğin isimleri zaman içinde keyfime göre değiştirdim, sen de benimkileri değiştirirsin ilerletirsen ödeşiriz :D

örnek: next map (0x0B) kodu 4 parametre alıyor, 2 2 tamam bunlar senaryo ve map dosya isimleridir (doğru ise bu parametre ile kendi dosyalarımızı oyuna ekleyip genişletebiliriz). 152 ve 3 nedir bilemiyorum. (edit çözüldü githubda var)

Kod: [Seç]
===== Event #3 =====
Header: 00 0D 00 7C 00 7F 00 82

0.Room Begin: (0)
1.IF isNotSet(2) Then SKIP 5 (7)
2.Print "otoparktan CIkmak istediGine emin misin? "
3.Input?  evet / hayIr
4.IF AnswerWas(1) Then SKIP 1 (6)
5.[break]
6.******* Next Map: 2, 2, 152, 3
7.Talk with face 1,"bu KapI Kilitli. anahtar gOren oldu mu ? "
8.[break]
9.End 0.

10.End.

11.Begin

12.Room End (4-0)


Gece 2 olmuş... Kaynak kodları bugün yarın github'a koyarım.
Şu anda fena gitmiyoruz, benim editör işliyor, sadece eksik komutları çözmek kaldı. gerçekten de bir OpenLale geliyor gibi...
  [ You are not allowed to view attachments ]  

Kaynak kodları github'da. Eventleri parse eden fonksiyon ViewEvent şurada:
https://github.com/ref-xx/LaleMap/blob/main/Form1.cs#L1349


bu arada overlay icon grafikler tamamdır. Sıralama executable içindeki array sıralamasına uyuyor, bir kısmını ordan almıştım ama sanırım 80 tane hepsini almam gerekecek. https://github.com/ref-xx/LaleMap/blob/main/Form1.cs#L81
  [ You are not allowed to view attachments ]  

extract ettiğim tüm imajlar github'da extracted klasöründe.
39
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 15 Nisan 2025, 19:50:06 »
bugün biraz boş vaktim vardı, biraz senaryoları inceledim. burada yazdığın bilgileri alıp biraz daha öteye taşımaya çalıştım, hala birçok eksik var bu konuda:
bu senaryo 1 dökümü. %95 tamam ama hala benim kafamda bazı eksikler var.

edit: burası değişti. bir sonraki mesajda yenisi var

Her bir event 8 byte header ile başlıyor, 1 byte 0x00 terminator ile bitiyor.. burada 16bitlik 4 değer var. bunu amos array'inin belirteçleri olabilir, henüz onu denemeye fırsatım olmadı.
2 senaryoda haritada işaretli event sayısı ile senaryodaki event sırası birbirini tutmuyor. Örneğin, senaryo dosyasında 3.sırada olan silikon baba eventi, haritada 8 numarası ile işaretli. Aynı şekilde başlangıç noktasından geri girememe olayı haritada 6.event, senaryoda 1.event. Hmm şimdi farkettim, 1.senaryoda 5 event var, ordan devam ediyor numaralar belli ki. Bu durumda pixel palet datası 0-31 arası olmak zorunda olduğuna göre, önceki pixellerle çarparak daha büyük rakamları ifade ediyorlardır. son iki byte 1 1 olunca aslında 32 oluyor bu durumda?

[startFight: enemyId=13, count=1] aslında devamı var, her zaman devamında 4 byte daha oluyor. Bu startfight'e mi ait emin değilim ama öyle görünüyor.
yani startfight(enemy,count,var1,var2,var3,var4) şeklinde sanki ama emin de değilim.

0x0E Bu end/finish işlemi parametre alıyor gibi görünüyor. 2.senaryoda bazı bozukluklara sebep oluyor.
ileriki levellarda daha yeni komutlar ve parametreler ekleniyor. Yani biraz daha kafa yormamız lazım.

Halen haritanın entrypoint'ini bulabilmiş değiliz mesela. yani bir haritaya girildiğinde oyuncu nereden başlayacak ve ne yöne bakıyor olacak, bu bilgi nerede?


Kod: [Seç]
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+
| Hex Kodu                 | Komut                                         | Açıklama                                                                                                |
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+
| `01`                     | IF? `conditionalJump` veya `triggerBeforeEnter| Ardından: var, equals, jumpOver                                                                           |
| `02` (1 byte) uzunluk    | Print `displayText`                           | Ardından özel karakter setiyle metin DechiperRot(byte[] data) ile açılacak.
metin içindeki 0xAC karakteri carrier return oluyor. |
| `03`                     | Show `displayImage`                           | Ardından 1 byte image id                                                                                  |
| `04`                     | `enter room` veya "Update View"               |                                                                                     |
| `05`                     | `askQuestion`                                 | Ardından 2 byte: seçenek uzunlukları; Ardından özel karakter setiyle 2 farklı
| `06` ?? seçenek metni, her biri DechiperRot(byte[] data) ile açılacak. |
| `07`                     | `setVariable`                                 | Ardından var, value                                                                                       |
| `08`                     | `startFight`                                  | Ardından: 00, enemy id, count                                                                             |
| `09` + 9byte         | `inventory/yerde para`                        | yerde esya var dolar, mark, kivrik    ...                                                                                 |
| `0a`+1 uzu               | `print random, 0xAC ile ayrılmış metinlerden rastgele biri yazılır
| 0b-0c`??
| `0d`                     | `seperator`                                   | Blok başı veya özel gösterim (takip eden byte 00 değil ise başlangıç image olabilir)                         |
| `0e 00`                  | `finalState`                                  |                                                                                                          |
| `0f` ??
| `10`                     | `break`                                       |                                                                                                          |
| `11`                     | `displayTextWithFace`                         | Ardından: yüz kodu, uzunluk, metin                                                                                |
+--------------------------+-----------------------------------------------+----------------------------------------------------------------------------------------------------------+


dediğim gibi hala soru işaretleri var, bir lamba yanarsa buraya eklerim.


Edit: Kullanma kılavuzu sayfa 57'de bu senaryo editörü hikayesini anlatıyor. Görünüşe göre kendi formatlarını yazmışlar ve bu doğru ise 30'dan fazla komut varmış, bu durumda biz henüz yarısını çözebilmişiz.


40
Kodlama / Ynt: Lale Savaşçıları'nı yeniden yazalım
« Son İleti Gönderen: Ref 14 Nisan 2025, 15:57:15 »
Bakın ne buldum :))

https://gitlab.com/amigasourcecodepreservation/ultimate-amos/-/raw/master/pdf/ultimate-amos-1994-holborn.pdf

Bizimkiler bu kitaptan etkilenmişler midir acaba? :)) sadece iki sayfa ayırmış kitap ama...
AAa süpermiş :D
Bu hiç zor birşey değil, çocukların buna ihtiyacı olduğunu sanmıyorum. Ben ortaokuldayken yapmıştım bunu kendim çocuk aklımla.
konumuzla alakalı değil ama bundan ben de yapayım diyen varsa, şu videodaki adamı izledim geçen, bence bu sistemi en güzel anlatan bu arkadaş. Hem de bu videoda biraz daha akıllı bir sistemi geliştiriyor, görünmeyen blokları basmaya gerek kalmıyor, çizim hızlanıyor tabi. https://youtu.be/7L3hlafPcAU?t=327

Alıntı
Evet... haftasonumun çoğunu buna verdim ama sonunda sanıyorum bütün opcode'ları çıkardım, state machine'in nasıl çalıştığını çözdüm...

Detaylı analizi daha sonra paylaşacağım yazdığım tool'larla beraber. Bir sürü şey (doğal olarak) sandığım gibi değilmiş.

Armağan hocam, bakın bu türk retro aleminde nadir görülen anlardan biri. Şu forumun kurucularından biriysem tek sebebi bu andır :D 10 senedir forumun açık kalmasının sebebi bu küçük anlar. Tamam o da gerekli ama sadece onu aldım bunu sattımın domine ettiği bir retro kültürü beni çok darlıyor.  Bu gibi projelerin meyve vermesi nefes aldırıyor işte.

Alıntı
Tabii sürekli "bu adamlar bu formatı kendileri mi icat ettiler" diye düşünüp durdum.
yok hayır, zaten exe dosyadaki gömülü bankar data bank olarak kullanılmış. Fakat databank kesintisiz bir bellek alanı aslında. 1D bir array'den farkı yok. Veri formatı kendi icatları büyük ihtimal, yani zaten kompleks structlar değil bunlar, kağıt üzerinde hardcoded şekilde de halledilebiliyorlar. Yani oyun haritasını iff imajda saklamayı tercih eden adamlar neler yapmaz :D Benim tahminim oyun anında array'e yüklüyorlardır, ham şekilleri databankta duruyordur. Bu sebeple databanktaki dizilim array'i yansıtıyordur. Bu bir tahmin. Bu arada aslında Amos'da @doMiNO benden daha iyidir, şu ara aklı başka yerde, uzaktan izliyor :)

neyse sonuç olarak akşam databanklı, farklı dim'lere sahip compile edilmiş bir amos denemesi yapar koyarım buraya.
Sayfa: 1 2 3 [4] 5 6 7 ... 10