本篇文章給大家談?wù)刵es模擬器,以及nes模擬器ios版對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

NES 模擬器開發(fā)教程 02 - NES 文件結(jié)構(gòu)
現(xiàn)在幾乎所有 ROM 都是 INES 文件格式,后綴名 .nes 。它還有個(gè) 2.0 版本,但是我目前發(fā)現(xiàn)幾乎所有 ROM 都是 1.0 版本,為了簡(jiǎn)單起見(jiàn)我們只研究 1.0
INES 分為下列四個(gè)區(qū)域
Header 總共 16 字節(jié),每個(gè)字節(jié)定義如下:
從 Header 中可以看出,我們只需要其中的 PRG,CHR,Mapper,Mirror,Trainer 等信息,所以解析也很簡(jiǎn)單
了解了 NES 文件結(jié)構(gòu)之后,就可以開始卡帶的模擬了,不過(guò)模擬卡帶之前,下一章會(huì)講解如何進(jìn)行 NES 開發(fā),以便加深對(duì) NES 的理解
電腦的紅白機(jī)模擬器推薦
現(xiàn)在的紅白機(jī)已經(jīng)被時(shí)代所慢慢地淘汰,但是衍生了各種紅白機(jī)模擬器(任天堂FC紅白機(jī)模擬器),紅白機(jī)模擬器是指能夠在某種機(jī)器上運(yùn)行FC游戲的程序,目前網(wǎng)上的紅白機(jī)模擬器種類多樣下面是我為大家整理的關(guān)于電腦的紅白機(jī)模擬器推薦,一起來(lái)看看吧!
電腦的紅白機(jī)模擬器推薦
1、小霸王模擬器(FCEUX/FC模擬器)
小霸王模擬器(FC模擬器)是一款讓80、90后的朋友能回憶小時(shí)候的經(jīng)典的模擬器軟件,它的真正名字叫做紅白機(jī),是任天堂1983年推出的經(jīng)典游戲機(jī)。FCEUX則是一款功能強(qiáng)大的免費(fèi)FC/NES模擬器,您可以使用它重溫那些經(jīng)典的游戲?,F(xiàn)在的FCEUX是從FCE Ultra結(jié)合FCEU TAS、FCEU MM等多個(gè)改版而來(lái),具備查看圖層、金手指作弊、制作游戲錄像、編輯ROM、Lua腳本等十分強(qiáng)大的功能。
2、Jnes
Jnes(FC紅白機(jī)模擬器)是一款 FC 紅白機(jī)模擬器,該模擬器支援使用 Game Genie 及金手指作幣碼,并含帶作幣碼資料庫(kù)。
3、任天堂紅白機(jī)(FC)游戲套裝
任天堂紅白機(jī)(FC)游戲套裝是經(jīng)典的紅白機(jī)模擬器及游戲資源合集。內(nèi)含500余款知名紅白機(jī)游戲ROM及兩款實(shí)用的紅白機(jī)中文版模擬器,讓您輕松用電腦重溫童年的樂(lè)趣。游戲 方法 :點(diǎn)擊壓縮包內(nèi)的“nnnesterJ.exe”,并依次選取“文件”-“打開”,并選擇同目錄“rom”文件夾下的游戲鏡像即可;點(diǎn)擊“選項(xiàng)”-“控制器”即可進(jìn)行游戲操作按鈕的設(shè)置,支持外接游戲手柄;此外,該合集還提供另一款知名模擬器“VirtuaNes”的使用。
4、smynes模擬器
smynes模擬器是一款超強(qiáng)的紅白機(jī)模擬器軟件,兼容性相當(dāng)好,幾乎可以模擬所有的FC游戲。按鈕設(shè)置也相當(dāng)簡(jiǎn)便實(shí)用,是我用的最多的FC模擬器。按鈕設(shè)置也相當(dāng)簡(jiǎn)便實(shí)用。設(shè)置好ROMS的路徑,可以在界面里顯示出游戲列表,并且可以預(yù)覽游戲畫面,深受玩家歡迎。
( .nes )文件是什么文件?應(yīng)該怎么打開??
分類: 電腦/网络 軟件
問(wèn)題描述:
下載了一個(gè)游戲,后綴名為(.nes ),請(qǐng)問(wèn)怎么才打開??
解析:
.nes是模擬器文件,用nes模擬器打開.
nes模擬器下載地址:
jun4rui/jup/data/NES05.zip
NES 模擬器開發(fā)教程 08 - PPU 簡(jiǎn)介
PPU 是 Picture Processing Unit 的簡(jiǎn)稱,是 NES 中最復(fù)雜的一部分。顧名思義,PPU 用來(lái)處理和圖像相關(guān)的內(nèi)容,同時(shí)負(fù)責(zé)圖像輸出到電視上
在 NES 中,圖像分為兩大類:背景(background)和 精靈(sprite)
如同字面的意義,游戲中的藍(lán)天,草地,房子都可以做為背景,背景就是一張圖像
精靈一般是游戲角色,怪物等運(yùn)動(dòng)的圖像,比如馬里奧中的主角,炮彈,蘑菇頭
由于 NES 年代比較久遠(yuǎn),那時(shí)候內(nèi)存價(jià)格昂貴,cpu 計(jì)算能力也不行,所以 PPU 有一套自己的編碼格式,并非簡(jiǎn)單的顏色點(diǎn)陣數(shù)據(jù)或者 JPG 編碼等格式。同時(shí)這也是模擬 PPU 的難點(diǎn)所在
NES 圖像分辨率為 256 x 240,假設(shè)每個(gè)像素以 RGB 存儲(chǔ),則一張圖像需要 256 * 240 * 3 = 180 KB。這已經(jīng)遠(yuǎn)遠(yuǎn)超出 PPU 和 CPU 的尋址空間(64KB)了。但是 NES 卻把一張圖像編碼到了 1KB 大小,不得不感嘆那個(gè)資源匱乏的年代硬件工程師們的能力
PPU 提供了 4KB(實(shí)際上只有 2KB,另外 2KB 是鏡像,只有少部分特殊的卡帶才會(huì)額外提供 2KB) 的 RAM 做為圖像存儲(chǔ),如下圖
他們組成一個(gè)田字形的布局,外加上 PPU 提供的滾動(dòng)寄存器,就可以實(shí)現(xiàn)背景運(yùn)動(dòng)的效果了
NES 為了節(jié)省內(nèi)存,并非支持所有顏色,而是有一套自己的映射,一共 64 種,如下圖
但是每個(gè)像素點(diǎn)不會(huì)直接使用顏色數(shù)據(jù),而是使用了調(diào)色板做為映射
背景和精靈的調(diào)色板分別占 16 個(gè)字節(jié),每個(gè)字節(jié)對(duì)應(yīng)了顏色的映射,每個(gè)像素點(diǎn)又索引調(diào)色板,這樣每個(gè)像素點(diǎn)只需要 4bit,相比直接索引顏色會(huì)少用 2bit,而相比 RGB 的 24bit,那更少了。
使用調(diào)色板之后,一副圖像被壓縮到了 256 * 240 * 0.5 = 30KB,但是還不夠小。所以 PPU 并沒(méi)有直接編碼圖像的調(diào)色板偏移數(shù)據(jù),而是將圖像數(shù)據(jù)的偏移也編碼了起來(lái),聽起來(lái)很繞,具體在 PPU 背景章節(jié)再詳細(xì)講
以前的電視都用的電子槍,圖像的輸出都是電子從左到右,從上到下掃描的結(jié)果,所以這也是為什么現(xiàn)在屏幕坐標(biāo)都是左上為坐標(biāo)原點(diǎn),x 軸向右增長(zhǎng),y 軸向下增長(zhǎng)的原因。
NES 每幀有 0 - 261 共 262 條掃描線,每條掃描線有 0 - 340 共 341 個(gè)時(shí)鐘,每一時(shí)鐘對(duì)應(yīng)一個(gè)像素點(diǎn)。由于該范圍大于 NES 輸出的分辨率(256 x 240),所以只有掃描線 0 - 239 的 1 - 256 周期可見(jiàn)(每條掃描線的 0 時(shí)鐘為空閑時(shí)鐘)。
為什么掃描范圍要大于 NES 分辨率?因?yàn)椋?, 241)到 (1,261)期間為垂直消隱(VBlank),這期間可以給 CPU 留出空隙更新顯示數(shù)據(jù),(1,241)時(shí)會(huì)設(shè)置 VBlank 標(biāo)志,(1,261)時(shí)清除。
下圖為 PPU 的時(shí)序:
當(dāng)然,也正式因?yàn)檫@種掃描方式,給 PPU 模擬造成了很多麻煩。對(duì)于該時(shí)序的實(shí)現(xiàn)程度也會(huì)影響到模擬器對(duì)游戲的兼容性
NES 模擬器開發(fā)教程 04 - NES 卡帶(Cartridge)
04 章的時(shí)候了解了 NES 文件結(jié)構(gòu),NES 文件本質(zhì)上只是從卡帶上 dump 下來(lái)的信息,所以首先需要實(shí)現(xiàn)卡帶的模擬,把程序等數(shù)據(jù)加載進(jìn)內(nèi)存后,才能進(jìn)行下一步操作
Mapper 已經(jīng)在前面的文章出現(xiàn)過(guò)很多次了,現(xiàn)在來(lái)詳細(xì)了解一下
03 篇文章提到過(guò),NES 總線上,PRG 的尋址范圍為 0x8000 - 0xFFFF,CHR 尋址范圍為 0x0000 - 0x2000,他們大小分別為 32K 和 8K,對(duì)于大型游戲這么點(diǎn)空間是遠(yuǎn)遠(yuǎn)不夠的,顯然任天堂在設(shè)計(jì)的時(shí)候也考慮到了這一點(diǎn),所以采用 Mapper 來(lái)進(jìn)行各種擴(kuò)展
Mapper 并不位于主機(jī)中,而位于卡帶上。每一張卡帶都對(duì)應(yīng)了一種 Mapper,在 NES 1.0 格式中,可以表示多達(dá) 256 種 Mapper
每種 Mapper 行為都不一樣,比如有的 Mapper 增加了音頻芯片提高音頻性能,有的 Mapper 增加了寄存器擴(kuò)展程序大小,有的還有中斷計(jì)數(shù)的功能
比如 Mapper2,增加了 Bank 選擇寄存器,以控制不同的 Bank 映射到 0x8000 - 0xFFFF,這樣就擴(kuò)充了游戲容量
了解 Mapper 作用之后,首先看看最簡(jiǎn)單的 Mapper - Mapper0,這個(gè) Mapper 沒(méi)有任何的擴(kuò)容能力,所以它的 ROM 最大只有 32K + 8K = 40K
唯一需要注意的是:
了解了 Mapper 作用后,就可以開始定義 API 了
首先定義 ROMInfo 接口,表示從 NES 文件解析的 Header 信息
另外還需要一個(gè) Mapper 對(duì)象,用來(lái)表示不同的 Mapper。對(duì)于 CPU 來(lái)講,只需要在意 Mapper 的讀寫能力,所以需要定義 write 和 read 接口
最后,Cartridge 當(dāng)中只需要 Info 和 Mapper 兩個(gè)實(shí)例就夠了
在這里舉個(gè)例子講一下 Cartridge 如何模擬(只列舉核心邏輯,其他簡(jiǎn)單的邏輯就等你自己完成了)
一共需要兩個(gè)類,一個(gè) Cartridge,一個(gè) Mapper0
文件 cartridge.ts
文件 mapper0.ts










