SAFARI GUNS

Shoot Em Up'çılar işte size bir oyun daha ama bu sefer gerçekten güzel ve oldukça zor bir oyun. Oyunumuzda amacımız safariye çıkma bahanesi ile hayvanları dolayısıyla doğayı katledenlerden kurtulmak. Oyunda gerçekten bir safari havası verilmiş. Oyun iki disket olmasına karşın, öldüğümüz zaman birinci disket istenmiyor, dolayısıyla disket değiştirme sadece oyunun başına mahsus. Oyun yüklenirken ve her seviye atladığımızda üç defa tamtam sesleri ile birlikte güzel bir müzik çalıyor. Ekranın altında fotoğraf makinesi ile bir tüfek görüyoruz. Hedef imlecini fotoğraf makinesine getirip kliklediğimizde birbirinden güzel hayvanların ve doğanın fotoğraflarını çekiyoruz. Her fotoğraf çekişimizde belli bir puan alıyoruz. Eğer çektiğimiz bir resimden birkaç tane ardarda çekim yapmışsak ilk çektiğimiz fotoğraftan puan alıyoruz. 24 poz çektiğimizde bölüm atlıyoruz. Eğer aynı şeyle ilgili birden fazla fotoğraf çekmişsek sıfır puan alıyoruz ve seviye atlayamıyoruz. Bu arada kendimizi katillerden korumalıyız. Bunun için de hedef imlecini tüfeğin üstüne getirerek kliklediğimizde katilleri öldürebiliyoruz. Katillerle yüzyüze gelebilirsiniz. Bazıları da ağaç kavuklarından ve karşı kıyıdan çıkabilir. Ayrıca jiple hayvan kaçıranları da vurmalısınız. Ancak turist otobüsleriyle hayvanları vurmayın. Safari Guns sıkılmadan gerçekten nefis grafiklerle zenginleştirilmiş nefis bir oyun. ERGİN ORDU

OYNANABİLİRLİK:. 85

7082

Eminim ki hepiniz 1989'un en iyi animasyon oyunu seçilen Virüs'ü zevkle oynamışsınızdır. Eğer bu oyundan zevk aldıysanız Leanardo'yu kaçırmayın. Oyunda amacınız, alan içerisinde bulunan 3 cismi yanyana getirmek. Fakat bu o kadar kolay değil, çünkü leonardo zekayı zorlayacak ve insanı düşündürecek bir oyun. Bu sırada sizi iki canlı kovalıyor. Hem bunlardan kaçmah, hem de cisimleri yanyana getirmelisiniz. Oyunda bazen çukur göreceksiniz buradan girerek diğer çukurdan çıkabilirsiniz. Ayrıca bazen alanda anahtar görürsünüz. Bu anahtarı alırsanız bonus almak için başka bir bölümde oynarsınız. İsterseniz birazda seçeneklere göz atalım;

1) Start The Game: Oyuna başlamanızı sağlar. 2) Show Highscore: Yapılan yüksek skorları görebilirsiniz. 3) What is what: Oyuna başlamadan bu seçeneğe mutlaka bir göz atın. Çünkü bu seçenekte oyun içinde toplayacağınız ve karşınıza çıkabilecek tuzakları görebilirsiniz. 4) Bu seçenekte bilgisayar size şifreyi soruyor. Eğer bilirseniz 10, 20, 30 levellerden başlarsınız. Moon Walk: Bu şifreyi yazarsanız level 10'dan başlarsınız. Football: Bu şifreyi yazarsanız level 20'den başlarsınız. Blitter: Bu şifreyi yazarsanız level 30'dan başlarsınız. Oyunun başında isterseniz sonsuz zaman ve sonsuz hak yapabilirsiniz. İsterseniz 5 hakla zamana karşı oynayabilirsiniz. Oyun tek kişilik yapılmış. Netice olarak Leonardo zekasını kullanmak, zevkli vakit geçirmek isteyenlerin mutlak alması gereken bir oyun. Hepinize şimdiden bol şans ve başarılar dilerim. MERİÇ GÖKTEKİN

2)
KES ";BY$
Bi< (Z19R)THEN Bİ$-Bİ$4*"

SHIFTING (KAYDIRMA) VE ROTATION (DONDURME) Bu ve bunu takip eden bölümler binary sayı bilne dayanmaktadır. Yukarıdaki satırlar ile assembregisterdeki değerleri binary rakamlara çevirektir. Assembler programını yükle (Load) ve aşağıdakileri gir: Bu satırları yazdıktan sonra assember programını yeniden kaydet (Save) ASL (A registerini sola kaydır) ASL sola bir bit kaydırmayı sağlar. İşte diagram: Carı z o o Bu komutu kullandığın zaman O, O bite'e girer, © bit 1 bit'e, 1. bit 2. bit'e böylece 7. bit Carry flag'a girene kadar devam eder. Aşağıdaki örnek ASL komutu kullanılmadan önceki ve sonraki değeri gösterir: Rotation'dan önce: Carry flag —- O, döndürülecek memory — 1 0110 Rotation'dan sonra: Carry flag - 1, memory — 00101100 Burada 7. bit'teki 1 Carry flag'a aktarıldı. Aşağıdaki programda A registerini 81 10000001) den 2 (00000010) ye ve Carry flag set durumuna geçer: Coco LDA

co03 — RTS
Co04 LDY #$03
Coo7 RTS
Yukarıdaki program Carry flag'ı 1'e set eder,
Ü 7. bit (1 vardı) Carry flag'a shift edilmiştir.
Bundan sonraki program memory bölgesini shift
X değeri shift'ten önceki değerine sahiptir, ve
teri shift'ten sonraki değerlere sahip olur:
Cooo LDX & $AE
Co02 STX $ FE
ASL $ FE

CO06 LDY $ FE Cco08 RTS LSR (Logical Shift Right) (Sağa Lojik Shift) ASL'nin tam tersini yapar. Memory'yi bir bit sağa shift eder:

m n byte sağa 1 bit shift edilir. O, 0.cı bite, O.bit 1. bit'e ve en son 7. bit Carry flag'a geçer. İşte A registerini A7 (10100111) değerinde 53 (01010011) değerine shift ettiren program: Co00 LDA Co02 LSR

ASL aşağıdaki adreslemelerin hepsini sağlar: ACCUMULATOR (A REGISTER) ADDRESSING (ASL, LSR) ZERO PAGE ADDRESSING (LSR $ZZ, ASL $ZZ) ZERO PAGE INDEXED ADDRESSING (LSR $ZZ,X, ASL $ZZ,X) ABSOLUTE ADDRESSING (LSR $ZZZZ, ASL $ZZZZ) ABSOLUTE INDEXED ADDRESSING (LSR $ZZZZ,X, ASL $ZZZZ,X) ROL (Rotate One bit Left) (Sola bir bit rotate ROL aslında ASL gibidir, yalnız 0. bit'e 0 gireceğine Carry flag oraya shift edilir. 7 0 9 gösterildiği gibi Carry flag 0. bite geçer ve diğerleri de birer sola kayar. İşte A register'ın $81 (10000001) den $03 (00000011) değerine shift ettiren örnek program. Carry flag'ın rotation'dan önce set olduğuna dikkat et C=0 LDA #$81

SEC
RO:
RTS

A registeri sonucunda 3 değerini alır. cünk

Carry flag 0. bite, 7. bitte Carry flag'a geçti. ROR (Rotate One bit Right) (Sağa bir bit rotate) Bu komut ROL'nin tam tersidir. Çünki Carry flag 7. bite, 7. bitte Carry flag'a geçer. İşte diagram:

Tİ) Aşağıdaki program FF (11111111) değerini 7F (011111111) ye rotate eder, sonuçta Carry set olur: co00 LDA #$FF

— CLC
Co03 ROR
coo4 — RTS

X ROL ve ROR, ASL ve LSR nin desteklediği adreslemeleri destekler. Sizin için bir problem çözme zamanı. Rotate ve shift'ten önce A registerinde 78 (01111000) değeri var ve Carry flag set. Rotation'- dan sonra A — ve Carry flag clear'dır. Bunlardan hangisini kullandım? Kullandığım komut ROL idi. İşte kullandığım

program:
cooo LDA #$78
— SEC
Co03 ROL
Ccoo4 — RTS

Eğer cevabında ROL kullanmadınsa, fakat hatanı anlıyorsan devam et. Yoksa bu bölümü tekrar et.

LOJİK KOMUTLAR Lojik komutlar byte'ın bit'lerini değiştirir. Şimdiye kadar öğrenilen komutların aksine bit'te store ederler. Bu bölüm 6510 da kullanılan bütün lojik komutları izah eder.

AND (Memory'i A registeri ile AND et) Not: AND çarpmaya benzer bir işlem. Bu BASIC'teki AND komutu gibidir. A registeri AND komutunu kullanan tek registerdir. Komut her bir bit'i diğer bit'lerle teker teker mukayese eder. Eğer iki bit set (1) ise sonuç set (1). Aksi takdirde reset (0) dir. İşte bir örnek: 1 X 1 = 1 0 X 0 = 0 10111010 10001011

10001010 Yukarıdaki iki sayı AND edilmiştir. Alttaki sayı ise sonuçtur. Assembly dilinde AND kullandığın zaman A registeri daima sonucu muhafaza eder. İşte 45 CE (11001110) ile AND edilmesini gösteren örnek: C000 LDA #$45 C002 AND #$CE C004 RTS AND komutu bazı bit'leri off - 0 etmek için çok kullanışlıdır. Mesela 0. bit'i off yapmak için FE (11111110) ile AND et. 7. bit'i, 0. bit'i off yapmak istersen 7E (01111110) ile AND et. AND üzerine notlar: * Eğer sonuç 80 ile FF arasında ise Negative flag set olacaktır. * Eğer sonuç 00 ise Zero flag set olacaktır. * A registeri AND komutu için aşağıdaki adresleme modlarını destekler: IMMEDIATE (AND #$ZZ) ZERO PAGE (AND $ZZ) ZERO PAGE INDEXED (AND $ZZ,X)

ABSOLUTE (AND $ZZZZ)

ABSOLUTE INDEXED (AND $ZZZZ,X) veya (AND $ZZZZ,Y) INDEXED INDIRECT (AND ($ZZ,X)) INDIRECT INDEXED (AND ($ZZ),Y) ORA (Memory'i A registeri ile OR et) Bu BASIC'teki OR komutu ile aynıdır. İki numaranın her bit'i mukayese edilir. Eğer biri veya ikisi de set ise sonuç set olur. Not: Toplama gibi 1 + 0 = 1 0 + 1 = 1 İşte örnek: 10111001 00100101 10111101 OR komutu bazı bit'leri ON - 1 yapmak için kullanılır. İşte 028A bölgesinde 7. bit'i ON eden program: C000 LDA $028A C003 ORA #$80 C005 STA $028A C008 RTS 1 = ON 0 = OFF A registeri ORA komutunun neticesine sahiptir. 64'ler sayfa 45