れーすのエグゼ流星Blog

れーすのエグゼ流星ブログ

ロックマンエグゼ6の解析を主に行っている情報学生のBlog。プロフィールのidをクリックしてもらえると詳しい詳細が見れます。 Twitter @EXE_race

就活日記2 親戚のおじさんに訪問

2017/6/29 

はじめに

私の家系でこの歳になってもゲーム関係に没頭しているのは自分くらいだったのだが、そんな中でも唯一、ゲーム会社で働いている親戚の方がいる。

存在を知ったのは幼少期の頃で、親からちらほら聞いていた。その時に手がけていたのが○ンパレードシリーズだそうで、自分自身も知っているゲームだったのでよく記憶に残っていた。

いろんなゲーム業界関係の方にお話を伺うことは数多くこなしてきたが、年長者(母親と同じくらい 50前後)でゲーム業界の方はなかなか話す機会もないので、さっそくアポをとり会うことになった。

 

おじさんの経歴

ゲームセンターの店員からプログラマ(x86アセンブラ,C言語)としてゲーム業界に飛び込み、1年後にプランナーへと切り替え。関わったタイトルは20本ほど。当時コンシューマーやスマホなど、主流のハードは全て経験済み。

 

実際に会ってみた

秋葉の某ゲーム会社のオフィス内で初対面。おじさんとは昔会ったことがあるそうだけど、自分はまったく物心がついてない時だったので実質初対面。

会議室に通され、2時間ほど談笑することとなった。

 

談笑後の、当時のメモをそのまま貼り付けます

 

企画への道

最初はプログラマーで頑張る

仕様書に文句をつけるようにする(こうしたほうが面白いとか、こっそりその仕組みを作ってみるとか)

とにかく自分が面白いと思ったら口を出す、周りには嫌われるかもしれないけど上に認められ、企画になる

 

C周りをやれば間違いない C C# C++は需要ある あとUnity

コードを叩くばかりじゃダメ もっとエンタメを楽しむ

漫画 アニメ 映画 小説 女

自分の目を養う 人間にはどういったものが受けるのか、次第にわかるようになる 企画への一歩

想像力を養う アニメで描かれるけど漫画で描かれないような、自分で想像力を掻き立てられる経験

こういう経験を培うことによってユーザーに何が受けるのかわかるようになってくる

 

自分に自信をつける 自分が面白いとおもうものをどんどん作っていく

周りはインキャばっか そういうやつらを引っ張っていく力が求められる

とりあえずやりまくれ、後先考えるな

 

さいごに、話してみて

親戚ということで、普通の就活生を相手にするような色眼鏡がない、率直な話が大変有意義だった。ある意味、本来なら聞けないような話が多くリアリティに溢れていた。

 

やっぱ足を運んでみて話をするっていうのは改めて大事だと思いました。人脈やコネはフル活用しよう。

 

 

 

 

 

就活日記 はじめに

いつまで続くのか果たしてわからないのだけれど、就活の日記をつけることにしてみた。そこまで誰もこのブログを見ていないと思うので。メモとアウトプットがてらに続けていきたい。

もう1つ別にブログを用意しようかなって思ったけど、よしとする。

 

現在大学3年生やってます。

就活を意識し始めた事の発端はとある逆求人イベント。それをきっかけに自分が将来何をしたくて、どんな想いを持っているのかを考えた。

あんまり率直に書くのは恥ずかしいけど、一言で言うならば

 

 

人と人のつながりのきっかけとなるゲームを創りたい

 

 

たくさん悩んで、人生振り返って、自分に素直になって、こう思った。

 

1年後これを見た時、自分の考えは変わっているのだろうか、はたまた貫いているのだろうか、期待です。

GBA解析 アセンブリの勉強 

参考文献

ARM7TDMI saizen氏の解説ページ

Assembly Programming on ARM Linux(02) ARMリファレンス

GBAFE逆汗講座 GBAFE界隈の有志様による逆汗解説

解説/ARM_asmカンペ - FE8Archives 同じくFE界隈のwiki解説

http://wisdom.sakura.ne.jp/programming/asm/index.html アセンブリ入門

アセンブリ言語の基礎知識

 

個人的メモ命令集

BGE [address](label) 大きいか等しい 符号付き整数演算でより大きいか等しい

LDRH Rd,[Rs,#imm] Rsに符号無し#imm(6bit = 62まで)を足したメモリアドレスの値をRdにハーフワードロード

STRH Rd,[Rs,Rn] RsとRnを足したメモリアドレスにRdをハーフワードストア(2Byte)書き込み命令

BL [address](label) [PC±4MB]に強制分岐。今実行してるプログラムのアドレスから±409600Byte
ブランチとリンク。これはアドレスにジャンプし、r14を更新します。
これは、サブルーチンを呼び出すために使用されます。

MUL Rd,Rs RdをRsの値で積算

LDR Rd,[Rs,Rn] RsとRnを足したメモリアドレスの値をRdにワードロード(4Byte)

LDRB Rd,[Rs,Rn] RsとRnを足したメモリアドレスの値をRdにバイトロード(1Byte)

ADD Rd,Rs,Rn RsとRnを加算しRdに格納

BNE [address](label) 等しくない 比較結果が等しくないかゼロでない Z = 0

 

レジスタ

r0~r12 汎用レジスタ

 

r13はスタックポインタ

スタック専用のレジスタで、スタックが保持される

スタックは普通、何かのデータを一時保管用するために使用されます。たとえば、一時的にレジスタの中にあるデータをスタックへ積み(データの回避)、レジスタを別の目的に使用した後、スタックからデータを戻す(データの復元)ように使用されます。

push rr ;(SP) ← rr

pop rr ;rr ← (SP)

 

r14(LR)はリンクレジスタ 

BL 命令(サブルーチンコール)で分岐した場合の戻りアドレス を保持します

リンクレジスタは1つの戻りアドレスしか保持できないため、 スタック (普通は r13 が示す領域) に保存する場合が多くなります。

リンクレジスタがないとサブルーチンが終了した際に元の場所に戻ることができなくなる

 

r15(PC)はプログラムカウンタ 

実行中のメモリアドレスを保持しており、分岐する際の飛び先アドレスになる

 

BL命令の場合は予めr14(LR)に”戻りアドレス”を保持する

通常はサブルーチンの最初にr14(LR)をスタック、最後にr15(PC)にポップすることでr14(LR)→r15(PC)の代入を実現

よって飛び元に戻ることができる

(サブルーチン→サブルーチンが出来ないが、 mov r15 r14でも可能)

 

まとめる前メモ

lsl 論理左シフト 1回左シフトすれば2倍、1回右シフトすれば1/2倍です

bl サブルーチン

論理シフト
mov r0, #24
ldsb r0, [r4, r0] ;;体格ロード
asr r0, r0, #1 ;;1/2に
mov r2, #18
ldsb r2, [r4, r2] ;;力ロード
asr r2, r2, #2 ;;1/4に
add r0, r0, r2
mov r2, #19
ldsb r2, [r4, r2] ;;技ロード
asr r2, r2, #2 ;;1/4に
add r0, r0, r2

 

覚えておくべきことは、命令にSを追加すると(ANDS、SUBS、ADDSなど)、ステータスフラグが設定されることです。ループ内のS(第1章の最初のプログラムのような)を使用するのを忘れて、条件付きブランチを実行しようとすると、無限ループやその他の悪いバグが発生します。

ロックマンエグゼ6 セレナードイベントを作成するにあたって

こんにちは。

つい先日、ロックマンエグゼ6でセレナードイベントを再現してみました。

https://www.youtube.com/?hl=ja&gl=JP

 

なんで急にこんなもの作ったのかって言うと1つの契機があったからです。

 

1.TextPetを使えるようになったこと

これ、使ってみてめちゃくちゃ衝撃的でした。

GitHub - Prof9/TextPet: A plugin-based binary script extraction and insertion tool for Mega Man Battle Network modding and translation.

 

TextPetはテキスト編集ツールです。文字通りゲーム内のあらゆる文字を書き換えることが出来ます。

が、ツールの画期的なところといえばスクリプト形式での書き換えが可能という点です。

今まではDialogEditorやTalkEditorなどを用いて遠回りしながらもテキストを編集することは可能でした。ただ、特定作業や挿入作業が少々面倒くさいです。ときには得敵出来ないこともあります。

 

TextPetは予めゲーム内全テキストをエクスポートしたファイルがあり、その中身を書き換えてスクリプトを実行するだけです。

とんでもなく楽であり、人間にとって読みやすく、保持性が非常に高いです。

 

開発者のProf.9さんはとんでもないものを作ってくれました。

 

2.セレナードイベント作成時のあれこれ

大まかな流れ

シークレットエリアの再現→セレナードの用意→イベントの編集

 

2-1.シークレットエリア

多分ここに一番時間を使ったんじゃないんでしょうか。

まず、グレイブヤードを使うのはどのパッチを見ても定石ですね。墓石があるので使い勝手がいいです。

3のシークレットエリアをパレットビュアーで確認します。にらめっこしつつグレイブヤードに同じ配色を適用します。

 

スプライトと背景の導入後

 

背景とパレットを変えるだけでグレイブヤードの雰囲気が変わったのは予想はしつつも驚いたポイントです。

 

ただ、アニメーションパレットのせいで対応しなければならない箇所が多かったので地味に面倒でした。

 

2-2.セレナードの用意

実はSpriteReaderのアニメーション拡張機能に用いてセレナードのスプライトをフォルテ向けに調整してた経緯があったので、セレナードの戦闘スプライトはすぐ終わりました。

GitHub - idealexe/EXE6_Tools: 各種データを編集できるようになるかもしれないツール群

OWスプライトはエグゼ3から引用。アニメーションを入れ替えることにより違和感なく向きを調整。

 

顔アイコンが少々曲者でした。エグゼ3とエグゼ6では顔アイコンのサイズが異なるのでゲームに適用した際に表示が崩れてしまいます。

なので1から作り直しました。

 

2-3.イベントの編集

イベントを作るにはどうしようかと思いました。なにせポケモンと違ってイベントスクリプト自体を組むことはまだ不可能です。

なので、グレイブヤード最奥部のフォルテSPを改変しました。

 TextPetはこのような書式になっています。めっちゃかんたんですね。

 

完成しました。

 

 

 

3.まとめ

今回のセレナード改変はシークレットエリアのタイムアタックのような構図にしたいと考えています。

モノリスをエグゼ3の悪ナビにしてエグゼ3のボスを出現させたりなど、いろいろ企んでいます。

イベントスクリプトとフラグ管理さえなんとかなれば、エグゼ6ハックはかなーり進歩すると思います。

 

 

 

 

 

ロックマンエグゼ6に他ナンバリングの曲を完全移植するための方法とパッチ配布

idealさんによって他ゲーの音源を簡単に移植することが可能になったので、音源を既に移植したパッチを配布します

グレイガ版だけなのでファルザー版はしこしこがんばってください、対応する気はないですがどうしてもしたい人は声かけてね

 

github.com

 

主なやり方はここに書いてあります

 

BGM(ネイティブ音源)編

を参照

sファイルもgithubにあげているので落として好きなの使ってください

これもやり方わからない人はTwitterにでも聞いてね

www65.atwiki.jp

 

 

シャドウバース 解析

いろいろなきっかけがありシャドウバースのパケット解析をすることになったのでメモとして記録していく。

突然消すことも大いにあるので完全に個人用です。

ちなみに私自身はネットワーク、パケットキャプチャなどに関してはまったくの初心者なので悪しからず。

 

10.97.227.89⇄221.110.252.56    HTTP 164 POST

 

メニュー画面の移行

ポート80⇄50636,7,8,9...の行き来

 

51 6.925829 10.97.227.89 54.178.189.60 HTTP 420 GET /socket.io/?transport=websocket&sid=DsL1TWDY3yKkNobEAAF9 HTTP/1.1 

マッチング成立

 

13560⇄50636,7,8,9... ポート80がメニュー 13560がマッチング?

 

 

 

ロックマンエグゼ6ネット対戦における対戦BGMの変更方法

1.準備するもの

・Sappy

・sファイル

 

※弄れる人向け

・Domino

・LoopMaker

 

2.導入

今回のために用意したSappyとsファイルのセットを上げておきます。

https://www.axfc.net/u/3739475

(DominoとLoopMakerに関しては解析wiki見てください)

 

ダウンロードしたフォルダの中にあるSappy.exeを起動して、目的のROMを読み込みます。

 

f:id:rai17321:20161111191427j:plain

 

ネット対戦でデフォルトで使われてるBGMは21番目のウイルスバトルです。これに上書きしていきます。

 

f:id:rai17321:20161111191621j:plain

 

タスク→.sをアセンブルする をクリックします

 

f:id:rai17321:20161111191753j:plain

 

.sファイル名をクリックし、Sappyフォルダの中の「完成sファイル」フォルダにある好きなsファイルを読み込んでください。

 

f:id:rai17321:20161111191859j:plain

 

その際に出てくるダイアログも はい を選択してください。

 

以上で終了です。

 

3.補足

exe1battle2…エグゼ1のボスバトル

exe2battle1_brianuuu…エグゼ2のウイルスバトル ※

exe3_song25_to_exe6…エグゼ3のウイルスバトル

greatbattlers_brianuuu…エグゼ3のグレイトバトラーズ ※

ssr3battle1…流星のロックマン3のウイルスバトル

 

※がついているsファイルはループ処理が上手くいっていません。

DominoとLoopMaker、sファイルの編集を駆使すれば調整できると思いますが、私が直す予定は今のところありません。

 

改造コードを用いてもっと飛躍させたい場合はブルーさんのブログを参照してください。

ロックマンエグゼ6 BGM変更コード|チートコード|メットールのメモ帳