トップページgamedev
777コメント359KB

スーパーマリオ逆解析で勉強

■ このスレッドは過去ログ倉庫に格納されています
0001リバースマリオ02/03/31 07:49ID:???
元祖マリオの逆アセダンプだとか、データ構造などが載ってるYO↓
http://www.geocities.co.jp/SiliconValley-Bay/7981/misc.html

データ構造の圧縮方法などがとてもためになるYO。
みんなで勉強するのDA!
0002名前は開発中のものです。02/03/31 08:19ID:???
       2ゲッ・・・
 ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄
         ∩ ∩
        〜| ∪ |         (´´
   :・‥  ヘノ  ノ       (´⌒(´
   ・:・:・((つ ノ⊃≡≡≡(´⌒;;;≡≡≡
  ‥∵・   ̄ ̄ ̄(´⌒(´⌒;;
         グシャァァーーーーーッ
0003名前は開発中のものです。02/03/31 08:26ID:???
00009063: 8D 57 07 sta $0757
00009066: 8D 54 07 sta $0754 ; プレイヤの大きさ(0=Big,1=small)→チビに設定
00009069: A9 02 lda #$02 ; 3人
0000906B: 8D 5A 07 sta $075A ; =マリオ(現在のプレイヤ)残り人数
0000906E: 8D 61 07 sta $0761 ; =ルイージ(待ちのプレイヤ)の残り人数

8bit時代ってメモリ少ないからプレイヤーの大きさなどを示すBOOL変数に
1バイトも使ってるていうのはちょっとビクーリ。
0004名前は開発中のものです。02/03/31 08:30ID:???
; SQ2 : パワーアップ効果音の音符テーブルを形成。
0000F4DA: 4C 52 4C 48 3E 36 3E 36 30 28 4A

あのパワーアップの音って長いけど、こんな短いテーブルだったのか!!
費用対効果を考えるとコスト安いな
0005名前は開発中のものです。02/03/31 08:32ID:???
>>3
いや、$0757はファイヤーマリオも記録しているからBOOL値では
すまない罠。
ま、2ビットで足りるけどね。
0006名前は開発中のものです。02/03/31 08:38ID:???
地形マップと敵マップとを分離したのか・・・
あと地形マップのデータ構造、エキサイトバイクのそれに似てるね。
マップ生成は初期化時に3pass。
0007名前は開発中のものです。02/03/31 08:39ID:???
土管に入れるか否か?は内部的には敵コマンド扱いだったのか。
0008名前は開発中のものです。02/03/31 08:48ID:???
しかし、意外とメモリは贅沢に使ってるんだね。
例えば、512Bhにクッパが斧を投げ始めるワールド数が格納されてるけど
これはソース中で記述可能でしょ?
バランス調節のしやすさを意識してる様子が、、
0009名前は開発中のものです。02/03/31 08:53ID:???
マップには4種類の属性があって、コインも含める全キャラが
その環境に合わせてパレットを用意しているという丁寧さに脱帽。
確かに土管の色も何パターンかあったなぁ
0010名前は開発中のものです。02/03/31 08:58ID:???
なつかしー!eor命令。
0011名前は開発中のものです。02/03/31 09:03ID:???
確かに若いころを思い出すダンプリスト。
そうそう、6502にはレジスタがほぼ単一だから、ニーモニックに
レジスタ表記がないのが特徴だったっけ。

0012名前は開発中のものです。02/03/31 09:06ID:???
>マップには4種類の属性があって、コインも含める全キャラが
>その環境に合わせてパレットを用意しているという丁寧さに脱帽。
確かに、ある意味リアルだよね。
0013名前は開発中のものです。02/03/31 09:25ID:???
RESET割り込みジャンプアドレスが fffch で、スーパーマリオの場合
00_80h だから 8000h が先頭。
で、その後、初期化を行って$8057で無限ループストップ。
つまり完全にNMI割り込み依存なのか!美しい。メインルーチンゼロ。
0014名前は開発中のものです。02/03/31 09:37ID:???
6502には大きく分けて3種類の割り込みがあった。
RESET割り込みは置いといて、IRQ割り込みとNMI割り込み。
で、CPUパワーの少ない当時において絶対にかかる割り込みというのが
必要で、それが後者のNMI割り込み。これは割り込み禁止が不可能な
割り込みで、CPUがいかなる状態であれこの割り込みだけはV-Blank突入時に
発生してくれた。CPUのコンテキストをスタック領域に保存するのも、
なんとCPUが自動でやってくれたので、当時の方が割り込みハンドラによる
プログラミングがある意味、お手軽だったし盛んだった。

メインルーチンが while(1); なのは何もスーマリだけじゃないよ。
0015名前は開発中のものです。02/03/31 09:39ID:???
6502はRISCチップです。
■ このスレッドは過去ログ倉庫に格納されています