NEW  |  HOME  |  OLD

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NEW  |  HOME  |  OLD

varとfvarの相互変換

8/21
00:38 (Awamizu) fvarってどのあたりから狂うんだっけ。
00:39 (Awamizu) あー・・・・
00:40 (Awamizu) 鈴々に親変更積む事考えるとめんどくさくなってくる(
00:40 (DRM) 16777216から狂うんだったかな?
00:41 (Awamizu) お、どもども
00:41 (DRM) 2の何乗だっけね
00:41 (Awamizu) 意外と早いのね
00:41 (Awamizu) 24乗かな
00:42 (DRM) http://kyoakumugenirc.blog61.fc2.com/blog-entry-2127.html
00:42 (vesper) [URL] 凶悪MUGEN_IRC_ログ倉庫 小数
00:42 (Awamizu) おう、めるちゃん久し振り・・・・(
00:43 (DRM) 私はよく分からない(゚ω゚)
00:43 (Ryusei_) めるちゃん・・・うう
00:43 (Awamizu) 私の癒し成分だったのに(
00:44 (Awamizu) んー、bit関係は疎いんだよなあ・・・
00:47 (Awamizu) こういう会話みてすげーって思う私は製作者としてどうなのか(
00:49 (Awamizu) んー、これ見るとfvarでのbit演算も24桁目までなら使えそうだけどどうなんかね。
01:03 (DRM) 出来たはず
01:04 (Awamizu) ふむ
01:04 (Awamizu) オキ氏くらいしか見たことないんだけどね。fvarでのbit演算なんて(
01:05 (DRM) http://kyoakumugenirc.blog61.fc2.com/blog-entry-2721.html
01:05 (vesper) [URL] 凶悪MUGEN_IRC_ログ倉庫 varとfvarの相互変換
01:05 (DRM) でも最近はこんなのもある
01:05 (DRM) (らしい)
01:07 (Awamizu) なんだぁ・・・これはぁ・・・・
01:08 (Awamizu) 話の9割が理解できません
01:08 (DRM) 00:25 (hitachi) floatとして解釈するとNaNになる数値でもちゃんと変換できる
01:09 (DRM) ってあるから、恐らく16777216以上でも狂わないってことだと思う
01:09 (Awamizu) んだね
01:09 (Awamizu) ふむ
01:10 (Awamizu) 事の発端はfvar(40):=Xの代入式がsysvar(0):=Xになるってことから?
01:11 (Awamizu) これ試さないとよくわからんなぁ。ちょっと試そう
01:13 (DRM) SysVar(0)にFVar(40)で代入するとfloatで保存出来るなら、FVar(0)にVar(60)で代入をするとintで保存出来るかもってことだったと思う
01:14 (DRM) 日本語が若干おかしくなったマン
01:14 (Awamizu) sysvar(0)=fvar(40)=floatになるってことなんかね
01:16 (DRM) 多分
01:21 (Awamizu) なるほど
01:25 (Awamizu) あーできた
01:25 (Awamizu) なるほど
01:26 (Awamizu) とりあえずfvar(40):=1でsysvar(0)=1073741824になるのは確認できた
01:30 (Awamizu) fvar(40):=2だった(今更
01:31 (Awamizu) んー、var(60)の方がよくわからぬ
01:32 (DRM) 16777216より上の値を代入してみて誤差が出なければ良いんじゃない?
01:33 (Awamizu) うーむ
01:33 (Awamizu) fvar(0)が変わらんのよねぇ
01:34 (Awamizu) あ?
01:34 (Awamizu) 違うな、内部的に変わってるなこれ・・・
01:35 (DRM) (゚ω゚)?
01:35 (Awamizu) いやね
01:36 (Awamizu) var(60):=Xってやって、デバッグでfvar(0)を見ても0だったんだけど
01:36 (Awamizu) 十徳ナイフでfvar(0)見ると値違うのよ
01:36 (DRM) おおなるほど
01:37 (Awamizu) var(60):=1でfvar(0)=1.401298E-45になった
01:40 (Awamizu) お、できた
01:40 (Awamizu) なるほど
01:42 (Awamizu) [State ]
01:42 (Awamizu) type=Null
01:42 (Awamizu) trigger1=1||var(60):=16777218
01:42 (Awamizu) trigger1=1||fvar(10):=16777218
01:42 (Awamizu) trigger1=1||fvar(1):=fvar(0)
01:42 (Awamizu) trigger1=1||fvar(40):=fvar(1)
01:42 (Awamizu) ignorehitpause=1
01:42 (Awamizu) [State ]
01:42 (Awamizu) type=DisplayToClipboard
01:42 (Awamizu) trigger1=!IsHelper
01:42 (Awamizu) text="sv(0):%d fvar(10)%d"
01:42 (Awamizu) params=sysvar(0),fvar(10)
01:42 (Awamizu) ignorehitpause=1
01:42 (Awamizu) 多分こういうこと
01:43 (Awamizu) fvar(10)は単純にfloat値で見るとどうなるか見てるだけ
01:45 (Awamizu) んで最初に戻ると
01:46 (Awamizu) これの応用でfvar代入時全てにvar(60)を使って代入して
01:46 (Awamizu) 読み込みにfvar(40)とsysvar(0)使えばfvarをすべてint値で管理できる
01:47 (DRM) うむ
01:47 (Awamizu) やっと理解できたーw
01:48 (Awamizu) これ確かに実用的だし使えるなぁ
01:52 (Awamizu) んー
01:52 (Awamizu) これ応用して何か作ってみるか
01:53 (Awamizu) あ、それはそうと
01:53 (Awamizu) DRM氏どうもありがとうございました
01:53 (DRM) ワイ将、頭がパンクしそうだった
01:53 (Awamizu) ww
01:53 (Awamizu) 私もだけどw
01:53 (Awamizu) 大抵巡追っていけばなんとかなるもんね
01:53 (Awamizu) 順
01:55 (Awamizu) しかし、int変数98個使えるとして、何に使うべきか・・・
01:55 (DRM) せやねw
01:55 (Awamizu) fvar有り余ってるよりはint変数の方がありがたいけど・・・
01:56 (Awamizu) ヘルパーIDとかをfvarに保存しても問題ないとかそのくらいしか思いつかぬ・・・
01:56 (emeru) ceilやfloor使えばfvarもintとして扱えるのでは・・
01:56 (Awamizu) いや、それはそうなんだけど・・・以下無限ループ
01:56 (DRM) HAHA
01:58 (DRM) もう寝るンゴ。明日早いし!
01:58 (Awamizu) おつー
01:58 (blue-eyes) おやすみです
01:58 (emeru) おつつーっ
01:58 (Awamizu) んっと
01:59 (Awamizu) fvar(10):=16777217 Floor(fvar(10))=16777216
01:59 (Awamizu) これがfvarの仕様
01:59 (Awamizu) この誤差をなくすのが上。以上(
02:00 (emeru) fvarは代入できる数がvarより少ないんだっけ
02:00 (emeru) 正確には微妙に違うけど
02:00 (Awamizu) 16777216以上の数字を代入するとずれが生じるっぽい
02:01 (emeru) もしかしたらそれ応用してfvarのgametime貫通とか
02:02 (Awamizu) fvarのgametimeかぁ・・・
02:03 (emeru) 今の所は貫通させる方法といったら魔法の数字くらいしか思いつかぬぅ・・
02:05 (Awamizu) あらやばい
02:06 (Awamizu) 魔法の数字忘れた(
02:06 (Awamizu) IRC読み漁ってると私結構使ってる=知ってたはずなんだが・・・(
02:07 (emeru) fvar限定だけど、全ての数字に等しくなる魔法の数字
02:07 (Awamizu) あーfvar(0)=1&&fvar(0)=2が満たせるんだっけ
02:07 (emeru) 確かそうだった記憶
02:08 (emeru) これを応用して、fvar(x)=y*gametime+zが楽に貫通できる
02:09 (Awamizu) 用はfvar(X)!=y*gametime+zを満たさなくなると
02:10 (Awamizu) 魔法の数字対策自体は簡単やね
02:11 (Awamizu) fvar(X)=1&&fvar(X)=2が満たせるなこれのNOTでいいわけだし
02:11 (emeru) 全部満たしちゃうからねぇw
02:12 (Awamizu) しかしこれ、全部ってのは語弊あるのか?!=は満たさないわけだし(
02:12 (blue-eyes) たしかこれの逆で全ての数字と異なる謎の数値もあったはず
02:13 (Awamizu) !=を満たして=を満たさないってこと?w
02:13 (blue-eyes) ・・・なんですけど、どうでしたっけ(
02:13 (emeru) あー、それ 後の検証で魔法の数字と同じ効果だったはず
02:13 (blue-eyes) 私も詳しいことは忘れました(
02:13 (blue-eyes) あーそうだったんですか
02:14 (blue-eyes) ま、全てと異なる数字なんててきとーな意味不明の数字を代入しときゃ万事解決なんですけど(
02:14 (emeru) http://lunatic284.blog90.fc2.com/blog-entry-7063.html 多分これのことだと思う
02:14 (vesper) [URL] lunaの倉庫 // 結局のところMUGENでの1.#QNAN0って
02:14 (blue-eyes) あー
02:15 (Awamizu) 1.#QNAN0か
02:18 (Awamizu) んー
02:18 (Awamizu) var(60)の使い道・・・変数保存とかには向いてるんだろうけど・・・
02:19 (emeru) 使い道が分かりませぬ・・・(
02:19 (Awamizu) いや、どうなんだこれ
02:20 (Awamizu) 参照するのにどうしてもfvar(40)通してsysvar(0)で確認する必要あるはずだけど・・・
02:20 (blue-eyes) というか・・・var(60)?(今更)
02:20 (Awamizu) おう、無限ループやめぇや(
02:20 (blue-eyes) え(
02:21 (Awamizu) http://kyoakumugenirc.blog61.fc2.com/blog-entry-2721.html
02:21 (vesper) [URL] 凶悪MUGEN_IRC_ログ倉庫 varとfvarの相互変換
02:22 (blue-eyes) でも普通にやればV60への保存、っていう記述は不可能であってますよね?言いたいことは大方分かりましたけど
02:23 (Awamizu) んーと、var(60)というものは存在しないので不可能ではありますね
02:24 (Awamizu) ただ、なぜかvar(60):=Xとやると,fvar(0)=Xになる
02:24 (blue-eyes) ということは、これは実質%nとかの専用のやり方、っていう解釈でいいんですね?ひたち氏が書いてるって時点で隔離技術併用確定でしょうけど
02:24 (Awamizu) そう思うやろ?
02:24 (blue-eyes) ファッ
02:25 (Awamizu) [State ]
02:25 (Awamizu) type=Null
02:25 (Awamizu) trigger1=1||var(60):=58585858
02:25 (Awamizu) trigger1=1||fvar(1):=fvar(0)
02:25 (Awamizu) trigger1=1||fvar(40):=fvar(1)
02:25 (Awamizu) ignorehitpause=1
02:25 (Awamizu) [State ]
02:25 (Awamizu) type=DisplayToClipboard
02:25 (Awamizu) trigger1=!IsHelper
02:25 (Awamizu) text="sv(0):%d"
02:25 (Awamizu) params=sysvar(0)
02:25 (Awamizu) ignorehitpause=1
02:25 (Awamizu) これがすべて
02:25 (blue-eyes) 確かにvar(59)のすぐ隣の領域はFvar(0)ですけど・・・こんなことがあり得るんですねぇ・・・
02:26 (Awamizu) fvar(40)=sysvar(0)ってのも同じくなんですよね
02:26 (blue-eyes) ですね、確かに魔横です
02:26 (blue-eyes) 真横
02:26 (Awamizu) これ、不思議なのが
02:27 (Awamizu) fvar(1)を普通にデバッグで表示しても0なんですよね(
02:27 (blue-eyes) おろ
02:27 (Awamizu) あ、%dのceil無しで違う値が返ってきた
02:28 (blue-eyes) あれですかねぇ、V領域とFV領域で数値の保存形式が違うのかも?
02:28 (Awamizu) %dのCeilだと何故か1になった(
02:28 (Awamizu) んーそれは確実に違うと思われ
02:28 (blue-eyes) ふむぅ・・・
02:29 (Awamizu) んー
02:29 (Awamizu) さらに使い道が分からなくなってきた・・・
02:30 (Awamizu) これfvarにどんな値入れてもおそらく敵からは0とかにしか見られないという利点はありそうだけど(
02:30 (Awamizu) それか、デバッグ表示特有でおかしなことになるのか・・
02:30 (blue-eyes) 難しいですねぇ・・・
02:32 (emeru) ますます使い道が分からなくなってきた(
02:32 (Awamizu) ふむ
02:33 (Awamizu) fvar(1)にint値で58585858を入れてtrigger1=fvar(1)=58585858をfloor,ceil色々試したけど1つも満たさなかった(
02:34 (blue-eyes) うーん・・・
02:34 (emeru) これってさ、複数のfvarに同時に代入させる事ってできるのかな
02:35 (Awamizu) var(60)に任意値代入->fvar(0)に任意値が代入される->fvar(X)にfvar(0)を代入する
02:35 (Awamizu) この流れに乗ってってればいけるかな
02:36 (Awamizu) ちなみにこのときのfvar(1)を十徳ナイフで監視すると
02:36 (emeru) うーむ・・
02:36 (Awamizu) fvar(1)=7.462898E-37になる
02:37 (emeru) 面白そうな技術ではあるけど
02:37 (Awamizu) んーどうやってもfvar(40)からのsysvar(0)通さないと中身が見れない
02:37 (Awamizu) floorだと0ceilだと1にしかならない
02:38 (blue-eyes) やっぱり保存形式が違うのではありません?
02:38 (Awamizu) そうだろうね
02:38 (blue-eyes) 2147483648まで対応のintから30桁以上のfloorに移し替える際に、
02:39 (blue-eyes) 下の桁から揃えてるとしたら、以上に低い数値になることに説明がつきますし
02:40 (Awamizu) おっと
02:40 (blue-eyes) でも、そうだとしたらなんで超即死においての領域感覚がVとFVで違わないのかが謎ですねぇ
02:43 (Awamizu) ふーむ
02:43 (Awamizu) ceilもfloorも使わず%dで値見るとどっから出てきたか知らん値が出てきた(
02:43 (blue-eyes) えー(
02:45 (Awamizu) 混乱してきた
02:45 (Awamizu) 一先ずいえることは
02:45 (blue-eyes) ややこい(
02:45 (Awamizu) var(60)を使ってfvar(0)にint値(25桁以上の整数を誤差無しで)保存できる
02:46 (Awamizu) fvar(0)の正しい値を参照できない(
02:46 (blue-eyes) ww
02:46 (Awamizu) 参照するためにはfvar(40)に値を代入してsysvar(0)を通す必要がある
02:47 (Awamizu) ちなみにvar変数に代入してもダメだった
02:47 (blue-eyes) SVに飛ばさないとだめなんですねぇ
02:47 (emeru) sysvar何て殆んど埋まってるンゴ
02:48 (Awamizu) ちなみにvarsetでsysvar(2)とかに代入してもおんなじ
02:48 (blue-eyes) なるほど
02:48 (blue-eyes) あ
02:48 (blue-eyes) trigger1=1||fvar(1):=fvar(0)
02:49 (blue-eyes) この記述法って、parentvarsetみたいな使い方はできないんですよね?たしか
02:49 (Awamizu) 自分にしかできないはずですね
02:49 (blue-eyes) ですよね、ありがとうです
02:51 (Awamizu) ふむ
02:51 (Awamizu) fvar(40):=enemy,fvar(1)でsysvar(0)通したらやっぱり正確な値出るのか
02:52 (Awamizu) んー
02:52 (Awamizu) なんだろ
02:52 (Awamizu) 面白い撃破条件思いついてきた(
02:53 (blue-eyes) やめて!SV0使ってるキャラじゃ撃破できなくなっちゃう!(
02:53 (Awamizu) あ、ちなみにだけど
02:54 (Awamizu) 最初にsysvar(0)の値通常変数に入れて終わったらsysvar(0)に戻せばええんやで?
02:54 (blue-eyes) いやいやいや(
02:54 (blue-eyes) そんなに贅沢に変数使えない(
02:54 (Awamizu) int変数98個もあるのに?(
02:54 (blue-eyes) もう全て埋まってますよとっくの昔に(
02:55 (Awamizu) fvarまで全部埋まってるのか・・・
02:55 (blue-eyes) ヘルパーの変数領域も追加で何個も借りてて変数が本気で足りないんです(
02:55 (Awamizu) 普通に尊敬するレベル
02:56 (Awamizu) あ、てぃんと北
02:56 (blue-eyes) なのでヘルパーが召喚すると挙動の一部が狂ったり(
02:56 (Awamizu) 来た
02:56 (blue-eyes) ↑ヘルパーの召喚に失敗すると、ですね
02:56 (Awamizu) これやっぱ便利だわ
02:56 (Awamizu) 是非使わせてもらおう
02:56 (blue-eyes) 嫌な予感がする(
02:57 (Awamizu) んでは、いつの間にか3時なので寝ます
02:57 (blue-eyes) おやすみですー
02:57 (Awamizu) 頭使ったから疲れた・・・

リンク1:FVarの仕様[skeletonの雑記]
リンク2:varとfvarの相互変換[@ひたちがゆく!]

NEW  |  HOME  |  OLD

Comment

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://kyoakumugenirc.blog61.fc2.com/tb.php/2748-1c608677

NEW  |  HOME  |  OLD

 検索フォーム


 全記事表示リンク

 全記事表示(500件ずつ)


 プロフィール

Author:vesper

IRCチャンネルの
#凶悪MUGEN
#凶悪MUGEN_雑談
のログからMUGENに関するものを編集・公開しています。
修正した方が良い箇所があった場合は知らせてもらえると助かります。
MUGEN界隈からはリンクフリーです。
その他からのリンクはご遠慮ください。
このブログをリンクに追加

IRCへの入り方などは
IRCに関する記事
をご覧ください。

簡易凶悪MUGEN IRC情報
・ホスト名
 [irc.friend-chat.jp]
・ポート番号
 [6664]
・チャンネル名
 [#凶悪MUGEN]
 [#凶悪MUGEN_雑談]
 (以下はお好みで)
 [#凶悪MUGEN_艦これ]
 [#凶悪MUGEN_スマブラ]
 [#凶悪MUGEN_麻雀]
 [#凶悪MUGEN_緋想天]
 [#凶悪MUGEN_アカツキ]
 [#凶悪MUGEN_小説]
 [#凶悪MUGEN_絵チャ]

・推奨IRCクライアント
 LimeChat2


 カテゴリ

記述の子カテゴリは目安程度に考えてください。

 最新コメント


 最新記事


 カウンター

累計の閲覧者数:

現在の閲覧者数:

 RSSリンクの表示


他ブログ更新情報(最新70件)

仕様上、下記のリンク一覧でサイトリンクにあるサイトはこの一覧に出ません。

Twitter


基礎リンク集


リンク

サイトに断り書きがない限りリンクさせてもらっています。
リンクしてほしくない場合はお気軽におっしゃってください。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。