Improve PatternSelector and CustomizedDisplay
- Make PatternSelector shorter and make its appearance customizable (v0.3) - Render CustomizedDisplay later than water/juice (v0.3)
This commit is contained in:
parent
20d03d7906
commit
3fa416388d
14 changed files with 524 additions and 262 deletions
350
Codes.xml
350
Codes.xml
|
@ -3285,8 +3285,8 @@
|
||||||
<title lang="en-US">Customized display</title>
|
<title lang="en-US">Customized display</title>
|
||||||
<title lang="ja-JP">カスタマイズ表示</title>
|
<title lang="ja-JP">カスタマイズ表示</title>
|
||||||
<author>sup39(サポミク)</author>
|
<author>sup39(サポミク)</author>
|
||||||
<version>0.2</version>
|
<version>0.3</version>
|
||||||
<date>Oct 15, 2022</date>
|
<date>Oct 30, 2022</date>
|
||||||
<dependencies>drawText</dependencies>
|
<dependencies>drawText</dependencies>
|
||||||
<description lang="en-US">
|
<description lang="en-US">
|
||||||
Shows metadata at any given time.
|
Shows metadata at any given time.
|
||||||
|
@ -3352,25 +3352,25 @@
|
||||||
#### プレビュー
|
#### プレビュー
|
||||||
</description>
|
</description>
|
||||||
<source version="GMSJ01">
|
<source version="GMSJ01">
|
||||||
C6206734 817FA000
|
C62069D4 817FA000
|
||||||
077FA000 00000084
|
077FA000 00000088
|
||||||
4A83B229 806D98B8
|
38610E90 4A83B225
|
||||||
C0230010 C0430014
|
806D98B8 C0230010
|
||||||
C0630018 A1230096
|
C0430014 C0630018
|
||||||
C08300B0 C0A300A8
|
A1230096 C08300B0
|
||||||
806D97E8 81430058
|
C0A300A8 806D97E8
|
||||||
554A07BE 48000035
|
81430058 554A07BE
|
||||||
5820252E 30660A59
|
48000035 5820252E
|
||||||
20252E30 660A5A20
|
30660A59 20252E30
|
||||||
252E3066 0A412025
|
660A5A20 252E3066
|
||||||
68750A48 20252E32
|
0A412025 68750A48
|
||||||
660A5620 252E3266
|
20252E32 660A5620
|
||||||
0A514620 25750000
|
252E3266 0A514620
|
||||||
7D0802A6 38600010
|
25750000 7D0802A6
|
||||||
388000C8 38A00012
|
38600010 388000C0
|
||||||
38C0FFFF 7CC73378
|
38A00012 38C0FFFF
|
||||||
4CC63242 4BFF61BD
|
7CC73378 4CC63242
|
||||||
4AA0C6B8 00000000
|
4BFF61B9 4AA0C954
|
||||||
</source>
|
</source>
|
||||||
<source version="GMSJ0A">
|
<source version="GMSJ0A">
|
||||||
C61252A0 817FA000
|
C61252A0 817FA000
|
||||||
|
@ -3834,8 +3834,8 @@
|
||||||
<title lang="en-US">Pattern Selector</title>
|
<title lang="en-US">Pattern Selector</title>
|
||||||
<title lang="ja-JP">パターン選択</title>
|
<title lang="ja-JP">パターン選択</title>
|
||||||
<author>sup39(サポミク)</author>
|
<author>sup39(サポミク)</author>
|
||||||
<version>0.2.2</version>
|
<version>0.3</version>
|
||||||
<date>Apr 25, 2022</date>
|
<date>Oct 30, 2022</date>
|
||||||
<dependencies>drawText</dependencies>
|
<dependencies>drawText</dependencies>
|
||||||
<description lang="en-US">
|
<description lang="en-US">
|
||||||
Ⓑ is the cursor to select the pattern,
|
Ⓑ is the cursor to select the pattern,
|
||||||
|
@ -3851,6 +3851,8 @@
|
||||||
|
|
||||||
When the cursor(Ⓑ) is not shown, you can press L+D-Pad Left/Right to make it appear.
|
When the cursor(Ⓑ) is not shown, you can press L+D-Pad Left/Right to make it appear.
|
||||||
|
|
||||||
|
You can change the position and color of the text [here](#PatternSelector-config).
|
||||||
|
|
||||||
### Chain Chomp (PV4)
|
### Chain Chomp (PV4)
|
||||||
|
|
||||||
Use the [1st digit]{.emph} to select the pattern. The 2nd and 3rd are ignored.
|
Use the [1st digit]{.emph} to select the pattern. The 2nd and 3rd are ignored.
|
||||||
|
@ -3888,6 +3890,8 @@
|
||||||
|
|
||||||
カーソル(Ⓑ)が表示されない時、L+十字キー左/右を押せば出てきます。
|
カーソル(Ⓑ)が表示されない時、L+十字キー左/右を押せば出てきます。
|
||||||
|
|
||||||
|
[ここ](#PatternSelector-config)で文字の位置や色を変えることができます。
|
||||||
|
|
||||||
### ワンワン(PV4)
|
### ワンワン(PV4)
|
||||||
|
|
||||||
[1桁目]{.emph}でパターンを選択します。2桁目と3桁目は無視されます。
|
[1桁目]{.emph}でパターンを選択します。2桁目と3桁目は無視されます。
|
||||||
|
@ -3912,194 +3916,122 @@
|
||||||
%object[]{data="/img/PatternSelector/PV1-3.svg"}
|
%object[]{data="/img/PatternSelector/PV1-3.svg"}
|
||||||
</description>
|
</description>
|
||||||
<source version="GMSJ01">
|
<source version="GMSJ01">
|
||||||
0424F324 7FE6FB78
|
0424F32C 495A9CD5
|
||||||
0420675C 495F2A59
|
042069DC 495F26B8
|
||||||
0424F32C 495A9D6D
|
077F9000 000001AF
|
||||||
077F9000 000002C5
|
801F0000 3D00817F
|
||||||
3D208040 A1290D50
|
61089167 3D40817F
|
||||||
7C091800 4CA20020
|
614A0024 3D80803D
|
||||||
3D008180 394892C8
|
618CA9C0 7C006040
|
||||||
A10892C8 7D294079
|
41820048 3D80803D
|
||||||
4D820020 892A0002
|
618C87C0 7C006040
|
||||||
7C892214 548407BE
|
40820034 819F0004
|
||||||
988A0002 4E800020
|
898C0013 508C442E
|
||||||
3D208040 A1490D50
|
39280031 88080007
|
||||||
7C0A1800 4CA20020
|
7CEA00AE A0080005
|
||||||
3D008180 392892C8
|
7C006040 41820024
|
||||||
A10892C8 7D4A4079
|
39080007 7C084840
|
||||||
4D820020 89490002
|
4180FFE4 4AA671C0
|
||||||
2C0A0003 40A2000C
|
2C05FFFF 4082FFF8
|
||||||
39400000 99490002
|
88EA0000 39080031
|
||||||
89490002 7D295214
|
7CE73B79 4182FFE8
|
||||||
89490004 7D4A2214
|
7C0838AE 280000FF
|
||||||
38800005 7C8A23D6
|
4182FFDC 7C030378
|
||||||
1C840005 7C845050
|
4E800020 38610E90
|
||||||
98890004 4E800020
|
4A83C191 3C808040
|
||||||
81460000 3D20803E
|
A4040D82 3C60817F
|
||||||
392987C0 7C0A4800
|
84A30024 70000040
|
||||||
40A2008C 81260004
|
41A20050 88840019
|
||||||
89290013 28090031
|
548007FE 7CA02850
|
||||||
4182005C 28090032
|
5480FFFE 7CA50214
|
||||||
41820034 28090030
|
54A507BE 5480F7BF
|
||||||
40A20044 2C040021
|
41A20030 28050003
|
||||||
3D208180 890992CD
|
41A00008 38A00000
|
||||||
418200C4 2C040026
|
5480EFFE 5080077A
|
||||||
418200C4 2C04001D
|
7D8328AE 7D8C0214
|
||||||
40A20024 39200004
|
280C0005 41A00008
|
||||||
48000068 2C04001D
|
398CFFFB 7D8329AE
|
||||||
3D208180 890992CC
|
98A30003 3821FFF0
|
||||||
4182008C 2C040021
|
3D00817F 6108919D
|
||||||
4182008C 38C0FFFF
|
3C002020 60002023
|
||||||
4AA67114 2C040002
|
54AC183E 5C00603E
|
||||||
3D208180 890992CE
|
98080008 540CC63E
|
||||||
4182008C 2C040008
|
9988000B 540C863E
|
||||||
40A2FFE4 39200005
|
9988000E 89230000
|
||||||
48000028 3D20803E
|
89430001 89630002
|
||||||
3929A9C0 7C0A4800
|
91610008 38600010
|
||||||
4082FFCC 2C05FFFF
|
38800140 38A00014
|
||||||
4082FFC4 3D208180
|
38C0FFFF 38E0FFFF
|
||||||
890992CC 39200007
|
4CC63182 4BFF70DD
|
||||||
2C080000 41A2FFB0
|
38210010 4AA0D87C
|
||||||
3D408180 5529103A
|
452020FF 213200FF
|
||||||
394A92A5 7D2A4A14
|
621CFF1D 32005025
|
||||||
7D294214 8929FFFF
|
25252630 01FF4520
|
||||||
7D290774 2C09FFFF
|
20213001 FFFF621C
|
||||||
41A2FF8C 7D234B78
|
1D300151 0707FF08
|
||||||
4E800020 39200001
|
3102FF36 01FF0231
|
||||||
4BFFFFC8 39200000
|
021E6E20 FF506174
|
||||||
4BFFFFC0 39200003
|
7465726E 203E2558
|
||||||
4BFFFFB8 39200002
|
3E25583E 25580000
|
||||||
4BFFFFB0 39200006
|
|
||||||
4BFFFFA8 9421FFE0
|
|
||||||
7C0802A6 90010024
|
|
||||||
BFC10018 7C7F1B78
|
|
||||||
4A83C061 38800001
|
|
||||||
38600042 3FC08180
|
|
||||||
4BFFFE29 38800003
|
|
||||||
38600041 4BFFFE1D
|
|
||||||
38800001 38600048
|
|
||||||
4BFFFE49 38800004
|
|
||||||
38600044 4BFFFE3D
|
|
||||||
391E92C8 89480002
|
|
||||||
3D202320 61292020
|
|
||||||
38600010 214A0003
|
|
||||||
38E0FFFF 554A1838
|
|
||||||
38C0FFFF 5D29503E
|
|
||||||
89480006 38A00014
|
|
||||||
38800140 91410014
|
|
||||||
552A063E 91410010
|
|
||||||
89480005 9141000C
|
|
||||||
552AC63E 91410008
|
|
||||||
5529863E 89480004
|
|
||||||
3D008180 39089290
|
|
||||||
4CC63182 4BFF6FD5
|
|
||||||
3D208040 A1290D50
|
|
||||||
7FE3FB78 80010024
|
|
||||||
B13E92C8 83E1001C
|
|
||||||
7C0803A6 83C10018
|
|
||||||
38210020 4A83BF9C
|
|
||||||
50617474 65726E20
|
|
||||||
25632558 25632558
|
|
||||||
25632558 00452020
|
|
||||||
FFFF621C FF502525
|
|
||||||
25FF4520 20FFFF62
|
|
||||||
1C510707 FFFF3601
|
|
||||||
FF1E6E20 FF000000
|
|
||||||
</source>
|
</source>
|
||||||
<source version="GMSJ0A">
|
<source version="GMSJ0A">
|
||||||
040278F8 7FE6FB78
|
04027900 497D1701
|
||||||
041252C8 496D3EED
|
04125548 496D3B4C
|
||||||
04027900 497D1799
|
077F9000 000001AF
|
||||||
077F9000 000002C5
|
801F0000 3D00817F
|
||||||
3D20803F A1295428
|
61089167 3D40817F
|
||||||
7C091800 4CA20020
|
614A0024 3D80803A
|
||||||
3D008180 394892C8
|
618C6D70 7C006040
|
||||||
A10892C8 7D294079
|
41820048 3D80803A
|
||||||
4D820020 892A0002
|
618C4B80 7C006040
|
||||||
7C892214 548407BE
|
40820034 819F0004
|
||||||
988A0002 4E800020
|
898C0013 508C442E
|
||||||
3D20803F A1495428
|
39280031 88080007
|
||||||
7C0A1800 4CA20020
|
7CEA00AE A0080005
|
||||||
3D008180 392892C8
|
7C006040 41820024
|
||||||
A10892C8 7D4A4079
|
39080007 7C084840
|
||||||
4D820020 89490002
|
4180FFE4 4A83F620
|
||||||
2C0A0003 40A2000C
|
2C05FFFF 4082FFF8
|
||||||
39400000 99490002
|
88EA0000 39080031
|
||||||
89490002 7D295214
|
7CE73B79 4182FFE8
|
||||||
89490004 7D4A2214
|
7C0838AE 280000FF
|
||||||
38800005 7C8A23D6
|
4182FFDC 7C030378
|
||||||
1C840005 7C845050
|
4E800020 38610E90
|
||||||
98890004 4E800020
|
4AAD1E35 3C80803F
|
||||||
81460000 3D20803A
|
A404545A 3C60817F
|
||||||
39294B80 7C0A4800
|
84A30024 70000040
|
||||||
40A2008C 81260004
|
41A20050 88840019
|
||||||
89290013 28090031
|
548007FE 7CA02850
|
||||||
4182005C 28090032
|
5480FFFE 7CA50214
|
||||||
41820034 28090030
|
54A507BE 5480F7BF
|
||||||
40A20044 2C040021
|
41A20030 28050003
|
||||||
3D208180 890992CD
|
41A00008 38A00000
|
||||||
418200C4 2C040026
|
5480EFFE 5080077A
|
||||||
418200C4 2C04001D
|
7D8328AE 7D8C0214
|
||||||
40A20024 39200004
|
280C0005 41A00008
|
||||||
48000068 2C04001D
|
398CFFFB 7D8329AE
|
||||||
3D208180 890992CC
|
98A30003 3821FFF0
|
||||||
4182008C 2C040021
|
3D00817F 6108919D
|
||||||
4182008C 38C0FFFF
|
3C002020 60002023
|
||||||
4A83F574 2C040002
|
54AC183E 5C00603E
|
||||||
3D208180 890992CE
|
98080008 540CC63E
|
||||||
4182008C 2C040008
|
9988000B 540C863E
|
||||||
40A2FFE4 39200005
|
9988000E 89230000
|
||||||
48000028 3D20803A
|
89430001 89630002
|
||||||
39296D70 7C0A4800
|
91610008 38600010
|
||||||
4082FFCC 2C05FFFF
|
38800140 38A00014
|
||||||
4082FFC4 3D208180
|
38C0FFFF 38E0FFFF
|
||||||
890992CC 39200007
|
4CC63182 4BFF70DD
|
||||||
2C080000 41A2FFB0
|
38210010 4A92C3E8
|
||||||
3D408180 5529103A
|
452020FF 213200FF
|
||||||
394A92A5 7D2A4A14
|
621CFF1D 32005025
|
||||||
7D294214 8929FFFF
|
25252630 01FF4520
|
||||||
7D290774 2C09FFFF
|
20213001 FFFF621C
|
||||||
41A2FF8C 7D234B78
|
1D300151 0707FF08
|
||||||
4E800020 39200001
|
3102FF36 01FF0231
|
||||||
4BFFFFC8 39200000
|
021E6E20 FF506174
|
||||||
4BFFFFC0 39200003
|
7465726E 203E2558
|
||||||
4BFFFFB8 39200002
|
3E25583E 25580000
|
||||||
4BFFFFB0 39200006
|
|
||||||
4BFFFFA8 9421FFE0
|
|
||||||
7C0802A6 90010024
|
|
||||||
BFC10018 7C7F1B78
|
|
||||||
4AAD1D05 38800001
|
|
||||||
38600042 3FC08180
|
|
||||||
4BFFFE29 38800003
|
|
||||||
38600041 4BFFFE1D
|
|
||||||
38800001 38600048
|
|
||||||
4BFFFE49 38800004
|
|
||||||
38600044 4BFFFE3D
|
|
||||||
391E92C8 89480002
|
|
||||||
3D202320 61292020
|
|
||||||
38600010 214A0003
|
|
||||||
38E0FFFF 554A1838
|
|
||||||
38C0FFFF 5D29503E
|
|
||||||
89480006 38A00014
|
|
||||||
38800140 91410014
|
|
||||||
552A063E 91410010
|
|
||||||
89480005 9141000C
|
|
||||||
552AC63E 91410008
|
|
||||||
5529863E 89480004
|
|
||||||
3D008180 39089290
|
|
||||||
4CC63182 4BFF6FD5
|
|
||||||
3D20803F A1295428
|
|
||||||
7FE3FB78 80010024
|
|
||||||
B13E92C8 83E1001C
|
|
||||||
7C0803A6 83C10018
|
|
||||||
38210020 4AAD1C40
|
|
||||||
50617474 65726E20
|
|
||||||
25632558 25632558
|
|
||||||
25632558 00452020
|
|
||||||
FFFF621C FF502525
|
|
||||||
25FF4520 20FFFF62
|
|
||||||
1C510707 FFFF3601
|
|
||||||
FF1E6E20 FF000000
|
|
||||||
</source>
|
</source>
|
||||||
</code>
|
</code>
|
||||||
<code>
|
<code>
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
## Oct 30, 2022
|
||||||
|
- Make PatternSelector shorter and make its appearance customizable (v0.3)
|
||||||
|
- Render CustomizedDisplay later than water/juice (v0.3)
|
||||||
|
|
||||||
## Oct 17, 2022
|
## Oct 17, 2022
|
||||||
- Fix FastForward code (wrong button value)
|
- Fix FastForward code (wrong button value)
|
||||||
|
|
||||||
|
|
82
package.json
82
package.json
|
@ -1,41 +1,41 @@
|
||||||
{
|
{
|
||||||
"name": "gctgenerator",
|
"name": "gctgenerator",
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"description": "Super Mario Sunshine Practice File Generator",
|
"description": "Super Mario Sunshine Practice File Generator",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"authors": {
|
"authors": {
|
||||||
"name": "Matteias Collet",
|
"name": "Matteias Collet",
|
||||||
"email": "matteias.collet@bluewin.ch"
|
"email": "matteias.collet@bluewin.ch"
|
||||||
},
|
},
|
||||||
"repository": "https://github.com/BitPatty/gctGenerator/gctGenerator",
|
"repository": "https://github.com/BitPatty/gctGenerator/gctGenerator",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run codes:inject && npm run translations:compare && vuepress dev site",
|
"dev": "npm run codes:inject && npm run translations:compare && vuepress dev site",
|
||||||
"build": "node ./scripts/inject_codes.js && npm run translations:compare && vuepress build site",
|
"build": "node ./scripts/inject_codes.js && npm run translations:compare && vuepress build site",
|
||||||
"format": "prettier --write ./site/**/*{.md,.js,.json}",
|
"format": "prettier --write ./site/**/*{.md,.js,.json}",
|
||||||
"translations:compare": "node ./scripts/compare_translations.js",
|
"translations:compare": "node ./scripts/compare_translations.js",
|
||||||
"codes:inject": "node ./scripts/inject_codes.js && npm run format",
|
"codes:inject": "node ./scripts/inject_codes.js && npm run format",
|
||||||
"codes:clean": "node ./scripts/clean_codes.js && npm run format",
|
"codes:clean": "node ./scripts/clean_codes.js && npm run format",
|
||||||
"precommit": "npm run codes:clean && git add .",
|
"precommit": "npm run codes:clean && git add .",
|
||||||
"serve": "serve ./site/.vuepress/dist"
|
"serve": "serve ./site/.vuepress/dist"
|
||||||
},
|
},
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@sup39/markdown-it-attr": "1.2.2",
|
"@sup39/markdown-it-attr": "1.2.2",
|
||||||
"@sup39/markdown-it-inline-tag": "1.0.1",
|
"@sup39/markdown-it-inline-tag": "1.0.1",
|
||||||
"@types/encoding-japanese": "^2.0.1",
|
"@types/encoding-japanese": "^2.0.1",
|
||||||
"@vuepress/plugin-back-to-top": "1.9.7",
|
"@vuepress/plugin-back-to-top": "1.9.7",
|
||||||
"@vuepress/plugin-medium-zoom": "1.9.7",
|
"@vuepress/plugin-medium-zoom": "1.9.7",
|
||||||
"encoding-japanese": "^2.0.0",
|
"encoding-japanese": "^2.0.0",
|
||||||
"jsdom": "20.0.1",
|
"jsdom": "20.0.1",
|
||||||
"pre-commit": "1.2.2",
|
"pre-commit": "1.2.2",
|
||||||
"prettier": "2.7.1",
|
"prettier": "2.7.1",
|
||||||
"serve": "14.0.1",
|
"serve": "14.0.1",
|
||||||
"vuepress": "1.9.7"
|
"vuepress": "1.9.7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"vuedraggable": "2.24.3"
|
"vuedraggable": "2.24.3"
|
||||||
},
|
},
|
||||||
"pre-commit": [
|
"pre-commit": [
|
||||||
"precommit"
|
"precommit"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,7 @@ import { translate } from '../i18n/localeHelper';
|
||||||
// Code Configs
|
// Code Configs
|
||||||
import {getConfig as getConfigQFT} from './codes/qft/codegen';
|
import {getConfig as getConfigQFT} from './codes/qft/codegen';
|
||||||
import {getConfig as getConfigCD} from './codes/CustomizedDisplay/codegen';
|
import {getConfig as getConfigCD} from './codes/CustomizedDisplay/codegen';
|
||||||
|
import {getConfig as getConfigPS} from './codes/PatternSelector/codegen';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
|
@ -134,7 +135,7 @@ export default {
|
||||||
created() {
|
created() {
|
||||||
this.codeConfigs = {
|
this.codeConfigs = {
|
||||||
qft: getConfigQFT(),
|
qft: getConfigQFT(),
|
||||||
PatternSelector: {},
|
PatternSelector: getConfigPS(),
|
||||||
SpeedDisplay: {},
|
SpeedDisplay: {},
|
||||||
PASDisplay: {},
|
PASDisplay: {},
|
||||||
CustomizedDisplay: getConfigCD(this.version),
|
CustomizedDisplay: getConfigCD(this.version),
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<PreviewString v-for="mdp,i in mdps" :key="i"
|
<PreviewString v-for="mdp,i in mdps" :key="i"
|
||||||
:x="mdp.x" :y="mdp.y" :size="mdp.fontSize" :color="mdp.color" :text="mdp.text" />
|
:x="mdp.x" :y="mdp.y" :size="mdp.fontSize" :color="mdp.color" :text="mdp.text" />
|
||||||
</div>
|
</div>
|
||||||
<PreviewString v-if="config.PatternSelector" :x="16" :y="320" :size="20" :color="'#fff'" text="Pattern #0 0 0" />
|
<PreviewString v-if="ps" :x="ps.x" :y="ps.y" :size="ps.fontSize" :color="ps.color" :text="ps.text" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -61,6 +61,16 @@ export default {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
ps() {
|
||||||
|
const {config: {PatternSelector: ps}} = this;
|
||||||
|
if (ps == null) return;
|
||||||
|
const {x, y, fontSize, fgRGB, fgA, fgRGB2, fgA2, label} = ps;
|
||||||
|
return {
|
||||||
|
x, y, fontSize,
|
||||||
|
color: fg2Style(fgRGB, fgA, fgRGB2, fgA2),
|
||||||
|
text: label+'#0 0 0',
|
||||||
|
};
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { parseJSON } from '../codegen.js';
|
import { parseJSON } from '../codegen.js';
|
||||||
import { ASM, makeInst, liDX, str2inst, makeProgram, inst2gecko } from './asm.js';
|
import { ASM, makeInst, liDX, str2inst, makeProgram, inst2gecko } from '../asm.js';
|
||||||
export const lskey = 'config/CustomizedDisplay';
|
export const lskey = 'config/CustomizedDisplay';
|
||||||
|
|
||||||
export const defaultConfig = [
|
export const defaultConfig = [
|
||||||
{
|
{
|
||||||
x: 16,
|
x: 16,
|
||||||
y: 200,
|
y: 192,
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
fgRGB: 0xffffff,
|
fgRGB: 0xffffff,
|
||||||
fgA: 0xff,
|
fgA: 0xff,
|
||||||
|
@ -355,10 +355,10 @@ export function format2previewText(input, version, f = null) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const addrsOrig = {
|
const addrsOrig = {
|
||||||
GMSJ01: 0x80206734,
|
GMSJ01: 0x80206a00 - 0x2c,
|
||||||
GMSJ0A: 0x801252a0,
|
GMSJ0A: 0x8012556c - 0x2c,
|
||||||
GMSE01: 0x80143f14,
|
GMSE01: 0x801441e0 - 0x2c,
|
||||||
GMSP01: 0x80138b50,
|
GMSP01: 0x80138e1c - 0x2c,
|
||||||
};
|
};
|
||||||
const addrsSetup2D = {
|
const addrsSetup2D = {
|
||||||
GMSJ01: 0x80035228,
|
GMSJ01: 0x80035228,
|
||||||
|
@ -396,6 +396,8 @@ export default function codegen(version) {
|
||||||
|
|
||||||
// program
|
// program
|
||||||
const program = makeProgram(addrDst);
|
const program = makeProgram(addrDst);
|
||||||
|
// addi r3, r1, 0xE90
|
||||||
|
program.push(ASM.addi(3, 1, 0xe90));
|
||||||
// addi r1, r1, -spOff
|
// addi r1, r1, -spOff
|
||||||
if (spOff) program.push(ASM.addi(1, 1, -spOff));
|
if (spOff) program.push(ASM.addi(1, 1, -spOff));
|
||||||
// bl setup
|
// bl setup
|
||||||
|
@ -407,10 +409,6 @@ export default function codegen(version) {
|
||||||
}
|
}
|
||||||
// addi r1, r1, spOff
|
// addi r1, r1, spOff
|
||||||
if (spOff) program.push(ASM.addi(1, 1, spOff));
|
if (spOff) program.push(ASM.addi(1, 1, spOff));
|
||||||
// addi r3, r1, 0xE90
|
|
||||||
program.push(ASM.addi(3, 1, 0xe90));
|
|
||||||
// bl setup
|
|
||||||
program.bl(addrSetup2D);
|
|
||||||
// b orig+4
|
// b orig+4
|
||||||
program.b(addrOrig + 4);
|
program.b(addrOrig + 4);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
export const addrDraw2D = 0x802069dc;
|
||||||
|
export const code04 = `
|
||||||
|
0424F32C 495A9CD5
|
||||||
|
042069DC 495F26B8
|
||||||
|
`;
|
||||||
|
export const codes = [
|
||||||
|
/* 077F9000 000001AF */ `
|
||||||
|
3D40817F
|
||||||
|
614A0024 3D80803D
|
||||||
|
618CA9C0 7C006040
|
||||||
|
41820048 3D80803D
|
||||||
|
618C87C0 7C006040
|
||||||
|
40820034 819F0004
|
||||||
|
898C0013 508C442E
|
||||||
|
39280031 88080007
|
||||||
|
7CEA00AE A0080005
|
||||||
|
7C006040 41820024
|
||||||
|
39080007 7C084840
|
||||||
|
4180FFE4 4AA671C0
|
||||||
|
2C05FFFF 4082FFF8
|
||||||
|
88EA0000 39080031
|
||||||
|
7CE73B79 4182FFE8
|
||||||
|
7C0838AE 280000FF
|
||||||
|
4182FFDC 7C030378
|
||||||
|
4E800020 38610E90
|
||||||
|
4A83C191 3C808040
|
||||||
|
A4040D82 3C60817F
|
||||||
|
84A30024 70000040
|
||||||
|
41A20050 88840019
|
||||||
|
548007FE 7CA02850
|
||||||
|
5480FFFE 7CA50214
|
||||||
|
54A507BE 5480F7BF
|
||||||
|
41A20030 28050003
|
||||||
|
41A00008 38A00000
|
||||||
|
5480EFFE 5080077A
|
||||||
|
7D8328AE 7D8C0214
|
||||||
|
280C0005 41A00008
|
||||||
|
398CFFFB 7D8329AE
|
||||||
|
98A30003 3821FFF0
|
||||||
|
`,
|
||||||
|
/* li r8 */ `
|
||||||
|
3C002020 60002023
|
||||||
|
54AC183E 5C00603E
|
||||||
|
`,
|
||||||
|
/* stb r0, fmtCS0+fmtCSD*i(r8) */ `
|
||||||
|
89230000
|
||||||
|
89430001 89630002
|
||||||
|
91610008
|
||||||
|
`,
|
||||||
|
/* li r3~r7, drawText, b */ `
|
||||||
|
452020FF 213200FF
|
||||||
|
621CFF1D 32005025
|
||||||
|
25252630 01FF4520
|
||||||
|
20213001 FFFF621C
|
||||||
|
1D300151 0707FF08
|
||||||
|
3102FF36 01FF0231
|
||||||
|
021E6E20 FF
|
||||||
|
` /* fmt */,
|
||||||
|
];
|
|
@ -0,0 +1,60 @@
|
||||||
|
export const addrDraw2D = 0x80125548;
|
||||||
|
export const code04 = `
|
||||||
|
04027900 497D1701
|
||||||
|
04125548 496D3B4C
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const codes = [
|
||||||
|
`
|
||||||
|
3D40817F
|
||||||
|
614A0024 3D80803A
|
||||||
|
618C6D70 7C006040
|
||||||
|
41820048 3D80803A
|
||||||
|
618C4B80 7C006040
|
||||||
|
40820034 819F0004
|
||||||
|
898C0013 508C442E
|
||||||
|
39280031 88080007
|
||||||
|
7CEA00AE A0080005
|
||||||
|
7C006040 41820024
|
||||||
|
39080007 7C084840
|
||||||
|
4180FFE4 4A83F620
|
||||||
|
2C05FFFF 4082FFF8
|
||||||
|
88EA0000 39080031
|
||||||
|
7CE73B79 4182FFE8
|
||||||
|
7C0838AE 280000FF
|
||||||
|
4182FFDC 7C030378
|
||||||
|
4E800020 38610E90
|
||||||
|
4AAD1E35 3C80803F
|
||||||
|
A404545A 3C60817F
|
||||||
|
84A30024 70000040
|
||||||
|
41A20050 88840019
|
||||||
|
548007FE 7CA02850
|
||||||
|
5480FFFE 7CA50214
|
||||||
|
54A507BE 5480F7BF
|
||||||
|
41A20030 28050003
|
||||||
|
41A00008 38A00000
|
||||||
|
5480EFFE 5080077A
|
||||||
|
7D8328AE 7D8C0214
|
||||||
|
280C0005 41A00008
|
||||||
|
398CFFFB 7D8329AE
|
||||||
|
98A30003 3821FFF0
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
3C002020 60002023
|
||||||
|
54AC183E 5C00603E
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
89230000
|
||||||
|
89430001 89630002
|
||||||
|
91610008
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
452020FF 213200FF
|
||||||
|
621CFF1D 32005025
|
||||||
|
25252630 01FF4520
|
||||||
|
20213001 FFFF621C
|
||||||
|
1D300151 0707FF08
|
||||||
|
3102FF36 01FF0231
|
||||||
|
021E6E20 FF
|
||||||
|
`,
|
||||||
|
];
|
109
site/.vuepress/components/codes/PatternSelector/codegen.js
Normal file
109
site/.vuepress/components/codes/PatternSelector/codegen.js
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
import { parseJSON } from '../codegen.js';
|
||||||
|
import { ASM, liDX, strlen, str2inst, inst2gecko } from '../asm.js';
|
||||||
|
export const lskey = 'config/PatternSelector';
|
||||||
|
|
||||||
|
import * as GMSJ01 from './code/GMSJ01.js';
|
||||||
|
import * as GMSJ0A from './code/GMSJ0A.js';
|
||||||
|
// import * as GMSE01 from './code/GMSE01.js';
|
||||||
|
// import * as GMSP01 from './code/GMSP01.js';
|
||||||
|
const codes = { GMSJ01, GMSJ0A };
|
||||||
|
|
||||||
|
export const defaultConfig = {
|
||||||
|
x: 16,
|
||||||
|
y: 320,
|
||||||
|
fontSize: 20,
|
||||||
|
fgRGB: 0xffffff,
|
||||||
|
fgA: 0xff,
|
||||||
|
fgRGB2: null,
|
||||||
|
fgA2: null,
|
||||||
|
label: 'Pattern ',
|
||||||
|
};
|
||||||
|
/** @returns {typeof defaultConfig} */
|
||||||
|
export function getConfig() {
|
||||||
|
const config =
|
||||||
|
(typeof localStorage !== 'undefined' && parseJSON(localStorage.getItem(lskey))) || {};
|
||||||
|
return { ...defaultConfig, ...config };
|
||||||
|
}
|
||||||
|
|
||||||
|
const addrDrawText = 0x817f0238;
|
||||||
|
const addrCodeBase = 0x817f9000;
|
||||||
|
const addrPV1Data1 = 0x817f9167;
|
||||||
|
const addrFmt0 = 0x817f919d;
|
||||||
|
|
||||||
|
/** @param {keyof typeof codes} version */
|
||||||
|
export default function codegen(version) {
|
||||||
|
const { x, y, fontSize, fgRGB, fgA, fgRGB2, fgA2, label } = getConfig();
|
||||||
|
const colorTop = (fgRGB << 8) | fgA;
|
||||||
|
const colorBot = fgRGB2 == null || fgA2 == null ? colorTop : (fgRGB2 << 8) | fgA;
|
||||||
|
const text = label + '>%X>%X>%X';
|
||||||
|
const fmtCS0 = strlen(label);
|
||||||
|
const fmtCSD = 3;
|
||||||
|
|
||||||
|
const { code04, addrDraw2D, codes: cs0 } = codes[version];
|
||||||
|
const cs = cs0.map((e) => e.replace(/\s+/g, ''));
|
||||||
|
const params = [
|
||||||
|
liDX(3, x),
|
||||||
|
liDX(4, y),
|
||||||
|
liDX(5, fontSize),
|
||||||
|
liDX(6, colorTop),
|
||||||
|
colorTop === colorBot ? ASM.mr(7, 6) : liDX(7, colorBot),
|
||||||
|
].flatMap((e) => e);
|
||||||
|
const extraOffset = (params.length - 5) << 2; // default: 5 inst
|
||||||
|
let pc;
|
||||||
|
// 07
|
||||||
|
let code07 = '801F0000';
|
||||||
|
/* li32 rEntry, .data.patterns.PV1-1 */
|
||||||
|
code07 += liDX(8, addrPV1Data1 + extraOffset)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
code07 += cs[0];
|
||||||
|
/* li r8 */
|
||||||
|
code07 += liDX(8, addrFmt0 + extraOffset)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
code07 += cs[1];
|
||||||
|
/* stb r0/12/12, fmtCS0+fmtCSD*i(r8) */
|
||||||
|
code07 += [
|
||||||
|
ASM.stb(0, 8, fmtCS0),
|
||||||
|
0x540cc63e,
|
||||||
|
ASM.stb(12, 8, fmtCS0 + fmtCSD),
|
||||||
|
0x540c863e,
|
||||||
|
ASM.stb(12, 8, fmtCS0 + fmtCSD * 2),
|
||||||
|
]
|
||||||
|
.flatMap((e) => e)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
/* (code) */
|
||||||
|
code07 += cs[2];
|
||||||
|
/* r3~r7 */
|
||||||
|
code07 += params.map(inst2gecko).join('');
|
||||||
|
code07 += '4CC63182'; // crclr 6
|
||||||
|
/* bl drawText */
|
||||||
|
pc = addrCodeBase + (code07.length >> 1);
|
||||||
|
code07 += ASM.b(addrDrawText - pc, true)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
/* addi */
|
||||||
|
code07 += '38210010';
|
||||||
|
/* b 4+$b$.draw2d */
|
||||||
|
pc = addrCodeBase + (code07.length >> 1);
|
||||||
|
code07 += ASM.b(4 + addrDraw2D - pc, false)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
/* (code) */
|
||||||
|
code07 += cs[3];
|
||||||
|
/* fmt */
|
||||||
|
// prepend 1 dummy char as 'FF' in code
|
||||||
|
code07 += str2inst('.' + text)
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('')
|
||||||
|
.slice(2);
|
||||||
|
|
||||||
|
const head07 = [0x06000000 | (addrCodeBase & 0x1ffffff), code07.length >> 1]
|
||||||
|
.map(inst2gecko)
|
||||||
|
.join('');
|
||||||
|
// align code 07 (8 digit = 4 byte)
|
||||||
|
if (code07.length & 8) code07 += '00000000';
|
||||||
|
|
||||||
|
return (code04 + head07 + code07).replace(/\s+/g, '');
|
||||||
|
}
|
69
site/.vuepress/components/codes/PatternSelector/config.vue
Normal file
69
site/.vuepress/components/codes/PatternSelector/config.vue
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<template>
|
||||||
|
<section>
|
||||||
|
<h3 id="PatternSelector-config">{{l.appearance}}</h3>
|
||||||
|
<Preview :config="previewConfig" />
|
||||||
|
<div class="config-spacer" />
|
||||||
|
<TextConfig v-model="textConfig" />
|
||||||
|
<div>
|
||||||
|
{{l.label}} <input v-model="label">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getConfig, lskey} from './codegen.js';
|
||||||
|
import labels from './labels.json';
|
||||||
|
import TextConfig from '../TextConfig.vue';
|
||||||
|
|
||||||
|
function updateConfig() {
|
||||||
|
const {x, y, fontSize, fgRGB, fgA, fgRGB2, fgA2, label} = this;
|
||||||
|
const config = {
|
||||||
|
x, y, fontSize, fgRGB, fgA, fgRGB2, fgA2, label,
|
||||||
|
};
|
||||||
|
localStorage.setItem(lskey, JSON.stringify(config));
|
||||||
|
this.$emit('config', config);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
TextConfig,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
version: {type: String},
|
||||||
|
previewConfig: {type: Object},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
const config = getConfig();
|
||||||
|
return {...config};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateConfig,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
l() {
|
||||||
|
return labels[this.$lang] ?? labels['en-US'];
|
||||||
|
},
|
||||||
|
textConfig: {
|
||||||
|
get() {
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
Object.assign(this, value);
|
||||||
|
this.updateConfig();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
label: updateConfig,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
div.config-spacer {
|
||||||
|
height: 1em;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
width: 6em;
|
||||||
|
}
|
||||||
|
</style>
|
10
site/.vuepress/components/codes/PatternSelector/labels.json
Normal file
10
site/.vuepress/components/codes/PatternSelector/labels.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ja-JP": {
|
||||||
|
"appearance": "見た目",
|
||||||
|
"label": "ラベル:"
|
||||||
|
},
|
||||||
|
"en-US": {
|
||||||
|
"appearance": "Appearance",
|
||||||
|
"label": "Label:"
|
||||||
|
}
|
||||||
|
}
|
|
@ -173,6 +173,12 @@ export function liDX(rT, D) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @param {string} s */
|
||||||
|
export function strlen(s) {
|
||||||
|
const fmtbuf = Encoding.convert(Encoding.stringToCode(s), 'SJIS');
|
||||||
|
return fmtbuf.length; // not NUL terminated
|
||||||
|
}
|
||||||
|
|
||||||
/** @param {string} s */
|
/** @param {string} s */
|
||||||
export function str2inst(s) {
|
export function str2inst(s) {
|
||||||
const fmtbuf = Encoding.convert(Encoding.stringToCode(s), 'SJIS');
|
const fmtbuf = Encoding.convert(Encoding.stringToCode(s), 'SJIS');
|
|
@ -1,11 +1,13 @@
|
||||||
import InstantRestart from './InstantRestart/codegen.js';
|
import InstantRestart from './InstantRestart/codegen.js';
|
||||||
import qft from './qft/codegen.js';
|
import qft from './qft/codegen.js';
|
||||||
import CustomizedDisplay from './CustomizedDisplay/codegen.js';
|
import CustomizedDisplay from './CustomizedDisplay/codegen.js';
|
||||||
|
import PatternSelector from './PatternSelector/codegen.js';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
InstantRestart,
|
InstantRestart,
|
||||||
qft,
|
qft,
|
||||||
CustomizedDisplay,
|
CustomizedDisplay,
|
||||||
|
PatternSelector,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import InstantRestart from './InstantRestart/config.vue';
|
import InstantRestart from './InstantRestart/config.vue';
|
||||||
import CustomizedDisplay from './CustomizedDisplay/config.vue';
|
import CustomizedDisplay from './CustomizedDisplay/config.vue';
|
||||||
|
import PatternSelector from './PatternSelector/config.vue';
|
||||||
import qft from './qft/config.vue';
|
import qft from './qft/config.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
InstantRestart,
|
InstantRestart,
|
||||||
CustomizedDisplay,
|
CustomizedDisplay,
|
||||||
|
PatternSelector,
|
||||||
qft,
|
qft,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue