add PatternSelector

This commit is contained in:
sup39 2022-02-07 22:18:31 +09:00
parent 0850cb9bc9
commit e20e3e026d
12 changed files with 371 additions and 6 deletions

253
Codes.xml
View file

@ -4348,4 +4348,257 @@
041B4CF4 4800004C
</source>
</code>
<code>
<category>qol</category>
<presets>recommended</presets>
<title lang="en-US">Pattern Selector</title>
<title lang="ja-JP">パターン選択</title>
<author>sup39[サポミク]</author>
<version>0.1.3</version>
<date>Feb 06, 2022</date>
<description lang="en-US">
![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"}
</description>
<description lang="ja-JP">
![プレビュー](/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"}
</description>
<source version="GMSJ01">
<!-- drawText -->
077F0238 00000114
9421FED8 7C0802A6
BF810118 7C7F1B78
9001012C 7C9E2378
90C100B8 7CBD2B78
90E100BC 7D1C4378
912100C0 914100C4
40860024 D82100C8
D84100D0 D86100D8
D88100E0 D8A100E8
D8C100F0 D8E100F8
D9010100 39200600
390100BC B12100A0
39210130 912100A4
392100A8 912100A8
808D97F8 38E100B8
7FA6EB78 38A00000
38610008 6FDE8000
4A826AF5 3D204330
91210108 3D40817F
93C1010C 6FFF8000
C00A0348 38610070
C9810108 91210110
3D20817F 93E10114
FC4C0028 C0690344
C9810110 93A10064
FC2C0028 93A10060
4A8A43E9 38800000
38610070 4A8BD419
38C100A0 7F85E378
388000FF 38610008
4A826951 38610008
38210128 BB81FFF0
80010004 7C0803A6
4A826AEC 00000000
59800004 00000000
0420675C 495F2A79
0424F32C 495A9CED
077F9018 000003BA
81460000 3D20803E
392987C0 7C0A4800
40A20124 81260004
89290013 28090031
418200C4 28090032
4182003C 28090030
40A2007C 2C040021
3D208180 89299001
41820094 2C040026
4182006C 2C04001D
40A2005C 28090003
41820144 28090004
48000048 2C04001D
3D208180 89299000
4182002C 2C040021
40820034 28090001
41820114 3929FFFE
5529063E 28090001
4181001C 38600020
4E800020 28090002
418200FC 28090003
418200FC 38C0FFFF
4AA6715C 28090001
418200D4 3929FFFE
5529063E 28090002
41A1FFE4 38600025
4E800020 28090002
418200BC 3929FFFD
4BFFFFA8 2C040002
3D208180 89299002
4182002C 2C040008
40A2FFB4 28090001
418200AC 3929FFFE
5529063E 28090001
41A1FF9C 38600007
4E800020 28090002
41820094 28090003
40A2FF84 38600001
4E800020 3D20803E
3929A9C0 7C0A4800
4082FF6C 2C05FFFF
40A2FF64 3D208180
89499000 2C0A0000
41A2FF54 39200003
3860001E 7D2A4B96
1D290003 7D295050
28090001 4D820020
28090002 38600020
4C820020 3860006E
4E800020 38600050
4E800020 38600045
4E800020 38600062
4E800020 3860001C
4E800020 38600051
4E800020 38600036
4E800020 9421FFE0
7C0802A6 BFC10018
7C7E1B78 90010024
4A83C041 3D208040
A3E90D50 3D208180
281F0041 40A2007C
3D408180 A14A9010
714A0041 2C0A0041
41820014 8949900C
394A0003 554A07BE
9949900C 281F0044
8909900C 408200D0
3D408180 A14A9010
714A0044 2C0A0044
418200BC 28080003
40A2000C 39400000
9949900C 88E9900C
3D408180 394A9000
38C00004 7D0A38AE
2C080000 41820068
3908FFFF 4800005C
281F0042 8949900C
4182005C 281F0048
40A2FF9C 3D008180
A1089010 71080048
2C080048 41820060
280A0003 40A2000C
39400000 9949900C
88E9900C 3D408180
394A9000 38C00000
7D0A38AE 28080003
4181000C 39080001
5506063E 7CCA39AE
48000024 3D008180
A1089010 71080042
2C080042 41820010
394A0001 554A07BE
9949900C 88E9900C
39200023 2C070000
41820008 39200020
28070001 3D008180
89489000 38C00023
41820008 38C00020
28070002 39089000
88880001 38A00023
41820008 38A00020
89080002 38600010
90A10010 38E0FFFF
91010014 3D008180
9081000C 390893BC
90C10008 38A00014
38C0FFFF 38800140
4CC63182 4BFF6EC5
80010024 3D208180
7FC3F378 B3E99010
7C0803A6 83C10018
83E1001C 38210020
4A83BE90 838BFFF0
83ABFFF4 83CBFFF8
800B0004 83EBFFFC
7C0803A6 7D615B78
4E800020 50617474
65726E20 25632558
25632558 25632558
00000000 00000000
0424F324 7FE6FB78
</source>
</code>
</codes>

View file

@ -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

26
package-lock.json generated
View file

@ -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",

View file

@ -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"
]
}

View file

@ -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'));

View file

@ -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'));
},
},

View file

@ -0,0 +1,21 @@
<svg viewBox="2500 1600 10500 10500" class="pattern" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style>@import url('./PV1.css')</style>
<image xlink:href="PV1-base.jpg" width="15000"/>
<g class="arrow" transform="translate(7150, 6200) scale(0.695)">
<g transform="translate(955, 6615) scale(8) translate(0, -50)">
<g transform="translate(-1, 0) rotate(181)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text y="-350">1</text>
</g>
<g transform="translate(4445, 6580) scale(8) translate(-8, -80)">
<g transform="translate(0, 0) rotate(172)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="-40" y="-350">2</text>
</g>
<g transform="translate(6330, 5105) scale(8) translate(0, 100)">
<g transform="translate(0, 0) rotate(195)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="80" y="-330">3</text>
</g>
<g class="start">
<circle id="c-32" cx="1460.0" cy="6895.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,25 @@
<svg viewBox="2500 1600 10500 10500" class="pattern" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style>@import url('./PV1.css')</style>
<image xlink:href="PV1-base.jpg" width="15000"/>
<g class="arrow" transform="translate(7150, 6200) scale(0.695)">
<g transform="translate(-2650, 7510) scale(8) translate(0, -100)">
<g transform="translate(5, 0) rotate(180)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text y="-350">1</text>
</g>
<g transform="translate(955, 6615) scale(8) translate(0, -50)">
<g transform="translate(-1, 0) rotate(181)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text y="-350">2</text>
</g>
<g transform="translate(4445, 6580) scale(8) translate(-8, -80)">
<g transform="translate(0, 0) rotate(172)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="-40" y="-350">3</text>
</g>
<g transform="translate(6330, 5105) scale(8) translate(0, 100)">
<g transform="translate(0, 0) rotate(195)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="80" y="-330">4</text>
</g>
<g class="start">
<circle id="c-42" cx="-4970.0" cy="3295.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,21 @@
<svg viewBox="2500 1600 10500 10500" class="pattern" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style>@import url('./PV1.css')</style>
<image xlink:href="PV1-base.jpg" width="15000"/>
<g class="arrow" transform="translate(7150, 6200) scale(0.695)">
<g transform="translate(4510, -5935) scale(8)">
<g transform="rotate(0)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="0" y="380">1</text>
</g>
<g transform="translate(1330, -3750) scale(8)">
<g transform="translate(5, 0) rotate(15)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="-130" y="300">2</text>
</g>
<g transform="translate(1330, -3750) scale(8)">
<g transform="translate(-30, -20) rotate(88)"><path d="M0 0 h25 v200 h25 l-50 50 l-50 -50 h25 v-200 L0 0" /></g>
<text x="-350" y="-5">3</text>
</g>
<g class="start">
<circle id="c-13" cx="6790.0" cy="-2530.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1,014 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

View file

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB