diff --git a/Codes.xml b/Codes.xml
index bec9abd..af05e21 100644
--- a/Codes.xml
+++ b/Codes.xml
@@ -4348,4 +4348,257 @@
041B4CF4 4800004C
+
+ qol
+ recommended
+ Pattern Selector
+ パターン選択
+ sup39[サポミク]
+ 0.1.3
+ Feb 06, 2022
+
+ ![Preview](/img/PatternSelector/preview.jpg)
+
+ Ⓑ is the cursor to select the pattern,
+ and the three digits are the numbers representing the pattern.
+ See [#Pattern](#pattern) for more information.
+
+ | Combination | Result |
+ |---------------|-------------------------------------------------|
+ |L + D-Pad Left |Move cursor(Ⓑ) one digit to the left |
+ |L + D-Pad Right|Move cursor(Ⓑ) one digit to the right |
+ |L + D-Pad Up |Increase the number at the right of the cursor(Ⓑ)|
+ |L + D-Pad Down |Decrease the number at the right of the cursor(Ⓑ)|
+
+ When the cursor(Ⓑ) is not shown, you can press L+D-Pad Left/Right to make it appear.
+
+ ## Pattern {#pattern}
+ ### Chain Chomp (PV4)
+
+ Use the [1st digit]{.emph} to select the pattern. The 2nd and 3rd are ignored.
+
+ |1st digit|Direction at the beginning|
+ |:-------:|:------------------------:|
+ | 1 | ← |
+ | 2 | ↑ |
+ | 3 | → |
+ | o.w. | Random |
+
+ ### Chain Chomplets (PV1)
+ Each digit represents the pattern of each Chain Chomplet.
+ Numbers not on the graph (e.g. 0) mean random.
+
+ #### 1st digit
+ %object[]{data="/img/PatternSelector/PV1-1.svg"}
+
+ #### 2nd digit
+ %object[]{data="/img/PatternSelector/PV1-2.svg"}
+
+ #### 3rd digit
+ %object[]{data="/img/PatternSelector/PV1-3.svg"}
+
+
+ ![プレビュー](/img/PatternSelector/preview.jpg)
+
+ Ⓑはパターンを選択するためのカーソルであり、三つの数字はパターンの番号を表します。
+ 各パターンの番号は[#パターン](#pattern)を参照してください。
+
+ | ボタン | 動作 |
+ |--------------|------------------------------|
+ |L + 十字キー左|カーソル(Ⓑ)を左一桁に移動 |
+ |L + 十字キー右|カーソル(Ⓑ)を右一桁に移動 |
+ |L + 十字キー上|カーソル(Ⓑ)の右の数字を1増やす|
+ |L + 十字キー下|カーソル(Ⓑ)の右の数字を1減らす|
+
+ カーソル(Ⓑ)が表示されない時、L+十字キー左/右を押せば出てきます。
+
+ ## パターン {#pattern}
+ ### ワンワン(PV4)
+
+ [1桁目]{.emph}でパターンを選択します。2桁目と3桁目は無視されます。
+
+ | 1桁目 | 最初の向き |
+ |:-------:|:----------:|
+ | 1 | ← |
+ | 2 | ↑ |
+ | 3 | → |
+ | その他 | ランダム |
+
+ ### キャンキャン(PV1)
+ 各桁は各キャンキャンのパターンを表します。図上にない数字(例えば0)はランダムを表します。
+
+ #### 1桁目
+ %object[]{data="/img/PatternSelector/PV1-1.svg"}
+
+ #### 2桁目
+ %object[]{data="/img/PatternSelector/PV1-2.svg"}
+
+ #### 3桁目
+ %object[]{data="/img/PatternSelector/PV1-3.svg"}
+
+
+
diff --git a/Readme.md b/Readme.md
index 92e802f..f7260d8 100644
--- a/Readme.md
+++ b/Readme.md
@@ -37,7 +37,7 @@ Some codes store some states in the games memory starting from address 0x817F000
| ![](./docs/unallocated.svg) | `0x24` | `0x93` | Not Allocated |
| ![](./docs/reserved.svg) | `0x94` | `0xA3` | QF Timer: Coordinates of the Text box (LTRB) |
| ![](./docs/reserved.svg) | `0xA4` | `0xB0` | QF Timer: Timer Format String |
-| ![](./docs/reserved.svg) | `0xB0` | `0xB0` | QF Timer: (Unused) |
+| ![](./docs/reserved.svg) | `0xB1` | `0xB1` | QF Timer: (Unused) |
| ![](./docs/reserved.svg) | `0xB2` | `0xB2` | QF Timer: Stop at QFT Offset |
| ![](./docs/reserved.svg) | `0xB3` | `0xB3` | QF Timer: Restart Flag |
| ![](./docs/reserved.svg) | `0xB4` | `0xB7` | QF Timer: Cumulative time of previous areas since last reset (QFT Offset) |
@@ -49,8 +49,9 @@ Some codes store some states in the games memory starting from address 0x817F000
| ![](./docs/reserved.svg) | `0x102` | `0x10B` | Ingame Timer: Stopwatch Backup |
| ![](./docs/reserved.svg) | `0x10C` | `0x10C` | Ingame Timer: Stop Stopwatch Flag |
| ![](./docs/buffer.svg) | `0x10D` | `0x10F` | Buffer (Ingame Timer) |
-| ![](./docs/reserved.svg) | `0x110` | `0xA4F` | QF Timer: Timer Textbox |
-| ![](./docs/unallocated.svg) | `0xA50` | `0xFFF` | Not Allocated |
+| ![](./docs/reserved.svg) | `0x110` | `0x237` | QF Timer: Timer Textbox |
+| ![](./docs/reserved.svg) | `0x238` | `0x34B` | General Function (`drawText`) |
+| ![](./docs/unallocated.svg) | `0x34C` | `0xFFF` | Not Allocated |
### Adding translations
diff --git a/package-lock.json b/package-lock.json
index 9a0861c..d3364a7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,8 @@
"vuedraggable": "^2.24.3"
},
"devDependencies": {
+ "@sup39/markdown-it-attr": "^1.2.2",
+ "@sup39/markdown-it-inline-tag": "^1.0.1",
"@vuepress/plugin-back-to-top": "1.9.7",
"@vuepress/plugin-medium-zoom": "1.9.7",
"jsdom": "19.0.0",
@@ -1694,6 +1696,18 @@
"node": ">=6"
}
},
+ "node_modules/@sup39/markdown-it-attr": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@sup39/markdown-it-attr/-/markdown-it-attr-1.2.2.tgz",
+ "integrity": "sha512-B4vq2D4SJzduHStuKxyMZF5XnMZx/TibMfr3YjS0vbrnhhAA39nxF/NKqhyC0lOt5rjMKMAKUvtoucV/JSbUQA==",
+ "dev": true
+ },
+ "node_modules/@sup39/markdown-it-inline-tag": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@sup39/markdown-it-inline-tag/-/markdown-it-inline-tag-1.0.1.tgz",
+ "integrity": "sha512-p0KI1y1WcPkVZYYkZczelUn8LpLvS69KVl+aqb3onF/v6mFLYJDVrkg3AsXXux7Wk7i5fvzwypAYMcpNwkoz5A==",
+ "dev": true
+ },
"node_modules/@szmarczak/http-timer": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
@@ -17602,6 +17616,18 @@
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
"dev": true
},
+ "@sup39/markdown-it-attr": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@sup39/markdown-it-attr/-/markdown-it-attr-1.2.2.tgz",
+ "integrity": "sha512-B4vq2D4SJzduHStuKxyMZF5XnMZx/TibMfr3YjS0vbrnhhAA39nxF/NKqhyC0lOt5rjMKMAKUvtoucV/JSbUQA==",
+ "dev": true
+ },
+ "@sup39/markdown-it-inline-tag": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@sup39/markdown-it-inline-tag/-/markdown-it-inline-tag-1.0.1.tgz",
+ "integrity": "sha512-p0KI1y1WcPkVZYYkZczelUn8LpLvS69KVl+aqb3onF/v6mFLYJDVrkg3AsXXux7Wk7i5fvzwypAYMcpNwkoz5A==",
+ "dev": true
+ },
"@szmarczak/http-timer": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
diff --git a/package.json b/package.json
index 73e1073..477e215 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,8 @@
},
"license": "Apache-2.0",
"devDependencies": {
+ "@sup39/markdown-it-attr": "^1.2.2",
+ "@sup39/markdown-it-inline-tag": "^1.0.1",
"@vuepress/plugin-back-to-top": "1.9.7",
"@vuepress/plugin-medium-zoom": "1.9.7",
"jsdom": "19.0.0",
@@ -32,5 +34,7 @@
"dependencies": {
"vuedraggable": "^2.24.3"
},
- "pre-commit": ["precommit"]
+ "pre-commit": [
+ "precommit"
+ ]
}
diff --git a/scripts/inject_codes.js b/scripts/inject_codes.js
index b9ba465..86fd1ea 100644
--- a/scripts/inject_codes.js
+++ b/scripts/inject_codes.js
@@ -5,7 +5,7 @@ const vuepressContainerPlugin = require('vuepress-plugin-container');
// These plugins have to match the ones used as extensions in .vuepress/config.js
const md = require('@vuepress/markdown')({
- plugins: ['attrs'],
+ plugins: ['@sup39/markdown-it-attr', '@sup39/markdown-it-inline-tag'],
});
const themePlugins = require(path.join(__dirname, '../site/.vuepress/data/themePlugins.json'));
diff --git a/site/.vuepress/config.js b/site/.vuepress/config.js
index 125c99f..aa75c96 100755
--- a/site/.vuepress/config.js
+++ b/site/.vuepress/config.js
@@ -18,7 +18,8 @@ module.exports = {
*/
markdown: {
extendMarkdown: (md) => {
- md.use(require('markdown-it-attrs'));
+ md.use(require('@sup39/markdown-it-inline-tag'));
+ md.use(require('@sup39/markdown-it-attr'));
},
},
diff --git a/site/.vuepress/public/img/PatternSelector/PV1-1.svg b/site/.vuepress/public/img/PatternSelector/PV1-1.svg
new file mode 100644
index 0000000..1756107
--- /dev/null
+++ b/site/.vuepress/public/img/PatternSelector/PV1-1.svg
@@ -0,0 +1,21 @@
+
diff --git a/site/.vuepress/public/img/PatternSelector/PV1-2.svg b/site/.vuepress/public/img/PatternSelector/PV1-2.svg
new file mode 100644
index 0000000..c942561
--- /dev/null
+++ b/site/.vuepress/public/img/PatternSelector/PV1-2.svg
@@ -0,0 +1,25 @@
+
diff --git a/site/.vuepress/public/img/PatternSelector/PV1-3.svg b/site/.vuepress/public/img/PatternSelector/PV1-3.svg
new file mode 100644
index 0000000..840f93b
--- /dev/null
+++ b/site/.vuepress/public/img/PatternSelector/PV1-3.svg
@@ -0,0 +1,21 @@
+
diff --git a/site/.vuepress/public/img/PatternSelector/PV1-base.jpg b/site/.vuepress/public/img/PatternSelector/PV1-base.jpg
new file mode 100644
index 0000000..546c98f
Binary files /dev/null and b/site/.vuepress/public/img/PatternSelector/PV1-base.jpg differ
diff --git a/site/.vuepress/public/img/PatternSelector/PV1.css b/site/.vuepress/public/img/PatternSelector/PV1.css
new file mode 100644
index 0000000..af98be8
--- /dev/null
+++ b/site/.vuepress/public/img/PatternSelector/PV1.css
@@ -0,0 +1,13 @@
+text {
+ text-anchor: middle;
+ dominant-baseline: central;
+ font-size: 200px;
+ fill: #f00;
+}
+.arrow {
+ fill: #f009;
+}
+.start circle {
+ r: 400;
+ fill: #f009;
+}
diff --git a/site/.vuepress/public/img/PatternSelector/preview.jpg b/site/.vuepress/public/img/PatternSelector/preview.jpg
new file mode 100644
index 0000000..c330b14
Binary files /dev/null and b/site/.vuepress/public/img/PatternSelector/preview.jpg differ