Microbaz
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
HomeSearchLatest imagesRegisterLog in

Share
 

 ترجمه Nerdy Nights week 6

View previous topic View next topic Go down 
AuthorMessage
Farid
Farid

Posts : 111
Join date : 2010-07-25
Age : 39
Location : IRAN
گروهبان سوم

گروهبان سوم


ترجمه Nerdy Nights week 6 Empty
PostSubject: ترجمه Nerdy Nights week 6   ترجمه Nerdy Nights week 6 I_icon_minitime2015-02-27, 6:58 pm

جدول‌های صفحه نمایش و خصیصه‌ها
در کل چهار تا جدول قابل نمایش بر روی صفحه وجود داره ولی به دلیل محدودیت سخت افزاری فقط میشه از دو جدول استفاده کرد. دو تا جدول دیگه دقیقا از روی دو تا جدول اصلی کپی میشن. این جدول‌ها در آدرس‌های زیر ذخیره میشن :


جدول صفحه نمایش یک23BF2000
جدول خصیصه یک23FF23C0
جدول صفحه نمایش دو27BF2400
جدول خصیصه دو27FF27C0
جدول صفحه نمایش سه2BBF2800
جدول خصیصه سه2BFF2BC0
جدول صفحه نمایش چهار2FBF2C00
جدول خصیصه چهار2FFF2FC0

هر یک از این جدول‌ها از 32 در 30 تا کاشی تشکیل میشن که میتونه کل صفحه نمایش رو پوشش بده. در جدول صفحه نمایش هر کاشی با یک بایت نمایش داده میشه. بنابراین کلا با 960 بایت میشه کل صفحه رو نمایش داد.

ترجمه Nerdy Nights week 6 Attribute%20Table%20on%20Name%20Table


هر بایت از جدول خصیصه‌ها مسئول تنظیم رنگ 16 تا کاشی 4 در 4 هست :

ترجمه Nerdy Nights week 6 Nes-nam-byte-desc


از طرف دیگه به دلیل محدودیت‌های سخت افزاری هر گروه از کاشی‌های 2 در 2 فقط میتونن چهار تا رنگ داشته باشن :

ترجمه Nerdy Nights week 6 13_colors_for_4x4_area


 این چهار تا رنگ در واقع یه گروه از از جعبه رنگ هست. هر جعبه رنگ هم از چهار تا گروه تشکل میشه که هر گروه شامل چهار تا رنگ هست.

ترجمه Nerdy Nights week 6 Nes-palette-memory

با استفاده از دو تا بیت به راحتی میشه گروه مورد نظر رو برای یه قسمت 2 در 2 انتخاب و اعمال کرد.
ضمنا کل پس زمینه صفحه هم میتونه حداکثر 13 تا رنگ داشته باشه!


Last edited by Farid on 2015-02-28, 3:36 am; edited 1 time in total
Back to top Go down
http://microbaz.blogfa.com
Farid
Farid

Posts : 111
Join date : 2010-07-25
Age : 39
Location : IRAN
گروهبان سوم

گروهبان سوم


ترجمه Nerdy Nights week 6 Empty
PostSubject: Re: ترجمه Nerdy Nights week 6   ترجمه Nerdy Nights week 6 I_icon_minitime2015-02-28, 3:30 am

هر سطر از جدول صفحه نمایش از 32 تا کاشی تشکیل میشه. هر کاشی با یه بایت نمایش داده میده. بنابراین برای نمایش یک سطر باید 32 بایت که همون مقدارهای هگز کاشی‌ها از جدول تکه‌های پازل هستن رو انتخاب بکنیم.

ترجمه Nerdy Nights week 6 Nes-nam-byte-desc-table


به عنوان نمونه برای ساختن چهار سطر به صورت زیر مقادیر هگز رو تعریف میکنیم :

Code:
background:
  .db $24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24
  .db $24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24
  .db $24,$24,$24,$24,$45,$45,$24,$24,$45,$45,$45,$45,$45,$45,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$53,$54,$24,$24
  .db $24,$24,$24,$24,$47,$47,$24,$24,$47,$47,$47,$47,$47,$47,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$55,$56,$24,$24

بعد با استفاده از یه حلقه کل این 128 تا مقدار رو به جدول صفحه نمایش کپی میکنیم. جدول صفحه نمایش از آدرس 2000 پردازنده گرافیک شروع میشه. بنابراین :

Code:
LoadBackground:
  LDA $2002
  LDA #$20
  STA $2006
  LDA #$00
  STA $2006
  LDX #$00
LoadBackgroundLoop:
  LDA background, x
  STA $2007
  INX
  CPX #$80
  BNE LoadBackgroundLoop


در مرحله بعدی باید رنگ‌های این کاشی‌ها رو اعمال بکنیم. این کار با معرفی داده‌های جدول خصیصه و به صورت زیر انجام میشه :

Code:
attribute:
  .db %00000000, %00010000, %01010000, %00010000, %00000000, %00000000, %00000000, %00110000

بعد این هشت بایت رو با استفاده از یه حلقه به جدول خصیصه‌ها انتقال میدیم که از آدرس 23C0 شروع میشه


Code:
LoadAttribute:
  LDA $2002
  LDA #$23
  STA $2006
  LDA #$C0
  STA $2006
  LDX #$00
LoadAttributeLoop:
  LDA attribute, x
  STA $2007
  INX
  CPX #$08
  BNE LoadAttributeLoop



همچنین داده‌های مربوط به جعبه رنگ‌ها هم باید اعلام بشن :

Code:
palette:
  .db $22,$29,$1A,$0F,  $22,$36,$17,$0F,  $22,$30,$21,$0F,  $22,$27,$17,$0F
  .db $22,$1C,$15,$14,  $22,$02,$38,$3C,  $22,$1C,$15,$14,  $22,$02,$38,$3C

بعد با استفاده از یه حلقه این داده‌ها رو به آدرس مربوط به جعبه رنگ‌ها که از 3F00 شروع میشه انتقال میدیم :

Code:
LoadPalettes:
  LDA $2002
  LDA #$3F
  STA $2006
  LDA #$00
  STA $2006
  LDX #$00
LoadPalettesLoop:
  LDA palette, x
  STA $2007
  INX
  CPX #$20
  BNE LoadPalettesLoop


در نهایت میتونین کد‌های مربوط به درس امروز رو به همراه اسمبلر مورد نیاز از اینجا دانلود بکنین.
Back to top Go down
http://microbaz.blogfa.com
 

ترجمه Nerdy Nights week 6

View previous topic View next topic Back to top 
Page 1 of 1

 Similar topics

-
» ترجمه Nerdy Nights week 3
» ترجمه Nerdy Nights week 4
» ترجمه Nerdy Nights week 5
» درخواست ترجمه
» ترجمه کاپیتان سوباسا 1

Permissions in this forum:You cannot reply to topics in this forum
Microbaz :: برنامه نویسی اسمبلی 6502-