Розмір відео: 1280 X 720853 X 480640 X 360
Показувати елементи керування програвачем
Автоматичне відтворення
Автоповтор
動画内で出てくるメニューフラグは正しくは「テキストとスプライトの切り替えフラグ」ですNPCとの会話や買い物の時も立ちますが、メニューを開くときも立つのでわかりやすくするためにメニューフラグと呼んでいます1コメ
5コメ
@@master_migawari lolこめ
63コメ(わざわざ数えた)
通しで見ました。バグのポイントは・GBの読み込み容量が少ない・GBカセットの容量が少ない・例外処理の不備なんですね。16進数など情報系の基礎知識だけで説明してもらえたのでとてもわかりやすかったです!
マイクラとかゲーム内で自由が保証されてるゲームと違って、初代ポケモンはゲーム外が(意図せず)めっちゃ自由で奥深いのが面白い
超長文失礼します!他の方もおっしゃってますが、VBlankは、LCDコントローラが画面上端から順に下端まで画面描画を完了してから、また画面上端まで戻るまでの期間のことです。LCDコントローラがVRAMにアクセス中のとき、CPUはVRAMにアクセスできません。OAMも同じです。(OAMは、どこにスプライトを表示するか、スプライトがVRAM上のどこのグラフィックを使うのかを保持している領域です。「スプライト属性テーブル」と調べると出てきます)このVBlankをCPU側で知るために、LCDコントローラはLCDステータスレジスタ(フラグ群) の中にLCDモードフラグを持っています。これが0か1のときはそれぞれHBlank、VBlank中で、2か3のときはLCDコントローラがそれぞれOAMか、OAMとVRAM両方にアクセス中です。2 3 0 2| 最初の一列描画 | HBlank | 3 0 2 次の一列描画 | HBlank | ... 2 3 1 2 | 最後の一列描画 | VBlank | 3 0 最初の一列描画 | ...CPUがこれを読み取り、2と3のときにVRAM/OAMへアクセスしないようにします。(恐らく"割り込み"を設定することもできると思います)HBlankは非常に短いので、グラフィックを思いっきり入れ替えるのはVBlankでやるはずです。「処理落ち」と呼ばれるものは、ゲームの(CPU側の)処理が、前回のVBlankから、次回のVBlankまでに間に合ってない状態のことです。描画するものを用意するのが長すぎて、次のVBlankに遅刻すると、そのまた次のVBlankを待つことになってしまうのです...そのため、画面が前回と変わらない瞬間ができてしまって、動きが飛んで見える、あるいは遅く見えてしまうんですね...昔のゲームは先人の努力の塊で...知れば知るほどおもしろいですよね!毎度、わかりやすく噛み砕かれてて とても楽しく見ています! ほどよく頑張ってください!あまりゲームボーイには詳しくないので、調べながらです。間違ってる部分があったらごめんなさい!改めて長々と、えらそうに失礼しました!
H-blankはLCDで1走査線分を(仮に左から右に)描画したあとに走査開始位置を左端に戻すための時間っぽい。V-blankはLCDで144走査線分を上から描画したあとに走査開始位置を上端に戻すための時間。H-blankもV-blankもその間はLCDからVRAMやOAMにアクセスしないからCPU側から安全にVRAM/OAMにアクセス出来る, そしてH-blank, V-blankの開始をCPU側で知るために, LCDCレジスタで各blankの先頭でCPUに割り込みが入るように設定出来る, と。
簡単な表現で言うと「1フレーム描画し終えてから、次フレームの描画の準備が整うまでのわずかな隙間時間」がV-Blankって感じですかね。
HとVはhorizontalとverticalのことだったのかなぁ。走査開始位置を水平に動かすか垂直に動かすかってことかな。
え?なんの会話?
昔、バグポケモンを図鑑から「なきごえ」を聞いたら、サファリゾーン(進化)のBGMが流れたことがあったけど、あれはかなりヤバメのバグだったのかなぁ…
普通はバグ=開発陣の手抜きと思ってしまうけど、ポケモンのバグは正に開発陣の苦労と工夫の結晶、少ないメモリ量で最高のゲームを作り上げるための知恵の塊を使い倒してるんですね。
開発経験ない人にはそう捉えられるかも知れないけどめちゃくちゃ努力しても見つけられなかったのが世に出回るバグなんだよなぁ手抜きと表現されるのはちょっと悲しい…
そもそも人間が作る物に完全な物なんて無いからバグなんてあって当然
広大なフィールドで意味のない行動を10も20も繰り返して起こるものなんて普通は出てこないんだよなぁ
開発関わる身としては、手抜きと言われるのはやらせなさある…いや思われても仕方ないのだろうけど、つれえぜ……
まあバグを一個直したらその弊害で他のバグが三個くらい生えてくるって聞くからなぁ…バグを減らすのって難しいんだろうな…
動画内容と関係なくて恐縮ですが、ア▶イスさんの動画をじっくり見て自分の知識と紐づけて覚えてみたら、某IT試験に高得点で合格しました!直接試験内容に関係があるわけではないものの、知識ゼロの分野を楽しく関心を持って学ぶトリガーになったので感謝してます🙏これからも動画楽しみにしてます〜!
おかげで彼女ができました系列のネタかと思ったら、ちゃんと真面目な話だった
少年時代にセレクトバグを噂で聞いてけつばんバグを実行して1番目にいるけつばんがグラフィックぶっ壊してフリーズ→呼び出すたびにフリーズ→さいしょから→最初のニドリーノがけつばんに変わっててフリーズってコンボ食らったんですけどこの動画でなんとなく理由がわかりましたニドリーノの領域ががけつばん化してアンタッチャブルに触れてフリーズしてるせいでリセット掛かるタイミング無くて詰んでたんですね20数年来の謎が解けてすっきりしました
ガナヒビニキで基礎というかやり方を学び、アイスニキで仕組みを学ぶ勉強になるなぁ…ガナヒビニキの動画で主人公のスプライトが「オカキク」ってなってたのはこういう理由だったのか
オーキドせんせいRTA研究者さんもおすすめですよ!ア▶イスさんと同じような感じでバグ教えてくれますよ!
@@User-Rowlet 1年経ってもうすっかりオーキドせんせい研究者さんのヘビー視聴者にもなってます!
@@haisun_01 やっぱり!!(?)
伝説のスターブロフ ネキも是非!
この動画を13年前に見てれば、電気電子工学科じゃなくて情報学科に入ってただろうな。面白すぎる
昔のゲームのプログラミングがどうやって処理を楽にするのか、少ないデータでやりくりするのかが大変だったんだなっていうのがよくわかるそしてそれによってできたプログラムの穴を突いてバグが開発されていく…面白いなぁ…
メモリを無駄遣いできないが故の色んな工夫…面白いなぁ
本当になんでこんなに動画のクオリティも内容もいいのに登録者が増えないのか不思議
レベル高すぎるからついていけない人多いかもねバッジ親父扱えて任意とかfifth余裕でできるレベルすら初心者扱いされる現代初代
チャンネル登録した
7:43 LCDとは「Liquid Crystal Display」の略で、液晶ディスプレイのこと、つまり画面そのもののことですね。
補足の補足動画で解説しているのは「制御する側」ですので、正確にはLCD Controller(LCDC)になると思われます
ありがとう。
天才に天才が集まるのやめろ
ありがたや
wikiや他サイト読んで得た知識ですがLCD:Liquid Crystal Display要するに液晶画面のこと画面表示機能そのものといっても差し支えないハズ詳しくは知らないけどGB本体側の都合で回路が組まれてるんでしょうねV-Blank:垂直帰線区間映像は静止画の連続なのだが、その静止画から静止画への切り替え時に映像信号を画面表示しない瞬間を挟むらしいコンピュータはその間に必要な定期的処理を挟むことがよくあるそうで最近のテレビなんかはその瞬間の信号で字幕表示やデータ放送をやってたりするんだとか
メモリ直接見ながら見てる訳でもないのにむっちゃわかり易かったです。
現在こそ液晶モニターが進化してグラフィックの描画が高速になっていますが、30年前のGBやCRT(ブラウン管ディスプレイ)は描画が低速でCPUとメモリの処理に全然追いつけなかった。結果、ハードウェア(LCD)から「描画が出来るよ!(V-BrankフラグON)」という信号が来たら初めてグラフィックメモリ(VRAM)に書き込みが出来るようにしていた。フレームレートが低かった、と表現すると解りやすい?「TVゲームのグラフィックは高速パラパラ漫画」だと考えています。それにしても、うp主の解析力にもゲームフリークのデータ管理方法にも感涙します( ;∀;)
ガナヒビネキとアイスニキのせいでバグの沼にハマりそう…
ホント貴方の動画は分かりやすくて助かる
BDSPではメニューを開いたまま歩けるのでプログラムの進歩を感じます。
この動画のお陰でドラクエの復活の呪文の原理が分かりました。ROMバンクを分けているから記号を入れてやっていたところの場面のROMバンクを読み込むわけですね多分
ここまでの解析ができるなんて、まさにポケモン博士ですな素晴らしいです!今回の話で、以前の公式のインタビューで「ミュウのデータは絶対に出ないだろうと思って作った」ってありましたが、種族値ロードの処理でミュウを追加している時点である意味確信犯だったのではないかと思いました
全部のポケモンの始祖って設定から種族値が変動するようにした→実装できずミュウの存在ごとお蔵入りとか妄想した
楽しく拝見させていただきました。途中解説が難しかった箇所は以下のような話ではないかと推察します。間違っている可能性もあるので、本当に合っているかは確認してみてください。------・V-Blank 例えばモニタというのは、1秒に60回や120回など既定回数の画面を頻繁に描き直していますが、その時の画面を1枚描画して、再び画面を描き始めるまでの時間がV-Blankと言います。 Vというのはvertical(垂直)の頭文字で、昔のブラウン管モニタなどが極小時間中に画面を横一行の細い線として縦に積み重ねていって、一枚の画面を描画した事が由来です。ゲームプログラムは、この隙間の時間内に全処理を行うよう作られています。------・LCDコントローラ これはGBの場合、LCD(モニタ)基板の制御回路に向かって、CPU側が操作信号を送るためのプログラムの事だと思います。今のPC等であればCPUに代わってGPUが担当する処理を、全てCPUで賄っていると思ってください。------ 普段ゲームプログラムはV-Blank明けごとに、RAMのキャラクタ領域と画面情報を元に画面を再描画していますが「メニューを開く」「ゲームを始める」など画面内容を大きく切替える時にはRAMのキャラクタ領域の内容を入れ替えなくてはいけません。この時、ゲームプログラムがLCDコントローラで画面を一時的に止める事で入替の終わってない部分を参照しておかしな表示が映らないようにしています。------ けつばんバグはこのコントローラの停止処理に不正に便乗しているせいで手続きが途中からになり、表示させるオブジェクト周りの管理で不具合が生じ復帰処理が行えなくなって画面が映らなくなるのだと思われます。ただし、表示させるオブジェクトが主人公を除いて存在しない場合↑の処理をスキップして通常処理に復帰できるのではないでしょうか。------V-BlankもLCDコントローラも、ゲームプログラムというよりはハードウェア制御に近い話です。GBの機能的にマイコンに近い話題です。今回のバグの仕組みは、例えるなら演劇の進行に不具合が出たというよりも舞台装置の操作を失敗してしまった、というようなお話だと思います。
めっちゃ面白いです☺️
大体わかってたけど説明難しかったから助かった
4:03なぜなのかわかったたぶん00 01 02 03……ってなってて、普通は01までだから02になるとオーバーフローして00に戻るんじゃないのかな?
つまり、化石けつばんは初代版ドーブルみたいなもんか
こういうの見てると当時のゲームって本当にメモリが少なかったんだろうなぁって思うわ
なるほどよくわからん
プログラマ独特の言い回しってあるけど、この動画主は「フラグを"折る"」と表現するんだね通常はオフにするとかfalseにするとか言うので面白いなと思いました折るならコンパクトに表現できて良いですね
何年も開発やってます。値を true にするときに、「フラグを "立てる"」(※言うまでもないですが、flag / フラッグ / 旗 の意)と表現するので反対に、立てたフラグは "折る" ものだと認識しています。まぁ、慣例的なものだと思いますが。ちなみに「設定を "オフにする"」「変数の値を "false にする"」なら言いますね。「フラグの変数を "false にする"」みたいなのも変化球ですが◎と個人的には思います。"フラグ" は、正直概念なので、自分の体感的には、そこに続く言い回しとして実際の値(オフ/false など)を言わないような気がします。え?旗だから降ろす?取り外す?仕舞う?シラナイデスネ ソンナ コトバ(白目)
成る程わからん!だが、バグはテキトーじゃなくて理論的に説明できるというのは分かった。出鱈目じゃなく現象なんだね!
途中途中のは?がおもろい
これ見ると2番道路の右側に関所が存在する意味がわかるね
この人からガナビビネキを知った自分も見る専バグプレイヤーだけにこういうの見るとワクテカするあっち(ガナビビ)でやり方を理解して、こっち(ア▶︎イス)で原理を理解するといいかも
ア▶︎イスさんのバグ解説、とても楽しく見ています。6:55あたりを見てみると途中の列からテキストの読み込みがはじまってから一番最初の列に文字が表示されているので、テキストとスプライトの切り替えが行われているのは水平描画のブランクの間にも思えますが、液晶のことまで考え出すともはや何が何だかという感じですね…。
バグらせた時戦闘時の音がフェードアウトして一瞬鳴き声が聞こえて消音になる理由が知りたいです
これは……かなり面白いけど岩を離乳食にしてるようなお話……地味にメニュー画面が空いている状態で動けるってとても面白い。化石型けつばんどもはそもそもグラフィックだけで登場するためにこういう面白いことが起きるのだねぇ。ミュウが分岐してるのはそもそも野生で出す予定がなかったからかしら、それとも容量?
後付けだから通常のポケモンと違うところにデータが入っていたんじゃないの?
よく言われる「ミュウはデバッグした後の余った領域で開発者がお遊びで作った」っていう話に合わせると化石型けつばんとゆうれいも開発者がお遊びで入れるつもりだったのかも
ゲームボーイってテキストとスプライトを同時に出せないんですね!?メニューを開くと画面自体が切り替わる作品が多かったのってそういう…!
凄い分かりやすかったです
楽しみです!
AB連打で画面がどんどん壊れていくのもバグならディグダの穴以外でそれを止めるのもバグこれぞ毒を以て毒を制す
AB連打…某シャッフルバグかな?あれもいちいちデータを読んじゃっているのが原因なんだろうなぁ。
LCDってLiquid Crystal Display(液晶)のことかな、、
初代ポケモンはオープンワールドゲームなんやなぁ
ほぼなんもわからんけど聞ける。
おー楽しみ!!
ドラクエ1なんか容量が写真1枚分だからなぁ〜GBのゲームとか昔は考えもしなかったんだろうな
けつフリばんーズって読んじゃった………(サムネ)
ブランキング信号のくだり聞いた瞬間「アレそこ書き換えたら液晶イカれない?」ってなった
初代ではないですがダイパの謎の場所の原因の解説もしてほしいです!
こういうのすごいすき・・・(語彙力
LCDって液晶関連のプログラムのことでは
バグマップのマップチップがザーッと変わるのはそういう処理がなされてたのか…アイスさんゲーム作れるんとちゃう??
けつばんを出してからはやぶさバッヂを使えばバトル終了の処理を挟まずにバトルの離脱ができるので、NPCのいるマップでもけつばんを捕まえられると思ったのですがどうでしょうか
おっしゃる通りそれでも大丈夫みたいです
セレクトバグ使ってバグポケ作ろうとして戦闘入った瞬間タイトル画面に飛ばされたことあったけど…
とても興味深い動画で面白かったです!!映像関係の研究をしていた頃、LCDといえば液晶ディスプレイのことを指していましたが今回のゲームボーイにおける領域の名称と関連はあるんでしょうか?
ゲームボーイでもLCDは液晶ディスプレイのことのようです動画内で説明しているLCDはLCDコントローラーという方が正確らしいです
@@アイス-j3p やはり液晶のことなんですね。分かりやすい説明ありがとうございます!バグについてこれだけ分かりやすく正確に解説している動画をこれまで観たことがなく感激しました。動画投稿応援しております。
じゃあ化石けつばんを先頭に持ってけばィ ゙ゃゾ┛aニキの種族値になるんか
道路上って道端の花もスプライトじゃなかったっけ…?ポケスタでポケモンのグラフィックを読み込むときにセーブ中の表示が出る理由がわかりました。セーブデータ領域でデータの読み書きが行われていたからなんですね。
花はスプライトではなく背景のタイルです
@@アイス-j3p 背景のタイルってそんな動かしていいもんなんでしょうか。背景はアニメーションに不向きなイメージが。
動かすというより毎回グラフィックを書き換えてる感じです。海のタイルも同じようにかきかえていますそれからゲームボーイにはスプライトの表示限界(40個)があるので花だけでその分取られちゃうのはもったいないのと背景がタイルで花だけスプライトだと少しずれて見えてしまうのでその兼ね合いもあるんだと思います
バグ動画(こういう解説するタイプの)が好きで好きでたまらないので動画楽しみにしてます😊チャンネル登録完了d('∀'*)
LCD は初期化で、V-Blank は更新か……。
V-Blank、ですか。GBの画面表示については知識がないのですが、他の界隈だとH(Horizontal)とV(Vertical)でそれぞれ水平と垂直を意味し、両方のタイミングを合わせないと映像が乱れるというのがあるのですが‥‥仕組みが類似しているなら映像の切り替え中にその辺の信号を画面に送出するのが止まるタイミングがBlank、ということなのかもしれないですね。あるいはPC界隈のVRAM(ビデオRAM)の方でしょうかね。表示の切り替えのように描画に関わるとなるとこっちのような気もしますし。
ご指摘通り、恐らくV-Blankは垂直同期信号でしょうね。つまりフレームの同期信号。この空白時間が無いと画面のチラツキや乱れが出るのでとても大切な信号です。逆に言えばこの空白の時間にグラフィックを切り替えてしまえば違和感無く映像を切り替えられるという仕組みなのかもしれませんね。ただ、そのグラフィックの書き換え量によってV-Blank時間に間に合わないため使い分けてると…
けつばんは000番!(152番!)だから番号検索しても出ない(152番のけつばんは嘘!)(小ネタ)赤緑ではフリーズするよ!青ではフリーズしないけどバグる!オオキド博士に言うとデータ壊れる!
o−−−−on−!!!!
実際 けつばんがいる時にセーブするとまた壊れる!
なるほど
#18:10 で言ってる海外の動画見たい。リンクどこですか?
化石型とゴーストは没キャラなのかな
化石はニビの博物館、ゴーストはポケモンタワーで通常プレイでも見れるグラフィックですね
要は昔のPCゲームでたまにある1タイルずつ表示されるやつはLCDくんが居ないからってことが…?
内部番号で専用グラを持つ欠番だけど、ミュウ以外はイベントで見られる奴だよね
ディグダにも穴があるんだよな…
LCD関連について,昔のモニターは小さい赤,青,黄色の豆電球みたいな感じになっています,モノクロも大体同じ感じです画面が切り替わる時は電球を点けたり,消したりしますそしてLCDの役目とはこの電球のコントロールみたいな感じですね,昔に学んだことなんて,会っているかどうかがわからないのか悲しいです_(:3 」∠)_
質問です。もしどこかで聞き落とした情報があればごめんなさい。スプライト=0ならスプライト描画ルーティンが行われず、LCDが折られないというお話ですが、主人公もスプライトなのでスプライト描画ルーティンが実行されるのではないでしょうか。そうなるとそもそもの前提が崩れる気がしますが、どういうことなんでしょう…
動画内ではスプライトの数と説明していますが正確には「スプライトの数」ではなく「マップに存在するスプライトの数」なので主人公は含まれませんそのため動画で説明した通り描画ルーチンが飛ばされます
@@アイス-j3p 返信ありがとうございます!ということは、①マップデータにはグラフィックメモリに書き込む値以外にスプライトの数が何かしらの値として保存されている②マップを移動するとマップデータがメモリに読み込まれる③スプライト描画ルーティンは現在読み込まれている(②で読み込まれている)マップデータのスプライトの数≧1の場合に実行される→主人公はマップデータに保存されているわけではなく、別スプライトとして管理されているので、③でのスプライト数=0となりルーティンが飛ばされる、ということでしょうか?質問ばかりでごめんなさい。
大体そんな感じですね
@@アイス-j3p ありがとうございます!いつも動画楽しくみています、これからも応援してます〜
だからEFのポケモンを出そうとコードを実行したらフリーズしたのか…
そういや、10年以上前(?)にポケモン緑で命令無視(かは不明だけど)でけつばんバグ発生させてる人いたけどあれってどういうメカニズムで起こってるんでしょうかね…復帰されたら調べて欲しいです
スプライトで出来てるのはわかったけどさファンタで出来てるnpcとかはないの?
けつばんによって殿堂入りデータが破損する件ですが、セーブデータ領域は特定のメモリアドレスに値を代入しないと書き換えられないのではないでしょうか?グラフィックの範囲は保護の対象外になっているとか、けつばんだと奇跡的にロックが解除されるとかですか?また、なぜゲーフリは化石型けつばんのグラフィックを別個で用意するなんていう条件分岐を設定したんでしょうか?
ゴーストってポケモンがいるのにゴーストって名前のけつばんで草生えるベアビヲ9の印象が強いなー
ベアビヲ9と9ぱゾ9なの語感の良さすこ
ブイブランクってパソコンのクロックに似てる。
LCDって言われると液晶ディスプレイのことぐらいしか思いつかないな。
V-BlancのVってvisualのVかな
Vertical(垂直)のVらしいです
サムネを けつフリ ばんーズ と読んだ人
ヲンヲンこさこさすき
説明されてるのはLCDというよりLCDC?
じゃあ俺がサイダーよりスプライトが好きなのもバグのせいなのか…?
上からスクロールしてこの動画見つけたからサムネがけつ フリに見えた。
2コメ
動画内で出てくるメニューフラグは正しくは「テキストとスプライトの切り替えフラグ」です
NPCとの会話や買い物の時も立ちますが、メニューを開くときも立つのでわかりやすくするためにメニューフラグと呼んでいます
1コメ
5コメ
@@master_migawari
lolこめ
63コメ(わざわざ数えた)
通しで見ました。
バグのポイントは
・GBの読み込み容量が少ない
・GBカセットの容量が少ない
・例外処理の不備
なんですね。
16進数など情報系の基礎知識だけで
説明してもらえたので
とてもわかりやすかったです!
マイクラとかゲーム内で自由が保証されてるゲームと違って、初代ポケモンはゲーム外が(意図せず)めっちゃ自由で奥深いのが面白い
超長文失礼します!
他の方もおっしゃってますが、VBlankは、LCDコントローラが画面上端から順に下端まで画面描画を完了してから、また画面上端まで戻るまでの期間のことです。
LCDコントローラがVRAMにアクセス中のとき、CPUはVRAMにアクセスできません。OAMも同じです。
(OAMは、どこにスプライトを表示するか、スプライトがVRAM上のどこのグラフィックを使うのかを保持している領域です。「スプライト属性テーブル」と調べると出てきます)
このVBlankをCPU側で知るために、LCDコントローラはLCDステータスレジスタ(フラグ群) の中にLCDモードフラグを持っています。
これが0か1のときはそれぞれHBlank、VBlank中で、2か3のときはLCDコントローラがそれぞれOAMか、OAMとVRAM両方にアクセス中です。
2 3 0 2
| 最初の一列描画 | HBlank |
3 0 2
次の一列描画 | HBlank | ...
2 3 1 2
| 最後の一列描画 | VBlank |
3 0
最初の一列描画 | ...
CPUがこれを読み取り、2と3のときにVRAM/OAMへアクセスしないようにします。(恐らく"割り込み"を設定することもできると思います)
HBlankは非常に短いので、グラフィックを思いっきり入れ替えるのはVBlankでやるはずです。
「処理落ち」と呼ばれるものは、ゲームの(CPU側の)処理が、前回のVBlankから、次回のVBlankまでに間に合ってない状態のことです。
描画するものを用意するのが長すぎて、次のVBlankに遅刻すると、そのまた次のVBlankを待つことになってしまうのです...
そのため、画面が前回と変わらない瞬間ができてしまって、動きが飛んで見える、あるいは遅く見えてしまうんですね...
昔のゲームは先人の努力の塊で...知れば知るほどおもしろいですよね!
毎度、わかりやすく噛み砕かれてて とても楽しく見ています! ほどよく頑張ってください!
あまりゲームボーイには詳しくないので、調べながらです。間違ってる部分があったらごめんなさい!
改めて長々と、えらそうに失礼しました!
H-blankはLCDで1走査線分を(仮に左から右に)描画したあとに走査開始位置を左端に戻すための時間っぽい。
V-blankはLCDで144走査線分を上から描画したあとに走査開始位置を上端に戻すための時間。
H-blankもV-blankもその間はLCDからVRAMやOAMにアクセスしないからCPU側から安全にVRAM/OAMにアクセス出来る, そしてH-blank, V-blankの開始をCPU側で知るために, LCDCレジスタで各blankの先頭でCPUに割り込みが入るように設定出来る, と。
簡単な表現で言うと「1フレーム描画し終えてから、次フレームの描画の準備が整うまでのわずかな隙間時間」がV-Blankって感じですかね。
HとVはhorizontalとverticalのことだったのかなぁ。走査開始位置を水平に動かすか垂直に動かすかってことかな。
え?なんの会話?
昔、バグポケモンを図鑑から「なきごえ」を聞いたら、サファリゾーン(進化)のBGMが流れたことがあったけど、あれはかなりヤバメのバグだったのかなぁ…
普通はバグ=開発陣の手抜きと思ってしまうけど、ポケモンのバグは正に開発陣の苦労と工夫の結晶、少ないメモリ量で最高のゲームを作り上げるための知恵の塊を使い倒してるんですね。
開発経験ない人にはそう捉えられるかも知れないけどめちゃくちゃ努力しても見つけられなかったのが世に出回るバグなんだよなぁ
手抜きと表現されるのはちょっと悲しい…
そもそも人間が作る物に完全な物なんて無いからバグなんてあって当然
広大なフィールドで意味のない行動を10も20も繰り返して起こるものなんて普通は出てこないんだよなぁ
開発関わる身としては、手抜きと言われるのはやらせなさある…いや思われても仕方ないのだろうけど、つれえぜ……
まあバグを一個直したらその弊害で他のバグが三個くらい生えてくるって聞くからなぁ…バグを減らすのって難しいんだろうな…
動画内容と関係なくて恐縮ですが、ア▶イスさんの動画をじっくり見て自分の知識と紐づけて覚えてみたら、某IT試験に高得点で合格しました!直接試験内容に関係があるわけではないものの、知識ゼロの分野を楽しく関心を持って学ぶトリガーになったので感謝してます🙏これからも動画楽しみにしてます〜!
おかげで彼女ができました系列のネタかと思ったら、ちゃんと真面目な話だった
少年時代にセレクトバグを噂で聞いてけつばんバグを実行して1番目にいるけつばんがグラフィックぶっ壊してフリーズ→呼び出すたびにフリーズ→さいしょから→最初のニドリーノがけつばんに変わっててフリーズってコンボ食らったんですけどこの動画でなんとなく理由がわかりました
ニドリーノの領域ががけつばん化してアンタッチャブルに触れてフリーズしてるせいでリセット掛かるタイミング無くて詰んでたんですね20数年来の謎が解けてすっきりしました
ガナヒビニキで基礎というかやり方を学び、アイスニキで仕組みを学ぶ
勉強になるなぁ…
ガナヒビニキの動画で主人公のスプライトが「オカキク」ってなってたのはこういう理由だったのか
オーキドせんせいRTA研究者さんもおすすめですよ!
ア▶イスさんと同じような感じでバグ教えてくれますよ!
@@User-Rowlet 1年経ってもうすっかりオーキドせんせい研究者さんのヘビー視聴者にもなってます!
@@haisun_01 やっぱり!!(?)
伝説のスターブロフ ネキも是非!
この動画を13年前に見てれば、電気電子工学科じゃなくて情報学科に入ってただろうな。面白すぎる
昔のゲームのプログラミングがどうやって処理を楽にするのか、少ないデータでやりくりするのかが大変だったんだなっていうのがよくわかる
そしてそれによってできたプログラムの穴を突いてバグが開発されていく…面白いなぁ…
メモリを無駄遣いできないが故の色んな工夫…面白いなぁ
本当になんでこんなに動画のクオリティも内容もいいのに登録者が増えないのか不思議
レベル高すぎるからついていけない人多いかもね
バッジ親父扱えて任意とかfifth余裕でできるレベルすら初心者扱いされる現代初代
チャンネル登録した
7:43 LCDとは「Liquid Crystal Display」の略で、液晶ディスプレイのこと、つまり画面そのもののことですね。
補足の補足
動画で解説しているのは「制御する側」ですので、正確にはLCD Controller(LCDC)になると思われます
ありがとう。
天才に天才が集まるのやめろ
ありがたや
wikiや他サイト読んで得た知識ですが
LCD:Liquid Crystal Display
要するに液晶画面のこと
画面表示機能そのものといっても差し支えないハズ
詳しくは知らないけどGB本体側の都合で回路が組まれてるんでしょうね
V-Blank:垂直帰線区間
映像は静止画の連続なのだが、その静止画から静止画への切り替え時に映像信号を画面表示しない瞬間を挟むらしい
コンピュータはその間に必要な定期的処理を挟むことがよくあるそうで
最近のテレビなんかはその瞬間の信号で字幕表示やデータ放送をやってたりするんだとか
メモリ直接見ながら見てる訳でもないのにむっちゃわかり易かったです。
現在こそ液晶モニターが進化してグラフィックの描画が高速になっていますが、30年前のGBやCRT(ブラウン管ディスプレイ)は描画が低速でCPUとメモリの処理に全然追いつけなかった。結果、ハードウェア(LCD)から「描画が出来るよ!(V-BrankフラグON)」という信号が来たら初めてグラフィックメモリ(VRAM)に書き込みが出来るようにしていた。
フレームレートが低かった、と表現すると解りやすい?「TVゲームのグラフィックは高速パラパラ漫画」だと考えています。
それにしても、うp主の解析力にもゲームフリークのデータ管理方法にも感涙します( ;∀;)
ガナヒビネキとアイスニキのせいでバグの沼にハマりそう…
ホント貴方の動画は分かりやすくて助かる
BDSPではメニューを開いたまま歩けるのでプログラムの進歩を感じます。
この動画のお陰でドラクエの復活の呪文の原理が分かりました。
ROMバンクを分けているから記号を入れてやっていたところの場面のROMバンクを読み込むわけですね多分
ここまでの解析ができるなんて、まさにポケモン博士ですな素晴らしいです!
今回の話で、以前の公式のインタビューで「ミュウのデータは絶対に出ないだろうと思って作った」ってありましたが、種族値ロードの処理でミュウを追加している時点である意味確信犯だったのではないかと思いました
全部のポケモンの始祖って設定から種族値が変動するようにした→実装できずミュウの存在ごとお蔵入り
とか妄想した
楽しく拝見させていただきました。
途中解説が難しかった箇所は以下のような話ではないかと推察します。
間違っている可能性もあるので、本当に合っているかは確認してみてください。
------
・V-Blank
例えばモニタというのは、1秒に60回や120回など
既定回数の画面を頻繁に描き直していますが、その時の画面を1枚描画して、
再び画面を描き始めるまでの時間がV-Blankと言います。
Vというのはvertical(垂直)の頭文字で、昔のブラウン管モニタなどが
極小時間中に画面を横一行の細い線として縦に積み重ねていって、
一枚の画面を描画した事が由来です。
ゲームプログラムは、この隙間の時間内に全処理を行うよう作られています。
------
・LCDコントローラ
これはGBの場合、LCD(モニタ)基板の制御回路に向かって、
CPU側が操作信号を送るためのプログラムの事だと思います。
今のPC等であればCPUに代わってGPUが担当する処理を、
全てCPUで賄っていると思ってください。
------
普段ゲームプログラムはV-Blank明けごとに、
RAMのキャラクタ領域と画面情報を元に画面を再描画していますが
「メニューを開く」「ゲームを始める」など画面内容を大きく切替える時には
RAMのキャラクタ領域の内容を入れ替えなくてはいけません。
この時、ゲームプログラムがLCDコントローラで画面を一時的に止める事で
入替の終わってない部分を参照しておかしな表示が映らないようにしています。
------
けつばんバグはこのコントローラの停止処理に不正に便乗しているせいで
手続きが途中からになり、表示させるオブジェクト周りの管理で不具合が生じ
復帰処理が行えなくなって画面が映らなくなるのだと思われます。
ただし、表示させるオブジェクトが主人公を除いて存在しない場合
↑の処理をスキップして通常処理に復帰できるのではないでしょうか。
------
V-BlankもLCDコントローラも、ゲームプログラムというよりは
ハードウェア制御に近い話です。GBの機能的にマイコンに近い話題です。
今回のバグの仕組みは、例えるなら演劇の進行に不具合が出たというよりも
舞台装置の操作を失敗してしまった、というようなお話だと思います。
めっちゃ面白いです☺️
大体わかってたけど説明難しかったから助かった
4:03
なぜなのかわかった
たぶん
00 01 02 03……ってなってて、
普通は01までだから02になるとオーバーフローして00に戻るんじゃないのかな?
つまり、化石けつばんは初代版ドーブルみたいなもんか
こういうの見てると当時のゲームって本当にメモリが少なかったんだろうなぁって思うわ
なるほど
よくわからん
プログラマ独特の言い回しってあるけど、この動画主は「フラグを"折る"」と表現するんだね
通常はオフにするとかfalseにするとか言うので面白いなと思いました
折るならコンパクトに表現できて良いですね
何年も開発やってます。
値を true にするときに、「フラグを "立てる"」(※言うまでもないですが、flag / フラッグ / 旗 の意)と表現するので
反対に、立てたフラグは "折る" ものだと認識しています。
まぁ、慣例的なものだと思いますが。
ちなみに「設定を "オフにする"」「変数の値を "false にする"」なら言いますね。
「フラグの変数を "false にする"」みたいなのも変化球ですが◎と個人的には思います。
"フラグ" は、正直概念なので、自分の体感的には、そこに続く言い回しとして
実際の値(オフ/false など)を言わないような気がします。
え?旗だから降ろす?取り外す?仕舞う?シラナイデスネ ソンナ コトバ(白目)
成る程わからん!
だが、バグはテキトーじゃなくて理論的に説明できるというのは分かった。出鱈目じゃなく現象なんだね!
途中途中のは?がおもろい
これ見ると2番道路の右側に関所が存在する意味がわかるね
この人からガナビビネキを知った
自分も見る専バグプレイヤーだけにこういうの見るとワクテカする
あっち(ガナビビ)でやり方を理解して、こっち(ア▶︎イス)で原理を理解するといいかも
ア▶︎イスさんのバグ解説、とても楽しく見ています。
6:55あたりを見てみると途中の列からテキストの読み込みがはじまってから一番最初の列に文字が表示されているので、テキストとスプライトの切り替えが行われているのは水平描画のブランクの間にも思えますが、液晶のことまで考え出すともはや何が何だかという感じですね…。
バグらせた時戦闘時の音がフェードアウトして一瞬鳴き声が聞こえて消音になる理由が知りたいです
これは……かなり面白いけど岩を離乳食にしてるようなお話……
地味にメニュー画面が空いている状態で動けるってとても面白い。
化石型けつばんどもはそもそもグラフィックだけで登場するためにこういう面白いことが起きるのだねぇ。
ミュウが分岐してるのはそもそも野生で出す予定がなかったからかしら、それとも容量?
後付けだから通常のポケモンと違うところにデータが入っていたんじゃないの?
よく言われる「ミュウはデバッグした後の余った領域で開発者がお遊びで作った」っていう話に合わせると化石型けつばんとゆうれいも開発者がお遊びで入れるつもりだったのかも
ゲームボーイってテキストとスプライトを同時に出せないんですね!?
メニューを開くと画面自体が切り替わる作品が多かったのってそういう…!
凄い分かりやすかったです
楽しみです!
AB連打で画面がどんどん壊れていくのもバグならディグダの穴以外でそれを止めるのもバグ
これぞ毒を以て毒を制す
AB連打…某シャッフルバグかな?あれもいちいちデータを読んじゃっているのが原因なんだろうなぁ。
LCDってLiquid Crystal Display(液晶)のことかな、、
初代ポケモンはオープンワールドゲームなんやなぁ
ほぼなんもわからんけど聞ける。
おー楽しみ!!
ドラクエ1なんか容量が写真1枚分だからなぁ
〜GBのゲームとか昔は考えもしなかったんだろうな
けつフリばんーズって読んじゃった………(サムネ)
ブランキング信号のくだり聞いた瞬間「アレそこ書き換えたら液晶イカれない?」ってなった
初代ではないですがダイパの謎の場所の原因の解説もしてほしいです!
こういうのすごいすき・・・(語彙力
LCDって液晶関連のプログラムのことでは
バグマップのマップチップがザーッと変わるのはそういう処理がなされてたのか…
アイスさんゲーム作れるんとちゃう??
けつばんを出してからはやぶさバッヂを使えばバトル終了の処理を挟まずにバトルの離脱ができるので、NPCのいるマップでもけつばんを捕まえられると思ったのですがどうでしょうか
おっしゃる通りそれでも大丈夫みたいです
セレクトバグ使ってバグポケ作ろうとして戦闘入った瞬間タイトル画面に飛ばされたことあったけど…
とても興味深い動画で面白かったです!!
映像関係の研究をしていた頃、LCDといえば液晶ディスプレイのことを指していましたが今回のゲームボーイにおける領域の名称と関連はあるんでしょうか?
ゲームボーイでもLCDは液晶ディスプレイのことのようです
動画内で説明しているLCDはLCDコントローラーという方が正確らしいです
@@アイス-j3p やはり液晶のことなんですね。分かりやすい説明ありがとうございます!
バグについてこれだけ分かりやすく正確に解説している動画をこれまで観たことがなく感激しました。動画投稿応援しております。
じゃあ化石けつばんを先頭に持ってけばィ ゙ゃゾ┛aニキの種族値になるんか
道路上って道端の花もスプライトじゃなかったっけ…?
ポケスタでポケモンのグラフィックを読み込むときにセーブ中の表示が出る理由がわかりました。セーブデータ領域でデータの読み書きが行われていたからなんですね。
花はスプライトではなく背景のタイルです
@@アイス-j3p 背景のタイルってそんな動かしていいもんなんでしょうか。背景はアニメーションに不向きなイメージが。
動かすというより毎回グラフィックを書き換えてる感じです。海のタイルも同じようにかきかえています
それからゲームボーイにはスプライトの表示限界(40個)があるので花だけでその分取られちゃうのはもったいないのと背景がタイルで花だけスプライトだと少しずれて見えてしまうのでその兼ね合いもあるんだと思います
バグ動画(こういう解説するタイプの)が好きで好きでたまらないので動画楽しみにしてます😊
チャンネル登録完了d('∀'*)
LCD は初期化で、V-Blank は更新か……。
V-Blank、ですか。
GBの画面表示については知識がないのですが、他の界隈だとH(Horizontal)とV(Vertical)でそれぞれ水平と垂直を意味し、両方のタイミングを合わせないと映像が乱れるというのがあるのですが‥‥
仕組みが類似しているなら映像の切り替え中にその辺の信号を画面に送出するのが止まるタイミングがBlank、ということなのかもしれないですね。
あるいはPC界隈のVRAM(ビデオRAM)の方でしょうかね。表示の切り替えのように描画に関わるとなるとこっちのような気もしますし。
ご指摘通り、恐らくV-Blankは垂直同期信号でしょうね。つまりフレームの同期信号。この空白時間が無いと画面のチラツキや乱れが出るのでとても大切な信号です。逆に言えばこの空白の時間にグラフィックを切り替えてしまえば違和感無く映像を切り替えられるという仕組みなのかもしれませんね。ただ、そのグラフィックの書き換え量によってV-Blank時間に間に合わないため使い分けてると…
けつばんは000番!(152番!)
だから番号検索しても出ない(152番のけつばんは嘘!)
(小ネタ)赤緑ではフリーズするよ!青ではフリーズしないけどバグる!オオキド博士に言うとデータ壊れる!
o−−−−on−!!!!
実際 けつばんがいる時にセーブするとまた壊れる!
なるほど
#18:10 で言ってる海外の動画見たい。
リンクどこですか?
化石型とゴーストは没キャラなのかな
化石はニビの博物館、ゴーストはポケモンタワーで通常プレイでも見れるグラフィックですね
要は昔のPCゲームでたまにある1タイルずつ表示されるやつはLCDくんが居ないからってことが…?
内部番号で専用グラを持つ欠番だけど、ミュウ以外はイベントで見られる奴だよね
ディグダにも穴があるんだよな…
LCD関連について,昔のモニターは小さい赤,青,黄色の豆電球みたいな感じになっています,モノクロも大体同じ感じです
画面が切り替わる時は電球を点けたり,消したりします
そしてLCDの役目とはこの電球のコントロールみたいな感じですね,昔に学んだことなんて,会っているかどうかがわからないのか悲しいです_(:3 」∠)_
質問です。もしどこかで聞き落とした情報があればごめんなさい。
スプライト=0ならスプライト描画ルーティンが行われず、LCDが折られないというお話ですが、主人公もスプライトなのでスプライト描画ルーティンが実行されるのではないでしょうか。そうなるとそもそもの前提が崩れる気がしますが、どういうことなんでしょう…
動画内ではスプライトの数と説明していますが正確には「スプライトの数」ではなく「マップに存在するスプライトの数」なので主人公は含まれません
そのため動画で説明した通り描画ルーチンが飛ばされます
@@アイス-j3p
返信ありがとうございます!
ということは、
①マップデータにはグラフィックメモリに書き込む値以外にスプライトの数が何かしらの値として保存されている
②マップを移動するとマップデータがメモリに読み込まれる
③スプライト描画ルーティンは現在読み込まれている(②で読み込まれている)マップデータのスプライトの数≧1の場合に実行される
→主人公はマップデータに保存されているわけではなく、別スプライトとして管理されているので、③でのスプライト数=0となりルーティンが飛ばされる、ということでしょうか?
質問ばかりでごめんなさい。
大体そんな感じですね
@@アイス-j3p
ありがとうございます!
いつも動画楽しくみています、これからも応援してます〜
だからEFのポケモンを出そうとコードを実行したらフリーズしたのか…
そういや、10年以上前(?)にポケモン緑で命令無視(かは不明だけど)でけつばんバグ発生させてる人いたけどあれってどういうメカニズムで起こってるんでしょうかね…復帰されたら調べて欲しいです
スプライトで出来てるのはわかったけどさ
ファンタで出来てるnpcとかはないの?
けつばんによって殿堂入りデータが破損する件ですが、セーブデータ領域は特定のメモリアドレスに値を代入しないと書き換えられないのではないでしょうか?グラフィックの範囲は保護の対象外になっているとか、けつばんだと奇跡的にロックが解除されるとかですか?また、なぜゲーフリは化石型けつばんのグラフィックを別個で用意するなんていう条件分岐を設定したんでしょうか?
ゴーストってポケモンがいるのにゴーストって名前のけつばんで草生える
ベアビヲ9の印象が強いなー
ベアビヲ9と9ぱゾ9なの語感の良さすこ
ブイブランクってパソコンのクロックに似てる。
LCDって言われると液晶ディスプレイのことぐらいしか思いつかないな。
V-BlancのVってvisualのVかな
Vertical(垂直)のVらしいです
サムネを けつフリ ばんーズ と読んだ人
ヲンヲンこさこさすき
説明されてるのはLCDというよりLCDC?
じゃあ俺がサイダーよりスプライトが好きなのもバグのせいなのか…?
上からスクロールしてこの動画見つけたからサムネが
けつ フリ
に見えた。
2コメ