2023-01-01から1年間の記事一覧

citro3dを学ぶ #1 GPUのShader命令

完全に備忘録です。#1とありますが順番になっているわけではありません。内容はバラバラです。そもそも#2をかくかどうかすらわかりません。 今回はShader命令について書いていきます。オペランドの指定の仕方などはある程度はわかることを前提とします。 目…

マルチスレッドとイベント マイナーすぎる3DS備忘録

3DSでマルチスレッディングを行う際に使用するEventについて書いていきます。 イベントの作成 Result svcCreateEvent(Handle* event, ResetType reset_type); 引数にポインタを渡して作成したイベントのハンドルを取得しましょう。ResetTypeについてはこちら…

EventのResetTypeについて マイナーすぎる3DS備忘録

ResetTypeとはlibctruで定義されているEventやTimerのリセットに使用される列挙型です。Eventのリセットに使用されるのは、 RESET_ONESHOT RESET_STICKY の2つです。今回はこの2つの違いについて書いていきます。 RESET_ONESHOT RESET_ONESHOTは、Signalが送…

3DSにおけるPortとServiceの違い マイナーすぎる3DS備忘録

3DSにはsvcSendSyncRequestというプロセス間通信に使用する関数があります。この関数ではセッションハンドルを用いて他プロセスに処理を頼んだり、情報を取得したりすることができます。このセッションハンドルは、svcConnectToPortまたはsrvGetSessionHandl…

GSPGPU_FlushDataCacheについてのメモ マイナーすぎる3DS備忘録

GSPGPUってなんかいいですよね。 そんな中の関数の1つ!GSPGPU_FlushDataCache!これの正体はただ svcFlushProcessDataCacheを呼び出すだけなんです!通りで引数が一緒な訳ですね。終わり!

ciaファイルからのromfs抽出と展開

romfsとは、ゲームソフトにおける音楽やモデルのデータなどさまざまなものが入っているファイルである。ciaファイルにはromfsの他にもう1つ、exefsというものがあるが今回は触れない。romfsの抽出、展開はよくHackingToolkit9DSなどを用いて行われることが多…

C++をよく理解してCTRPFを作ろう

C++をあまり理解せずにCTRPFを作ってる人がやりがちなことをまとめてみました。 あるある 謎の変数 バラバラな命名 Process::Write地獄 謎のoffset 謎の0x Keyboardのif地獄 キモイ命名 goto乱用 ローマ字だらけ ガッタガタのインデント 番外編 黒魔術 ある…