コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
おちゃめ ◆jH1opV6FnGyx
2017/12/10 0:28
簡易地球儀QSPをver.1.2にバージョンアップしました。
コメントにて公開キー、ver.1.2で何が変わったのか、簡易地球儀の高速化やその歴史について書いていきます。

コメント

アバター
おちゃめ 2017/12/10 0:30 ◆jH1opV6FnGyx
公開キーは【 4DNERX33 】です。

バージョンアップ・・・といってもver.1.1からプログラムリストの短縮できる部分が見つかったため実行中に地球儀の大きさを変えられる機能を付けただけです。
例えばBボタンを押せば半径32ドットになります。(ボタンはある程度長押ししないと反応しない場合があります)
ver.1.1までは起動時に大きさを選択が可能なだけで実行中は変えることができませんでした。

ちなみにver.1.1で大幅に高められた速度ですが、ver.1.2では速度はほとんど変わっていません。恐らくQSPではこれが限界でしょう。(これ以上速くするには表示の仕組みを根本的に変える必要がありプログラムが大幅に大きくなる)
アバター
おちゃめ 2017/12/10 0:30 ◆jH1opV6FnGyx
では、全く高速化をしていないプログラムが気になると思うので普通に作った場合には上記のようになります。
簡単に仕組みを説明すると元の地図のGRPを1ピクセルずつ読み取って地球儀上でどこに表示されるかを計算したものです。2つを見比べればどのように高速化が行われているかがよく分かると思います。
これらの仕組み等についてさらに詳しくは冬コミで頒布予定のプチコン3号本「プチコン3号QSP完全マニュアル PART 3(仮称)」で解説予定なのでお楽しみに!
アバター
おちゃめ 2017/12/10 0:38 ◆jH1opV6FnGyx
私が作った「簡易地球儀」の歴史を遡ってみます。

これが「簡易地球儀QSP」の原型となったプチコンmkII版の「簡易地球儀」(1画面プログラム)です。
元々はtwitterの「メルアイコン」でおなじみのバイカウントメルビルさんが「プチコンmkIIで地球儀を作ってみたい」と言っていたけど難航している様子だったので「私ならこう作る」というサンプル的なものとして用意したものです。(2013年3月)
ただし、プチコンmkIIではデフォの半径64ドットでは0.4fpsと激遅でした。

ちなみにPNLTYPE"OFF"はプチコン3号のXSCREEN 2相当の命令です。(下画面のキーボードを使用しないという意味の命令ですが、オプションでキーボードの種別を変更することもできました)
3つのファイルをロードしているのはプチコンmkIIではパレット発色だったためパレットカラーのデータが必要であるためです。上下画面別々のパレットとなっているためパレットカラーだけで2ファイルになります。(このようにファイルが多数になってしまうためPRGにGRP等が合体したパッケージという方式も取り入られているけど使い勝手が良いものではなかった)

あと当初はメルビルさんにちなんで(?)メルカトル図法を使っていましたが、後で正距円筒図法に差し替えました。
実は、地球儀を作るのが目的であればランベルト正積円筒図法の方が簡単(平行投影ならばY座標計算はASIN、ACOSやATANは不要で単なる比例計算だけで済む)なのですが後で色々な活用を行う場合に非常に汎用性が高い図法であるのが理由で正距円筒図法にしました。
正距円筒図法は緯度0度、経度0度が中心となっていてあとは緯度、経度が分かれば比例計算で地図上の位置が求まるためGPSを作ることも簡単にできます。(実際にプチコン3号で「簡易GPS QSP」も作ったし)
アバター
おちゃめ 2017/12/10 0:41 ◆jH1opV6FnGyx
そして、QSPブームが起きた2015年7月にこれをプチコン3号のQSPに移植しようと思ったのですが肝心の地図GRPの転送が難航していたので結局開発に着手したのは1年後の2016年12月でした。
当初は簡易地球儀QSP(開発コードネーム「A090」)はプチコンmkIIのベタ移植でした。
しかし、いくらNew3DSで動作するプチコン3号が高速といっても7fpsという速度でした。

それから、QSPでできる範囲内での高速化を図り正式公開したver.1.0(2016年12月17日初出公開)では9fpsとなりました。(上記のプログラム)
その後、2017年9月には12fpsへと大幅に高速化したver.1.1を公開して冒頭のver.1.2に至っています。

簡易地球儀 高速化の歴史

0.4fps(プチコンmkII版)
 ↓
7fps(プチコン3号開発初期版)mkIIと3号のハードの違いによる大幅な高速化
 ↓
9fps(完成版)
 ↓
12fps(現在)
アバター
おちゃめ 2017/12/10 0:44 ◆jH1opV6FnGyx
ちなみにQSPで無ければしんいちさんがこの簡易地球儀を元にした高速改造版を作っています。
この「QSPでは限界の速度」からどのようにしてさらなる高速化を行っているかはリンク先をご覧になってください。

https://web.archive.org/web/20171029215646/https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0f6da5yzw
アバター
おちゃめ 2017/12/10 0:52 ◆jH1opV6FnGyx
しんいちさんのプログラムを見ての通り、あくまで「QSPではこれが限界」というだけなのですが、現状でも高速化を特に意識していない普通に作ったものと比べて20倍くらい速くなっています。(上記のプログラムを写経して入力すれば分かるけどこの普通のやり方ではNew3DSでも0.6fpsという遅さとなっている)
QSPは単なる短いプログラムではなく速度を重視したものも作れるという参考になれば良いと思います。
アバター
しんいち 2017/12/10 15:49 ◆lHy.hAWXbthn
私の大好きな簡易地球儀(^o^)
だいぶコスらせていただきました。

私の簡易地球儀のコスり歴史:
第1弾:地球儀一周分の画像を先に配列に入れてしまってからグリグリ
第2弾:座標だけを先に計算し元画像を横スクロールさせてグリグリ
第3弾:第2弾ベースで元画像をBGページにして荒々しくグリグリ

第1弾はグリグリは1番速かったけど最初に待ち時間があるのと、メモリたくさん使うのでBIGでしか動かせなかった。
第2弾では3号でも動くように、画像一周まるっと配列やめて、座標計算も初めの1回(しかも円1/4だけ真面目に計算)、画像1枚分だけにして、元画像を横スクロールさせるだけでグリグリさせたんだけど、計算結果の座標配列の参照が遅くて思ったより速くならず。
第3弾では、第2弾の座標配列の参照を無くせないか考え、BGなら最初にその座標に配置してしまえば後は座標参照する必要ないと思ったんだけど、1ピクセル1BGだと全然数が足りないので8×8を1BGにしたら荒々しくなった(速くはなったけど)。

書いてたら第4弾にも挑戦したくなってきたなぁ^^;
アバター
おちゃめ 2017/12/14 2:51 ◆jH1opV6FnGyx
簡易地球儀を気に入っていただきありがとうございます。
高速化に関してはしんいちさんにお任せしちゃいます。(でも革新的なネタが思い浮かべば私も対抗するかも)
私はQSPで縦横回転をさせる方法でも考えてみようかなと思います。(現状で冬コミで頒布する予定プチコン3号本が全然できてないのでそちらを最優先しますが)
アバター
ロレックスRolex 腕時計 2020/10/3 13:00 ◆Ybo1HX.baxhi
メール、確認の電話、梱包。すべて丁寧です。
特に梱包はかなりしっかりしていました。
こちらのお店を利用してよかったです。
信頼できるお店なのでまた利用したいです。
ロレックスRolex 腕時計 https://www.kopi356.com/category-65-b0.html

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -