約 4,299,276 件
https://w.atwiki.jp/sevenlives/pages/282.html
ソースコード【source code】 読み:そーすこーど, こーど, そーすぷろぐらむ 英語:source code 別名:ソース, ソース・プログラム 意味: ソースコードとはプログラミング言語で書かれた、プログラムの内容のこと。 ソフトウェアやモジュールの設計図にあたる。 そのプログラミング言語の文法にしたがって厳密に書かれている。 書かれたコードはコンパイラなどを得てコンピュータに解る言語に解釈され、実行される。 2008年01月03日 スケルトン・コード? オブジェクト・コード? コンパイル
https://w.atwiki.jp/m_shige1979/pages/1365.html
Bitbucket 概要 ソースコード 管理 初期設定 使用方法 参考 http //www.atlassian.com/ja/software/bitbucket/overview
https://w.atwiki.jp/minikappa/pages/17.html
Cソーステスト #include stdio.h #include windows.h #define NAME "test" int main(){ while(1){ printf("\r%s\n","abc"); } return 0; } C++ //test.cpp #include iostream using namespace std; int main(){ cout "test" endl; return 0; }
https://w.atwiki.jp/kane2008/pages/20.html
コメント行やソースのインデントなどを自動調整してくれます。 エディター内で Ctrl+Shift+F を押すと、 ソースコードのコメントやインデントを自動調整してくれます。 見やすいソースコードを提出するためには、 まずこの機能を使って大まかに調整してから 自分で調整するといいと思います。 ●実行前 imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (006.jpg) ●実行後 imageプラグインエラー ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (007.jpg)
https://w.atwiki.jp/bannerlord/pages/85.html
dnSpy の準備 解析Search Analyze 前回は、C# MOD 制作の基本的な作業手順を学びました。次に気になるのは、「じゃあ具体的には、どんなことを、どんな風にプログラミングをするとゲームを改造できるのか?」ではないでしょうか。 しかし、ゲームの内容を改造するには、まずその内容自体を知っていなければなりません。そこで必要となるのが、.NET デコンパイラというツールです。これを使うと、.NET プログラムからソースコードをある程度復元できます。 .NET デコンパイラには幾つか種類があるようですが、ここでは dnSpy を使っていきます。 dnSpy の準備 dnSpy は GitHub からダウンロードできます。確認した時点では、 dnSpy-net-win32 dnSpy-net-win64 dnSpy-netframework の 3 種類ありましたが、dnSpy-netframework を選んでください。 ZIP をお好みの場所に展開して dnSpy.exe を起動します (インストール作業は特に必要ありません)。 File メニューから Open... を選択し、以下のフォルダにある DLL を全て開いてください [Bannerlord インストールフォルダ]\bin\Win64_Shipping_Client (TaleWorlds.○○.dll だけでよい) [Bannerlord インストールフォルダ]\Modules\CustomBattle\bin\Win64_Shipping_Client [Bannerlord インストールフォルダ]\Modules\Native\bin\Win64_Shipping_Client [Bannerlord インストールフォルダ]\Modules\SandBox\bin\Win64_Shipping_Client [Bannerlord インストールフォルダ]\Modules\SandBoxCore\bin\Win64_Shipping_Client (筆者の環境ではここは空っぽ) [Bannerlord インストールフォルダ]\Modules\StoryMode\bin\Win64_Shipping_Client ここまでで画面はこんな感じになっているかと思います。(画像は一部加工してあります) 下部に Search ボックスが表示されていない場合は、Edit メニューから Search Assemblies で表示できます。 解析 Search それでは、とりあえずパークのデータでも探してみましょう。 Search ボックスに perk と入力してください。名前に perk が含まれているものが一覧表示されます。ですが、これでは数が多すぎて何が何やら分かりません。Search For ドロップダウンリストを All of the Above から Class に変えましょう。これで多少は絞り込めます。 検索結果をスクロールしていくと、Athletics や Bow などと付いたクラスが見つかります。どうやら、DefaultPerks というのがパークに関係するクラスのようです。Search 結果の一覧から DefaultPerks をダブルクリック (あるいは、右クリック - Go to Reference) しましょう。DefaultPerks クラスのソースコードが表示されるはずです。 今度は DefaultPerks クラスのソースを見ていきましょう。 スクロールしていくと、InitializePerks() というメソッドが見つかります。これが、パークの名前や対象、効果の度合い (マグニチュード) を設定している場所です。OneHandedDeflect や OneHandedBasher など、各フィールドがデータを保持しています。 Analyze 各フィールドにパークの設定値が格納されているのは分かりましたが、その設定値がどういう風に使われるのか、つまり、パークの効果そのものの定義も見つけなければなりません。そんな時に役立つのが Analyze です。 試しに、InitializePerks() の最初にある OneHandedDeflect フィールドを右クリックし、Analyze を選択してみましょう。 下のタブが Search から Analyzer に切り替わり、ツリーが表示されます。 Assigned By はフィールドに値が割り当てられた場所、Read By は値が読み取られている場所です。今は OneHandedDeflect フィールドが使われている場所を探したいので、Read By を開きます。さらに get_Deflect() の Used By を開くと、GetEffectiveSkill() と GetPerkEffectsOnAgent() が見つかりました。この二つのメソッドが、Deflect の設定値を参照している場所、すなわち、Deflect の効果を処理している場所です。 必要に応じて検索対象を絞り込みつつ Search で当たりをつけて、Analyze で処理を追う、これが解析の基本的な流れとなります。改造したい部分をそうやって見つけ出し、そのクラスなり、メソッドなりをオーバーライドすることで、MOD としての処理を実現するのです。 ちなみに、ここまで例として挙げてきた DefaultPerks クラスですが、継承できるクラス設計にはなっていないため、(少なくとも、TaleWorlds が提供している MOD 実装方法の範疇では) 改造できません。 次の記事 名前
https://w.atwiki.jp/kabutempra/pages/151.html
練習用ページ(ソースコードモード)
https://w.atwiki.jp/hengtouhou/pages/2363.html
概要 ソースコードのダウンロード 読解にあると便利なもの 読解のための参考文書 読解事例各verの更新事項 職業(ユニーククラス)関係ステータス補正など レベルごとの特殊能力など クエスト「古い城」の報酬 職業特技 専用格闘パターン 特別なアイテムドロップ処理特定モンスターによる特定アイテムドロップ 銃の特別ドロップ 特定ユニークによる特定★ドロップ 属性モンスターが受ける場合 プレイヤーが受ける場合 モンスターの魔法など幻想蛮怒新規追加の魔法 「特別な行動をすることがある」の内容 「救援召喚」の特殊処理 出典(念のため) 概要 ゲームの内部事情に興味があって、幻想蛮怒のソースコードを読むのにちょっとトライしてみたいなと思う方向けの記事です。ソースコードの導入(DL)方法、読むのに便利なもの、いくつかの読解事例を紹介します。 ※以下の内容はv2.0.12のものを題材にして記述しています。「◯行目」のようなところが徐々に乖離していくと思いますが、ご承知おきください。 ソースコードのダウンロード 幻想蛮怒配布サイトの下部「ソースコード」からのリンクを辿ってgithubへ。top画面の中央右より「Code」 「Download ZIP」でファイル一式をダウンロードできます。解凍した中身のうち、「src」フォルダの中身が今回の対象です。どのファイルもwindows付属のメモ帳で開けますが、そのまま/それだけだとかなり読みづらいですので、以下の「あると便利なもの」も導入することをお勧めします。 図 ソースコード一式のダウンロード 読解にあると便利なもの テキストエディタ メモ帳も広義ではテキストエディタですが、ここではプログラミング向けの高機能なものをいいます。プログラム言語の構文を見やすく可視化してくれるので、可読性が劇的に向上します。「テキストエディタ」でweb検索すると、お勧め紹介サイトがたくさん出てきます。どれでも大丈夫ですが、「プログラミング」とか「コーディング」みたいな言葉が併記されていたり、使用画面のスクリーンショットで文字がカラフルになっているやつだと間違いありません。 図 左=win11付属メモ帳、右=テキストエディタ(TepaEditor) grepツール ファイルを横断して文字列を検索することができるツールです。これも「grepツール」で検索すると色々出てきます。↑のテキストエディタの中でも高機能なものには備えているものもあるようです。本稿ではこれを使うほどの読解はほぼ扱わないのですが、ある処理の中で別のファイルにある処理を行う、ということがよくありますので、そういうのを読み進める時に便利です。また、ゲーム内で気になるメッセージを見た時に、それで検索を掛けて、起こった事象の内実を読み解くようなことにも使えます。 図 grepツール(TresGrep)でアレを食らった時のメッセージを検索した例 読解のための参考文書 この記事では個別の読解事例を例示するだけですが、おそらく本業とされている方が書いていると思しき、プログラムをプログラムとして読み進める作法を、ローグライクを題材にして解説した記事を紹介します。 書けるようにならないC言語入門(「だんじょんひらおよぎ」内記事) なお、幻想蛮怒のソースコードは、幻想蛮怒で新規に取り入れられた要素については、作者さんが丁寧にコメントを入れていて、その処理で意図していることや通常プレイにおける結論がほぼ確実に書かれています。そのため、文法がわからなくても書いてあることがわかることが多いです。また、ゲーム攻略的にほしい情報は、この後に示すように、その多くがデータ群が決まった型に並んでいる形です。まずは先行の読解事例を参考にしながら自分で開いてみることをお勧めします。 読解事例 各verの更新事項 githubの幻想蛮怒top画面の「asamayim」のリンクを踏むと、これまでの更新verが上から新しい順に並んでいます。所望のバージョン(v2.0.12とか)のリンクをたどると、内容に更新があったソースコードのファイルと、その変更箇所を確認できます。また、各verの右にある「 」から、上の「ソースコードのダウンロード」と同様の方法で、当該バージョンのソースコード一式をダウンロードすることができます。 図 リンクのたどり方 図 各verの更新事項の様子(v2.0.12) 職業(ユニーククラス)関係 ステータス補正など ファイル名 tables.c 記述箇所冒頭 const player_class class_info[MAX_CLASS] 一連のデータが並んでいる箇所の冒頭部分の文字列です。これで検索するとverが変わっても見つけやすいはずです。以下、同じ。 解説 2430行目から各クラスの能力修正など一式がならんだデータ群があります。最初から戦士、メイジ、神官(巫女)・・・と一般職が続き、3195行目から宵闇の妖怪(ルーミア)、半人半霊の庭師(妖夢)・・・とユニーククラスが出てきます。ちなみに1556行目からは種族の能力修正など一式が似たような感じで並んでいます。データ群の冒頭のところに簡単に読み方が記載されているので、ついでに見てみてはどうでしょうか。 読解例 5386行目~「森で垂迹した魔法地蔵」 レベルごとの特殊能力など ファイル名 xtra1.c 記述箇所冒頭 職業とレベル毎の耐性を計算 解説 4986行目から各クラスのレベル毎に得られる特性についてのデータ群があります。最初に「case CLASS_WARRIOR」つまり「職業 戦士の場合は以下のようにする」とあり、以下「case CLASS_ARCHER」「case CLASS_PRIEST」…と続き、5149行目から「case CLASS_RUMIA」と以降ユニーククラスのデータが並びます。ちなみに上記のように「CLASS_XXXX(東方キャラ名)」以下でユニーククラスに関する個別の扱いの記述がされていることが多いので、色々自分で調べる場合は覚えておくといいと思います。特殊性格や、聖の転読のようにレベルごとに強化内容が進化していくバフの効果の内容なんかもここに同様の形で書かれています 読解例 5186行目~ 華仙 クエスト「古い城」の報酬 ファイル名 cmd2.c 記述箇所冒頭 else if(o_ptr- sval == SV_CHEST_OLDCASTLE) 解説 807行目から戦士「if(p_ptr- pclass == CLASS_WARRIOR)」、騎兵「if(p_ptr- pclass == CLASS_CAVALRY)」と、「if … CLASS_XXXX」を目印にした箇条書きで記載されています。905行目以降、華仙「CLASS_KASEN」を筆頭にユニーククラスが並んでいます。 実は一連の内容は、「箱を開ける」という行為の処理内容の一環として書かれており、この内容の前後には他のクエスト報酬の箱やMARIPOの箱の中身についても列記されています。なお、多分この内容については、所望のクラスのキャラを作り、ウィザードモードで「大きな葛籠=古い城の報酬箱」を生成して開けるのが早いと思います。 読解例 912~933行目 職業特技 ファイル名 new_class_power.c 記述箇所冒頭 ファイル冒頭から記述が始まっている。 個別の職業・キャラは「class_power_type class_power_xxx[] =」(xxxをキャラ名・クラス名に置き換える) 解説 冒頭に概要的なコメントが少々あって、17行目から慧ノ子の内容の記述が始まります。各クラス毎にまず、技の名称、習得レベル、コスト、説明などがカンマ区切りでまとめられたデータ群があり、その後に各特技の個別の処理内容が書かれている、という形です。 読解例 1248行目~ 飯綱丸 この一連のデータ群の下に、各特技の処理内容が記載されていますが、多種多様にわたり発散してしまうので、ここでは割愛します。多くの場合、威力、効力、効果時間の計算式が書かれています。計算式のところでよく使われる書かれ方をいくつか紹介しておきます。 plev や p_ptr- lev:プレイヤーのレベル chr_adj:魅力影響値 randint1(xxx):1~xxxの乱数。1d(xxx)と同じ randint0(xxx):0~(xxx -1)の乱数。1d(xxx) -1 と同じ DETECT_RAD_DEFAULT:感知系特技のデフォルト効果範囲、つまり30 ちなみにこの「new_class_power.c」の下の方(36062行目以降)にはEXTRAモード時のアイテムカードのデータ群があります。アイテムカードは基本的にユニーククラスの職業特技の一部を切り出して行使するものなので、このファイル内にまとまっているようです。 専用格闘パターン ファイル名 cmd1.c(条件分岐), table.c(個別の格闘パターン内容) 記述箇所冒頭 cmd1.c(条件分岐) int find_martial_arts_method(int findmode) table.c(個別の格闘パターン内容) const martial_arts_new ma_blows_new[] 解説 格闘及び格闘パターン一覧を参照のこと。 特別なアイテムドロップ処理 この部分はモンスターの固定ドロップアイテムを参照すると理解が深まると思います。 特定モンスターによる特定アイテムドロップ ファイル名 xtra2.c 記述箇所冒頭 case MON_MORGOTH 解説 2264行目から、『モルゴス』が★グロンドを落とす処理(case MON_MORGOTH )を筆頭に、「case_MON_XXXX」を区切りとした箇条書きで『混沌のサーペント』、デスソード…と2974行目まで続きます。この部分は特定モンスターによる特定アイテムドロップに相当します。モンスターを撃破したときの処理の一環として書かれているので、この上の方には『ロレント』が自爆する処理なんかも書かれています。 読解例 2664行目~ 魔理沙 銃の特別ドロップ ファイル名 xtra2.c 記述箇所冒頭 if (drop_chosen_item !gun_free_world) 解説 2997行目から、特定のモンスターが銃をドロップする処理が並んでいます。『清蘭』(case MON_SEIRAN)、『鈴瑚』(case MON_RINGO)が高級品確定のルナティックガンを落とす処理から、『うどんげ』、イーグルラヴィ…と同じく「case_MON_XXXX」を区切りとした箇条書きが3066行目まで続きます。 読解例 3006行目~『清蘭』、『鈴瑚』 ※この2体はこれに加え、↑の処理の中で杵や団子を落とす処理が設定されている 特定ユニークによる特定★ドロップ ファイル名 xtra2.c 記述箇所冒頭 さらに別の分岐でアイテムドロップ処理 解説 3114行目から、特定のモンスターが特定の★を落とす処理が書かれています。ここでは各モンスターの処理の中に「chance = 50」などと書かれており、乱数0~99 chanceなら落とす、という処理がなされます(この場合は落とす確率50%)。『オベロン』が確定で★アンバー冠か★審判の宝石を落とす処理(case MON_OBERON)から始まり、以下3495行目まで続きます。この部分は特定ユニークによる特定★ドロップに相当します。 読解例 3251行目~ 『ブランド』 属性 「spells1.c」にモンスターが受けた場合と、プレイヤーが受けた場合について書かれています。それぞれ「case GF_XXXX(例えば火炎属性ならGF_FIRE)」を区切りとして箇条書き的に書かれています。複雑な処理も多いので、ここでは比較的簡単なものを例示するに留めます。 モンスターが受ける場合 ファイル名 spell1.c 記述箇所冒頭 Analyze the damage type 解説 2664行目から始まり、以下8975行目まで膨大な数の属性の処理内容が続きます。全耐性持ち(=はぐれメタル)、通常耐性持ち、弱点持ち、普通に効く場合、というように条件ごとに「if」で仕切られて書かれています。 読解例 3310行目からの水属性(GF_WATE) プレイヤーが受ける場合 ファイル名 spell1.c 記述箇所冒頭 bool project_p(int who, cptr who_name, int r, int y, int x, int dam, int typ, int flg, int monspell) 解説 9797行目から記述が始まります。最初200行程度は烏天狗のボルト無効化のような特別な防御処理について書かれており、10050行目から属性の各論に入り、2000行あまり続きます。最初に攻撃を正しく視認していない場合のメッセージがあり、その後耐性がある場合、そうでない場合のダメージ、そして追加効果、のような流れで記載されています。 読解例 10156行目からの汚染属性(GF_POLLUTE) モンスターの魔法など 「mspells1.c」の2720行目から記載されています。「case xxx(xxxは内部的な番号)」で仕切られて列記されています。多くのモンスターの攻撃魔法は変愚蛮怒と共通しているので、幻想蛮怒プレイヤーにとって重要と思われる箇所をピックアップしておきます。 幻想蛮怒新規追加の魔法 ファイル名 mspells1.c 記述箇所冒頭 case 192+0 解説 6401行目から記載されています。なお、従来の内部番号を使い切ったために新たな番号を起こしたという感じのようで、これより前のところに書かれているものもいくらかあります(コズミックホラーなど)。 読解例 6499行目からの原子分解 「特別な行動をすることがある」の内容 ファイル名 mspells1.c 記述箇所冒頭 RF6_SPECIAL 解説 4811行目から記載されています。原作ネタをモンスターの技でどう表現するか、という点でなかなかの見どころだと思いますし、今後も追加が期待されるところでもあります。 読解例 5064行目~ 『奥野田 美宵』の酒を飲ましてくる特技 「救援召喚」の特殊処理 ファイル名 mspells1.c 記述箇所冒頭 RF6_S_KIN 解説 「救援召喚」は通常は使用者と同じシンボルのモンスターを召喚するものですが、特殊処理で特定のモンスターを呼ばせる設定が多数なされています。 5477行目から記載されています。 最初約100行は使用した時のメッセージが特別なものになるものが列記されています(例 『アリス』が使用する場合の「『アリス』が人形達を呼び出した。」)。 その後、5561行目から個別の召喚内容が書かれています。 読解例 5563行目~ 大鷲ユニークと『マミゾウ』 ここだけでは少しわからないところが残りますね。大鷲ユニークの場合の「SUMMON_EAGLES」、『マミゾウ』の場合の「MON_TANUKI」、「MON_O_TANUKI」の中身が具体的には何なのか、です。こういう時に、最初に紹介した「grepツール」で検索すると答えが見つかります。前者は「monster2.c」の691行目からのデータ群の中の969行目で規定されていて、「Bシンボル 且つ 山 且つ 野外 のモンスター」となっています(結果的に、鷲、大鷲、自身より下位の大鷲ユニークが出てきます)。後者は「defines.h」内でモンスターのIDで規定されています。具体的には「No. 1228 妖怪狸」と「No. 1229 妖怪古狸」です。 出典(念のため) この記事は「Roguelike Advent Calendar 2023」向けに投稿された記事を、筆者本人がこのwiki向けに移植したものです。無断転載とかそういう問題はありませんのでその点安心してください。(リンクは張りません。PV稼ぎみたいにみえるのも嫌なので。)
https://w.atwiki.jp/ppsspp-tips/pages/44.html
Ubuntu/ソースコードからビルドする 概要 ソースコードからビルドする Flatpak を使う この記事では Ubuntu 上でソースコードからビルドする方法を說明します。記事を書くにあたって、公式リポジトリのBuilding for macOS - Build instructions | GitHubを参考にさせていただきました。ありがとうございます。 この記事の動作環境 Ubuntu 20.04.2 LTS 必要なもの Ubuntu ビルドに必要なソフトウェア build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-dev Git Python 3 Ubuntu にはデフォルトでインストールされてるため、インストールする必要はありません。 導入手順 1. ビルドに必要なソフトウェアをインストールする Debian 系ディストロ用のパッケージマネージャであるaptを使用してインストールします。 1-1. Git をインストールする Ubuntu にはデフォルトでインストールされていないため、手動でインストールする必要があります。 Ubuntu Dock Dash(左下のグリッドボタン) Utilities Terminal を開く git --versionをコピペしてEnter バージョンが表示さればすでにインストールされているので、スキップしてください。 sudo apt install -y gitをコピペしてEnter 管理者権限が要求されるので、パスワードを入力してEnter 1-2. そのほかのパッケージをインストールする Ubuntu Dock Dash Utilities Terminal を開く sudo apt install -y build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-devをコピペしてEnter 2. ソースコードをビルドする 2-1. リモートリポジトリをクローンする リポジトリのサイズが大きいため、安定した Wi-Fi 環境などで実行することをおすすめします。今回は分かりやすいように~/Desktopにクローンしてみます。もちろん、他のフォルダでも構いません。 Ubuntu Dock Dash Utilities Terminal を開く cd ~/DesktopをコピペしてEnter git clone --recurse-submodules https //github.com/hrydgard/ppsspp.gitをコピペしてEnter 補足:Git で公式リポジトリからソースコードをクローン(ダウンロード) 処理が終了するまで待つ 2-2. クローンしたソースコードをビルドする Ubuntu Dock Dash Utilities Terminal を開く cd ~/Desktop/ppssppをコピペしてEnter ./b.shをコピペしてEnter 処理が終了するまで待つ ビルドが完了すると、ppsspp/buildフォルダ内にPPSSPPSDLが生成されます。 3. PPSSPP を起動する ターミナルから起動する ターミナルから起動すると、PPSSPP のデバッグログが出力されます。 Ubuntu Dock Dash Utilities Terminal を開く ~/Desktop/ppsspp/build/PPSSPPSDLをコピペして Enter 他のフォルダにクローンした場合は、/ppssppまでを読み替えてください。 管理者権限で起動する場合はsudo ~/Desktop/ppsspp/build/PPSSPPSDLをコピペしてください。 注意:管理者権限で起動すると、~/.config/ppssppの代わりに/root/.config/ppssppが使用されます。 保守作業 PPSSPP をアップデートする ローカルリポジトリを最新のものに更新して、ソースコードをビルドし直します。 Ubuntu Dock Dash Utilities Terminal を開く cd ~/Desktop/ppssppをコピペしてEnter git pull --rebase https //github.com/hrydgard/ppsspp.gitをコピペしてEnter git submodule update --init --recursiveをコピペしてEnter (5-2)の手順に従ってビルドする PPSSPP をアンインストールする ローカルリポジトリを削除し、ビルドに必要なライブラリとソフトウェアをアンインストールします。この作業で設定やセーブデータなどは削除されません。 1. ローカルリポジトリを削除 Nautilus(ファイルマネージャ)を開く リポジトリをクローンしたフォルダまで移動 「ppsspp」フォルダを右クリックして「ゴミ箱に入れる」をクリック デスクトップのゴミ箱を右クリックして「ゴミ箱を空にする」をクリック 2. ビルドに必要なライブラリとソフトウェアを削除する Ubuntu Dock Dash Utilities Terminal を開く sudo apt remove build-essential cmake libgl1-mesa-dev libsdl2-dev libvulkan-dev gitをコピペしてEnter 管理者権限が要求されるので、パスワードを入力してEnter sudo apt autoremoveをコピペしてEnter メモ 「memstick」フォルダのパス v1.11.3では、macOS と同じフォルダに「memstick」フォルダが作成されていました。 ~/.config/ppsspp └─ PSP ├─ PPSSPP_STATE ├─ SAVEDATA └─ SYSTEM ├─ controls.ini └─ ppsspp.ini 管理者権限(sudo)で使用される「memstick」フォルダのパス Linux ではウェルノウンポートを使用するために、アプリケーションを管理者権限で起動する必要があります。しかし、PPSSPP を管理者権限(sudo)で起動すると、ユーザのホームディレクトリにある「memstick」フォルダは使用されません。代わりに/rootにある「memstick」フォルダが使用されます。セーブデータや PPSSPP の設定、キーコンフィグなどが、リセットされたように見えるため気をつけてください。また/rootフォルダへのアクセスには管理者権限が必要です。 /root/.config/ppsspp └─ PSP ├─ PPSSPP_STATE ├─ SAVEDATA └─ SYSTEM ├─ controls.ini └─ ppsspp.ini
https://w.atwiki.jp/guide/pages/2989.html
プラグインを利用して一部にソースコードを表示する方法 アットウィキモード・pukiwikiライクモードの場合、ハイライトプラグインを利用することで部分的にソースコードモードと同様の表示にすることができます。 ハイライトプラグイン (highlight) プラグインを使った編集例 ハイライトプラグイン (highlight) 記述方法 #highlight(){ プログラムソースコードを記述 } ソースコード内に{や}が含まれる場合には #highlight(){{ プログラムソースコードを記述 }} とご入力ください。 ()内に以下のパラメーターを記述することで動作を変更できます。 パラメーター 説明 linenumber 行番号を表示します プログラム言語名 ソースコードの言語を指定します。例) html,css,php,java 等 詳しくはプラグイン一覧のソースコードハイライトをご覧ください。 プラグインを使った編集例 #highlight(){ echo "----"; } と入力すると echo "----"; と表示されます #highlight(linenumber,php){{ function hoge(){ echo "----"; echo "----"; } }} と入力すると function hoge(){ echo "----"; echo "----";} と表示されます #highlight(linenumber,css){{{ .class1{ color #FFFFFF; } }}} と入力すると .class1{ color #FFFFFF;} と表示されます #highlight(xml,linenumber){{ xml aaa bbb a="b" / /aaa /xml }} と入力すると xml aaa bbb a="b" / /aaa /xml と表示されます
https://w.atwiki.jp/sylvarant/pages/50.html
#include stdio.h #include conio.h int calend[7][8]={0}; char shift[7][8]={0}; int month_data(char x[]); int month_days(int a,int b); int yoobi_keesan(int year,int month); int urudosi (int year); void make_calender(int days,int yoobi); void print_calender(int seheF,int year,int month); void main (void) { int c=0,c2=0,year,month,days,heseF=0,yoobi; printf("シフト作成プログラム ver 1.00\n"); while(1) { year = month_data("年"); //年の入力 if(2012 = year year = 2030) { break; } else if(24 = year year = 40) { heseF=1; year = year + 1988; break; } else { printf("ERROR!!\n"); } } while(1) { month = month_data("月");//月の入力 if(1 = month month = 12) { break; } else { printf("ERROR!!\n"); } } days = month_days(month,year);//日数の計算 yoobi = yoobi_keesan(year,month);//曜日計算 make_calender(days,yoobi);//表作る。(配列) print_calender(heseF,year,month); getch(); //時間入れる。 // Z = 空白 =もう一つ配列を作る。 } int month_data(char x[]) { int a; printf("%sを入力...",x); scanf("%d", a); return a; } int month_days(int a, int b) //a=month b=year { if( a==1 || a==3 || a==5 || a==7 || a==8 || a ==10 || a==12) { return 31; } else if( a==2 ) { return (urudosi(b)+28); } else { return 30; } } int yoobi_keesan(int year ,int month) //2012/01/01 =sun { int x,ycnt,mcnt=1,dcnt=0,tmp[13]={31,28,31,30,31,30,31,31,30,31,30,31}; ycnt=2012; while(ycnt year) { x=urudosi(ycnt); dcnt=dcnt+x+1; ++ycnt; } while(mcnt month) { if(mcnt==2) { dcnt=dcnt+urudosi(year); ++mcnt; } else { dcnt=dcnt+(tmp[mcnt-1]); ++mcnt; } } dcnt = dcnt % 7; return dcnt; } int urudosi (int year) { if((year%4==0 year%100!=0) || year%400==0)//うるう年の計算をする。 { return 1; } else { return 0; } } void make_calender(int days ,int yoobi) { int dayscnt=1,x=0,y=0; while(x yoobi)//一行目の空白を配列に格納 { calend[y][x]=0; ++x; } while(dayscnt =days)//配列に格納 { if(x==7) { calend[y][x]=0; x=0; ++y; } else { calend[y][x]=dayscnt; ++dayscnt; ++x; } } while(x 7) { calend[y][x]=0; ++x; } calend[y][x]=-1; return; } void print_calender(int heseF,int year,int month) { int x=0,y=0,mspace=0; printf("\n\n\n\n\n "); if(heseF==1) { year = year - 1988; printf("H"); } printf("%d %d月\n\n",year,month); printf(" ______________________________________ \n"); printf("| 日 | 月 | 火 | 水 | 木 | 金 | 土 |\n"); printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); while(calend[y][x]!=-1) { if(x==7)//右側の縦線を出力 メモ枠の確保。 { while(mspace 3) { printf("|\n");//右側の縦線を出力 x=0; while(x!=7)//メモ枠の確保。 { printf("| "); ++x; } ++mspace; } printf("|\n"); x=0; ++y; mspace=0; printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); } else if(calend[y][x]!=0)//日付がある日を出力 { printf("|"); if(calend[y][x] =9) { printf(" "); } printf("%d ",calend[y][x]); ++x; } else if(calend[y][x]==0)//日付のない日を出力 { printf("| "); ++x; } } printf("|"); if(x==7)//右側の縦線を出力 メモ枠の確保。 { while(mspace 3) { printf("|\n");//右側の縦線を出力 x=0; while(x!=7)//メモ枠の確保。 { printf("| "); ++x; } ++mspace; } printf("|\n"); x=0; ++y; mspace=0; printf("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \n"); } return; }