遊戲機

早期遊戲機的各種小知識

講師 000

  • Full Stack

  • Discord Bot

  • Machine Learning

  • Unity

  • Competitive Programming

  • Web Crawler

  • Server Deployment

  • Minecraft Datapack

  • Scratch

技能樹

  • History

  • Review

  • Loading

  • Audio

  • Video

目錄

History

遊戲機歷史發展

Review

複習

Loading

讀取技術

不論是以前還是現在的遊戲機都需要透過卡帶去讀取遊戲

有別於現在的遊戲機

早期的所有遊戲資訊都是存在那卡帶裡面

既然大家都看得出來是透過這些接腳讀取遊戲資料的

但這背後究竟做了什麼呢

抱歉我只找到這張圖

ROM - 唯讀記憶體

之前我們學過RAM(隨機存取記憶體)

而ROM僅供讀取使用

屬於非揮發性記憶體

以二進位碼寫入而不是跟RAM一樣以電流儲存

ROM - 唯讀記憶體

之前我們學過RAM(隨機存取記憶體)

而ROM僅供讀取使用

屬於非揮發性記憶體

以二進位碼寫入而不是跟RAM一樣以電流儲存

寫在裡面的東西不會因為開關機而消失

常常作為韌體指令等等使用

當然也包括我們的遊戲機卡帶

Mapper - 映射器

在這些遊戲機卡帶插入時

會透過 mapper 直接將 ROM 映射到主機中

也就是說 其實這邊的讀取是不需要時間的

Mapper - 映射器

在這些遊戲機卡帶插入時

會透過 mapper 直接將 ROM 映射到主機中

也就是說 其實這邊的讀取是不需要時間的

而拿 NES 舉例

最簡單的 mapper 即為編號000NROM

有興趣的可以去看看

金手指

金手指是藉由讓機器讀取修改過的程式碼資料

藉此達到作弊的效果

金手指

金手指是藉由讓機器讀取修改過的程式碼資料

藉此達到作弊的效果

要知道修改/讀取記憶體的哪裡可以達到指定效果

你需要先透過一些分析取得特定資料存放位置

金手指

舉個🌰

我們知道讀取0x4000130值為特定bit內皆等於0時代表特定按鍵按下

金手指

我們知道讀取 0x4000130 值為特定bit的0時代表特定按鍵按下

select 按鍵為例

此時要偵測 0x4000130 的值是否有bin(100)=(4)個0

金手指

我們知道讀取 0x4000130 值為特定bit的0時代表特定按鍵按下

select 按鍵為例

此時要偵測 0x4000130 的值是否有bin(100)=(4)個0

金手指

我們知道讀取 0x4000130 值為特定bit的0時代表特定按鍵按下

select 按鍵為例

此時要偵測 0x4000130 的值是否有bin(100)=(4)個0

根據 NDS 的流程控制程式碼

9MMM MMMM BBBB VVVV

M: 記憶體位置

B: 位元遮罩

V: 值

此一程式碼表示讀取M的資料(稱為D)

並且以D在~B範圍內的值

與V做IF運算

若成立則運行到結束符前的下文

金手指

根據 NDS 的流程控制程式碼

9MMM MMMM BBBB VVVV

由於FFFF - 4 = FFFB

因此

M = 4000130

B = FFFB

V = 0000

if ((*M & ~B) == V) {

金手指

也就是說

94000130 FFFB0000
...
D2000000 00000000

表示偵測 select 按鍵被按下

執行...的內容

而D2000000 00000000是結束IF Block的意思

十分甚至九分的抽象

金手指

94000130 FFFB0000
...
D2000000 00000000

此一程式碼可以在以前的金手指內看到ww

Audio

音訊技術

我們知道的音樂

我們知道的音樂

電腦知道的音樂

我們知道的音樂

我們知道的音樂

電腦知道的音樂

Wavetable Synthesis

波表合成

我們聽到的聲音在電腦面前不過就是一個波型圖

而構成不同音樂的基礎單元也就從人類認為的

鋼琴、人聲、吉他等等

變為

sine波、square波、triangle波等等

Wavetable Synthesis

波表合成

Wavetable Synthesis

波表合成

Wavetable Synthesis

波表合成

濾波器(filter)

能夠將特定頻率以上/下的波過濾掉

過濾高頻的是 low-pass filter

過濾低頻的是 high-pass filter

Wavetable Synthesis

波表合成

回到主題

以紅白機為例

它的聲音只有5個頻道可供輸出

也因為頻道之少 在音效發出時常常得停下BGM

Wavetable Synthesis

波表合成

Wavetable Synthesis

波表合成

而我們熟知的瑪利歐主題曲等等

就是在那如此貧脊的創作空間下完成的

Video

影像技術

如果今天要你讓螢幕顯示一張圖

你覺得它是如何顯示的

如果今天要你讓螢幕顯示一張圖

你覺得它是如何顯示的

痾不是這個圖

如果今天要你讓螢幕顯示一張圖

你覺得它是如何顯示的

顯然是透過一格一格的色彩通道

如果今天要你讓螢幕顯示一張圖

你覺得它是如何顯示的

而當時的紅白機是這樣的

在今天我們的電腦通常是使用RGB作為通道

能顯示的顏色非常非常多

(2^24)

4*16=2^6 就這樣 沒了

由於顯示器的低畫質以及顏色的貧乏

在以前的遊戲機畫面總有種類似的風格

這也是現在一些走復古懷舊的遊戲會呈現的風格

Parallax Scrolling

視差滾動

一種不太算3D的技術

當時的2D橫向卷軸遊戲常會使用

使前後方物件移動速度不同來達到看起來不同距離

Mode 7

模式 7 (?

被使用在超任的技術

將一個2D圖片經過矩陣運算讓他看起來像3D

讓我們看看範例

Mode 7

模式 7 (?

被使用在超任的技術

將一個2D圖片經過矩陣運算讓他看起來像3D

讓我們看看範例

Mode 7

模式 7 (?

他會將一個圖的每部分經過線性變化後平移

應用像是讓遠景變得更扁

使其看起來像是3D

可以使用 Scratch 簡單模擬類似功能

插曲

Scratch 乳滑了

Made with Slides.com