新・Webパンくず

とりとめのない日記とか備忘録とか
2007/01 | 12345678910111213141516171819202122232425262728293031
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
まだやってる。本当にやばい。
とにかく「Famisoon」の未対応マッパーを中心に潰している。もはや移植ではなくなってきている。

いい資料を見つけた。これ

ほとんどのマッパーの解析情報を網羅している。 これ見てやっと「マイティボンジャック」(マッパー185)が吸えた。たぶんこのマッパーの他のソフトも吸えるだろう。持ってないけど。

マッパー94の「戦場の狼」も吸えた。昔は意味もわからず無駄な処理をはさんでいたが、これ見てもっと簡単に吸えることに気づく。もっともどうやっても吸えさえすれば、このマッパーはこれしか無いのだが。

どうしても吸えないのがマッパー88の「クインティ」。CHR-ROMが吸えない。化ける。もうちょっと調べることにしよう。

マッパー23は処理を大幅に高速化できた。アドレスの指定に一工夫と、コード自体をかなりベタなVBっぽいコードに変更した為。「月風魔伝」と「コントラ」が吸えた。
このマッパーは秀作が多い。何で対応してないんだろ?

下はやっと吸えた「マイティボンジャック」。難しすぎて今はもうプレイする気にはなれないけれど。

20070130_01.jpg

スポンサーサイト
ファミコン吸い出しプログラムの移植に完全に没頭している。軽くやばい。
既に結構な時間をつぎ込んでいる。

きちんと吸えたかどうかのチェックに「Famisoon」の吸い出しデータとの比較をしているのだが、この「Famisoon」に意外と未対応マッパーが多いことに気づく。
結構面白いソフトが揃っているマッパーもある。マッパー5、10、23なんかがそう。

この辺の資料が手元にあるので、ぜひとも対応させて差別化を図り、値打ちのあるものにしたい。
現在マッパー5については「ジャストブリード」が吸い出せた。
マッパー10については「ファミコンウォーズ」と「ファイアーエムブレム」が吸い出せた。但し「ファミコンウォーズ」はなんとなく不安。戦闘アニメに一部きちんと出てない部分がある。
マッパー23は途中。バンク切り替えのルーチンを直さないと吸い出しにものすごい時間が掛かる。

20070129_01.jpg

インターフェースはこんな感じ。勝手知ったるVBなので、インターフェースは好きなように出来る。
作ったところで需要があるかどうかは今は考えないことにしている。自分が使いやすければそれで良いのだ。
もうちっと出来たらベータ版として本店においてみよう。
するとか言ってシフト演算の話以降ブログには何も書いていなかったことに気づく。

符号無しの型が無いVBでシフト演算をしようと思うと、意外と面倒なことに気づく。
ビットのシフト自体はひとつ大きな型(Integer なら Long に)にキャストしてから行えば問題は無い。
問題はシフト後の数値を元の型に戻すときで、このとき先頭ビットが立っている数値(たとえば&H8000)を戻そうと思うと、この数値は Long 型では10進数で 32768 だが integer 型にはこの数値は入らずにオーバーフローエラーが起きる。Integer 型では10進数で -32768 が &H8000 になるからだ。

先頭ビットの状態を見て適宜型に応じた10進数に読み替えてから、ひとつ小さい型に戻してやる、という処理を書けばよい訳だが、何となく面倒だしかっこ悪いし何より納得いかない。
メモリ状態をそのまま移せば済むだけのところを、えらく回りくどい。仕方が無いので、下のような形で無理やり解決する。(左シフトね)



Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function Int_L_Shift(ByVal Data%, ByVal BitCount%) As Integer

  Dim nVar&
  Dim ret%

  If BitCount >= 16 Then
    ret = 0
  ElseIf BitCount < 0 Then
    ret = Data
  ElseIf BitCount = 0 Then
    ret = Data
  Else
    nVar = Data * (2 ^ BitCount)
    Call CopyMemory(ret, nVar, 2)
  End If

  Int_L_Shift = ret

End Function



API を使って無理やりメモリ内容をコピーしています。
Long 型の下位2バイトのメモリを Integer型 に押し込んでます。
こういうやり方が作法として認められるものかどうか定かでは無いのですが、とりあえずきちんと動けばよしとする。これぞ俺竜。
右シフトも同じような感じでAPIで戻す。詳細はいちいち書きませんが。

実際の移植は結構進んでまして、いくつかのマッパー(0~4)は吸いだせるようになってきました。
もうちょっと形がしっかりしてきたら本店にも乗せてみたいと思います。

以上、プログラムに興味ない人にはさっぱりわからない話でした。
仕事のほうでバタバタしてる。

昨日テレビ(NHK)でWindows Vistaについて特集していました。
Vistaについてはすぐに飛びつく気が無いので適当に見ていたのですが、その中で脱Windowsの対抗OSとしてLinuxを挙げていました。

Linux。
かれこれ4~5年前、Linuxに本格的オフィスソフト「OpenOffice.org(OOo)」が登場し、“LinuxはWindowsに取って代わる、あるいは勢力を二分するかもしれない”という予感(妄想?)にかられ、研究した時期がありました。

最終的には“LinuxがWindowsを脅かす日が来るとしても、それはもっと先の話だろうし、そんな日は来ないかもしれない”、という結論の元フェードアウトして現在に至っております。
実際問題この数年間でどれほどLinuxがWindowsのシェアを奪ったかというと多分ほとんど奪えてないのではないかと思うし、Linuxをやっておけばよかった、なんて思ったことは一度もありません。

むしろ OOo にしても Apatch にしても Windows に移植されてしまいましたし、MySQL や PostgreSQL も GIMP も Windows用があります。他のフリーソフトやこれまでの知識の蓄積を考えても、OSを切り替えるメリットがあまりにも少なすぎるのです。

ビジネスフィールドではサポート出来る業者とか技術者があまりに少ないのが実情ですし、個人ユーザの取り込みに関してはLinuxコミュニティはあまりにも排他的で、最終的には“よく分からないなら使うな”的な雰囲気がありましたし。

最近はどうなんでしょう。
テレビに映し出されたLinuxのスクリーンショットを見ていると、もう一度チャレンジしてみたいような気もします。
リサイクルショップへ行ってまいりました。
例によってゲームコーナーの箱をあさってファミコンソフトを発掘してきました。
箱といっても衣装ケースのでかいやつにぎっちり詰められている状態で、かがんでこれを物色している様はかなり変な人に見られたことでしょう。変な姿勢で吟味してたので、腰が痛い。

収穫は、こちら

20070123_01.jpg

「クインティ」・・・箱、説明書、保証書その他が揃った完品。450円
「10ヤードファイト」・・・300円
「ヴォルガードⅡ」・・・100円
「ディーヴァ」・・・100円

目玉は「クインティ」で、完品でかつかなりの美品。新品で買っておそらく数回しか遊んでいないと思われます。これが450円は超お買い得。速攻で買い。
リサイクルショップはゲーム専門店と違って若干相場とずれた値付けになっていることがあります。こういうお宝が発掘できることがあるので大好きです。
「10ヤードファイト」は以前から興味はあったのですが何となく値段的に納得できるものが無かったので買わなかったのですが、今回300円で発見したので買ってみました。時期的にスーパーボウルも近いことですし。
他の2つは内容すらよくわからなかったのですが、とりあえず100円だし買っとけ、見たいな。
自分的には200円以下で発見したときは基本的に買い(但しRPGとか買ってもまずやらないであろう物は除く)、100円以下なら中身を問わずいいから買っとけ、という線引きをしてます。
特に「ディーヴァ」はカートリッジのイラストからもク○ゲー臭が漂ってくるような感じ、多分つまんねーんだろうなあ、なんて思いながらレジへ。

帰って早速やってみたのですが、意外とハマるのが「10ヤードファイト」。小1時間くらい遊んでしまいました。
フットボールはルールも複雑なのでかなり大胆なアレンジが施されてます。
基本的に自分のチームは攻撃のみ。4回1セットの攻撃はフットボールのルール通りなのですが、パントもフィールドゴールもなし。常に4thダウンギャンブル(笑)。狙うはひたすらタッチダウン。ハドルもフォーメーションもへったくれもなし。
パスによるビッグゲインはほとんど望めそうも無いので、基本的にはディフェンスの薄い側を狙ってピッチ(横パス)してのラン攻撃中心になります。
選手の足は遅いので爽快感は無いですが、それでもタッチダウンしたときは思わずコントローラを床に叩きつけて踊ってしまいます(嘘)。
珍しく元が取れたゲームでした。

え、ディーヴァ?何すか、それ?
移植の第一歩なんですが、まずはパラレルポートの制御から何とかしないといけません。逆にここがどうしようもないといきなり企画倒れです。

正直これはVBだけではどうしようもありません。GIVEIO.SYS 利用ライブラリはソースコードも公開されているので、これをVC+6.0でDLL化してVBからI/O制御する方法を考えようかなー、なんて技術も無いのに考えながら検索していると、良いものがあるじゃないですか。

VisualBasic6.0で直接I/O制御するためのライブラリ「vbioscm」

こりゃいいや。
_inp とか _outp など Cでおなじみの制御がほぼそのままVBで利用できます。
早速利用させてもらうことにします。

実はもう一点移植上の問題点があります。
それは「シフト演算」です。

.NETではVBでも「dat >>= 1」とかシフト演算が可能になっているようですが、6.0ではそのままシフト演算が出来ません。
理屈的には乗算や除算で代用できますが、特に乗算でオーバーフローが発生します。どうしようかな。
とりあえずシフトによって押し出されるビットの部分をあらかじめゼロにマスクしてから演算させればオーバーフローは回避できるのかなー、なんて案だけ頭の中にあるのが現在の状況。

もちっとテストとかしてみます。んじゃ。


本店ちょっとだけ更新。FDS Loader の件。これについてはじっくりやることにする。

ちょっと前にほじくり出した古いプログラムを眺めている。ファミコン吸い出しプログラムだ。
何故これで吸い出せるのかなどはさっぱり分かりません。それはそれでまあいいや。

古い話で恐縮ですが、このプログラムは「ろむを吸おうぜっ」というその道ではかなり有名だったサイトで公開されていたもので、今でもその骨組みだけは公開されています。(本店の企画「disksys.romを吸い出そう」を参照下さい。)
公開されているバージョンはバンク切替をごっそり削除してマッパ0しか吸えない様になっていますが、昔のバージョンではマッパ0から4まで吸える様になっていました。今でも Web Archive を漁ればこのソースコードは入手できます。昔はこれに更にコードを追加して色々なマッパに対応させる研究が盛んになされていたわけで、私の手元のソースもそんな追加がいたるところにあります。

それはともかく、このC言語で書かれたソースをぼんやり眺めながら、「これVBに移植できないかなー」なんて思いついた訳であります。今更これを移植してどうするものでもないのですが・・・。CよりはVBの方が得意なので(つうかCは基本のちょいかじりしか知識が無い)、移植できれば新たに見えてくるものもあるかも知れない。

そんなわけで他の企画と並行しつつ移植作業をやってみることにします。
但しこの企画、途中で頓挫したり立ち消えになる可能性が非常に高い。しばらく経ってそんな企画は無かったことになっているかもしれません。
先日から「FDS Loader」のまとめを書こうとしているが、ちぃーとも進まない。
汚い手書きの資料と現物しか無いので、きちんと写真をとって情報を整理して・・・とかやりだすと時間ばかり経ってしまう。
出来た分をちょっとづつ公開するつもりではあるが、もうちょっと先になりそう。

昨日はまたジャンクをあさりに行って来ました。が、不発。
いや、500円のノーチェックファミコン本体は何台かあったのですが、なんとなく食指が動かず。
ディスクドライブ破損のツインファミコンがありましたが3,000円と高いので回避。1,000円位なら買ってドライブを修理して使うんですが。
ジャンクではNEO-GEO、サターン、メガドライブ、任天堂64もあったんですが、ソフトも無いのにそんなに本体のジャンクばかり仕方がないのでパス。直せる自信も時間もないし。

話は変わるが、帰宅するとうちの猫さんのヒゲが片側だけえらく短くなっていた。
卵焼きを盗もうとして熱いフライパンで焦げたらしい。確かに先がちりちりになっている。馬鹿だ。
ネットで調べると結構重要じゃないですか、ヒゲ。

「最近いい事無いねぇ」と膝の上の猫をなでつつ、また「FDS Loader」のまとめをやり始める。進まねー。
「次はパソファミのRAMカセットにでもチャレンジするかなー」とか考えつつ夜は更けていくのでござる。
猫さんの写真をちょっとだけ本店のほうへアップしました。
完全に自分用。和む。

もっと色々いい写真が撮れれば良いんですが、猫の撮影って結構難しい。
起きてるときは動き回るし、フラッシュ使うと目が光るし。かといって明るい昼間に撮ろうと思うとワニみないた目になってるし。
いい写真が撮れたらどんどん追加しよう。
それだけ。

ところで、うちの猫はなぜか食パンが大好きです。
食べさせることは無いのですが、何度か勝手に食われたことがあります(端っこだけですが)。
食パン以外にも隙を見て食われたものは、

卵焼き(2切ペロリ、蓋してあったのに・・・)
うなぎの頭(蒲焼の切り落とし、流し台から強奪。取り返したが少しだけ飲み込まれた)
生豚肉(未遂)
ハム(子供が床に落としたもの、拾う前に食われた)
ミルクたっぷりココア(カフェオレだったかも。鼻付けられた)
猫じゃらしのおもちゃの中身の綿くず(翌日吐かれた)

うーん。
ちなみに、下は放っておいても無視されたもの

みかん
バナナ
洋ナシ
コーヒー(砂糖少な目、ミルクなし)

宮迫です(嘘)。

木曜から寝込んでおりまして、木金土日と全く家から出ずほとんど寝てすごしました。当然木金の仕事は有給。
年明けの開始が遅かったせいもあり、実は1月はまだ3日しか出勤していなかったことに気づく。

さすがに今日は仕事へ行って参りました。
4日間ほとんど寝て過ごしたので体もそうですが、頭もなまってしまっているらしく仕事が遅々として進まないような気がしました。

というわけで、1月に入って結構いいペースでブログは更新していたのに、ちょっとブランクが出来てしまいました。
やりかけの猫写真集もちっとも進んでません。ま、自分用の写真集なのでぼちぼちやっていくことにします。

20070115_01.jpg

猫さんカーペットの上で座り込むの図(下はホットカーペットなので暖かい)。
この姿勢を見ると「クリスマスに食べた丸鳥ローストチキンを思い出す」とは奥さんの言。確かに似ている。
本店更新しました。

予告通りファミマックスの修理についてまとめてみました。
いつもいつも駄目ならガワとコントローラを回収するなどと言いつつ、結局直してしまう。で、直ったらそのまま飾り物になってしまいます(使えよ、俺)。
ゲームをするためというより分解したり直したりする為に買っているような感じ。

先日買った「ジャンクふぁみ魂家郎4」ですが、どうにもわかりません。全く問題なく動いています。
内蔵の7in1もカートリッジを挿入して動かしても、普通に動いています。
7in1のサッカー(のまがい物の「FOOTBALL」)のBGMがおかしいのは仕様でしょうし、一部タイトルが動作しないのも仕様どおりです。
推測するに前の所有者が互換機についてあまり知識が無く、店もチェックするのが面倒なので「申告通りジャンクにしとけ」って事でジャンク扱いにしたんでしょうか。
直す楽しみがなくなっちゃったじゃないか。

ちくしょう、だまされたぜ」(←なんでやねん)

まあいいや。
猫写真集計画はひそかに進行中。とりあえず本店トップに

20070109_01.jpg

↑この写真を置いてみた。和むぜ。
最近携帯の待受画面を飼い猫の写真にしている。
仕事中、疲れた時とかくさくさしたときに取り出して、ちょっと眺める。和む。
早く帰ってもふもふ撫で回したい。噛まれるけど。

そんなことを考えていて、思いついたことがある。
本店に猫の写真集をアップしておけば、休み時間中とかもっとたくさん見られるじゃありませんか。
俺様による俺様の為の飼い猫写真集。セクシーショット満載(オスだけど)。
スクリーンセーバーにするのもいいなあ。

とりあえず家に帰って飼い猫の写真を撮ろう。
いっぱい撮ろう。
遅ればせながら、新年明けましておめでとうございます。

と言いつつそろそろ正月気分と酒を抜かないといけないので、真っ昼間から飲まずに買い物に行ってまいりました。本年の初荷です。

20070106_01.jpg

ジャンク「ふぁみ魂家郎4」 200円、開運福袋 1500円。

この「ふぁみ魂家郎」は去年ファミマックスのジャンクを購入した際にみてたのと同じなのでしょうか?あの時は300円だったような気がします。まあいいや。

福袋はファミコンソフトが10本詰まっています。4,000~6,000円相当のお値打ち品らしい。
年の初めの運試し、とにかく買ってみました。で、さっそくご開帳。

20070106_02.jpg

「グーニーズ」、「サラダの国のトマト姫」、「ウルトラマン倶楽部2」、「クルクルランド」、「スケバン刑事Ⅲ」、「ドラゴンクエスト2」、「月風魔伝」、「ロットロット」、「聖闘士星矢」、「グラディウス2」以上10本。

・・・うーん。微妙。相場が良くわからんのですが、値段が値段だけにこんなもんかなあ。手持ちとのダブリがドラクエ2だけというのは救いですが。
中身がわかっていたら買わなかったでしょうが(笑)。ま、ブログのネタを買ってきたようなもんです。

ふぁみ魂家郎4を修理してまとめて2,000円くらいでオークションで売れねえかな?

修理といえば、年末に買ってきたジャンクのファミマックスを修理しました。修理方法とかは近々に本店の方にアップしたいと思います(わざわざ余計な仕事を増やして遠のく「FDS Loader」のレポート)。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。