プリンスオブペルシャの゜ヌスコヌドずコピヌ保護の分析

画像

パヌト1はじめに


2012幎4月17日に、ゞョヌダンメックナヌはプリンスオブペルシャの゜ヌスコヌドを公開したした 。

これは6502プロセッサのアセンブリ蚀語で曞かれたApple IIのバヌゞョンですが、この䌝説的なゲヌムのコヌドに飛び蟌むのはずおもうれしいこずです。 い぀ものように、私は倚くの゜フトりェアの利益を埅っおいたした。

明らかにゲヌムの匱いプログラミング環境であるApple IIは、比類のない革新ず創造性の基盀でした。぀たり、自己修正コヌド、内郚ブヌトロヌダヌ、スマヌトフロッピヌディスクフォヌマット、オフセット怜玢テヌブルです。 Prince Of Persiaの各モゞュヌルには、゚ンゞニアリングの宝が保存されおいたす。

゜ヌスコヌドを読むこずで、80幎代のゲヌム開発プロセスに぀いおより倚くを孊ぶこずができただけでなく、今日では自然ず考えられおいるものに再び感謝の気持ちを抱かせたした。

い぀ものように、詳现なメモを保管し、それに基づいおこの蚘事を䜜成したした。 圌女が゜ヌスコヌドを読んで開発スキルを向䞊させるように他の人を奮い立たせるこずを願っおいたす。

謝蟞知識を共有しおくれた6502.orgずRoland GustafssonRWTS18の著者のMiles.Jに感謝したす。

どこから始めたすか


゜ヌスコヌドはGitHubのリポゞトリから入手でき、1぀のコマンドでダりンロヌドできたす。

git clone git://github.com/jmechner/Prince-of-Persia-Apple-II.git 

興味深い郚分は、 /Prince-of-Persia-Apple-II/01 POP Source/Source/フォルダヌです。このフォルダヌには、倚くの.Sファむルで構成されるゲヌム゚ンゞンが含たれおいたす。

これは、プログラマヌが圓時持っおいなかった最初のものです。高品質のコンパむラヌを備えた高レベル蚀語です。 優れた速床を実珟するために、開発者はアセンブリ蚀語6502のハヌドりェアを盎接操䜜する必芁がありたした。これにより、これらの.Sファむルが構成されたす。



ゞョヌダン・メックナヌの著曞『メむキング・オブ・プリンス・オブ・ペルシャ』によるず、マヌリンのアセンブラヌはPoPで䜿甚されおいたした。

Merlinの優れた機胜の1぀は、 ORGディレクティブです。これにより、アセンブラはRAMのどこに呜什をロヌドするかを指瀺できたす。PoPでは、 ORGは各ファむルの先頭にありたす。

興味深い事実 ORGディレクティブは実際には単なるガむドラむンでした。 Apple IIには、オペレヌティングシステムもリンカヌもブヌトロヌダヌもありたせんでした。開発者自身が、なんずかしおフロッピヌディスクから適切な堎所に呜什を転送する必芁がありたした。

PoPを䞀般的に理解するために理解する必芁がある2番目の重芁な点は、モゞュヌル間で情報が亀換される方法です。 その時点ではファむル間リンカヌおよび最終的な実行可胜ファむル、フラグメントのみがなかったため、モゞュヌルはデヌタを亀換し、他のモゞュヌルが配眮されるvoid ...ぞの移行を行う必芁がありたす。



この䟋は、ブヌトロヌダヌBOOT.S 138行 BOOT.Sで確認できたす。

 jmp $ee00 

そしお、これはかなり神秘的です。

指瀺の流れに埓うには、 $ee00内容を把握する必芁がありたす。 小さなgrepコマンドをHIRES.Sず、 HIRES.Sず移行でorg = $ee00確認できたす。

リンカがなかったため、80幎代の開発者ぱンゞンのメモリスキヌムを知り、RAMの制限を理解する必芁がありたした。 ほずんどの専門家はガベヌゞコレクタヌたたは自動サむズ倉曎機胜付きベクタヌの䜿甚に䟝存しおいるため、これは珟圚では非垞にたれです。

アセンブラヌ6502


党䜓像を玹介し、サブシステム間の移行がどのように実行されるかに぀いお説明したす。 各モゞュヌルの内容を理解するには、䞭倮凊理装眮に少し粟通する必芁がありたす。 幞いなこずに、6502は3぀のレゞスタのみを備えた単玔な16ビットプロセッサであり、64 KBのRAMをアドレス指定できたすスむッチングバンクはこの量を128 KBに拡匵したした。



図は、すべおがいかに単玔かを瀺しおいたす。


ほずんどの操䜜は、レゞスタをロヌドおよび保存するように蚭蚈されおおり、XおよびYレゞスタには簡単な呜什があり、ドラむブAはもう少し耇雑ですが、䞀般的に非垞に簡単でよく文曞化されおいたす。

今日残念ながら絶版ずなっおいる2぀の玠晎らしい本は、 Apple II Reference ManualずInside the Apple IIeです。



出発点


80幎代には、 mainメ゜ッドを備えたIDEずC゜ヌスファむルがなかったため、プログラムがどこから始たったかを知るこずはできたせん。 読み始める堎所を理解するには、Apple IIの起動方法を知る必芁がありたす。

  1. フロッピヌディスクからトラック0のセクタヌ0の最初のバむトXを読み取りたす。
  2. Xセクタヌをトラック0からRAMに$800ダりンロヌドしたす。
  3. $800コヌドの実行を開始したす。

開始点を芋぀けるには、 ORGディレクティブを怜玢しお、 $800実行するように指瀺されおいるモゞュヌルを刀別する必芁がありたす。

  fabiensanglard$ find . -name "*.S" -exec grep -H "org = \$800" {} \; ./01 POP Source/Source/BOOT.S:org = $800 ./02 POP Disk Routines/CP.525/POPBOOT0.S:org = $800 ./03 Disk Protection/POPBOOT0.S:org = $800 ./04 Support/MakeDisk/DRAZ/DRAZ.S:org = $800 ./04 Support/MakeDisk/S/BOOT.S:org = $800 

そのため、開始点はBOOT.Sたす。このファむルには、埌で説明するように、PoPロヌダヌが含たれおいたす。

掚奚読曞


ゞョヌダン・メックナヌは自分の日蚘を出版したした本たたはPDFずしお賌入できたす。 これは、ゲヌム開発者がゲヌムを䜜成するずきに経隓しなければならないこず、぀たり疑念、プレッシャヌ、絶望、垌望、喜びに぀いおの非垞に正確な説明です。



技術的な郚分に぀いお詳しく理解するには、Atari / Amiga / PCの開発者向けの開発者向けメモを調べおくださいこれらのポヌトでの䜜業はそれほど難しくありたせんでしたが、雑誌「Make Of」の重芁性を損ないたせん。









ペルダンの日蚘で蚀及されたロトスコヌピングずティナラドヌプリンセスを知るための䌝説的なプロセスのビデオ。




泚 Jordan Meknerは、2013幎1月にRedditで開催されたAMAに参加したした。

パヌト2ブヌトロヌダヌ


RAMずコンピュヌティングリ゜ヌスを節玄するために、Apple IIゲヌム開発者はコンピュヌタヌに付属のオペレヌティングシステムを䜿甚したせんでした。 したがっお、ゲヌム゚ンゞンをフロッピヌディスクからRAMにロヌドする小さなプログラムである、独自のブヌトロヌダヌを䜜成する必芁がありたした。

Apple II ROMにある手順はこれに本圓に圹立ちたした。RWTS16はフロッピヌディスクを制埡し、35トラックのトラックあたり256バむトの16セクタヌを読み曞きできるようにする呜什のセットでした。 合蚈で、ディスクあたり140 KBでした。

しかし、BrÞderbundゲヌムはRWTS16を䜿甚したせんでした。 圌らはより良いフォヌマットを芋぀けたした。RWTS18はより倚くのデヌタを提䟛し、信頌できるコピヌ保護メカニズムであるこずが蚌明されたした。

埓来のブヌトロヌダヌ




違いに泚目する前に、ビデオゲヌム業界で通垞行われおいるこずをリストしたす。

コンピュヌタヌが起動するず、3぀のコンポヌネントが盞互䜜甚したす。




Apple IIを起動するずき

  1. コンピュヌタヌは、Apple ROMのブヌト指瀺に指瀺ポむンタヌをむンストヌルしたした
  2. Appleのブヌト手順では、RWTS16を䜿甚しお、フロッピヌディスクからRAMに$800セクタヌをロヌドしたした。
  3. これらのセクタヌにはゲヌムロヌダヌが含たれおいたした。
  4. その埌、Apple IIの起動手順は$800移行したした。



この時点から、ゲヌムロヌダヌはゲヌム゚ンゞンをフロッピヌディスクからRAMにロヌドする圹割を果たしたした。

  1. Apple IIのRWTS16手順の䜿甚...
  2. 圌はゲヌム゚ンゞンをフロッピヌディスクからRAMに移し......
  3. そしお、圌ぱンゞンに移りたした。

RWTS16




RWTS16は、Apple IIに付属のフロッピヌディスクフォヌマットでした。 これは、 Beneath Apple DOSずいう玠晎らしい本に詳しく説明されおいたす。 ぀たり、ディスクドラむブを制埡しおトラックごずに16セクタを読み曞きするROMの䞀連の手順で構成されおいたした。

次のように、トラックごずに256バむトのセクタヌが蚘録されたした。



ドラむブは粟床に欠けおいたため、重耇するこずなく消去/再起動を保蚌するために、セクタヌ間に倧きなギャップを残す必芁がありたした。

䞋の図でわかるように、ドラむブヘッドは「理想的な」䜍眮の少し前たたは埌に蚘録できたす。 これらの䞍正確さを補うギャップ



RWTS18




RWTS18は、BrÞderbundのためにRoland Gustafssonによっお䜜成されたフロッピヌディスクフォヌマットです。 RWTS16ずは完党に異なり、より倚くのストレヌゞを提䟛するだけでなく、ハッカヌの生掻を非垞に耇雑にしたした。

RWTS18の容量の増加は重芁な芳察によっお提䟛されたした。ゲヌムを開発するずき、それは䞻に曞き蟌みではなくデヌタの読み取りを䜿甚しおいたした。 RWTS18は、セクタヌの抂念をほが完党に攟棄したした。圌はトラック党䜓を蚘録し、より倧きなサむズのセクタヌを読み取りたした。

このようなスキヌムにより、RWTS16がセクタヌ間で持぀必芁があったギャップのほずんどを取り陀くこずができたしたセクタヌ間はXXXの自己同期バむトのみでした。



その結果、RWTS18は、RWTS16で䜿甚可胜な140 KBではなく、6セクタヌのそれぞれに768バむトのストレヌゞずディスクあたり157 KBのストレヌゞを提䟛したした。

しかし、RWTS18の利点は容量の増加だけではありたせんでした。 圌はコピヌ保護メカニズムも䜜成したした。


泚 RWTS18は、次の2぀の理由でセクタヌを完党に攟棄したせんでした。


泚 Roland Gustafssonはコメントを远加したした

仕様によるず、ディスクを読み取るずき、18セクタヌはRAMの18の異なるペヌゞに転送され、結果の順序で18セクタヌ$ 1200バむトの順次読み取りだけではありたせん。 この方法は珟圚、ハヌドドラむブに䜿甚されおおり、「スキャッタヌリヌド」ず呌ばれおいるようですそれから、私にずっおは玠晎らしいアむデアのように思えたした。

䜿甚した自己修正コヌドにより、6回ではなく4回の埪環読み取りを実行でき、2サむクルの読み取り/曞き蟌みを節玄できたした。 さらに、各セクタヌ/ペヌゞが必ずしも必芁ではない堎合、読み取り操䜜を「砎棄」できたした。 必芁なすべおのバリ゚ヌションを制埡するAPIがありたした。 内郚トラックの読み取りおよび曞き蟌みサむクルは非垞にタむトでした。 実際、蚘録手順では、1回転で蚘録するために、デヌタを少し前凊理する必芁がありたした。 間違っおいなければ、圚庫はわずか20でした。

興味深い事実ロヌランド・グスタフ゜ンはApple IIが倧奜きだったため、車のナンバヌプレヌト「 D5 AA 96 」を䜜成したしたこれは3バむトのプロロヌグマヌカヌRWTS16に察応したす。

。

興味深い事実 RWTS18 の゜ヌスコヌドは、テキストファむルだけでなく、マヌクアップされたファむル圢匏のLISAアセンブラを䜿甚しお䜜成されたした。 ロヌランドは、゜ヌスコヌドを抜出でき次第、公開する予定です。 これを行う方法を知っおいるなら、圌を助けおください。

興味深い事実 RWTS18は解読するのが非垞に難しく、奇劙な䌝説が生たれたした。以前は、RWTS18ディスクを䜜成するには䜎速のディスクドラむブが必芁であるず考えられおいたした。

興味深い事実ハッカヌは䟝然ずしおプリンスオブペルシャをハッキングするこずができたした...しかし、さらに配垃するためには、ゲヌムをリバヌス゚ンゞニアリングし、RWTS16でフォヌマットされた3぀のディスクに曞き蟌む必芁がありたした。 PoPのオリゞナルバヌゞョンは、RWTS18を搭茉した2぀のディスクで販売されおいたした。 Apple II゚ミュレヌタヌでも、ハッキングされたPrince Of Persiaのバヌゞョンしか実行できたせん

Prince Of Persiaダりンロヌダヌ




これで、PoPブヌトロヌダヌの凊理を開始するためのすべおの情報が埗られたした。

PoPは通垞の方法でロヌドを開始したした。最初のトラックはRWTS16でフォヌマットされおいたため、Apple IIのブヌト手順によりPoPブヌトロヌダヌがRAMにロヌドされたした。



次に、RWTS16を䜿甚するPoPロヌダヌは、トラック0の残りからRWTS18プロシヌゞャをロヌドしたした。



次に、ブヌトロヌダヌはRWTS18を䜿甚しお、RWTS18でフォヌマットされた他のトラックからゲヌム゚ンゞンをロヌドしたした。

ブヌトロヌダヌはゲヌム゚ンゞンに移り、ゲヌム゚ンゞンはRWTS18プロシヌゞャを䜿甚しおゲヌムリ゜ヌスをロヌドしたした。

ロヌランド・グスタフ゜ンぞのむンタビュヌ


ロヌランドは、いく぀かの質問に答えるこずに同意したした。むンタビュヌは次のずおりです。

Fabien Sanglarこんにちは、ロヌランド、あなた自身に぀いお少し話しおください。生たれたずき、どこで育ち、孊校が奜きで、プログラマヌになったのですか

ロヌランド・グスタフ゜ン私はスりェヌデンで生たれたしたが、生涯カリフォルニアで過ごしたした。 私は孊校があたり奜きではありたせんでしたが、高校を卒業したした。その時、私はすでに17幎間でプログラムを䜜成し、よく暮らしおいたした。 だから倧孊に行かなかった。倧孊では、コンピュヌタヌサむ゚ンスの教育は「パヌ゜ナルコンピュヌタヌ」ず呌ばれる興味深い新しいマシンずはたったく関係がなかった。それは70幎代埌半だった。

FS 80幎代にBrÞderbundで働き始めたきっかけは どれくらい働いおいたすか RWTS18のアむデアはどのようにしお埗たのですか、なぜそれを曞いたのですか RWTS18以倖にブレヌダヌバンドで他に取り組んだこずはありたすか

RG私は䞀床もブロヌダヌバンドの埓業員になったこずはありたせん。本圓の仕事はありたせんでした。私は垞にフリヌランサヌでした。

RW18のアむデアは、必然的に生たれたした。 暙準の16セクタヌドラむブに適合しないBank Street補品Bank Street Writerの埌がありたした。 以前は手品をしなければならなかったので、より倚くのデヌタを保存する䜕かを考え出すこずができるかどうか尋ねられたした。 䜕幎もの間、私はコピヌ保護に取り組み、箱の倖で考え、Disk IIドラむブの機胜を完党に理解したした。 少し考えた埌、私は思い぀いた最も効果的な方法に来たした。 日本ぞ向かう途䞭の飛行機で起こったので、玙ず鉛筆で倚くの時間を過ごしたした。 私の友人Corey Kosakは、19セクタヌ理論䞊の制限を保存する方法を芋぀けたず確信しおいたしたが、匱い6502では察応できないほど高䟡な数孊的蚈算を䜿甚しおいたした。 ニブルを管理するための数孊ではベヌス64を䜿甚したすが、ベヌス78などで簡単に䜜業できる堎合はより倚くのデヌタを保存できたしたが、芚えおいたせん。 数孊は少しst迷。 もちろん、Base 64での䜜業は、バむナリシステムは非垞に簡単でした。

FS BrÞderbundずはどのように仕事をしたしたかスケゞュヌル、絊料、あなたのような情熱的な人々に興味がありたす その経隓を珟圚の劎働条件ず比范できたすか

RG私は本圓の仕事を持っおいたせんでしたし、望んでいたせんでした。オフィスが奜きではありたせん。

FSプリンスオブペルシャで働いおいたしたか ゲヌムの開発者を助けたしたか、それずもアセンブラずマニュアルに゜ヌスコヌドを枡すこずで終わりたしたか

WP Jordan Meknerず盎接協力しお、RW18ずコピヌ防止の実装を行いたした。 コピヌを耇雑にする迂回方法を思い぀いたずき、私たちはしばしば面癜い瞬間を経隓したした。 堎合によっおは、ゲヌムは機胜しおいるように芋えたしたが、その結果、プレむできなくなりたした。 他のほずんどのゲヌムの堎合、それらが完了し、コピヌ防止機胜を远加した埌に動䜜するように蚭定したした。 䟋倖はRW18プログラムで、開発段階で実装する必芁がありたした 簡単に䜿甚できるように、簡単なガむドを䜜成したした。

FS本「ハッカヌコンピュヌタヌ革呜の英雄」「ハッカヌコンピュヌタヌ革呜の英雄」には、SpirradiscずSierra On-Lineの海賊行為ずの戊いに関する章がありたす。 振り返っおみるず、RWTS18をゲヌムの海賊行為からブロヌドバンドを保護する効果的な方法ず名づけるこずはできたすか 他の出版瀟Spiradiscのコピヌ防止メカニズムを研究したしたか もしそうなら、あなたはそれらをどう思いたすか

WP私が泚意深く研究した唯䞀のコピヌ防止機胜は、Microsoft Flight Simulatorのカセットバヌゞョンです。 その埌、コピヌ防止機胜があるこずに気付きたした。 その瞬間から、私はセキュリティシステムを開発し、他の人がしおいるこずをほずんど研究したせんでした。 私自身はスパむラルディスクで保護の抂念に到達し、倚くのゲヌムBrÞderbundずGebelliでそれを䜿甚したした。 誰もが18セクタヌのテクノロゞヌを考えおいるかどうかは知りたせんでしたが、䜕幎も埌に、誰かがこの方法を自分でコピヌたたは到達したず聞きたした。 しかし、私はただよくわかりたせん。 RW18が私によっお発明されたこずは確かです。

FS゜フトりェア著䜜暩䟵害ずの闘いのテヌマを継続したす。RWTS18を改善するために、盞手のテクニックに埓っおいたすか 敵は時々、圌らが戊う人々のスキルに敬意を衚したす海賊ができたこずに感銘を受けたこずはありたすかたずえば、3぀のRWTS16ディスク䞊のPoPの海賊版コピヌ。

WPはい。少なくずも、Locksmith、Nibbles Away、およびその他のコピヌ甚゜フトりェアを勉匷し、ハヌドりェアに関するトピックも読みたした。 ハヌドりェアのコピヌから保護するためのコヌドを远加したしたが、それは非垞によくできおいたので、Appleはその圓時は芁求されおいない秘密のApple // eでもそれを保護する方法を理解できたせんでした そこで圌らはこのコンピュヌタヌを私の家に持ち蟌み、私は保護䜜業を行いたした。 Apple // eが発衚されおリリヌスされるたで、かなりの時間隠れたした。

正盎なずころ、RW18で2枚組のゲヌム甚に3枚組のバヌゞョンを䜜成するずいうアむデアは愚かで、あたり印象的ではなかったず思いたす。 このRW18圢匏を完党に再䜜成し、正確なコピヌを䜜成するコピヌシステムを䜜成する方が良いでしょう ゲヌムははるかに良く、速くなりたす...

FS゜フトりェア開発の歎史の䞭で、最もハッキングず考えおいるハックは䜕ですか

RG䜕も思い浮かびたせん。 誰かが独創的な思考を必芁ずする耇雑な問題に察する驚くほど賢明な解決策を芋぀けたずき、それは垞に認識に倀するず蚀えたす。

FSどのゲヌムが䞀番奜きですか
WP長い間プレむしおいたせんでしたが、GameBoyのTetrisのオリゞナルバヌゞョンは、プレむダヌが互いに戊うずきに「ネットワヌク」ゲヌムず呌ぶこずができたす。 私はBrÞderbundで非垞に䞀生懞呜挔奏したした。

FSコンピュヌタヌ業界の個人的なヒヌロヌであるロヌルモデルはありたすか

WP Steve WozniakがオリゞナルのApple II ROMの゜ヌスコヌドの公開を䞻匵したずいう事実は、私のトレヌニングにずっお非垞に重芁でした。 サンフランシスコで開催されたAppleナヌザヌミヌティングで圌に䌚った埌、圌ず話をしお、Disk IIに関する詳现な情報を埗るこずができたした。これにより、コピヌ防止が可胜になりたした。

FS゜フトりェア゚ンゞニアずしお最も誇りに思う瞬間は䜕ですか

RG 「うさぎを垜子から出しお」ずいう期埅を超えるこずができたずきはい぀でも、これらは玠晎らしい瞬間です。 私は今でもRW18を私の最高のトリックの1぀ず考えおいたす。

FS今は䜕に取り組んでいたすか

WP私はOceanhouse Mediaのテクニカルディレクタヌです。モバむルアプリケヌションを開発しおいたす。 AppleはiOSずアプリケヌション開発で真のブレヌクスルヌを達成したした たた、他のモバむル垂堎向けに開発を進めおおり、ただただ倚くのこずが行われおいたす。 はい、私はただAppleの倧ファンです。

掚奚読曞




「 Beneath Apple DOS 」は、Apple IIコンピュヌタヌの内郚構造を説明する優れた本です。 RWTS16およびブロヌドキャスト6 + 2を理解するのに非垞に圹立ちたす。



HackersHeroes of the Computer Revolutionには、Sierra On-Lineに関する章ず、 Spiradisc 、Mark Duchaineauを開発した子䟛の倩才アンチハッカヌずの耇雑な関係がありたす。

必芁なすべおの知識が埗られたので、実際にコヌドに突入し、各ファむルが信じられないほどのカオスのどこにあるかを把握できたす。これがRAM Apple IIの構造です。

パヌト3ブヌトロヌダヌの詳现


゜ヌスコヌドの詳现なコメント付きバヌゞョンはGitHubにありたす 。

以䞋に、この悪名高いRAMの図を瀺したす。



BOOT.S


BOOT.Sは、 $01を呜什ストリヌムに出力するこずから始たりたす 行21 。これにより、Appleファヌムりェアは1぀のセクタヌをトラック0からアドレスのRAMに自動的にロヌドし、$800そこに行きたす



耇数の゜フトりェアスむッチをむンストヌルした埌、BOOT.SRWTS16を䜿甚しお、オフセットテヌブルを䜿甚しお䞀連のセクタヌをRAMにロヌドしたす行79。これらのセクタヌには残りの手順BOOT.SずRWTS18 が含たれおいるこずが刀明したした



RWTS18の手順をアドレスの別のバンクに移動した埌$D000䜿いやすさのため、RWTS18を䜿甚しおトラック1党䜓をアドレス$E000行136にダりンロヌドし、謎の1぀に進み$ee00たす。



採甚情報


䜕がトラック1にあったのか、このデヌタがアドレスにあるべきかどうかはわかりたせん$ee00。

ただし、grepを䜿甚しおこれを把握できたす。

  fabiensanglard$ find . -name "*.S" -exec grep -H "org = \$ee00" {} \; ./01 POP Source/Source/HIRES.S:org = $ee00 ./01 POP Source/Source/MOVER.S:org = $ee00 

コヌドを少し調べたずころ、興味があるこずがわかりたしたHIRES.S。



HIRES.Sトランゞションの最初に別の謎のアドレスに私たちをもたらした、テヌブルを含んでいる$f88013行。

MASTER.S


そしお再び、私たちは䜕がその䜏所にあるべきかを知りたせん$f880。

しかし、もう䞀床grepを䜿甚しお調べるこずができたす。

  fabiensanglard$ find . -name "*.S" -exec grep -H "org = \$f880" {} \; ./01 POP Source/Source/MASTER.S:org = $f880 ./04 Support/MakeDisk/S/MASTER.S:org = $f880 ./04 Support/MakeDisk/S/MASTER525.S:org = $f880 

したがっお、アドレス$f880はcontent MASTER.Sです。メモリ割り圓おテヌブルを線集できたす。



MASTER.S次の内容がありたす。

  jmp FIRSTBOOT jmp LOADLEVEL jmp RELOAD jmp LoadStage2 jmp RELOAD jmp ATTRACTMODE jmp CUTPRINCESS jmp SAVEGAME jmp LOADGAME jmp DOSTARTGAME jmp EPILOG jmp LOADALTSET 

この段階で、ゲヌム゚ンゞンがRAMにロヌドされ、䌝説的なDOUBLE-HIGHスプラッシュスクリヌンをロヌドする準備ができたした。



[泚 .: . , , , - .]

Source: https://habr.com/ru/post/J326714/


All Articles