
English: 
so Matt we have had to chat with you
before about assembler and the game that
you're writing so what we can look at
today we're going to write some basic
game logic and assembly language first
I'm going to show the basics of the CPU
from a programmers point of view so
let's invent a CPU it's going to have a
logic core and because we're programmers
we don't concern ourselves too much with
that what we do care about the registers
and registers are very tiny typically
four to eight bytes of storage inside
the CPU itself for the logic court to
operate on so it's imagine we've got a
register one a registered to and we've
got the pc the pc is the program counter
and that stores the currently executing
line of code so if you imagine back to
your basic days we would have something
like 10 print hello 20 go to 10 so the
1020 are the currently executing lines
of code and basic obviously base it
would have a software solution for this
but the principle applies the pc would

Turkish: 
 Matt biz seninle sohbet etmek zorunda kaldık 
 montajcı ve oyun hakkında daha önce 
 yazıyorsun, neye bakabiliriz 
 bugün biraz temel yazacağız 
 önce oyun mantığı ve montaj dili 
 CPU'nun temellerini göstereceğim 
 programcılar açısından 
 hadi bir işlemci icat edelim 
 mantık çekirdeği ve çünkü biz programcılar 
 kendimizle çok fazla ilgilenmiyoruz 
 sicil kayıtlarını önemsiyoruz 
 ve kayıtlar tipik olarak çok küçüktür 
 dört ila sekiz bayt depolama alanı 
 mantık mahkemesi için CPU'nun kendisi 
 devam et, elimizde bir hayal olduğunu 
 birine kayıt olun ve biz 
 pc var pc program sayacı 
 ve o anda çalışan 
 kod satırı, böylece geri dönmeyi düşünüyorsanız 
 senin temel günlerin bir şey olurdu 
 10 gibi baskı merhaba 20 10'a gitmek 
 1020 şu anda yürütülen satırlar 
 Kodun ve temel açıkça temel 
 bunun için bir yazılım çözümü olurdu 
 ama prensibi pc olur geçerlidir 

Turkish: 
 mantık çekirdeği olacak 
 yürütmek için bu kod satırını alın 
 program sayacını ilerletir 
 20'ye ve sonra bu kod satırını yürütün 
 ama bu rutine gitmek 10 enjekte ederdi 
 program sayacına geri 
 sonraki kod satırı daha sonra tekrar 10 olur 
 öyleyse bu mantık çağrısı hayal edelim 
 bazı sahte rom bazı ram bağlı 
 belki bir grafik işlemcisi veya başka bir şey 
 fiziksel teller boyunca ve biz bu 
 veri yolunu çağır, böylece mantıksal yoldan alabilir 
 bir saat veriyolunu kullanma hakkında hafıza 
 derhal gidiyor olacak başlatır 
 programın kodunu çalıştırmaya başla 
 karakterleri 0 ile başlatılmış olabilir. 
 sözde hafızamızda SAT rom'u 
 harita hemen başlayacak 
 ROM’un üstünden kod çalıştırmak 
 hadi bazı derlemeler yazalım 
 diğer iki kayıt ile etkileşime girme 
 öyleyse yapmak istediğimiz ilk şey 
 Bu ikisinin içine bazı temel değerler koymak 
 Hadi bir hareket komutu yapalım. 
 adresin en üstünde çalışan 0 ve 
 Bu talimat hareket edecek 
 değişmez değer 8, r1 registerına 
 bu komut böyle gözükürdü 

English: 
hold the 10 so the logic core would
fetch that line of code to execute it
would then advance the program counter
to 20 and then execute that line of code
but this go to routine would inject 10
back into the program counter so the
next line of code would then be 10 again
so this logic call let's imagine it's
attached to some pseudo rom some ram
maybe a graphics processor or something
along physical wires and this is what we
call the bus so the logical can fetch
memory about using an hour bus when it
initializes it's going to immediately
start executing code the program
characters could be initialized to 0 at
which point SAT rom in our pseudo memory
map it's going to immediately start
executing code from the top of ROM so
let's write some assembly we can
interact with the other two registers
then so the first thing we want to do is
put some basic values in these two so
let's do a move command so we've got
address 0 which is the top of run and
this instruction is going to move the
literal value 8 into register r1 so
that's what that command would look like

English: 
next line of code let's imagine these
lines of code are two bytes wide address
number two we're going to move the
literal value for into register r2 and
then as a third line
address for we're going to add the two
together so we'll perform an ab command
we're going to add eight and four
together which we're in r1 and r2 so we
add r1 and r2 together and the result
would be stored in our two so what's
going to happen when the cpu starts up
its going to initialize the pc 20 which
is address 0 in the run where our code
is address 0 is going to move the
literal value 8 into register r1 it's
then going to advance the program
counter 22 which is going to move the
literal value for into register r2 then
it's going to advance the program
counter 24 and that's going to add
register one to register to it's going
to store the value into register two so
we would expect 12 and register at this
point just like basic using the go to
Thurmond go and you can jump the pc
around so let's perform that out

Turkish: 
 sonraki kod satırı bunları düşünelim 
 kod satırları iki bayt geniş adres 
 İkincisi, hareket edeceğiz. 
 r2 siciline değişmez değer ve 
 o zaman üçüncü bir çizgi olarak 
 adresi iki tane ekleyeceğiz 
 birlikte bir ab komutu uygulayacağız 
 sekiz ve dört ekleyeceğiz 
 birlikte r1 ve r2'deyiz. 
 Birlikte r1 ve r2 ekleyin ve sonuç 
 bizim ikimizde depolanan ne olacak 
 cpu başladığında olacak 
 pc 20'yi başlatacak olan 
 kodumuzun çalıştığı yerdeki adres 0'dır. 
 0 adresi hareket edecek 
 r1 yazmacının içerisine değişmez değer 
 sonra programı ilerletmek için gidiyoruz 
 harekete geçecek olan sayaç 22 
 r2 registerına yazılan değer 
 programı ilerletecek 
 sayaç 24 ve bu eklenecek 
 kayıt olmak için kayıt ol 
 değeri iki kayıt defterinde saklamak için 
 12 bekliyoruz ve buna kayıt oluyoruz 
 Sadece go kullanarak kullanarak temel gibi gelin 
 Thurmond gitmek ve pc atlayabilirsiniz 
 etrafında bu yüzden yapalım 

Turkish: 
 operasyon tekrar böyle bir elbise 6 ben 
 adrese geri zıplayacak ve 
 bu tekrar ekleme yapmak için gidiyor 
 bu talimat tamamlandıktan sonra 
 6'ya atlayacak ve bu olacak 
 pc içine adres enjekte böylece 
 Bir sonraki kod satırı çalıştırılıyor 
 tekrar dörde dönmek, öyleyse gidiyoruz 
 tekrar vermek için r1’yi r2’ye eklemek 
 bize 20 ki hala olanı ekleyecekti 
 r12’de şimdiden sonra ne oldu 
 son reklam evet evet değişiklikler sizin açık 
 İşlemciye tam olarak ne yapılması gerektiğini söyleme 
 bu sicil değerlerini değiştirecek 
 buraya yazdığınız kodun dışında 
 bu senin için gerçekten iyi görünüyor 
 Şimdi bazı toplamlar ve şeyler yapmanın temelleri 
 oyuna girdiğinde bu darbe nasıl 
 ve bunun iyi bir yol olduğunu görebiliyorum 
 puanları toplamak için 
 şüphesiz biz bazılarına bakacağız 
 çok temel platform kodu bu yüzden 
 sözde bir oyuncu olacak 
 korkunç boş bir sayfa başlatmak ilk izin ver 
 Bunu 68,000 montajcıya çevir 

English: 
operation again so on a dress 6 i'm
going to jump back up to address for and
that's going to perform the add again so
once this instruction is completed is
going to jump to 6 and that is going to
inject address for into the pc so that
the next executing line of code is going
to be back to four again so we're going
to again add r1 to r2 which would give
us 20 so that would add what was still
in r12 what was now in our to after the
last ad yes yes changes are explicit you
tell the CPU exactly what to do is not
going to change these register values
outside of the code you've written here
this looks really good for you know the
basics of doing some sums and things now
how's this blow when you get into a game
and I can see this being a good good way
for adding up the scores but yep
certainly we are going to look at some
very basic platforming code so we're
going to have a pseudo player that's
awful start a blank page let me first
translate this to 68,000 assembler

Turkish: 
 Aslında ben de öyle yapacağım 
 tamam yani içinde olan 68.000 CPU 
 sega megadrive'dan biraz farklı 
 Burada icat ettiğimiz işlemci 18 
 için d0 ile d7 arasında çalışan kayıtlar 
 genel amaç bunları kaydeder 
 çok mantık ve aritmetik için kullanılır 
 biz de a0 dan a7 ye 
 için kullandığımız kayıtların adreslerini yaz 
 erişme 
 hafıza parçaları rom ram diğer 
 veri yolu üzerindeki çevre birimleri 68.000 
 elimizde d0 ila d7 sicilimiz var 
 0'dan 7'ye bir kayıt var 
 sadece bizim sahte cpu ve statü gibi pc 
 Buraya kaydolun 
 Son işlemden sonra CPU'nun durumu 
 operasyon içinde bayraklar olacak 
 Zed bayrağı ve taşıma bayrağı 
 Zed bayrağı belirlemek için kullanılır. 
 Son işlemin sonucu 0 oldu, öyleyse 

English: 
actually that's what I was going to do
okay so the 68,000 CPU which is in the
sega megadrive is slightly different to
the cpu we invented here it's got 18
registers which run from d0 to d7 for
the general purpose registers those is
used for a lot of logic and arithmetic
we've also got a0 to a7 which are
address registers which we use for
accessing
parts of memory rom ram other
peripherals on the bus 68,000 logical
we've got d0 to d7 registers we've got
the a 0 to a 7 registers we've got the
pc just like our fake cpu and the status
register here the status register stores
the state of the CPU after the last
operation it'll have flags inside it
called the Zed flag and the carry flag
the Zed flag is used to determine if the
result of the last operation was 0 so if

English: 
we had four in our 14 and r2 and
subtracted the to the result would be 0
it would then set the carry flag we can
use that to compare two numbers to see
if they're equivalent it's also got the
carry register which tells us if the
result of the last operation was a
positive number going negative so if we
had seven in our one we had a 12 in r2
and we subtracted are two from our 112
is greater than 7 the result is going to
go negative is going to set that carry
flag and we can use that for comparison
so we can compare two numbers and we can
perform logic jump around to different
parts of code depending on the state of
the flags and the status register okay
so we're going to translate our pseudo
example here into real 68,000 assembly
so the first command the move aight into
register r1 will be a move and we need
to add the size of the operation here
and that can be a biter word or a long
for simplicity's sake i'm going to use
along a byte is eight bits a word is 16
bits and a long word is 32 bits so we're

Turkish: 
 14 ve r2’de dördü vardı. 
 sonuç çıkarılırsa 0 olur 
 daha sonra yapabileceğimiz taşıma bayrağını ayarlayacaktır. 
 bunu görmek için iki sayıyı karşılaştırmak için kullanın 
 eğer eşdeğerlerse, o da 
 bize bildiren kayıt taşımak 
 son operasyonun sonucu 
 Olumlu sayı negatif oluyor yani biz 
 içimizde yedi tane vardı, içinde r2, 12 
 ve çıkardığımız 112’den iki 
 7’den büyükse sonuç 
 negatif gitme bu taşımaya gidiyor 
 bayrak ve karşılaştırma için bunu kullanabiliriz 
 böylece iki sayıyı karşılaştırabiliriz ve 
 etrafında farklı mantık atlama yapmak 
 durumuna bağlı olarak kod bölümleri 
 bayraklar ve durum kaydı tamam 
 öyleyse biz sözde çevirisini yapacağız 
 burada gerçek 68.000 montaj örneği 
 öyleyse ilk komut harekete geçsin 
 r1 kaydı harekete geçecek ve ihtiyacımız olacak 
 işlemin boyutunu buraya eklemek için 
 ve bu bir ısırık kelimesi veya uzun olabilir 
 sadelik uğruna kullanacağım 
 bir bayt boyunca sekiz bit bir kelime 16 
 bit ve uzun bir kelime 32 bit yani biz 

English: 
going to move a long word worth of data
32 bits it's going to be a literal value
eight and we're going to use these d
registers which are the general purpose
or rhythmic registers so let's use d0
next slime we're going to move another
long word literal for into registered d1
and add together we're going to add two
long words worth of data register d 0 to
D 1 i've used long list for simplicity a
bite would only write the eight into the
lower bite and this would be whatever
was last in the upper bikes of that
register if we were to write it as a
word we would get 08 into the lower half
of the reg
and whatever was last used in the
register would be in the upper half but
I always really work with long words so
this register would contain 0008 and the
same goes for the add operation we're
going to add 32 bits of data so the
entire register is going to be added
with the entirety of another register
I'm going to type this back up into the
pburg ER and I'm going to show this

Turkish: 
 veriye değer uzun bir kelime taşıyacak 
 32 bit, değişmez bir değer olacak 
 sekiz ve biz bunları kullanacağız 
 genel amaçlı olan kayıtlar 
 veya ritmik kayıtlar yani haydi d0 kullanalım. 
 bir sonraki sümük başka bir yere gideceğiz 
 için kayıtlı uzun kelime kelimesi d1 
 ve birlikte ekleyin, iki tane ekleyeceğiz. 
 veri kayıt uzun sözler d 0 ila 
 D 1 sadelik için uzun liste kullandım 
 ısırık sadece sekiz içine yazacaktı 
 düşük ısırık ve bu olursa olsun 
 bunun üst bisikletlerinde sonuncuydu 
 kayıt olarak yazsak 
 kelime 08'i yarı yarıya alırdık 
 reg 
 ve en son ne kullanılıyorsa 
 sicil üst yarısında olacaktı ama 
 Ben her zaman gerçekten uzun kelimelerle çalışıyorum. 
 Bu kayıt 0008’i ve 
 Aynı biz ekleme işlemi için de geçerli 
 32 bit veri ekleyecek 
 tüm kayıt eklenecek 
 başka bir kaydın tamamıyla 
 Bunu tekrar yazacağım. 
 pburg ER ve ben bunu göstereceğim 

English: 
running in the debugger so we can
evaluate evaluate each step as it's
running and then we get to add to it
with some basic platform player logic
let's go some basic assembly language
then I've got environment setup for 68 k
assembler for the sega megadrive which
includes a basic skeleton here the first
thing we do is we define the start and
the end of the ROM file for including in
the head or later we're going to include
the header file here and previously
explained that the pseudo CPU that we
made was going to start executing code
from address 0 for 68 k it's very
slightly different the CPUs not going to
look for code when it starts up it's
going to look for this table in the
first 512 bytes of memory so the first
thing it's going to look for is the
address to initialize the stack value to
and this is the one we're interested in
here is the CPU entry point so it's
going to start executing code from the
address that it finds in this entry of
the table rather than immediately stream
address 0 so we can define a label here
a CPU entry point and then back in our

Turkish: 
 hata ayıklayıcısını çalıştırarak böylece 
 her adımı olduğu gibi değerlendirin 
 koştuktan sonra ekleyelim 
 bazı temel platform oynatıcı mantığı ile 
 bazı temel derleme dillerine gidelim 
 sonra 68 k için çevre kurulumu var 
 sega megadrive için assembler olan 
 burada ilk bir temel iskelet içerir 
 Yaptığımız şey, başlangıcı tanımlamak ve 
 dahil olmak için ROM dosyasının sonuna 
 baş veya daha sonra dahil edeceğiz 
 Başlık dosyası burada ve daha önce 
 sözde CPU olduğunu açıkladı 
 yapılan kod yürütmeye başlayacaktı 
 68 k için 0 adresinden çok 
 biraz farklı CPU'lar gitmiyor 
 başladığında kodu arayın 
 Bu tablo için bakacağım 
 ilk 512 bayt hafızanın 
 aradığı şey 
 yığın değerini başlatmak için kullanılacak adres 
 ve bu ilgilendiğimiz şey. 
 işte CPU giriş noktası 
 kod çalıştırmaya başlayacak 
 bu girişte bulduğu adres 
 hemen akış yerine tablo 
 adres 0, burada bir etiket tanımlayabiliriz 
 Bir CPU giriş noktası ve sonra tekrar 

English: 
code file here we can start executing
code from here because this is a
debugger it's very slightly different to
a standard program we have to initialize
the connection to the debugger using
this subroutine but don't worry too much
about it so we can then start typing our
code out so our example before was to
move a long word literal eight into
register d0 we were then going to move a
long word little forward to reg D 1 and
then we're going out of the two together
so add long word worth of data d 0 to D
1 and that should assemble and we can
fire that up them ok so let's switch the
devkit on load up the debugger and then
we'll load our executable we have done a
video on the dev kit for anyone who's
interested oh just give people a kind of
one sentence on what this dev kit is its
a sega mega-cd development kit which has
a snazzy
board inside 468 keightley bugging on
top of that it's got the Mega Drive
daughter board on top of that it's got
the mega-cd daughter board this is

Turkish: 
 Burada kod dosyasını çalıştırmaya başlayabiliriz 
 Buradan kod çünkü bu bir 
 hata ayıklayıcı çok farklı 
 başlatmamız gereken standart bir program 
 kullanarak hata ayıklayıcısına bağlantı 
 bu alt yordam ama çok fazla endişelenme 
 onun hakkında yazmaya başlayabiliriz. 
 bu yüzden daha önce bizim örneğimizi 
 Kelimenin tam anlamıyla sekiz kelimesini uzun bir kelimeye taşımak 
 d0 siciline geçtik ve sonra hareket edeceğiz 
 uzun kelime az önce D 1’e ve 
 sonra ikisinden birlikte çıkıyoruz 
 öyleyse uzun veri değeri d 0 dan D ye ekleyin 
 1 ve bu toplanmalı ve biz 
 Onları ateşle tamam, hadi değiştirelim. 
 hata ayıklayıcısını yükledikten sonra devkit ve sonra 
 Yaptığımız yürütülebilir dosyayı yükleriz. 
 herkes için dev kitinde video 
 ilgileniyorum oh sadece insanlara bir tür ver 
 Bu dev kit ne olduğuna bir cümle 
 olan bir sega mega-cd geliştirme kiti 
 şık 
 üzerinde kurulu 468 keightley içinde kurulu 
 bunun da üstünde Mega Drive var 
 üstüne kurulu kız var 
 Mega-cd kız kurulu bu 

Turkish: 
 PC'nin arkasına bağlı 
 güzel bir kart için scuzzy kablosu olan 
 Burada hata ayıklayıcıyla etkileşime girdik. 
 eski bir ms-dos tabanlı hata ayıklayıcı hazır 
 kodun hatalarını ayıklamak, böylece yavaşça çalıştırılabilir 
 yapmak istediğimiz ilk şey sıfırlama 
 CPU ve sonra bir 
 kaynak pencere burada tamam, böylece bir 
 ilk satırdaki kesme noktası f9 olarak 
 Böylece şimdi çalıştırılabilir 
 hata ayıklama buraya gel ve bize gösteriyor 
 Gerçek zamanlı bu operasyonun sonuçları 
 yani biz burada bu noktadayız 
 ilk talimat taşınacaktı 
 küçük sekiz ve d0 'a kayıt yaptırırsak 
 Bunun sonucunu görebiliriz 
 operasyon burada sonraki satır gidiyordu 
 d1 siciline biraz hareket etmek 
 Bunun sonuçlarını burada görebilir ve 
 sonra ikisini birlikte ekleyeceğiz 
 d 0 artı d 1 ve sonuç 
 d1'de olmak, bize 12 tane vermek. 
 onaltılık burada yani hepsi çalışıyor 
 Bu kelimenin tam anlamıyla kelimesini kullanmadıysan, 
 sadece bir kısmının üzerine yazıyor olabilir 
 o hafıza evet uzun yazabilirsin 
 bir kelime veya bir bayt kelimesini 
 ilk ısırık iki mikrofon veya dört kullanın 

English: 
connected to the back of the pc by a
scuzzy cable to a nicer card which can
interact with the debugger here we've
got an old ms-dos based debugger ready
to debug code so it slowly executable
the first thing we want to do is reset
the CPU and then we can bring up a
source window here ok so we can set a
breakpoint on the first line as f9 to go
so that executables now running on the
debug get here and it's showing us in
real time the results of that operation
so we're on this breakpoint here so the
first instruction was going to move the
little eight and to register d0 so if we
step we can see the result of that
operation here the next line was going
to move a little for into register d1 we
can see the results of that here and
then we're going to add the two together
the d 0 plus d 1 and the result is going
to be in d1 so that gives us 12 in
hexadecimal here so that's all working
if you didn't use this literal word you
might be just overwriting some part of
that memory yeah you can write a long
word a word or a byte of data which will
use the first bite two mics or four

English: 
bikes for the register the same goes for
add divide multiply subtract etc you
have to specify how much the registers
you're going to deal with that includes
wrapping so if you're doing a bike tad
255 would wrap around 20 if you're doing
a word size at 65 k we're at 64 k would
wrap around 20 again and it's not useful
those things are useful in certain
circumstances on yes tis yes because a
smaller the operation the faster it
executes on the CPU so you can do a lot
of optimizations by doing by size
operations instead of words or long
words ok so we're going to write some
basic platforming code imagine we've got
a player at a floor and he has a
positive x velocity and a positive y
velocity so he is running and jumping
and we're going to handle the logic back
to move the player the first thing we
want to do is to designate some
registers for the player x and y

Turkish: 
 Kayıt için bisiklet aynı 
 ekle böl çarpma çıkarma vb 
 Kayıtların ne kadarının belirtilmesi gerektiği 
 bununla başa çıkacaksın 
 biraz bisiklet yapıyorsanız, böylece kaydırma 
 255, 20'yi tamamlardı 
 65 k kelime büyüklüğünde 64 k 
 Yine 20 civarında sarın ve yararlı değil 
 bu şeyler kesin olarak faydalı 
 evet, çünkü evet 
 operasyon ne kadar küçük olursa o kadar hızlı 
 CPU üzerinde çalışır, böylece çok şey yapabilirsiniz 
 boyuta göre optimizasyonların yapılması 
 kelimeler veya uzun işlemler yerine işlemler 
 kelimeler tamam yani biraz yazacağız 
 temel platform kodunu aldığımızı hayal edin 
 bir katta bir oyuncu ve o bir 
 pozitif x hızı ve pozitif y 
 hız yani koşuyor ve zıplıyor 
 ve biz mantığı geri ele alacağız 
 Oyuncuyu ilk hareket ettirmek için 
 yapmak istemek bazılarını belirlemek 
 oyuncu x ve y için kayıtlar 

Turkish: 
 eğer oyuncuları sıfırlarsak 
 sıfır atıp d0'ı kaydetmek 
 oyna x artı başlatabiliriz 
 oyuncular sıfır pozisyonunda ve d1’i 
 o ve sonra başlatabiliriz 
 d2 cinsinden hız değerleri 
 X hızı da 2d içinde 16 gibi bir şey 
 bu yüzden oyuncu X hız ve biz gidiyoruz 
 oynatıcı y hızını başlatmak 
 Olumlu bir şey çünkü o atlıyor 
 Yani 2d üç oyuncu y hız 8 tamam 
 Şimdi bir oyun döngüsüne ihtiyacımız var. 
 Oyunun tepesi için bir etiket yaz 
 döngü oyuncu güncellemesi diyelim ve 
 o zaman oynatıcıyı hareket ettirmeye başlayabiliriz 
 hızı kullanarak bize ihtiyacımız olacak 
 oyunculara oyunculara X hızı ekleyin 
 yedekler çünkü 220 ekleyeceğiz 
 oyuncuları ekleyeceğiz 
 oyuncuların pozisyonlarını hızlandırın, böylece 
 Bunu yapmak için d3 ekleyeceğiz, o zaman biz 
 oyuncuya geri döngü olacak 

English: 
position so if we initialize the players
exposition a zero and to register d0 so
play it x plus we can initialize the
players y position zero and use d1 for
that and then we can initialize the
velocity values so in d2 let's store the
X velocity something like 16 in 2d too
so player X velocity and we're going to
initialize the player y velocity to
something positive because he's jumping
so 8 in 2d three player y velocity okay
so now we need a game loop so let's
write a label for the top of the game
loop let's call it player update and
then we can start moving the player
using the velocity so we would need to
add players X velocity to the players
backs cause so we're going to add do 220
we're going to add the players y
velocity the players y position so we're
going to add d3 to do one so then we're
going to loop back up to the player

Turkish: 
 güncelleme başlangıç ​​böylece geri bir sıçrama yaparsak 
 Oyuncu tamam devam edecek 
 sonsuza dek döngü, hadi tasarruf edelim ve 
 Bunu birleştir ve hareket halinde gör 
 Bu gizli bir kod 
 Bu oyuncunun olduğu yere müdahale etmek 
 haklısın evet bu çok küçük bir oyun 
 hızı idare eden döngü 
 x ve y pozisyonlarına cevap vermek için başvurma 
 Açıkçası şeyler bu sarılacak 
 karakteri çizmek için ve evet 
 burada ekstralar olacak 
 oyuncuları hesapladığınızda grafikler 
 x ve y konumlarına gönderirseniz 
 Y konumundaki zincir dişlisi X 
 Tamam olsa da başka bir gün için tabi 
 hadi bu hatta tekrar çalışacağım 
 ve sonra buradan ayrılalım, hadi 
 d0'ı x pozisyonu 0 konumuna getir 
 neden puls 20 çaları başlatacak 
 o zaman mekanı başlatacağız 
 X hızını 16'ya çıkaracağım. 
 y hızı 28 ve sonra 
 Bu sonsuz döngüye buraya girin, öyleyse biz 
 oyuncuları ekleyeceğim X velocity 2z0 

English: 
update start so if we do a jump back to
player okay that's going to continue
looping forever so let's save and
assemble that and see it in action so
this is a discreet bit of code for
handling where that player is would that
be right yes this is a very tiny game
loop which would handle the velocity
applying to reply x and y position
obviously stuff would wrap around this
for drawing the character and all yeah
there will be extras here for the
graphics once you calculate the players
x and y position you would send it to
the sprocket X on Y position that's a
subject for another day though okay so
let's break on this line will run again
and then we can break here so let's
initialize d0 to the play x position 0
will initialize the player why pulse 20
we're then going to initialize the place
X velocity to 16 I'm going to initialize
the y velocity 28 and then going to
enter this infinite loop here so we're
going to add the players X velocity 2z0

English: 
going to add the players y velocity to
d1 and I'm going to jump back up and I'm
going to continue doing this forever and
the loop would just basically make him
move it will make a move for
so he'll continue to move right he'll
continue to jump up so he's jetpacking
news jetpacking so let's add to it let's
define gravity we would use the equate
label and we'll have gravity as
something like 8 let's define the floor
height as something like seven I haven't
use an odd number yet so in the player
update before we apply the y velocity we
want to apply the gravity to it so we
can subtract long word it's a little so
we need the hash again gravity from the
player y velocity here before we apply
it once the position has advanced we
want to check if we've hit the floor so
to do comparisons you want to watch the
status register to look at the last
state of the CPU for the last operation

Turkish: 
 oyunculara hızını katacak 
 d1 ve ben geri atlayacağım ve ben 
 sonsuza dek yapmaya devam edeceğim ve 
 döngü sadece temelde onu yapar 
 için hareket ettir 
 bu yüzden doğru hareket etmeye devam edecek 
 atlamaya devam et o yüzden jetpacking yapıyor 
 haber jetpacking yani ekleyelim 
 yerçekimini tanımlayın, eşitliği kullanacağız 
 etiket ve biz yerçekimi olarak 
 8 gibi bir şey kat tanımlayalım 
 yedi gibi bir şey yüksekliği 
 henüz tuhaf bir numara kullanın. 
 y hızını uygulamadan önce güncelledik 
 yerçekimi buna uygulamak istiyoruz biz 
 biraz kelime çıkarabilirsin bu yüzden biraz 
 biz tekrar yerçekimi karma gerekir 
 Uygulamadan önce burada oyuncu y hızı 
 bir kez pozisyon ilerledikçe 
 Zemine çarpıp çarpmadığımızı kontrol etmek istiyorum. 
 karşılaştırmak için izlemek istediğiniz 
 son bakmak için durum kaydı 
 Son işlem için CPU'nun durumu 

English: 
so if we do the subtraction one number
from the other the status register will
have a flag in it to tell us whether
that number had become zero or had
become a negative number so you want to
compare the floor height with the
players current white position if the
result of that comparison was a negative
number the player is below the floor so
to do a comparison we would compare the
literal floor height with the players
wide position do you want and then we
would jump to a separate part of the
code if that condition was met so we do
branch if greater than there's also
branch of less than this beqa branch of
equal there's also equivalent for
unsigned numbers as well so that's
basically saying if this certain thing
is true then go to a different bit of
code yes exactly so we start by
comparing the floor height with a d1
which in the background would perform a
subtraction operation but without
writing results when he registers it
would only set the flags in the status
register state say if the result of that
operation would have been 0 or would

Turkish: 
 öyleyse eğer çıkarmayı bir sayı yaparsak 
 diğerinden durum kaydı 
 bize söyleyip söylemediğini bize söyleyin 
 bu numara sıfır olmuştu ya da 
 negatif bir sayı haline gelmek istiyorsan 
 taban yüksekliğini karşılaştırın 
 oyuncular şu anki beyaz konumunu 
 bu karşılaştırmanın sonucu negatif oldu 
 oyuncu katın altında ise 
 bir karşılaştırma yapmak için karşılaştırırız 
 oyuncularla değişmez kat yüksekliği 
 geniş pozisyonu istiyor musun sonra 
 ayrı bir bölümüne atlamak 
 Bu şart yerine getirildiyse kod uygulayın. 
 Şubesi de büyükse 
 bu beqa şubesinden daha az şube 
 eşit için aynı zamanda eşdeğer var 
 işaretsiz numaralar da öyle 
 temelde eğer bu kesin olanı söyleyerek 
 doğrudur sonra farklı bir bit gitmek 
 evet kod tam olarak başladığımızdan 
 Zemin yüksekliğinin d1 ile karşılaştırılması 
 arka planda olan 
 çıkarma işlemi, ancak olmadan 
 Kayıt yaptığında sonuçları yazmak 
 Bayrakları sadece statü olarak belirleyecektim 
 sicil durumu ise bunun sonucunu söyler 
 işlem 0 olurdu veya 

English: 
have gone negative and then we can check
those flags with the BGT branch if
greater than so that's just going to
check if the value for the carry flag is
one or zero so branch is greater than
and then we jump to another label so
we'll call this
floor and then we'll define that label
here above floor so we compare the full
height with d 1 if that was greater than
then we are above the floor and we're
going to skip this line of code we're
about to write and head straight to
above floor so if that condition was met
we are below the floor and in that case
we want to snap back the players white
position to the floor height so we move
the floor height to the players y
position which is d1 we also want to
null out the velocity because once we
hit the floor we don't want to carry on
going down so we reset that register to
their player what y velocity will be 0
in that case so let's assemble and run
that and we can step through at one at a
time so back in the debugger I've
changed the initial x and y Paul so he's

Turkish: 
 Negatif gitti ve sonra kontrol edebiliriz 
 BGT şubesi ile bu bayrakları 
 ondan daha büyük 
 taşıma bayrağı için değer olup olmadığını kontrol edin 
 bir veya sıfır yani dal büyüktür 
 ve sonra başka bir etikete atlıyoruz. 
 biz buna seslenelim 
 floor ve sonra bu etiketi tanımlayacağız 
 burada zeminin üstünde 
 d'den büyükse, d 1 ile 
 o zaman zeminden yukarıdayız ve 
 bu kod satırını atlayacağız 
 hakkında yazmak ve doğrudan 
 katın üstündeki bu koşul yerine getirildiyse 
 yerin altındayız ve bu durumda 
 beyaz oyuncuları geri çekmek istiyoruz 
 Zeminin yüksekliğine konumlandırıyoruz, böylece hareket ediyoruz 
 oyuncuların zemine yüksekliği 
 d1 pozisyonu biz de istiyoruz 
 hızı iptal et çünkü bir kez 
 yere vurmak istemiyoruz 
 aşağı iniyoruz, o sicilini sıfırladık 
 oyuncuları hangi hızda 0 olur 
 Bu durumda, hadi toplanalım ve koşalım. 
 o ve bir adım atmak 
 zaman zaman hata ayıklayıcısına geri döndüm 
 ilk x ve y Paul’ü değiştirdi, o da 

Turkish: 
 Bunun için zaten yerin üstünde 
 gösteri öyleyse hadi bunu çalıştıralım 
 Fuar başlıyor 28 biz gidiyoruz 
 y konumunu 28 başlatmak için 
 X hızını 16'ya ve 
 y hızı 28 bu kez ilk 
 Yapacağımız şey çıkarmaktır. 
 oyuncu y yerçekimi böylece yerçekimi 
 o günah bizden dörde düştü 
 x ve y hızını uygulayın, böylece d 2 'ye 
 d 3 'de 0 bir tane yapalım ve sonra biz 
 hala üstünde olup olmadığını kontrol edecek 
 kat yani biz karşılaştırmak için gidiyoruz 
 yeni beyaz konuma zemin yüksekliği 
 ve eğer yukarıdaysa şubeye gideceğiz 
 hala olan kat 
 doğruca bu çizgiye ve sonra atlarız 
 oyuncu güncellemesini bir kez daha yedekledik 
 yerçekimini d3'den alan gönderir 
 Bu, 0’ın zirvesine çarptığımız anlamına gelir. 
 atla biz x la citty ekleyeceğiz 
 y hızında bir karşılaştır 
 dört heceli kat hala 
 bir kez daha yerçekimini d3'e çıkardık 
 ve bu şimdi negatife gidiyor. 
 zıplamanın zirvesini geçtik 
 aşağı doğru uygulanmaya başlayacak 

English: 
already above the floor for this
demonstration so let's run this then
initialize the exposition 28 we're going
to initialize the y position 28 we've
initialized the X velocity to 16 and the
y velocity 28 so this time the first
thing we're going to do is subtract
gravity from the player y velocity so
that sin that's down to four before we
apply the x and y velocity so add d 2 to
the 0 at d 3 to do one and then we're
going to check if we are still above the
floor so we're going to compare the
floor height to the new white position
and we're going to branch if it's above
the floor which is still is so we skip
straight to this line and then we jump
back up the player update once again we
subtract gravity from d3 which sends it
0 which means we've hit the apex of the
jump we're going to add the x la citty
at the y velocity compare a
four-syllable the floor which we still
are once again we subtract gravity to d3
and this now goes negative which means
we're past the apex of the jump we're
going to start applying downward

English: 
velocity instead of upward velocity so
once again apply the X velocity to the
exposition the y velocity to the light
position i'm going to start moving
downwards instead and we're going to
keep going until we are below the floor
here so the floor height was set to
seven the white position is now zero so
this comparison is going to ring true
branch is greater than above the floor
which will fail there we go so we are
now below the floor we need to snap back
up to the floor height so we set the
full height into the Y position you want
and then we know the player y velocity
qui don't want to carry on going down so
the y velocity is now zero and then back
at the player update and then forever we
will always snap back up to that floor
height and we are always on the floor so
now he's still moving to the side but
he's just staying on the floor here's
just stay on the floor yes because
gravity's are basically clamping him to
the floor right yeah indeed from here on

Turkish: 
 yukarı doğru hız yerine hız 
 X hızını bir kez daha uygulayın 
 y hızını ışığa maruz bırak 
 pozisyon hareket etmeye başlayacağım 
 aşağı doğru yerine ve biz gidiyoruz 
 zeminin altına düşene kadar devam et 
 burada döşeme yüksekliği 
 yedi beyaz pozisyon şimdi sıfır yani 
 bu karşılaştırma gerçek olacak 
 dal zeminden daha büyük 
 ki orada başarısız olacağız yani gidiyoruz 
 Şimdi zeminin altında geri çekilmemiz gerekiyor 
 Zeminin yüksekliğine kadar 
 istediğiniz Y konumuna tam yükseklik 
 ve sonra oyuncuların hızını biliyoruz. 
 qui bu yüzden devam etmek istemiyorum 
 y hızı şimdi sıfır ve sonra geri 
 oyuncu güncelleme ve sonra sonsuza dek 
 her zaman o kata geri çekilir 
 yükseklik ve biz her zaman yerde 
 şimdi hala tarafa hareket ediyor ama 
 burada sadece yerde kalıyor 
 sadece yerde kal, evet çünkü 
 yerçekimi temelde onu kenetliyor 
 kat doğru evet gerçekten buradan 

English: 
it's not tricky to add things like
acceleration deceleration in air drag
things like that and once you start
getting into control pad input and stuff
like that that you can then apply the
acceleration to the current velocity and
then have basic pad inputs we've seen on
your game in the previous video that
you've got bouncing balls in it and is
that just an extension of this there's a
very basic physics engine in there which
is just an extension of all of this very
basic collision detection is just
comparison of numbers applying clamps or
bounce or restitution etc you can build
it all up like Lego blocks like this
just learn one thing at the time and if
somebody out there wants to learn this
kind of stuff and they obviously haven't
got the dev kit and all this old kit
lying around where would you suggest
they start to sort of learn these these
basic bits and pieces you can do exactly
the same thing using an emulator and
there are some freeware assemblers out
there you just need a text editor
assembler and an emulation off you go

Turkish: 
 gibi şeyler eklemek zor değil 
 hava sürtünmesinde ivme yavaşlaması 
 bunun gibi şeyler ve bir kere başladığında 
 kontrol paneli girişine ve diğerlerine giriş 
 Bu şekilde uygulayabilirsiniz ki 
 Geçerli hıza ivme ve 
 o zaman üzerinde gördüğümüz temel pad girişlerine sahip olun. 
 önceki videodaki oyununuz 
 içinde zıplayan topları var ve 
 bunun sadece bir uzantısı 
 orada çok temel fizik motoru olan 
 tüm bunların sadece bir uzantısı 
 temel çarpışma algılama sadece 
 kelepçe uygulama numaralarının karşılaştırılması veya 
 sıçrama veya tazminat vb inşa edebilirsiniz 
 her şey Lego gibi bloklar böyle 
 Sadece o zaman bir şey öğrenmek ve eğer 
 dışarıdaki biri bunu öğrenmek istiyor 
 tür şeyler ve açıkça belli değil 
 dev kit ve bu eski kit aldım 
 Nerede yatmanı önerirsin 
 bunları öğrenmeye başlarlar. 
 tam olarak yapabileceğiniz temel parçalar ve parçalar 
 Bir emülatör kullanarak aynı şey ve 
 bazı freeware derleyiciler var 
 orada sadece bir metin editörüne ihtiyacınız var 
 assembler ve senden bir emülasyon 

English: 
some are better than others find one
with a debugger built-in obviously
otherwise you'll get a bit lost but all
the principles are essentially the same
is this whereas
what's cuz he is yeah it pronounced
scuzzy I didn't realize that it was such
a widespread terminology I thought I'd
get laughed at saying scuzzy so I said
se SI but whatever thank you internet

Turkish: 
 bazıları diğerlerinin bulmasından daha iyidir 
 Açıkça yerleşik bir hata ayıklayıcı ile 
 Aksi takdirde biraz kaybolacaksınız ama hepsi 
 ilkeler aslında aynıdır 
 bu ise 
 cuz nedir o evet o telaffuz 
 scuzzy Öyle olduğunu anlamadım 
 yaygın bir terminoloji 
 ben de söyleyerek güldü ben de dedim ki 
 se se ama ne olursa olsun internet teşekkür 
