約 603,043 件
https://w.atwiki.jp/wiki15_dol/pages/902.html
チェーン割り込み許可時間 その名の通り、チェーン可能な許可時間を表す。 宿屋画面での設定項目の一つ。
https://w.atwiki.jp/kumikomi-yitjc/pages/126.html
AVRマイコンには様々な割り込みがある。まず、ピン割り込みについて説明する。
https://w.atwiki.jp/kt108stars/pages/4402.html
326 名前: NPCさん 04/09/27 10 27 46 ID ??? プチ困ったちゃん、ブレカナの宴宣言時に割り込む。 私)「捧げよ…」 困)「おっぱい!おっぱい!」 ギャグシナリオを作れと暗に言っているのでしょうか? スレ33
https://w.atwiki.jp/mice/pages/37.html
タイマー割り込みとは何でしょう。 今まで書いてきたプログラムは、上から下まで順に実行する(サブルーチンはその通り飛ぶとして)ものです。 これが出来ればライントレースも大分近くなります。 頑張りましょう! 例えれば、 Aさんと話す→(話し終わる)→Bさんと話す というようなものです。とりあえずひとつづつ消化しなくてはいけません。 これが割り込みというシステムを使うと、 Aさんと話す→Bさんが話しかけてくる→Aさんに待ってもらう→Bさんと話す→(話し終わる)→Aさんとの話の続きをする と言う感じになります。 プログラム的には、Main文で「Aさんと会話」、割り込み文で「Bさんと会話」と言う感じです。 つまり、同時に色々なことをしたいときに良く使うものです。 例のように「Bさんが話しかけてくる」というような 何かのアプローチがあって割り込みが入る場合もありますが 今回は、時間で割り込みをかけてみたいと思います。 1sごとに指定された割り込み文を実行する、などと言うことです。 実際にやってみる まず、時間を使って割り込む事をタイマー割り込みといいます。 タイマー割り込みをつかうには、「ITU0~4」の設定が必要です。 例えば、ITU0をつかうには ITU0.TCR.BYTE=0x23; ITU0.TSR.BYTE=0x00; ITU0.TIER.BYTE=0x01; ITU0.GRA=390; のような初期化(設定)が必要です。 それぞれの意味は赤い本のITU(タイマー割り込み)の所を見て理解してください。 とりあえず、初期化すると GRAで指定したクロック(時間)ごとに void int_imia0 (void) { ITU0.TSR.BIT.IMFA = 0; //割り込みで実行したい内容 } が自動で実行されるようになっています。 最初の一行はそういうものだと思ってください。 タイマー割り込みはコレだけです。 ココまでわかれば課題です。 1秒おきにLEDを点滅させるプログラムを作ってください。 これは、例もありますし余裕かと思います。 それができたら 0.5秒おきにLEDを点滅させるプログラムを作ってみましょう。 余裕があれば、右から順番に0.5秒おきについていく、なんてプログラムも面白いと思います。
https://w.atwiki.jp/msx-sdcc/pages/62.html
ROMBASICにはインターバルタイマーを利用したタイマー割り込み処理がある。 これは便利な機能だが、C言語で同様な処理を行なわせる場合、タイマー割り込みのフック (ジャンプテーブル)を書き換え、自前の割り込み処理関数をコールバックの形で呼び出す 仕組みにすればよい。 割り込み処理のフックから、C言語の割り込み処理関数をコールするように変更する場合は 若干工夫が必要になる。 実際の割り込みが生じた場合の処理フローは、 (Z80 Interupt) - BIOS(0x0-0x3FFF) - HOOK(0xFD9F) - DISKCALL(RST30h) - RET ここを自前の関数で置き換える必要がある。 (Z80 Interupt) - BIOS(0x0-0x3FFF) - HOOK(0xFD9F) - VSYNC_Int( MyFunc ) - DISKCALL(RST30h) - RET そこで、ワークエリアのHOOK(0xFD9F)を見ると、MSX2(1FDD)の場合、 RST30h .db0x8b .dw0x77CE RET というコードが書かれている。この処理はBIOS(API)の0x0030を使い特定のスロットをコール するもの。パラメータはインラインで書かれているのでRST30hのすぐ後ろの3byteがアドレスだ。 ディスク装置が接続されている場合に追加された処理らしい。 これはメモリダンプツールなどで確認すると判る。 もしディスク装置が搭載されていない場合は、フックのジャンプテーブルには単純にRETが書かれている。 (Z80 Interupt) - BIOS(0x0-0x3FFF) - HOOK(0xFD9F) - RET 理想的な方法論は、タイマー割り込みが生じた際のHOOK,つまりジャンプテーブル(0xFD9F)部分に、 JP命令で、特定のC関数へのアドレスにジャンプするように書き換えるというものだろう。 しかし、実際はRST30hなので、このフック部分の4byte部分を全て書き換える必要がある。 そのためにポインタ経由で命令を書き換えることを考える。 書き換えはおそらく、以下のようなコードで可能。 void main(void){ unsigned char * vsync_hook; vsync_hook=(unsigned char *)0xFD9F; // --- JP 0x3000 vsync_hook[0]=(unsigned char)0xC9; vsync_hook[1]=(unsigned char)0x00; vsync_hook[2]=(unsigned char)0x30; } HOOKのジャンプテーブルを書き換えたので、 このコードで1/60secのタイミングで毎回0x3000にあるアセンブラコードが呼ばれる。 特定のアドレスにアセンブラでインターバルタイマー処理を記述しておけば、 タイマー割り込み処理をついかすることができる。 (0x3000から始まるアセンブラにはディスク装置の処理も最後に追加しておく必要があるだろう) そして、C言語でインターバルタイマーを使う実際のコードは以下のようなものになる。 タイマー割り込み処理は,割り込みのタイミングで呼ばれるコールバック関数 callback_vsync()に記述すればよい。(長い処理は書いてはいけない) main.c #defineH_TIMER0xFD9F void callback_vsync(); void main(void){ unsigned char* vsync_hook; vsync_hook=(unsigned char*)H_TIMER; // instruction rewriting // --- JP 0x8000 (C9 00 80) vsync_hook[0]=(unsigned char)0xC9; vsync_hook[1]=(unsigned char)0x00; vsync_hook[2]=(unsigned char)0x80; } void callback_vsync(){ // 1/60 interrupt process } timer.asm .module INTVSYNC .area_INTCODE (ABS) ; .globl_callback_vsync ; INT_VSYNC ; call_callback_vsync ; ; rst0x30 .db0x8b .dw0x77CE ; ret sdcc -c -mz80 main.c sdasz80 -o timer.rel timer.asm sdld -b _CODE=0x100 -b _DATA=0x300 -b _INTCODE=0x8000 -i main.ihx main.rel timer.rel この例では0x8000に配置されたアセンブラが割り込み処理のエントリーポイントで、 アセンブラで書かれた割り込み処理からC言語の関数を呼び出している。 これでインターバルタイマー処理をCALLBACK関数を使って実装することができるだろう。 アドレスは必要に応じて変えることも出来る。 アセンブラからC関数を呼ぶ場合は、まず関数名を.globlでグローバル指定し、 その後、実行したい関数名をラベルとして記述し、CALL命令で呼ぶだけ。 ラベルはC関数名であることを示すアンダースコアが先頭に追加される。 最後のRST30h命令のある数行は、元々フックに書かれていたDISK装置の処理。 この部分はオリジナルのコードをそのまま記述するが、ハードウエアによってはコードに違いが あるかもしれない。 機種依存する部分なので、該当するハードのフック内容を再確認し、書き換える命令を 変更するなどしてほしい。 割り込み処理は、フックへのジャンプテーブルのアドレスから自前の処理に飛ぶが、 このとき割り込みはDI(禁止)されている。 割り込み期間処理で注意が必要なポイントもう一点あって、それは処理をCで書く場合でも アセンブラであっても、関数内やアセンブラ内でループを使わない事。 この割り込み期間処理は1/60secのタイミングで呼び出しされ、終わればそのままmain()に抜けるので、 ループは使ってはいけない。 HOOKを元に戻す際はジャンプテーブルを元の値に書き戻せばよい。
https://w.atwiki.jp/jojoabcrule/pages/12.html
2.行動タイプの能力は、能力宣言時に行動完了にする。 能力の解決直前ではなく、割り込みなどで能力を宣言した時に寝かせる事になる。 2-1.行動完了したキャラに割り込んで、そのキャラに対し行動完了にさせる能力を使うと、コストが払えなかった事になる。 つまり能力が不発になる。また、Q&Aにて、そのキャラが破棄された場合にも能力が不発になることが上げられている。 2-2.ただし、『未行動のキャラ』を対象とする効果を選択する事が出来なくなる。 地味に重要。▲の能力を先に使用宣言されると、アクトンベイビーなどの『未行動の敵』を対象とする効果である▼で対象に取れなくなる。 2-3.(Q&Aあり)消滅タイプの能力を使用したキャラに割り込んで寝かせたり破棄したりしても不発になり、寝かせた場合は場に残る。 破棄した場合の方だけQ&Aあり。 ルールブックに書かれていないことだが、そうすると消滅タイプの『破棄』は一応コストなのだが、能力を宣言した時点では場に残っている事になる。 つまり、効果を解決するまでは存在し、効果解決後に自分が破棄される効果が『消滅タイプ』となる。 2-4.2-2の例の状態で『能力を使用できない』状態にされる前に使用宣言していたキャラは、それだけを理由に能力不発にされない。 つまり、▲を宣言したキャラに割り込んでそのキャラにアクトンベイビーを使用した場合、『仮に対象に取れても能力不発、そして寝ない』と言う現象は起こらず、寝て、効果を発揮する事になる。 コストを支払ったと言う情報が上書きされるか、解決前に場から離れるか、『効果を無効にする』効果を受けない限り不発にはならない。
https://w.atwiki.jp/talesofdic/pages/5608.html
秘奥義の演出に強制割り込み 通常秘奥義の演出中には激しいエフェクトを伴うアクション(以下「大技」と表記)は実行不可能になる。 大技は「FOF変化技(術)・譜術・秘奥義」等の特殊な演出が採用されているものが該当する。 アビスの場合は大技が発動不可能になるのは、秘奥義のテロップ(-秘奥義-)が出た後では無く 秘奥義の演出が始まった時からである。 つまり、秘奥義のテロップが出た後の「僅かな時間に」何らかの手段で強引に秘奥義を発動すれば 敵の秘奥義に秘奥義で強制的に割り込む事ができる。 秘奥義に割り込む為の方法は以下の通り。 テロップが出た後に一旦STARTボタンを押しPAUSEにする。 発動条件を満たしたロスト・フォン・ドライブのボタンを押し続けた状態で再度STARTボタンを押しPAUSE解除(*1)。 北米版・3DS版ならBrilliant OverloadとNoble Roar等も選択可能だ。 成功するとこちら側の秘奥義のテロップも出る。これで割り込みは成功。後はどのように変化するか存分に楽しんでほしい。 この裏技で秘奥義に割り込むと以下の現象が発生する。 カットインが変になる。縦カットインなのに横カットインで表示される事もある。 使用者が奇妙な動きを見せる。 エフェクトが混沌と化す。秘奥義の組み合わせによっては目が痛くなるようなものも。 演出の控えめな緋凰絶炎衝に割り込むとカメラワークの制限が解除され別視点から秘奥義を見れるようになり 他のキャラクターも自由自在に動けるようになる。ただし、この時に大技を再度発動すると確実にフリーズしてしまう。 イレギュラーな事態の為、フリーズする事が多い。 特にネビリム先生の「Fragmented End」は割り込むと確実にフリーズしてしまう。 最も有名な割り込み例はPS2日本版で十六夜天舞の発動中にリッドが極光壁で反撃した事だと思われる。 この裏技はPS2日本版と北米版で実行可能と確認済み。3DS版は未確認。
https://w.atwiki.jp/kt108stars/pages/10798.html
23 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 08 30 08.53 ID +gWccgmp0 戦闘中のPLターンで短い相談してたら 「スキがあったんで割り込み行動します。オリジナルでそういう能力持たせたんで」 とかなり理不尽な割り込み攻撃をされた 条件がPL発言かPC発言をする、だったので回復くれとかまで対象にされる 最後はむかつきながらも筆談や、使って欲しい魔法を指差すとかになって無言 GMはだんだん狼狽えて「ちがうこんなはずじゃ」とか言ってたので 「もうやめにしないか?」と聞いたんだよ そしたらすげえ笑顔で「はいPL発言ー!」とか言って来たのでそこから全く信用しなくなった 後からウケ狙いと言ってきたが知らん 24 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 08 38 32.23 ID 2+gxtPXvO しばらくひとりにしてやろうぜ 25 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 09 50 40.83 ID THYrka+z0 そのGMの中では一体どんなはずだったんだろうなぁ 26 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 10 09 25.06 ID JjWeKpJ20 [2/4] 昔きくたけがアリアンかなんかでやった「ごめんなさい」って言ったらダメージ受けるダンジョンみたいなのをやりたかったんじゃねーかな あとRPGマガジンに載ってたゴキブリRPG(のミニリプレイ)みたいなのとか 28 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 10 31 02.43 ID hvS+rvYo0 25 どんなはずって GMはだんだん狼狽えて「ちがうこんなはずじゃ」とか言ってたので 「もうやめにしないか?」と聞いたんだよ そしたらすげえ笑顔で「はいPL発言ー!」とか言って来たのでそこから全く信用しなくなった だからそもそも狼狽えて見せたのがPL発言を引き出す芝居でGMの計画通りだったって話じゃねーの? 29 名前:ゲーム好き名無しさん[sage] 投稿日:2015/09/17(木) 10 54 29.89 ID 0LlqU+oD0 23 報告乙 PL発言(物理)を発動しなかったPL達の自制心の高さに感心するレベル スレ424
https://w.atwiki.jp/air-lang/pages/31.html
シグナル処理プログラムの記述方法(全体の流れ) 処理対象とするシグナル番号を選びます。 シグナル受信時の処理内容を、ユーザ定義関数として記述します。 ユーザ定義関数内では、第1引数がシグナル番号となります。 ユーザ定義関数内での、使用できる関数に制約はありません。 定義したユーザ関数をシグナルハンドラとして設定します。 シグナルモニタの例 受信したシグナル番号を表示する例です。このため、処理対象とするシグナル番号は、ユーザー側にてキャッチ可能な全てシグナル番号とします。なお、このプログラムは CTRL+C でも終了しなくなるため、CTRL+C 受信時には KILL -9 による終了方法を表示することとしました。 なお、ここではシグナル待ち受け時間中は pause() 関数で待つこととしましたが、他の処理を実行させていても問題はありません。 # シグナルハンドラとなるユーザ定義関数を2つ定義します。 # その1 CTRL+C 受信時のシグナルハンドラです。 def disp_signumber2(ival){ print("Signal Received!! [%d]\n",ival) print("終了の仕方:当プロセス(%d)に、シグナル9番を送信して下さい。\n",PID); print("( kill -9 %d )\n",PID); } # その2 他のシグナル受信時のシグナルハンドラです。 def disp_signumber (ival){ print("Signal Received!! [%d]\n",ival) } # シグナルハンドラを設定します。 for(i=1;i NSIG;i++){ # i = シグナル番号です。(全てのシグナル番号を処理対象とします。) if(i==2) # CTRL+C 受信時のシグナルハンドラを設定します。 rx_signal(i, disp_signumber2()) else # 他のシグナル受信時のシグナルハンドラを設定します。 rx_signal(i, disp_signumber ()) } # シグナル待ち受けループに入ります。 while(TRUE){ # 繰り返しモニタ出来るように、無限ループとします。 pause() # シグナル待ち受け時はポーズで待ちます。 }
https://w.atwiki.jp/kumikomi-yitjc/pages/41.html
UIビットとは、何者ぞ