GBC遊戲掌機 二

2021-06-02 22:35:21 字數 2179 閱讀 6566

接上

lcd狀態暫存器

ff41 – stat – lcdc 狀態(r/w)

bit 6 - lyc=ly coincidence interrupt      (1=enable) (read/write)

bit 5 - mode 2 oam interrupt           (1=enable) (read/write)

bit 4 - mode 1 v-blank interrupt           (1=enable) (read/write)

bit 3 - mode 0 h-blank interrupt             (1=enable) (read/write)

bit 2 - coincidence flag                       (0:lyc<>ly, 1:lyc=ly) (read only)

bit 1-0 - mode flag                           (mode 0-3, see below) (read only)

0: during h-blank

1: during v-blank

2: during searching oam-ram

3: during transfering data to lcd driver

stat暫存器的低兩位表示lcd控制器當前的狀態。

狀態0:lcd控制器位於水平消隱階段,cpu此時可以訪問顯示記憶體vram(8000h-9fffh)和oam(fe00h-fe9fh)

狀態1:lcd控制器位於垂直消隱階段(或者lcd顯示被禁止),cpu此時可以訪問vram和oam。

狀態2:lcd控制器正在讀oam,cpu此時不能訪問oam。

狀態3:lcd控制器正在讀oam和vram,cpu此時不能訪問oam和vram。對於cgb:cpu此時也不能訪問調色盤資料(ff69,ff68)。

下面是lcd可以顯示時的典型狀態:

mode 2 2_____2_____2_____2_____2_____2___________________2____

mode 3 _33____33____33____33____33____33__________________3___

mode 0 ___000___000___000___000___000___000________________000

mode 1 ____________________________________11111111111111_____

狀態位的值在0, 2, 3之間遍歷的時間約為109us。為0的時間約為48.6us,為2的時間約為19us,為3的時間約為41us。

狀態0持續約201-207個時鐘週期,狀態2持續約77-83個時鐘週期,狀態3持續約169-175個時鐘週期。經歷上述3個狀態的迴圈將持續456個時鐘週期。垂直消隱持續4560個週期。整個螢幕每隔70224個時鐘週期重新整理一次。

lcd中斷

int 40 – 垂直消隱中斷

垂直消隱中斷在gb中平均每秒產生59.7次,在sgb中平均每秒產生61.1次。該中斷產生在垂直消隱階段剛開始的時候產生(ly=144)。

int 48 – lcdc狀態中斷

lcd 位置和滾動

ff42 – scy – scroll y (r/w)

ff43 – scx – scroll x (r/w)

ff44 – ly – lcdc y-coordinate (r)

ly表示將要傳輸到lcd驅動的一條掃瞄線資料的垂直位置。ly只可以取0-153之間的值,144-153表示垂直消隱期間的到來。任何對ly寫的操作將會重置ly的值。

ff45 – lyc – ly compare (r/w)

遊戲機持續的比較lyc與ly暫存器的值,當它們相等時,stat暫存器的同步位將被置1,同時將會請求乙個stat中斷(如果允許的話)。

ff4a – wy – window y position (r/w)

ff4b – wx – window x position minus 7 (r/w)

表示視窗區域在左上角的座標。(視窗是乙個後備的背景區,顯示在正常背景的上面。精靈可以顯示在視窗區域的上面或者下面,跟在正常的背景圖上一樣。)當位置設定在wx=0-166,wy=0-144的範圍時,視窗才是可見的(如果允許的話)。wx=7, wy=0表示視窗區域位於螢幕的左上角。這時,它把背景區域完全覆蓋了。

(未完,待續)

GBC遊戲掌機 一

最近在學習gbc or cgb 閒著沒事,翻譯了一下乙個英文的文件。暫時是初稿,也還沒有翻譯完。不一定會修改,也不一定會翻譯完。英文原文可以在這裡找到 前言game boy 技術引數 cpu 8位 與z80處理器相似 主頻 4.194304mhz 工作記憶體8 kb cgb是32kb 螢幕尺寸2.6...

Valve掌機可執行所有PC遊戲

開發者聲稱,採用新銳梵谷 架構的steam掌機應對近幾年來的遊戲毫無問題,最大的考驗來自去年發行的新作,迄今尚未發現steam平台有任何一款遊戲拿到這台掌機上跑不動。這位開發者表示,次世代大作的追求是高解析度與高幀率,這很好,將解析度縮至1umugoev280x800等於大幅降低硬體需求,steam...

用html5 js實現掌機遊戲賽車demo

最近無聊,用html5 js做了乙個以前玩過的掌機賽車遊戲,順便學習一下畫布的api以及鞏固一下js基礎。遊戲介面,沒做什麼美化。遊戲規則 遊戲介面分為三列,黑色方塊隨機落下,紅色方塊可以在三列自由移動 用方向鍵,長按下方向鍵黑色方塊加速下滑 紅色方塊碰到黑色方塊即為輸。得分 每正常通過一次黑色方塊...