Pattern Selector 0.4
- Rewrote with C2 + separated config 06 - Remove label option
This commit is contained in:
parent
3a730390ac
commit
9207badc08
5 changed files with 161 additions and 235 deletions
268
Codes.xml
268
Codes.xml
|
@ -3344,8 +3344,8 @@
|
|||
<title lang="en-US">Pattern Selector</title>
|
||||
<title lang="ja-JP">パターン選択</title>
|
||||
<author>sup39(サポミク)</author>
|
||||
<version>0.3</version>
|
||||
<date>Jan 28, 2023</date>
|
||||
<version>0.4</version>
|
||||
<date>Jan 31, 2023</date>
|
||||
<dependencies>drawText</dependencies>
|
||||
<description lang="en-US">
|
||||
Ⓑ is the cursor to select the pattern,
|
||||
|
@ -3426,28 +3426,31 @@
|
|||
%object[]{data="/img/PatternSelector/PV1-3.svg"}
|
||||
</description>
|
||||
<source version="GMSJ01">
|
||||
0424F32C 495A9CD5
|
||||
042069DC 495F26B8
|
||||
077F9000 00000192
|
||||
801F0000 3D00817F
|
||||
61089147 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 3C808040
|
||||
C224F32C 00000013
|
||||
801F0000 3D80817F
|
||||
61880440 618A0024
|
||||
6C0C803D 280CA9C0
|
||||
41820054 6C0C803D
|
||||
280C87C0 40820034
|
||||
819F0004 898C0013
|
||||
508C442E 39280031
|
||||
88080007 7CEA00AE
|
||||
A0080005 7C006040
|
||||
41820034 39080007
|
||||
7C084840 4180FFE4
|
||||
3D808026 618C0224
|
||||
7D8803A6 4E800021
|
||||
4800002C 2C05FFFF
|
||||
4082FFE8 88EA0000
|
||||
39080031 7CE73B79
|
||||
4182FFD8 7C0838AE
|
||||
280000FF 4182FFCC
|
||||
7C030378 00000000
|
||||
C22069DC 00000019
|
||||
3C60817F 60630410
|
||||
38830010 3D808020
|
||||
618C1EA8 7D8803A6
|
||||
4E800021 3C808040
|
||||
A4040D82 3C60817F
|
||||
85630024 70000040
|
||||
41A20050 88840019
|
||||
|
@ -3465,45 +3468,37 @@
|
|||
5C00603E 5405063E
|
||||
5407C63E 5409863E
|
||||
88C30000 89030001
|
||||
89430002 3C60817F
|
||||
60639138 38830045
|
||||
4BFF7109 4AA0D8AC
|
||||
00100140 00000014
|
||||
FFFFFFFF FFFFFFFF
|
||||
452020FF 213200FF
|
||||
621CFF1D 32005025
|
||||
25252630 01FF4520
|
||||
20213001 FFFF621C
|
||||
1D300151 0707FF08
|
||||
3102FF36 01FF0231
|
||||
021E6E20 FF506174
|
||||
7465726E 20256325
|
||||
58256325 58256325
|
||||
58000000 00000000
|
||||
89430002 3D80817F
|
||||
61830424 61840434
|
||||
618C0238 7D8803A6
|
||||
4E800021 00000000
|
||||
</source>
|
||||
<source version="GMSJ0A">
|
||||
04027900 497D1701
|
||||
04125548 496D3B4C
|
||||
077F9000 00000192
|
||||
801F0000 3D00817F
|
||||
61089147 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 3C80803F
|
||||
C2027900 00000013
|
||||
801F0000 3D80817F
|
||||
61880440 618A0024
|
||||
6C0C803A 280C6D70
|
||||
41820054 6C0C803A
|
||||
280C4B80 40820034
|
||||
819F0004 898C0013
|
||||
508C442E 39280031
|
||||
88080007 7CEA00AE
|
||||
A0080005 7C006040
|
||||
41820034 39080007
|
||||
7C084840 4180FFE4
|
||||
3D808003 618C8684
|
||||
7D8803A6 4E800021
|
||||
4800002C 2C05FFFF
|
||||
4082FFE8 88EA0000
|
||||
39080031 7CE73B79
|
||||
4182FFD8 7C0838AE
|
||||
280000FF 4182FFCC
|
||||
7C030378 00000000
|
||||
C2125548 00000019
|
||||
3C60817F 60630410
|
||||
38830010 3D808012
|
||||
618C1660 7D8803A6
|
||||
4E800021 3C80803F
|
||||
A404545A 3C60817F
|
||||
85630024 70000040
|
||||
41A20050 88840019
|
||||
|
@ -3521,45 +3516,37 @@
|
|||
5C00603E 5405063E
|
||||
5407C63E 5409863E
|
||||
88C30000 89030001
|
||||
89430002 3C60817F
|
||||
60639138 38830045
|
||||
4BFF7109 4A92C418
|
||||
00100140 00000014
|
||||
FFFFFFFF FFFFFFFF
|
||||
452020FF 213200FF
|
||||
621CFF1D 32005025
|
||||
25252630 01FF4520
|
||||
20213001 FFFF621C
|
||||
1D300151 0707FF08
|
||||
3102FF36 01FF0231
|
||||
021E6E20 FF506174
|
||||
7465726E 20256325
|
||||
58256325 58256325
|
||||
58000000 00000000
|
||||
89430002 3D80817F
|
||||
61830424 61840434
|
||||
618C0238 7D8803A6
|
||||
4E800021 00000000
|
||||
</source>
|
||||
<source version="GMSP01">
|
||||
0403B54C 497BDAB5
|
||||
04138DF8 496C029C
|
||||
077F9000 00000192
|
||||
801F0000 3D00817F
|
||||
61089147 3D40817F
|
||||
614A0024 3D80803A
|
||||
618CDF98 7C006040
|
||||
41820048 3D80803A
|
||||
618CBDA8 7C006040
|
||||
40820034 819F0004
|
||||
898C0013 508C442E
|
||||
39280031 88080007
|
||||
7CEA00AE A0080005
|
||||
7C006040 41820024
|
||||
39080007 7C084840
|
||||
4180FFE4 4A8531C4
|
||||
2C05FFFF 4082FFF8
|
||||
88EA0000 39080031
|
||||
7CE73B79 4182FFE8
|
||||
7C0838AE 280000FF
|
||||
4182FFDC 7C030378
|
||||
4E800020 3C808040
|
||||
C203B54C 00000013
|
||||
801F0000 3D80817F
|
||||
61880440 618A0024
|
||||
6C0C803A 280CDF98
|
||||
41820054 6C0C803A
|
||||
280CBDA8 40820034
|
||||
819F0004 898C0013
|
||||
508C442E 39280031
|
||||
88080007 7CEA00AE
|
||||
A0080005 7C006040
|
||||
41820034 39080007
|
||||
7C084840 4180FFE4
|
||||
3D808004 618CC228
|
||||
7D8803A6 4E800021
|
||||
4800002C 2C05FFFF
|
||||
4082FFE8 88EA0000
|
||||
39080031 7CE73B79
|
||||
4182FFD8 7C0838AE
|
||||
280000FF 4182FFCC
|
||||
7C030378 00000000
|
||||
C2138DF8 00000019
|
||||
3C60817F 60630410
|
||||
38830010 3D808013
|
||||
618C4F0C 7D8803A6
|
||||
4E800021 3C808040
|
||||
A404BC26 3C60817F
|
||||
85630024 70000040
|
||||
41A20050 88840019
|
||||
|
@ -3577,45 +3564,37 @@
|
|||
5C00603E 5405063E
|
||||
5407C63E 5409863E
|
||||
88C30000 89030001
|
||||
89430002 3C60817F
|
||||
60639138 38830045
|
||||
4BFF7109 4A93FCC8
|
||||
00100140 00000014
|
||||
FFFFFFFF FFFFFFFF
|
||||
452020FF 213200FF
|
||||
621CFF1D 32005025
|
||||
25252630 01FF4520
|
||||
20213001 FFFF621C
|
||||
1D300151 0707FF08
|
||||
3102FF36 01FF0231
|
||||
021E6E20 FF506174
|
||||
7465726E 20256325
|
||||
58256325 58256325
|
||||
58000000 00000000
|
||||
89430002 3D80817F
|
||||
61830424 61840434
|
||||
618C0238 7D8803A6
|
||||
4E800021 00000000
|
||||
</source>
|
||||
<source version="GMSE01">
|
||||
0403B6FC 497BD905
|
||||
041441BC 496B4ED8
|
||||
077F9000 00000192
|
||||
801F0000 3D00817F
|
||||
61089147 3D40817F
|
||||
614A0024 3D80803B
|
||||
618C6178 7C006040
|
||||
41820048 3D80803B
|
||||
618C3F88 7C006040
|
||||
40820034 819F0004
|
||||
898C0013 508C442E
|
||||
39280031 88080007
|
||||
7CEA00AE A0080005
|
||||
7C006040 41820024
|
||||
39080007 7C084840
|
||||
4180FFE4 4A854070
|
||||
2C05FFFF 4082FFF8
|
||||
88EA0000 39080031
|
||||
7CE73B79 4182FFE8
|
||||
7C0838AE 280000FF
|
||||
4182FFDC 7C030378
|
||||
4E800020 3C808040
|
||||
C203B6FC 00000013
|
||||
801F0000 3D80817F
|
||||
61880440 618A0024
|
||||
6C0C803B 280C6178
|
||||
41820054 6C0C803B
|
||||
280C3F88 40820034
|
||||
819F0004 898C0013
|
||||
508C442E 39280031
|
||||
88080007 7CEA00AE
|
||||
A0080005 7C006040
|
||||
41820034 39080007
|
||||
7C084840 4180FFE4
|
||||
3D808004 618CD0D4
|
||||
7D8803A6 4E800021
|
||||
4800002C 2C05FFFF
|
||||
4082FFE8 88EA0000
|
||||
39080031 7CE73B79
|
||||
4182FFD8 7C0838AE
|
||||
280000FF 4182FFCC
|
||||
7C030378 00000000
|
||||
C21441BC 00000019
|
||||
3C60817F 60630410
|
||||
38830010 3D808014
|
||||
618C0390 7D8803A6
|
||||
4E800021 3C808040
|
||||
A4044486 3C60817F
|
||||
85630024 70000040
|
||||
41A20050 88840019
|
||||
|
@ -3633,21 +3612,10 @@
|
|||
5C00603E 5405063E
|
||||
5407C63E 5409863E
|
||||
88C30000 89030001
|
||||
89430002 3C60817F
|
||||
60639138 38830045
|
||||
4BFF7109 4A94B08C
|
||||
00100140 00000014
|
||||
FFFFFFFF FFFFFFFF
|
||||
452020FF 213200FF
|
||||
621CFF1D 32005025
|
||||
25252630 01FF4520
|
||||
20213001 FFFF621C
|
||||
1D300151 0707FF08
|
||||
3102FF36 01FF0231
|
||||
021E6E20 FF506174
|
||||
7465726E 20256325
|
||||
58256325 58256325
|
||||
58000000 00000000
|
||||
89430002 3D80817F
|
||||
61830424 61840434
|
||||
618C0238 7D8803A6
|
||||
4E800021 00000000
|
||||
</source>
|
||||
</code>
|
||||
<code>
|
||||
|
|
|
@ -67,7 +67,12 @@ Some codes store some states in the games memory starting from address 0x817F000
|
|||
| ![](./docs/reserved.svg) | `0x110` | `0x237` | QF Timer: Timer Textbox |
|
||||
| ![](./docs/reserved.svg) | `0x238` | `0x347` | General Function (`drawText`) |
|
||||
| ![](./docs/buffer.svg) | `0x348` | `0x39B` | Buffer (QF Timer) |
|
||||
| ![](./docs/unallocated.svg) | `0x39C` | `0xFFF` | Not Allocated |
|
||||
| ![](./docs/unallocated.svg) | `0x39C` | `0x40F` | Not Allocated |
|
||||
| ![](./docs/reserved.svg) | `0x410` | `0x41F` | Pattern Selector: Background Options |
|
||||
| ![](./docs/reserved.svg) | `0x424` | `0x433` | Pattern Selector: Text Options |
|
||||
| ![](./docs/reserved.svg) | `0x434` | `0x440` | Pattern Selector: Format String |
|
||||
| ![](./docs/reserved.svg) | `0x441` | `0x475` | Pattern Selector: Pattern Data |
|
||||
| ![](./docs/unallocated.svg) | `0x476` | `0xFFF` | Not Allocated |
|
||||
|
||||
### Adding translations
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
# Changelog
|
||||
## Jan 31, 2023
|
||||
### Updated 'Pattern Selector'
|
||||
- Rewrote with C2 + separated config 06
|
||||
- Remove label option
|
||||
### Updated 'Customized Display'
|
||||
- Rewrote with C2
|
||||
- Implemented a more complex assembler/compiler to support function call
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { parseJSON } from '../codegen.js';
|
||||
import { ASM, liDX, str2hex, inst2gecko, getFillRectParams } from '../asm.js';
|
||||
import { ASM, liDX, str2hex, insts2hex, getFillRectParams, getDrawTextOpt } from '../asm.js';
|
||||
import { measureText } from '../text.js';
|
||||
import { int2hex } from '../utils.js';
|
||||
import { addrs } from '../addrs.js';
|
||||
|
@ -12,20 +12,19 @@ import * as GMSP01 from './code/GMSP01.js';
|
|||
const codes = { GMSJ01, GMSJ0A, GMSP01 };
|
||||
|
||||
export const defaultConfig = {
|
||||
x: 16,
|
||||
y: 320,
|
||||
fontSize: 20,
|
||||
x: 498,
|
||||
y: 462,
|
||||
fontSize: 14,
|
||||
fgRGB: 0xffffff,
|
||||
fgA: 0xff,
|
||||
fgRGB2: null,
|
||||
fgA2: null,
|
||||
bgRGB: 0,
|
||||
bgA: 0,
|
||||
bgLeft: 0,
|
||||
bgRight: 0,
|
||||
bgTop: 0,
|
||||
bgBot: 0,
|
||||
label: 'Pattern ',
|
||||
bgA: 128,
|
||||
bgLeft: 2,
|
||||
bgRight: 4,
|
||||
bgTop: 2,
|
||||
bgBot: 2,
|
||||
};
|
||||
|
||||
/** @returns {typeof defaultConfig} */
|
||||
|
@ -33,77 +32,34 @@ export function getConfig() {
|
|||
const config =
|
||||
(typeof localStorage !== 'undefined' && parseJSON(localStorage.getItem(lskey))) || {};
|
||||
const o = { ...defaultConfig, ...config };
|
||||
return { ...o, text: getPreviewText(o) };
|
||||
return { ...o, text: getPreviewText() };
|
||||
}
|
||||
|
||||
/** @param {typeof defaultConfig} config */
|
||||
export const getPreviewText = ({ label }) => label + '#0 0 0';
|
||||
export const getPreviewText = () => '#0 0 0';
|
||||
|
||||
const codePattern = `
|
||||
452020FF 213200FF
|
||||
621CFF1D 32005025
|
||||
25252630 01FF4520
|
||||
20213001 FFFF621C
|
||||
1D300151 0707FF08
|
||||
3102FF36 01FF0231
|
||||
021E6E20 FF
|
||||
/**
|
||||
* @param {keyof typeof codes} version
|
||||
* @param {string} baseCode
|
||||
*/
|
||||
export default function codegen(version, baseCode) {
|
||||
const config = getConfig();
|
||||
let code = baseCode;
|
||||
code += '077F0410 00000066';
|
||||
// fillRectOpt
|
||||
code += insts2hex(getFillRectParams(config, measureText(getPreviewText(), version)));
|
||||
// drawTextOpt
|
||||
code += insts2hex(getDrawTextOpt(config));
|
||||
// fmt
|
||||
code += '25632558256325582563255800';
|
||||
// pattern data
|
||||
code += `452020 FF213200
|
||||
FF621CFF 1D320050
|
||||
25252526 3001FF45
|
||||
20202130 01FFFF62
|
||||
1C1D3001 510707FF
|
||||
083102FF 3601FF02
|
||||
31021E6E 20FF0000
|
||||
`;
|
||||
|
||||
/** @param {keyof typeof codes} version */
|
||||
export default function codegen(version) {
|
||||
const config = getConfig();
|
||||
const { x, y, fontSize, fgRGB, fgA, fgRGB2, fgA2, bgA, label } = config;
|
||||
const colorTop = (fgRGB << 8) | fgA;
|
||||
const colorBot = fgRGB2 == null || fgA2 == null ? colorTop : (fgRGB2 << 8) | fgA;
|
||||
const text = label + '%c%X%c%X%c%X';
|
||||
|
||||
const { code04, codeBase } = codes[version];
|
||||
const code07 = [
|
||||
codeBase,
|
||||
// drawTextOpt
|
||||
int2hex(x, 2),
|
||||
int2hex(y, 2),
|
||||
int2hex(fontSize, 4),
|
||||
int2hex(colorTop, 4),
|
||||
int2hex(colorBot, 4),
|
||||
// pattern.s
|
||||
codePattern,
|
||||
// fmt
|
||||
str2hex(text, version),
|
||||
]
|
||||
.map((s) => s.replace(/\s+/g, ''))
|
||||
.join('');
|
||||
|
||||
const head07 = [
|
||||
'077F9000',
|
||||
// byte count = hex length >> 1
|
||||
int2hex(code07.length >> 1, 4),
|
||||
].join('');
|
||||
|
||||
// align code 07 (1 line = 16 hex digits)
|
||||
const tail07 = ''.padEnd(code07.length % 16 ? 16 - (code07.length % 16) : 0, '0');
|
||||
|
||||
// background
|
||||
const addrFillRect = addrs.fillRect[version];
|
||||
const codeBg = bgA
|
||||
? [
|
||||
0xc2000000 + ((addrs.drawWater[version] - 0x28) & 0x01ffffff),
|
||||
0x00000007,
|
||||
0x48000019, // bl trick
|
||||
// rect, color
|
||||
...getFillRectParams(config, measureText(label + '#0 0 0', version)),
|
||||
0x7c6802a6, // mtlr r3
|
||||
0x38830010, // addi r4, r3, 0x10
|
||||
0x3d800000 | (addrFillRect >>> 16), // lis r12, fill_rect@h
|
||||
0x618c0000 | (addrFillRect & 0xffff), // ori r12, r12, fill_rect@l
|
||||
0x7d8803a6, // mtlr r12
|
||||
0x4e800021, // blrl
|
||||
0x60000000, // nop
|
||||
0x00000000, // End of C2
|
||||
]
|
||||
.map(inst2gecko)
|
||||
.join('')
|
||||
: '';
|
||||
|
||||
return (code04 + head07 + code07 + tail07 + codeBg).replace(/\s+/g, '');
|
||||
return code.replace(/\s/g, '');
|
||||
}
|
||||
|
|
|
@ -4,9 +4,6 @@
|
|||
<Preview :config="previewConfig" />
|
||||
<div class="config-spacer" />
|
||||
<TextConfig v-model="textConfig" />
|
||||
<div>
|
||||
{{l.label}} <input v-model="label">
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
|
@ -46,9 +43,6 @@ export default {
|
|||
},
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
label: updateConfig,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
Loading…
Reference in a new issue