CTRPFを作っていた時につまずいた時の話です。 何があったのか いつからかCTRPFの選択式のキーボードは、このようにデフォルトで1番目の要素が選択されるようになっていました。 自分的に嫌なのでどうにか選択をクリアできないかと思い探してみると、 それっ…
完全に備忘録です。#1とありますが順番になっているわけではありません。内容はバラバラです。そもそも#2をかくかどうかすらわかりません。 今回はShader命令について書いていきます。オペランドの指定の仕方などはある程度はわかることを前提とします。 目…
3DSでマルチスレッディングを行う際に使用するEventについて書いていきます。 イベントの作成 Result svcCreateEvent(Handle* event, ResetType reset_type); 引数にポインタを渡して作成したイベントのハンドルを取得しましょう。ResetTypeについてはこちら…
ResetTypeとはlibctruで定義されているEventやTimerのリセットに使用される列挙型です。Eventのリセットに使用されるのは、 RESET_ONESHOT RESET_STICKY の2つです。今回はこの2つの違いについて書いていきます。 RESET_ONESHOT RESET_ONESHOTは、Signalが送…
3DSにはsvcSendSyncRequestというプロセス間通信に使用する関数があります。この関数ではセッションハンドルを用いて他プロセスに処理を頼んだり、情報を取得したりすることができます。このセッションハンドルは、svcConnectToPortまたはsrvGetSessionHandl…
GSPGPUってなんかいいですよね。 そんな中の関数の1つ!GSPGPU_FlushDataCache!これの正体はただ svcFlushProcessDataCacheを呼び出すだけなんです!通りで引数が一緒な訳ですね。終わり!
romfsとは、ゲームソフトにおける音楽やモデルのデータなどさまざまなものが入っているファイルである。ciaファイルにはromfsの他にもう1つ、exefsというものがあるが今回は触れない。romfsの抽出、展開はよくHackingToolkit9DSなどを用いて行われることが多…
C++をあまり理解せずにCTRPFを作ってる人がやりがちなことをまとめてみました。 あるある 謎の変数 バラバラな命名 Process::Write地獄 謎のoffset 謎の0x Keyboardのif地獄 キモイ命名 goto乱用 ローマ字だらけ ガッタガタのインデント 番外編 黒魔術 ある…
新版の3gx(Luma3DS v10以降で読み込める3gx)にはなんとデフォルトではシンボル情報が埋め込まれています。 シンボル情報とは? 簡単に言うと、関数や変数の名前、アドレスなどの情報です。 何ができる? シンボル情報を読み取るGhidraなどのリバースエンジニ…
CTRPF関数まとめ第3回です。 今回はOSD.hpp編です。目次 OSD.hppには何がある? 使い方 Screen::GetFramebuffer Screen::DrawPixel Screen::DrawRect Screen::Draw Screen::DrawSysfont Screen::ReadPixel Screen::Fade (CTRPF v0.7.1より追加) OSD.hppには…
CTRPF関数まとめのUtils.hpp編です。Utilsクラスには、便利な関数がたくさんあります。 目次: Utils::Format Utils::ToHex Utils::ToString Utils::Random Utils::Random Utils::FilePicker Utils::DirectoryPicker Utils::OpenInHexEditor (CTRPF v0.6.0よ…
日本語のLuma3DSの作成方法の記事が1つも無いので、作り方を軽く紹介します。今回はv9.1をビルドしていきます。※この記事では、devkitProとPythonがインストールされていることを前提として説明していくので、まだインストールしていない方はまずこの2つをイ…
CTRPFの関数について少し解説していこうと思います。いつまで続くかな? 間違いがあるかもしれませんが、ご了承ください。目次: Fileクラスとは? Fileクラスの使い方 File::Create File::Rename File::Exists File::Open File::Close File::Read File::Writ…