當前位置:首頁 » 編程軟體 » 紅白機rom反編譯

紅白機rom反編譯

發布時間: 2025-03-19 11:37:00

『壹』 apk反編譯工具Apktool的安裝與使用教程

APKTool是GOOGLE提供的APK編譯工具,需要java運行環境,推薦使用JDK1.6或者JDK1.7。 下面就一起來看看詳情了解一下該怎麼安裝使用吧軟體名稱:apktool(apk反編譯工具) v1.41 中文綠色免費版軟體大小:3.32MB更新時間:2014-01-04

如果你想對APK文件進行修改,那麼就不可避免的要使用到APKTool。論壇里有很多關於ROM美化的帖子都需要自己動手修改APK文件,比如修改framework-res.apk、systemUI.apk等等。

相信各位有不少人看了後都想親自來修改一番,但是結果卻是遇到了各式各樣的錯誤卻無法進行改正,甚至都不知道自己錯在哪裡。

一.APKTOOL使用環境配置

1.安裝JAVA並設置環境變數。

下載安裝都很簡單,關鍵是安裝完後還需要親自設置環境變數以方便其他程序能夠條用JAVA。

以WIN7為例,在桌面上右鍵點擊計算機——>屬性——>高級系統設置——>環境變數——>在下邊的系統變數里新建一個變數,變數名為JAVA_HOME,值為JAVA的安裝路徑,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26

二.APKTool的安裝

1.其實這個談不上安裝,不過如果你願意的話可以把下載到的APKTOOL中的三個文件(aapt.exe、apktool.bat、apktool.jar)解壓縮到你的Windows安裝目錄下,以方便使用Dos命令.

2.可能有些人下載的APKTOOL里有個安裝的bat文件,並且有另外兩個方便使用的bat文件,在這里我不推薦大家使用這些bat文件,雖然使用起來很方便(其實我並不覺得方便),但是如果出現錯誤不方便查看。

三.APKTool的使用

1.decode

該命令用於進行反編譯apk文件,一般用法為

apktool d

代表了要反編譯的apk文件的路徑,最好寫絕對路徑,比如C:\MusicPlayer.apk

代表了反編譯後的文件的存儲位置,比如C:\MusicPlayer

如果你給定的已經存在,那麼輸入完該命令後會提示你,並且無法執行,需要你重新修改命令加入-f指令

apktool d –f

這樣就會強行覆蓋已經存在的文件

2.build

該命令用於編譯修改好的文件,一般用法為

apktool b

這里的就是剛才你反編譯時輸入的(如C:\MusicPlayer),輸入這行命令後,如果一切正常,你會發現C:\MusicPlayer內多了2個文件夾build和dist,其中分別存儲著編譯過程中逐個編譯的文件以及最終打包的apk文件。

3.install-framework

該命令用於為APKTool安裝特定的framework-res.apk文件,以方便進行反編譯一些與ROM相互依賴的APK文件。具體情況請看常見問題

四.常見問題

1.關於安裝和管理framework文件

以下大部分其實是翻譯自http://code.google.com/p/android-apktool/wiki/FrameworkFiles

一般來說,你在使用apktool進行反編譯前不需要做其他的事情,然而由於有的廠商,如HTC,三星等,他們定製了framework文件並且在他們的系統應用中使用了這些文件,這時,為了能正常的反編譯這些apk文件,你就必須從你的設備中拷貝出framework文件並且安裝到apktool中。

舉一個例子,比如你想反編譯HTCHero這款手機中的HtcContacts.apk,當你嘗試反編譯的時候,你會得到以下錯誤信息。

1.$ apktool d HtcContacts.apk
2.I: Loading resource table...
3.I: Decoding resources...
4.I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
5.W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
6....
7.W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
8.Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.
復制代碼

這就是在通知你必須先安裝HTC定製的framework文件,事實上在修改一些三星的系統應用時也是如此。

以三星的設備來舉例,你需要復制兩個framework文件來進行安裝,framework-res.apk和tzframework-res.apk,一般來說,這兩個文件在手機中的位置應該是system\framework\

使用以下代碼進行安裝

apktool if C:\framework-res.apk

apktool if C:\tzframework-res.apk

這里假設2個文件都放在C盤根目錄

2.直接用build編譯後在dist中找到的apk文件無法使用

其實這個問題我也不是特別理解,目前知道的就是,APK文件雖然本質是個zip文件,但是事實上zip包中的文件是按照兩種方式壓縮的,即XML文件進行deflate壓縮,其他文件不進行壓縮(使用store存儲),而直接編譯得到的APK文件對任何的文件都進行了deflate壓縮,因此你會發現編譯得到的文件比原文件小好多。

同樣的,當你使用build文件夾中的文件替換原apk文件中的資源時,請務必確認是使用store存儲還是deflate壓縮

3.其他錯誤

其實在編譯過程中會遇到很多其他的問題,大多數是由於刪除、修改、添加了資源後,沒有對應的修改res\values\public.xml文件而造成的,這里我給大家說下修改的原則:

第一,public.xml文件中的資源不能重復定義。

第二,public.xml文件中的任意兩個資源的ID不能一樣

第三,public.xml文件中定義的資源必須能找到該文件(如果你刪除了一些文件,必須要對應的刪除public.xml中的該行)

第四,public.xml文件中盡可能全面(如果你添加了某資源,最好確保在public.xml中也添加)

第五,public.xml文件中的資源的ID盡可能連續(當你為添加的文件添加聲明時,賦予的ID盡可能是連續的)

『貳』 如何將ROM改為默認開啟USB調試

默認開啟USB調試模式
system/build.prop中添加或修改persist.service.adb.enable=1
修改未知源
1,反編譯SettingsProvider.apk
2,修改res/values/bools.xml/《bool name=「def_install_non_market_apps」》false《/bool》,修改false為true
關閉重力感應
1,反編譯SettingsProvider.apk
2,修改res/values/bools.xml 《bool name=「def_accelerometer_rotation」》true 《/bool》,修改true為false
關閉GPS
1,反編譯SettingsProvider.apk
2,修改res/values/strings.xml/ 《string name=「def_location_providers_allowed」》gps《/string》,修改gps為null,null就是啥都沒有的意思

『叄』 如何patchrom

本帖教程只是經驗之談,不過也有一些素材來自網路,本人對此不負任何責任
這個教程介於入門和進階之間,也就是說比如簡單一點的像:rom的大體結構啊、android的基本原理啊、linux的基本操作啊。這個教程都一概略過。而比較深入的像:apk的修改、開發,源代碼的修改、編寫,smali插樁,移植適配其他非官方機型。這也一概沒有。
本教程僅介紹如何利用MIUI放出的patchrom資源完成編譯MIUI的流程,適用於對自製rom以及linux有一定了解,喜歡miui,喜歡DIY,但不太熟悉如何使用patchrom以及其基本流程的發燒友
如果你對android、linux完全是一個門外漢的話,這個教程對你來說可能會有不少無法理解的地方。而如果你如果已經是大神了,希望多多指點,跟大家交流一下你的經驗。

--------------------------------------------------------------------------------

第一部分:介紹一些基本概念
首先介紹幾個比較基本教程的鏈接
MIUI官方提供的教程:http://www.miui.com/thread-402322-1-1.html
CM官方wiki上的CM編譯教程:http://wiki.cyanogenmod.org/wiki/Category:Build_from_Source
android官方提供的AOSP編譯教程:http://source.android.com/source/initializing.html
要學習利用開源源代碼編譯android rom的話,看完後面兩個基本就夠了,CM、PA這類的rom都可以根據CM的編譯方法來編譯,而AOKP這類的rom可以根據AOSP的編譯方法來編譯
大部分開源rom在他們的github上也會寫上相關的編譯流程以及主要的命令,比如PA除了用CM的編譯方法手動輸入每條命令來編譯,也可以直接運行他們寫好的build.sh來進行編譯,基本上還是以實際文件和github上寫明的流程為准
而MIUI當然跟這兩種的編譯方法都不一樣,因為MIUI不是利用android源代碼編譯出來的,而是反編譯現成的rom,修改相關smali來適配各種機型的,所以MIUI自己配置了一套編譯平台,這也就是patchrom項目
都知道,android是基於linux內核的,而且谷歌也並沒有提供適用於windows平台進行編譯的相關代碼和工具,所以要從源代碼編譯android是需要一個linux環境的
雖然谷歌同樣也支持在蘋果的mac系統上編譯,但一方面mac的環境配置較為復雜,另一方面mac用戶不如pc用戶多,要裝mac也遠不如裝linux方便,所以搞這個的,大部分人都是使用的linux
而基於linux內核的操作系統其實有很多,這些不同的linux系統也叫Linux發行版,最主流最常見最通用的一個版本,就是ubuntu(我個人是opensuse黨,也在opensuse上編譯過CM、MIUI,不過opensuse相對更復雜,而ubuntu現成的軟體也更多更方便一點,所以這個教程里是使用的64位ubuntu 12.10來介紹的),而因此也有很多基於ubuntu修改的Linux發行版,比如深度的Linux Deepin和雨林木風的StartOS,所以相對來說,不論是原版ubuntu還是Linux Deepin和StartOS都比較適合剛接觸linux的新手使用
以下所有輸入命令的行為全是在「終端」程序中進行的,下文可能會有多處省略,所以你看到輸命令可別問輸在哪。

-----------------------------------------------------------------------
第二部分:編譯環境的搭建

我本來是使用的12.04,64位桌面版,後來12.10出來了,就順著更新上來了,因為我這里運營商強制上網得用他的撥號軟體,所以我是在虛擬機里搭建的,其實我是推薦直接裝在真機上,這樣性能更好,編譯速度也更快
ubuntu版本的選擇、下載、安裝、更換源、系統更新等等,我就不介紹了,網上教程一堆一堆的
在裝好了ubuntu之後,我們就要開始android rom編譯的環境配置了,大致的說一下,需要下載的文件總共有五步。

『肆』 如何反編譯android應用以及重編譯,簽名和對齊優化

首先,了解一下我們為什麼需要反編譯apk
大部分情況下,是由於想本地化一款優秀的應用,才需要做這事兒;又或者進行少量的smali修改以達到想要的效果(如添加歸屬地,使3G版Nexus 7支持Wi-Fi熱點)。

下面我們先准備運行環境和工具
建立工作目錄,如.\workspace\apktoolbox (下面同樣以此路徑為例)
必不可少的JDK:Oracle Java下載,安裝完成後把<jdk-inst-path>\bin添加到$PATH環境變數中
反編譯和重編譯工具apktool:Google Code下載,按平台下載(一個apktool-install-<platform>-<ver>-tar.bz2,一個apktool<ver>.tar.bz2,下載完成後解壓至.\workspace\apktoolbox\bin
密鑰文件,共4組。test/shared/media/platform,從android source中獲取,分別對應不同共享用戶ID時簽名所需(查看應用AndroidManifest.xml第二行android:sharedUserId項 ),放到.\workspace\apktoolbox\bin下
test - 無android:sharedUserId項
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
簽名工具signapk.jar,放到.\workspace\apktoolbox\bin下
對齊優化工具zipalign(從android sdk中獲取,在tools目錄下),放到.\workspace\apktoolbox\bin下
准備工作完成

接下來我們就要開始工作了(以本地化工作為例)
把待反編譯的apk放到.\workspace\apktoolbox\apks下
在命令行模式下進入.\workspace\apktoolbox\bin目錄,輸入以下命令進行解包(反編譯)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目錄(英文原版)和values-r<locale>目錄(本地化)就是我們需要的對象。
本地化工作完成後,在命令行中輸入以下命令進行重新打包(重新編譯)
apktool b ..\apks\<outdir>

.\workspace\apktoolbox\apks\<outdir>\dist目錄下會生成重新打包後的apk(未簽名,未對齊優化)
重新打包完成後,在命令行中輸入以下命令進行簽名(根據實際情況選用密鑰,這里以test密鑰為例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk

簽名完成後,在命令行中輸入以下命令進行對齊優化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk

<apkfile>_zipaligned.apk就是我們最終需要的apk了。
完成
部分apk需要系統框架資源,沒有的話在重新打包時會報錯,這種情況下我們只需要先安裝一下對應系統框架即可(從你目標ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中輸入以下命令進行安裝
apktool if ..\apks\framework-res.apk

『伍』 bios 存儲在 rom中,只讀存儲器怎麼可以修改的

BIOS的ROM是可編程ROM,就像CDRW一樣。

現在的BIOS ROM都是用EEPROM(有的是用FLASH,FLASH也是EEPROM)
這種ROM在對一個管腳加特殊電壓(25V)就可以分塊擦除內容。

『陸』 當年的Fc《魂斗羅》《瑪麗》是用什麼工具做的。如何反編譯。

匯編和c都可以,這里有個編程器http://pocket.92wy.com/fc_info_33534.html

任夭堂游戲編程探密(文字版)
第一章 任天堂游戲結構概論
長期以來,由於任天堂公司在技術上的封鎖和國內游戲開發工具的久缺.任天堂游戲
蒙上了一層神密的面紗,中國人只能玩任天堂游戲.而不能象蘋果機、中華學習機那樣了解
游戲程序、自己動手編寫游戲。近年來,隨著任夭堂系列游戲機配套鍵盤的問世,逐步創造了
揭開這層面紗的條件.特別是配有列印機介面的「裕興」、「金字塔」等高檔游戲機鍵盤的陸續
推出,用戶僅僅編寫一個簡單的反匯編程序就可列印出系統軟體的源程序,從而為探索任天
堂游戲軟體的奧秘提供了有效的手段。
有人疑問任夭堂游戲機的中央處理器同中華學習機一樣也是八位的CPU.但為什麼
它能夠產生出如此絢麗多彩的動畫、美妙動聽的音響、栩栩如生的角色,其效果遠遠勝過美
國的「雅達利「,更強過中華學習機的游戲呢?究其原因,關鍵在於任天堂游戲機的設計者們
在傳統的八位機上獨具匠心、另闢蹊徑,從硬體上進行了獨創的改造,在軟體上進行了大膽
的嘗試,使一個CPU發揮了兩個CPU的功效,產生了絕妙非凡的藝術效果.從而以物美價
廉的絕對優勢迅速佔領了游戲機市場,掀起了家庭娛樂領域的第三次浪潮。本文擬從分析任
天堂游戲的軟、硬體特點出發,揭開任天堂游戲編程的秘密.以一與廣大同好切磋。

1·1 任天堂游戲機的硬體特點

1·1·1電路原理框圖
任天堂游戲機的硬體共分兩部分:主要部分是游戲機.從屬部分是游戲卡。游戲機提供
游戲的運行環境,游戲卡提供支持游戲的軟體,其電路原理框圖如圖1一1。
上圖中6527 CPU為中央處理器,田於它的任務是處理程序,所以一般把與它相連的部
件加以前綴"P".故CPU的地址匯流排表示為PADD,數據匯流排表示為PDATA,CPU管理的
存儲器表示為PRAM,PROM等。同樣.6528 PPU的任務是處理圖像,所以凡與它相關的部
件均加以前綴「V」。

1·1·2 中央處理器6527 CPU
1.CPU的內部結構
6527 CPU是一個八位單片機,在它的內部除固化有6502系列的CPU外,還有一個
可編程音響發生器PSG(Programable Sound Generator)和24個八位只寫寄存器,其地址空
間分配為$4000-$4017.主要用於CPU的I/O操作,PSG音響發生器的工作就是由這些
寄存器控制完成的.

1·1·4 游戲卡
1、游戲卡的基本組成
普通的單節目游戲卡一般由兩片ROM或EPROM組成,ROM的容量由游戲程序量的
大小決定.最簡單的任天堂游戲為24K,故這種卡內有塊16K的ROM存放程序,一塊
8K的ROM存圖形字模(目前有軟封裝的IC,它把兩塊ROM封在一起)。典型的任天堂
游戲程序量為40K,它使用一塊32K的ROM存程序、一塊8K的ROM存字模。當程序量大
於40K時則要對ROM進行容量擴充.
2、游戲卡各腳的功能
游戲卡是一60腳的接插件,各腳功能見圖1一4。
3、常用 ROM引腳功能簡介
游戲卡中常用ROM或EPROM的型號有27C64(8 X 8K)、27C128(8X l6K)、27C256(8
X 32K), 27C512 (8 X 64 K ), 27C1000 (8 X 128K),或後綴數字相同而前綴不同的其它公
司產品,盒卡中還有2兆位(8 x 256K)至8兆位(8X 1000K)的晶元。其中27C64~27C512為28
腳的晶元,27C1000或更大容量的晶元為32腳(個別的27C1000仍為28腳,它使用了OE.
CE中的一個腳作為地址線).

1·2 任夭堂游戲軟體的特點
目前流行的任夭堂游戲軟體有數百種,內容已涉及及到政治、經濟、軍事、戰爭、教育、管
理、體育、娛樂等各個領域.可以說任天堂游戲已兼顧了男、女、老、中、青、少、幼各個年齡階
層,深受世界各國人民所喜愛。也許這就是它迅速普及的主要原因。但是,任天堂游戲盡管
內容千變萬化、情節各異,其軟體結構和處理方法則是基本相同的,它們有著共同的特點。

1·2·1 任天堂游戲的軟體結構
歸納起來,任天堂游戲軟體結構可分為兩大類:基本結構和擴展結構.
一、基本結構
基本的任夭堂游戲軟體容分為40K位元組(標准卡標注為LB)。典型游戲如,《1942》、《超
級瑪麗》、《拆屋工》等.其中32k為游戲控製程序,供CPU執行;8K為圖形字模,由PPU處
理。另外還有一種低配置結構,軟體容量為24K{標注為LA),這是一種早期軟體。其中控制
程序為16K;字模為8K。典型游戲有《火箭車》、《馬戲團》、《金塊Ⅰ、Ⅱ》等。
40K軟體的控製程序存放地址在CPU管理的$8000一$FFFF空間;字模地址在PPU
管理的$0000-$1FFF空間。16K軟體的控製程序存放地址為$C000-$FFFF;字模地
址也是$0000一$1FFF。
二、擴展結構
容量在40K以上的軟體均為擴展結構。它們在基本結構的基礎上或者擴展控製程序
區、或者擴展字模區。擴展方法是在某段地址范圍進行空間存儲體切換。一般程序區在
$8000-$BFFF空間切換;字模區在$0000-$1FFF空間切換。切換種類以軟體容量的
大小略有不同:
對於48K卡(標注為LC〕,其程序部分為32K;宇模部分為16K,分兩個8K存儲體.
典型游戲有《七寶奇謀》、《影子傳說》等。
通常把24k-48K容量的游戲卡稱為低檔卡或低檔游戲。
對於64K卡(標注為LD)有兩種結構:一種是其程序部分為32K;字模部分為32x,分
為四個8K存儲體.典型游戲有《迷宮組曲》,《智慧城》、《沙羅曼蛇一代》、《北斗神拳一代》
等;第二種則是程序與字模共用64k,分為四個存儲體.典型游戲有《米老鼠大冒險》、《冒險
島》、《俄羅斯方塊1、2》等。
80K的游戲不多(標注為LE),常見的有《中國拳》、《金牌瑪麗》等。其程序部分為48K,
前32K分為兩個16k存儲體;字模部分為32k,分為四個8k存儲體。
通常稱64k、80K的游戲為中檔卡。
對於128K卡(標注為LF),其程序部分與字模部分棍合共用128k,分為八個16K存儲
體,其中前七個存儲體地址映射於$8000-$BFFF:最後一個存儲體(稱為HOME BANK)
映射於$0000一$FFFF,典型游戲有《魔界村》、《怒》、《火之鳥方》、《未來戰士》、《洛克人》、
《1943》 《1944 》《嵌特殊部隊》、《沖撞霹靂機車》等。
這類游戲卡中一般都配有一塊8K的RAM(動態隨機存儲器〕存儲當前使用的字模。
對於160k卡(標注為LG),其程序部分為128K;字模部分為32K。典型游戲有《倚天屠
龍記》、《立體大賽車》、《歡樂叮當》等。
對於256K卡(標注為LH),其程序部分為128K;字模部分為128K。典型游戲有《柯拉
米世界》、《惡魔城》、《雙截龍》、《松鼠歷險記》《人間兵器》、《聯合大作戰)等。另外,還有《魂
斗羅》、《赤色要塞》、《綠色兵團》、《立體籃球》《荒野大鏢客》等256K游戲被壓縮為128K游
戲,目前這類游戲的256K版已不多見,常見的均為128K的壓縮版;
通常稱128K一256K容量的游戲為高檔卡或強卡。
對於高於256K容是的游戲則稱為特卡,如《不動明王傳》,《戰斧》、《孔雀王》,《大旋風》
等游戲容量已達2M-4M。但由於任天堂系列游戲機的CPU的處理速度、畫面的解析度、音
域音色等方面的限制,即使軟體容量再增大,游戲效果也不會提高多少.總達不到街機的水
平,故目前單個游戲的容量大於256K的尚不多見。

1·3 任天堂游戲的圖像處理方法
本節簡要介紹任天堂游戲的圖像處理方法。
1·3·1屏幕顯示原理
任天堂游戲機中的CPU雖然仍屬65系列的CPU,但它的顯示方式與中華學習機截然
不同。其顯示屏幕由三類四層顯示頁面鉤成。三類顯示頁依次為:卡通(角色或動畫)頁、背
景頁、底背景頁。卡通頁用於顯示游戲中的角色,它有兩個頁面:卡通零頁——使角色顯示於
背景之前;卡通一頁——使角色顯示於背景之後。卡通員的顯示解析度為256x240點,卡通
可以點為單位移動。背景頁主要用於游戲畫面的顯示,它共有四個顯示頁面,每頁的兩邊互
相相連並排成「田」字,採取字元顯示方式,顯示解析度為32列* 30行,每幅畫面由$60個
圖形塊構成,游戲中可任取一個頁面顯示。底背景頁主要用於大面積的單色顯示,以襯托出
蘭天、草地、沙漠、大海等效果,顯示解析度為1x1。 四層顯示頁的排列由前向後依次為:卡
通零頁、背景頁、卡通一頁、底背景頁(見圖1一6)。系統默認的排列方式為背景00頁與卡通
賈、底背景頁四層頁面重疊,前面顯示頁的內容可以遮住後面顯示頁的內容,因而很容易構
成具有一定景深次序的立體畫面。

1·3·2背景處理技術
任天堂游戲中的背景畫面顯示採用字元方式,每個字元通常稱為背景圖形塊。每個圖
形塊為8*8點陣,其字模數據存放在由PPU管理的一段內存中,稱為背景字型檔,一般使用
$1000一$1FFF地址,共4K位元組.每個字模由連續的16個單元組成,故一次最多可定義
256個字元,序號依次為0~255.顯示字元時,只要把字元序號置入屏幕對應的顯示單元中
即可。
任關堂游戲中的背景處理由PPU獨立完成,每一個背景頁面對應PPU的1024個單
元,為順序對應關系。背景00頁對應PPU地址為$2000--$23FF,其中$2000一$23BF
對應於960個圖形顯示單元,$23C0--23FF為該顯示頁的配色單元;背景10頁對應的
PPU地址為$2400一$27FF;同樣,後面的兩頁依次對應$2800---$2BFF、$2C00
$2FFF。由於游戲機中只有一塊2K的VRAM(PPU使用的RAM),故一般只使用前兩個
頁面,通常稱其為背景零頁和背景一頁。游戲中可通過設置軟開關的方法控制畫面的橫、縱
向,以使兩幅面面橫向並列或縱向銜接。
在實際游戲中,要經常用到背景畫面的橫向卷動和縱向滾動。如(魂斗羅,游戲中的卻
一、五、六、七、八關是橫向卷動,第三關則是縱向滾動。這些畫面位移效果是如何實現的呢?
我們知道,中華學習機中的畫面位移是通過反復改寫顯示映射單元的內容而實現的,這種方
法處理速度慢、控製程序冗長。任天堂則採取了截然不同的方法。它通過硬體的待殊處理,
引入了顯示窗口的概念。畫面位移時,每個顯示單元的內容不變,而令顯示窗口向相反的方
向移動,從而實現了畫面的橫向卷動和縱向滾動。如《魂斗羅》中第一關橫向卷動的控制方法
是.令兩個背景頁橫向銜接,游戲開始時,背景零頁繪滿32列,而背景一頁僅繪制12列,令
顯示窗口對正零頁,當游戲中的角色前進到畫面右邊的一定位置時,則令顯示窗口右移一
格,同時繪制一頁的第13列;這樣,顯示窗口每右移一格,畫面繪制一列,從而使游戲畫面連
綿不絕,每移出一頁畫面(32列)令頁數計數器加一,當累計到一定頁數時則令窗口不再移
動,進行關底處理。這一畫面的位移控制極為簡單,僅通過向位移軟開關$2005置入移位數
據就可實現。F BASIC的控製程序為:
POKE &H2005,x:POKE &H2005,0
x為位移參數。其機器語言的控製程序為:
LDA x
STA $ 2005
LDA #$00
STA $ 2005
畫面的縱向位移則更為簡單,如《魂斗羅》的第三關——瀑布天險是一個縱版畫面,角色要從
最底層跳升到最頂層與關底魔頭決斗,游戲進程中畫面隨看角色的跳躍不停的上滾。實際--
這一位移過程是在一頁面面中進行的,控制方法是,每當角色前進到畫面上方某一位置時,
改寫畫面最底行的圖形數據,使其為即將移入畫面的一行.然後令顯示窗口向上移一格,由
於窗口是在一個顯示頁上移動,故最底行即是最頂行(這時可把一頁面面理解為上、下邊連
接的圓筒,顯示窗口是套在畫面圓筒外面稍大的一個圓筒,窗口移動一格就是向上旋轉一
格)。F BASIC控製程序為,
POKE &H2005,0:POKE &H2005,Y
Y為位移參數。相應的機器語言程序為,
LDA #$00
STA $2005
LDA Y
STA $2005
以上畫面的送效、位移操作都是在CPU響應非屏蔽中斷期間完成的(非屏蔽中斷是在
電視機的場回掃期間發出和響應的,這時的電視屏是黑的),所以我們感覺佈道位移的痕跡。
關於任天堂游戲中背景畫面的繪制 移動及畫面的分裂位移和扭曲等效果的實現,將在第六章詳細討論。

1·3·3動畫處理技術
組成任天堂游戲中動畫的最小單位是卡通塊,每個卡通塊為8X8點陣.與一個字元同
樣大小。卡通塊也有一個圖形字型檔,對應的PPU地址為$0000-$OFFF。每個個卡通塊的字
模數據也由連續的16個單元組成,故一次最多可定義256個卡通塊,序號依次為0-255
6527CPU規定.在一幅畫面上只允許同時顯示64個8x8點陣的卡通塊〔這是由PPU
內卡通定義區的RAM分配決定的〕,如《超級瑪麗》中,瑪麗在吃紅蘑菇之前為16x16點
陣大小(即由4個卡通塊組成),當吃了紅蘑菇之後身體長大一倍,變為32X 32點陣(即由
16個卡通塊組成〕的卡通。但實際游戲中要求顯示的卡通塊數往往遠遠超過這一限制,如目
前較流行的打鬥游戲《街霸》中,一個卡通即為128*64點陣(由128個卡通塊組成)有時還
更大,這是怎麼實現的呢?
原來在實際游戲中,對卡通進行了分時控制。所謂分時控制就是在不同的時間里顯示半
通的不同部分,依靠人眼的視覺惰性產生連續的感覺。如《魂斗羅》游戲中的卡通顯示(兩個
正面角色、敵人、發射的子彈、暗堡的閉合與開啟都是卡通)就是每一次中斷顯示卡通的二分
之一實現的。
卡通的定義操作極其簡單,系統規定一個卡通塊由連續的四個內存單元定義,第一寸
單元指定卡通顯示的Y坐標、第二個為卡通塊在字型檔中的序號、第三個為卡通塊的顯示狀
態〔配色組合、左右翻轉、上下顛倒以及顯示於那個卡通頁面,,第四個為顯示的X坐標。編
程中可任意指定定義卡通的內存頁面(一般選二頁或三頁,即$200一$2FF, $300
$3FF)。
關於任天堂游戲中的卡通的定義及運動控制將在第七章討論。

1·4 任天堂游戲的音響處理

在大部分任天堂游戲的過程始、終,一直伴奏著和諧動聽的背景音樂;隨岩游戲的進行
和角色的動作還不時發出逼真的效果音響,而且這些音響的發出與背景的移動、角色的運動
三者並行工作,互不幹擾,許多朋友玩過中華機上的游戲,如《警察抓小偷》《富士山決戰》
等,這些游戲中的音響發出與角色的動作是不能同時進行的,即角色動作時沒有音響;發出
音響時角色的動作要停下來.任天堂游戲中的音響處理確有獨到之處.由於在6527 CPU內
固化有可編程音響發生器,所以音響控製程序特別簡潔,任天堂游戲的發聲系統由五個聲部
組成,對應於CPU管理的$40DO——$4013二十個單元,每個聲部使用四個單元,它們的作
用依次為音色音量、音形包絡、音調細調、音調粗調。第一、二、三聲部可進行和聲旋律演奏,
也可以選取任一聲部發出效果音,如執行F BASIC程序
POKE &H4015,1:POKE &H4000. 255,255,255,255
就可發出長達三分鍾的頻率由低到高的警報聲。第四聲部可以模仿連續不斷的雜訊,如風
聲 雨聲 鍾生 腳步聲 火車聲等等 第五聲部則可模仿出人的講話聲。任天堂游戲中

背景音樂一般都是使用前三個聲部演奏的,演奏程序也是放在中斷中處理的.五個聲部的發
聲總開關由$4015控制,$4015的D0——D4位依次控制翻第一至第五聲部的工作狀態,置
0關閉、置1開啟。

熱點內容
前端android 發布:2025-03-20 06:50:42 瀏覽:93
進制轉換棧c語言 發布:2025-03-20 06:50:31 瀏覽:339
myeclipse不自動編譯了 發布:2025-03-20 06:41:38 瀏覽:777
led汽車大燈和鹵素燈該選哪個配置 發布:2025-03-20 06:40:55 瀏覽:917
sql網校 發布:2025-03-20 06:16:42 瀏覽:279
安卓手機圖標排列為什麼會混亂 發布:2025-03-20 06:16:05 瀏覽:761
手機pin初始密碼是多少 發布:2025-03-20 06:15:59 瀏覽:900
javaif常量變數 發布:2025-03-20 06:15:57 瀏覽:344
iis安裝sql 發布:2025-03-20 06:05:31 瀏覽:149
製作自解壓安裝 發布:2025-03-20 05:41:49 瀏覽:305