[新しく発言をつくる] [HPへ戻る] [『ファンタシースターオンライン』 裏シークレットBBS]

修理屋稼業! 先月のPSOはどうって事なかったろ?

  修理屋稼業! 先月のPSOはどうって事なかったろ? 道場主 2009/08/01 01:25:43 
修理屋稼業! 先月のPSOはどうって事なかったろ? [返事を書く]
既にご存知の通り、バージョンアップのため、
かなり以前からDCPSOのディスアセンブルなぞをしてるわけです。
が、プログラマが馬鹿なのか、コンパイラ(リンカ)の最適化がでたらめなのか、
プログラムの内容はというと、とてもお粗末なコードが山盛りなワケです。

んで、折角なので、その一部というか、
頭を傾げざるを得ないようなサブルーチン等を紹介していこうかと思ったワケで。
一応、連載になるかもしれないし(笑)。

で、今回のサブルーチンはH'8c01354e。
ニモニックは以下の通り。

H'8c01354e: mov.l @(H'8c013590), R3
H'8c013550: mov.l @(H'8c013598), R2
H'8c013552: mov.l R4, @R3
H'8c013554: rts
H'8c013556: mov.l R5, @R2

H'8c013590: H'fff0
H'8c013592: H'8c00

H'8c013598: H'fff4
H'8c01359a: H'8c00

BASICで表記すると、

LET R3 = &H8c00fff0
LET R2 = &H8c00fff4
LET (R3) = R4
LET (R2) = R5
RETURN

つまり、実際には、

LET (&H8c00fff0) = R4
LET (&H8c00fff4) = R5
RETURN

という事をしてるだけ。
ペアレントルーチンに組み込むより、2サイクル遅くなっている。
度々使うルーチンで、メモリ節約のためにサブルーチンにしてある
……というなら有り得るのだけど、
実はこのサブルーチンをコールしているのは1箇所しか無い。
そのため、2ロングワードもメモリを余計に消費している。
……まぁ、このルーチンに限らず、このプログラム、
1箇所からしかコールしてないサブルーチンがやたらと多いんだけどね。

なかなかに謎なルーチンだ。
道場主 <olwlsovmys> 2009/08/01 01:25:43 [ノートメニュー]
  続き(その1)。 道場主 2009/08/01 01:26:00 
  │└続き(その2)。 道場主 2009/08/01 01:26:18 
  息抜き仕事の方が捗る?先月のPSOはどうって... 道場主 2009/09/01 07:40:19 
  │└続き。 道場主 2009/09/01 07:40:55 
  あなたは今までに何人の仲間を救ったか?先月... 道場主 2009/10/01 02:56:34 
  宇宙の孤児!先月のPSOはどうって事なかった... 道場主 2009/11/02 14:48:19 
  宇宙の戦士!先月のPSOはどうって事なかった... 道場主 2009/12/01 00:48:46  (修正2回)
  ラストサバイバー!今年のPSOはどうって事な... 道場主 2009/12/31 19:04:18 

[『ファンタシースターオンライン』 裏シークレットBBS] [HPへ戻る]
新規発言を反映させるにはブラウザの更新ボタンを押してください。



[レンタルPHP] [無料小説] [DVD]