danoniplus 41.4.2 → 42.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,16 +46,21 @@ a:hover { color:#FF9900; text-decoration: underline; }
46
46
  9A,SemiHard,2.75,75,1,5
47
47
  9B,Hard,2.75,75,1,5
48
48
  9i,Enjoyable,2.75,75,1,5
49
+ 9d,SemiHard,2.75,75,1,5
50
+ 9h,SemiHard,2.75,75,1,5
49
51
  11,Normal,3.5,75,1,5
50
52
  11L,Normal+,3.25,75,1,5
51
- 12,Hard,3.75,75,1,5
52
- 14,Hard+,4,75,1,5
53
- 17,Very Hard,4.5,75,1,5
54
53
  11i,Very Hard,4.5,75,1,5
54
+ 11j,Hard+,3.5,75,1,7
55
+ 12,Normal,3.75,75,1,5
56
+ 12i,Normal+,3.75,75,1,5
57
+ 13,Hard,4.5,75,1,5
58
+ 14,Hard+,4,75,1,5
55
59
  14i,Very Hard,4.5,75,1,5
56
- 16i,Extra,4.5,75,1,5
60
+ 15A,Very Hard,4.5,75,1,5
57
61
  15B,Very Hard,4.5,75,1,5
58
- 13,Hard,4.5,75,1,5
62
+ 16i,Extra,4.5,75,1,5
63
+ 17,Very Hard,4.5,75,1,5
59
64
  |
60
65
  |difSelectorUse=true|
61
66
  |setColor=#cc99ff,#ffccff,#ffffff,#ffff99,#ff9966|
package/js/danoni_main.js CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2025/05/23
7
+ * Revised : 2025/05/24
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 41.4.2`;
12
- const g_revisedDate = `2025/05/23`;
11
+ const g_version = `Ver 42.0.0`;
12
+ const g_revisedDate = `2025/05/24`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -1354,18 +1354,18 @@ const getStrWidth = (_str, _fontsize, _font) => {
1354
1354
  * 指定した横幅に合ったフォントサイズを取得
1355
1355
  * @param {string} _str
1356
1356
  * @param {number} _maxWidth
1357
- * @param {string} _font
1358
- * @param {number} _maxFontsize
1359
- * @param {number} _minFontsize
1357
+ * @param {string} [object.font=getBasicFont()]
1358
+ * @param {number} [object.maxSiz=14]
1359
+ * @param {number} [object.minSiz=5]
1360
1360
  * @returns {number}
1361
1361
  */
1362
- const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64, _minFontsize = 5) => {
1363
- for (let siz = _maxFontsize; siz >= _minFontsize; siz--) {
1364
- if (_maxWidth >= getStrWidth(getLongestStr(_str?.split(`<br>`)), siz, _font)) {
1362
+ const getFontSize2 = (_str, _maxWidth, { font = getBasicFont(), maxSiz = 14, minSiz = 5 } = {}) => {
1363
+ for (let siz = maxSiz; siz >= minSiz; siz--) {
1364
+ if (_maxWidth >= getStrWidth(getLongestStr(_str?.split(`<br>`)), siz, font)) {
1365
1365
  return siz;
1366
1366
  }
1367
1367
  }
1368
- return _minFontsize;
1368
+ return minSiz;
1369
1369
  };
1370
1370
 
1371
1371
  /**
@@ -1392,7 +1392,7 @@ const getLongestStr = _array => {
1392
1392
  */
1393
1393
  const createDescDiv = (_id, _str, { altId = _id, siz = g_limitObj.mainSiz } = {}) =>
1394
1394
  createDivCss2Label(_id, _str, Object.assign(g_lblPosObj[altId], {
1395
- siz: getFontSize(_str, g_lblPosObj[altId]?.w || g_sWidth, getBasicFont(), siz),
1395
+ siz: getFontSize2(_str, g_lblPosObj[altId]?.w || g_sWidth, { maxSiz: siz }),
1396
1396
  }));
1397
1397
 
1398
1398
  /*-----------------------------------------------------------*/
@@ -4467,6 +4467,14 @@ const getKeyName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[
4467
4467
  */
4468
4468
  const getKeyUnitName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[1] ?? `key`));
4469
4469
 
4470
+ /**
4471
+ * 別キーモード時の表示名の取得
4472
+ * @param {boolean} _spaceFlg
4473
+ * @returns {string} 別キー名
4474
+ */
4475
+ const getTransKeyName = (_spaceFlg = false) => hasVal(g_keyObj[`transKey${g_keyObj.currentKey}_${g_keyObj.currentPtn}`])
4476
+ ? (_spaceFlg ? ` ` : ``) + `(${g_keyObj[`transKey${g_keyObj.currentKey}_${g_keyObj.currentPtn}`]})` : ``;
4477
+
4470
4478
  /**
4471
4479
  * KeyBoardEvent.code の値をCW Edition用のキーコードに変換
4472
4480
  * 簡略指定ができるように、以下の記述を許容
@@ -5126,7 +5134,7 @@ const titleInit = (_initFlg = false) => {
5126
5134
  }
5127
5135
  const releaseDate = (g_headerObj.releaseDate !== `` ? ` @${g_headerObj.releaseDate}` : ``);
5128
5136
  const versionName = `&copy; 2018-${g_revisedDate.slice(0, 4)} ティックル, CW ${g_version}${customVersion}${releaseDate}`;
5129
- const getLinkSiz = _name => getFontSize(_name, g_sWidth / 2 - 20, getBasicFont(), g_limitObj.lnkSiz, 12);
5137
+ const getLinkSiz = _name => getFontSize2(_name, g_sWidth / 2 - 20, { maxSiz: g_limitObj.lnkSiz, minSiz: 12 });
5130
5138
 
5131
5139
  /**
5132
5140
  * クレジット用リンク作成
@@ -5195,7 +5203,7 @@ const titleInit = (_initFlg = false) => {
5195
5203
  // バージョン描画
5196
5204
  createCss2Button(`lnkVersion`, versionName, () => true,
5197
5205
  Object.assign(g_lblPosObj.lnkVersion, {
5198
- siz: getFontSize(versionName, g_sWidth * 3 / 4 - 20, getBasicFont(), 12),
5206
+ siz: getFontSize2(versionName, g_sWidth * 3 / 4 - 20, { maxSiz: 12 }),
5199
5207
  resetFunc: () => openLink(`https://github.com/cwtickle/danoniplus`),
5200
5208
  }), g_cssObj.button_Tweet),
5201
5209
 
@@ -5308,7 +5316,7 @@ const drawTitle = (_titleName = g_headerObj.musicTitleForView, _scoreId = ``) =>
5308
5316
  let titlefontsize = 64;
5309
5317
  for (let j = 0; j < _titleName.length; j++) {
5310
5318
  if (_titleName[j] !== ``) {
5311
- titlefontsize = getFontSize(_titleName[j], g_sWidth - 100, g_headerObj.titlefonts[j], titlefontsize);
5319
+ titlefontsize = getFontSize2(_titleName[j], g_sWidth - 100, { font: g_headerObj.titlefonts[j], maxSiz: titlefontsize });
5312
5320
  }
5313
5321
  }
5314
5322
 
@@ -5558,7 +5566,7 @@ const changeMSelect = (_num, _initFlg = false) => {
5558
5566
  if (j === 0) {
5559
5567
  } else {
5560
5568
  document.getElementById(`btnMusicSelect${j}`).style.fontSize =
5561
- getFontSize(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2), getBasicFont(), 14);
5569
+ getFontSize2(g_headerObj.musicTitles[idx].slice(0, limitedMLength), g_btnWidth(1 / 2));
5562
5570
  document.getElementById(`btnMusicSelect${j}`).innerHTML =
5563
5571
  `${g_headerObj.musicTitles[idx].slice(0, limitedMLength)}${g_headerObj.musicTitles[idx].length > limitedMLength ? '...' : ''}<br>` +
5564
5572
  `<span style="font-size:0.7em;line-height:9px"> / ${g_headerObj.artistNames[idx]}</span>`;
@@ -5593,7 +5601,7 @@ const changeMSelect = (_num, _initFlg = false) => {
5593
5601
  // 選択した楽曲の情報表示
5594
5602
  const idx = g_headerObj.musicIdxList[g_settings.musicIdxNum];
5595
5603
  document.getElementById(`lblMusicSelect`).innerHTML =
5596
- `<span style="font-size:${getFontSize(g_headerObj.musicTitlesForView[idx].join(`<br>`), g_btnWidth(1 / 2), getBasicFont(), 18)}px;` +
5604
+ `<span style="font-size:${getFontSize2(g_headerObj.musicTitlesForView[idx].join(`<br>`), g_btnWidth(1 / 2), { maxSiz: 18 })}px;` +
5597
5605
  `font-weight:bold">${g_headerObj.musicTitlesForView[idx].join(`<br>`)}</span>`;
5598
5606
  document.getElementById(`lblMusicSelectDetail`).innerHTML =
5599
5607
  `Maker: ${creatorLink} / Artist: <a href="${g_headerObj.artistUrls[idx]}" target="_blank">` +
@@ -5843,7 +5851,7 @@ const dataMgtInit = () => {
5843
5851
  const keyWidth = Math.min(Math.max(50, getStrWidth(getKeyName(key), g_limitObj.setLblSiz, getBasicFont())), 80);
5844
5852
  keyListSprite.appendChild(createMgtButton(key, j - 2, 0, {
5845
5853
  w: keyWidth,
5846
- siz: getFontSize(getKeyName(key), keyWidth, getBasicFont(), g_limitObj.setLblSiz, 10),
5854
+ siz: getFontSize2(getKeyName(key), keyWidth, { maxSiz: g_limitObj.setLblSiz, minSiz: 10 }),
5847
5855
  }));
5848
5856
  document.getElementById(`btn${toCapitalize(key)}`).innerHTML = getKeyName(key);
5849
5857
 
@@ -6142,7 +6150,7 @@ const optionInit = () => {
6142
6150
  // 楽曲データの表示
6143
6151
  const text = getMusicInfoView();
6144
6152
  divRoot.appendChild(createDivCss2Label(`lblMusicInfo`, text,
6145
- Object.assign({ siz: getFontSize(text, g_btnWidth(3 / 4), getBasicFont(), 12) }, g_lblPosObj.lblMusicInfo)));
6153
+ Object.assign({ siz: getFontSize2(text, g_btnWidth(3 / 4), { maxSiz: 12 }) }, g_lblPosObj.lblMusicInfo)));
6146
6154
 
6147
6155
  // タイトル文字描画
6148
6156
  divRoot.appendChild(getTitleDivLabel(`lblTitle`, g_lblNameObj.settings, 0, 15, `settings_Title`));
@@ -6713,7 +6721,7 @@ const makeHighScore = _scoreId => {
6713
6721
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
6714
6722
  const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
6715
6723
  const mirrorName = (g_stateObj.shuffle === C_FLG_OFF ? `` : `-${g_stateObj.shuffle}`);
6716
- const transKeyName = (hasVal(g_keyObj[`transKey${keyCtrlPtn}`]) ? `(${g_keyObj[`transKey${keyCtrlPtn}`]})` : ``);
6724
+ const transKeyName = getTransKeyName();
6717
6725
  let scoreName = `${g_headerObj.keyLabels[_scoreId]}${transKeyName}${getStgDetailName('k-')}${g_headerObj.difLabels[_scoreId]}${assistFlg}${mirrorName}`;
6718
6726
  if (g_headerObj.makerView) {
6719
6727
  scoreName += `-${g_headerObj.creatorNames[_scoreId]}`;
@@ -6959,14 +6967,15 @@ const setDifficulty = (_initFlg) => {
6959
6967
 
6960
6968
  // 譜面名設定 (Difficulty)
6961
6969
  const difWidth = parseFloat(lnkDifficulty.style.width);
6970
+ const transKeyName = getTransKeyName();
6962
6971
  const keyUnitName = getStgDetailName(getKeyUnitName(g_keyObj.currentKey));
6963
- const difNames = [`${getKeyName(g_keyObj.currentKey)} ${keyUnitName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`];
6964
- lnkDifficulty.style.fontSize = wUnit(getFontSize(difNames[0], difWidth, getBasicFont(), g_limitObj.setLblSiz));
6972
+ const difNames = [`${getKeyName(g_keyObj.currentKey)}${transKeyName} ${keyUnitName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`];
6973
+ lnkDifficulty.style.fontSize = wUnit(getFontSize2(difNames[0], difWidth, { maxSiz: g_limitObj.setLblSiz }));
6965
6974
 
6966
6975
  if (g_headerObj.makerView) {
6967
6976
  difNames.push(`(${g_headerObj.creatorNames[g_stateObj.scoreId]})`);
6968
6977
  difNames.forEach((difName, j) => {
6969
- const tmpSize = getFontSize(difName, difWidth, getBasicFont(), 14);
6978
+ const tmpSize = getFontSize2(difName, difWidth);
6970
6979
  difNames[j] = `<span style="font-size:${wUnit(tmpSize)}">${difName}</span>`;
6971
6980
  });
6972
6981
  }
@@ -7008,7 +7017,7 @@ const setDifficulty = (_initFlg) => {
7008
7017
 
7009
7018
  // 楽曲データの表示
7010
7019
  lblMusicInfo.textContent = getMusicInfoView();
7011
- lblMusicInfo.style.fontSize = wUnit(getFontSize(lblMusicInfo.textContent, g_btnWidth(3 / 4), getBasicFont(), 12));
7020
+ lblMusicInfo.style.fontSize = wUnit(getFontSize2(lblMusicInfo.textContent, g_btnWidth(3 / 4), { maxSiz: 12 }));
7012
7021
 
7013
7022
  // ユーザカスタムイベント(初期)
7014
7023
  g_customJsObj.difficulty.forEach(func => func(_initFlg, g_canLoadDifInfoFlg));
@@ -8980,10 +8989,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
8980
8989
  g_headerObj[`key${selectedKc}`] = setKey;
8981
8990
  g_headerObj[`key${selectedKc}Def`] = setKey;
8982
8991
  document.getElementById(`sc${selectedKc}`).textContent = getScMsg[selectedKc]();
8983
- document.getElementById(`sc${selectedKc}`).style.fontSize = `${getFontSize(getScMsg[selectedKc](), g_btnWidth(5 / 12) - 40, getBasicFont(), 13)}px`;
8992
+ document.getElementById(`sc${selectedKc}`).style.fontSize = `${getFontSize2(getScMsg[selectedKc](), g_btnWidth(5 / 12) - 40, { maxSiz: 13 })}px`;
8984
8993
  if (g_isMac) {
8985
8994
  scTitleBack.textContent = getScMsg.TitleBack();
8986
- scTitleBack.style.fontSize = `${getFontSize(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, getBasicFont(), 13)}px`;
8995
+ scTitleBack.style.fontSize = `${getFontSize2(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, { maxSiz: 13 })}px`;
8987
8996
  }
8988
8997
  changeConfigColor(document.getElementById(`sc${selectedKc}`),
8989
8998
  g_headerObj[`key${selectedKc}`] === g_headerObj[`key${selectedKc}Def2`] ?
@@ -11596,10 +11605,11 @@ const mainInit = () => {
11596
11605
  const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${getStgDetailName(g_stateObj.shuffle)}` : ``);
11597
11606
 
11598
11607
  // 曲名・アーティスト名、譜面名のサイズ調整
11599
- const checkMusicSiz = (_text, _siz) => getFontSize(_text, g_headerObj.playingWidth - g_headerObj.customViewWidth - 125, getBasicFont(), _siz);
11608
+ const checkMusicSiz = (_text, _siz) => getFontSize2(_text, g_headerObj.playingWidth - g_headerObj.customViewWidth - 125, { maxSiz: _siz });
11600
11609
 
11601
11610
  const makerView = g_headerObj.makerView ? ` (${g_headerObj.creatorNames[g_stateObj.scoreId]})` : ``;
11602
- let difName = `[${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])} / ${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}${shuffleName}${makerView}]`;
11611
+ const transKeyName = getTransKeyName();
11612
+ let difName = `[${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}${shuffleName}${makerView}]`;
11603
11613
  let creditName = `${musicTitle} / ${artistName}`;
11604
11614
  if (checkMusicSiz(creditName, g_limitObj.musicTitleSiz) < 12) {
11605
11615
  creditName = `${musicTitle}`;
@@ -13580,7 +13590,7 @@ const resultInit = () => {
13580
13590
  }
13581
13591
 
13582
13592
  const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
13583
- const transKeyName = (hasVal(g_keyObj[`transKey${keyCtrlPtn}`]) ? `(${g_keyObj[`transKey${keyCtrlPtn}`]})` : ``);
13593
+ const transKeyName = getTransKeyName();
13584
13594
  const orgShuffleFlg = g_keyObj[`shuffle${keyCtrlPtn}`].filter((shuffleGr, j) => shuffleGr !== g_keyObj[`shuffle${keyCtrlPtn}_0d`][j]).length === 0;
13585
13595
  const shuffleName = `${getStgDetailName(g_stateObj.shuffle)}${!orgShuffleFlg && !g_stateObj.shuffle.endsWith(`+`) ? getStgDetailName('(S)') : ''}`;
13586
13596
 
@@ -13681,9 +13691,9 @@ const resultInit = () => {
13681
13691
  lblStyleData.style.top = `${parseFloat(lblStyleData.style.top) - 3}px`;
13682
13692
  lblStyleData.innerHTML = `${lblStyleData.textContent.slice(0, playStyleBreakNum)}<br>` +
13683
13693
  `${lblStyleData.textContent.slice(playStyleBreakNum)}`;
13684
- lblStyleData.style.fontSize = `${getFontSize(lblStyleData.textContent.slice(0, playStyleBreakNum), 350, getBasicFont(), 10)}px`;
13694
+ lblStyleData.style.fontSize = `${getFontSize2(lblStyleData.textContent.slice(0, playStyleBreakNum), 350, { maxSiz: 10 })}px`;
13685
13695
  } else {
13686
- lblStyleData.style.fontSize = `${getFontSize(lblStyleData.textContent, 350, getBasicFont(), 14)}px`;
13696
+ lblStyleData.style.fontSize = `${getFontSize2(lblStyleData.textContent, 350)}px`;
13687
13697
  }
13688
13698
 
13689
13699
  /**
@@ -13957,10 +13967,10 @@ const resultInit = () => {
13957
13967
  drawText(unEscapeHtml(difDataForImage), { hy: 4 });
13958
13968
 
13959
13969
  if (playStyleData.length > 60) {
13960
- drawText(playStyleData.slice(0, playStyleBreakNum), { hy: 5, siz: getFontSize(playStyleData.slice(0, playStyleBreakNum), 370, getBasicFont(), 14) });
13961
- drawText(playStyleData.slice(playStyleBreakNum), { hy: 6, siz: getFontSize(playStyleData.slice(playStyleBreakNum), 370, getBasicFont(), 14) });
13970
+ drawText(playStyleData.slice(0, playStyleBreakNum), { hy: 5, siz: getFontSize2(playStyleData.slice(0, playStyleBreakNum), 370) });
13971
+ drawText(playStyleData.slice(playStyleBreakNum), { hy: 6, siz: getFontSize2(playStyleData.slice(playStyleBreakNum), 370) });
13962
13972
  } else {
13963
- drawText(playStyleData, { hy: 5, siz: getFontSize(lblStyleData.textContent, 370, getBasicFont(), 15) });
13973
+ drawText(playStyleData, { hy: 5, siz: getFontSize2(lblStyleData.textContent, 370, { maxSiz: 15 }) });
13964
13974
  }
13965
13975
  Object.keys(jdgScoreObj).forEach(score => {
13966
13976
  drawText(g_lblNameObj[`j_${score}`], { hy: 7 + jdgScoreObj[score].pos, color: jdgScoreObj[score].dfColor });
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2025/05/09 (v41.2.0)
8
+ * Revised : 2025/05/24 (v42.0.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -509,11 +509,11 @@ const updateWindowSiz = () => {
509
509
  },
510
510
  scTitleBack: {
511
511
  x: g_btnX(1 / 4) + 20, y: g_sHeight - 50, align: C_ALIGN_LEFT,
512
- w: g_btnWidth(5 / 12) - 40, h: C_KYC_REPHEIGHT, siz: getFontSize(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, getBasicFont(), 13),
512
+ w: g_btnWidth(5 / 12) - 40, h: C_KYC_REPHEIGHT, siz: getFontSize2(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, { maxSiz: 13 }),
513
513
  },
514
514
  scRetry: {
515
515
  x: g_btnX(5 / 8) + 20, y: g_sHeight - 50, align: C_ALIGN_LEFT,
516
- w: g_btnWidth(5 / 12) - 40, h: C_KYC_REPHEIGHT, siz: getFontSize(getScMsg.Retry(), g_btnWidth(5 / 12) - 40, getBasicFont(), 13),
516
+ w: g_btnWidth(5 / 12) - 40, h: C_KYC_REPHEIGHT, siz: getFontSize2(getScMsg.Retry(), g_btnWidth(5 / 12) - 40, getBasicFont(), { maxSiz: 13 }),
517
517
  },
518
518
 
519
519
  /** メイン画面 */
@@ -2609,16 +2609,22 @@ const g_keyObj = {
2609
2609
  chara9A_0: [`left`, `down`, `up`, `right`, `space`, `sleft`, `sdown`, `sup`, `sright`],
2610
2610
  chara9B_0: [`left`, `down`, `up`, `right`, `space`, `sleft`, `sdown`, `sup`, `sright`],
2611
2611
  chara9i_0: [`sleft`, `sdown`, `sup`, `sright`, `left`, `down`, `up`, `right`, `space`],
2612
+ chara9d_0: [`left`, `down`, `up`, `right`, `space`, `sleft`, `sdown`, `sup`, `sright`],
2613
+ chara9h_0: [`1x`, `yx`, `ux`, `ix`, `ax`, `zx`, `sx`, `hx`, `mx`],
2612
2614
  chara11_0: [`sleft`, `sdown`, `sup`, `sright`,
2613
2615
  `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2614
2616
  chara11L_0: [`sleft`, `sdown`, `sup`, `sright`,
2615
2617
  `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2616
2618
  chara11i_0: [`left`, `down`, `gor`, `up`, `right`, `space`,
2617
2619
  `sleft`, `sdown`, `siyo`, `sup`, `sright`],
2620
+ chara11j_0: [`gor`, `left`, `down`, `up`, `right`, `space`,
2621
+ `sleft`, `sdown`, `sup`, `sright`, `siyo`],
2618
2622
  chara11W_0: [`sleft`, `sdown`, `sup`, `sright`,
2619
2623
  `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2620
2624
  chara12_0: [`sleft`, `sdown`, `sup`, `sright`,
2621
2625
  `oni`, `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2626
+ chara12i_0: [`oni`, `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`,
2627
+ `sleft`, `sdown`, `sup`, `sright`],
2622
2628
  chara13_0: [`tleft`, `tdown`, `tup`, `tright`,
2623
2629
  `left`, `down`, `up`, `right`, `space`, `sleft`, `sdown`, `sup`, `sright`],
2624
2630
  chara14_0: [`sleftdia`, `sleft`, `sdown`, `sup`, `sright`, `srightdia`,
@@ -2638,11 +2644,25 @@ const g_keyObj = {
2638
2644
  chara5_1: [`space`, `left`, `down`, `up`, `right`],
2639
2645
  chara8_1: [`sleft`, `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2640
2646
  chara9i_1: [`left`, `down`, `up`, `right`, `space`, `sleft`, `sdown`, `sup`, `sright`],
2647
+ chara9h_1: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2641
2648
  chara17_1: [`aleft`, `adown`, `aup`, `aright`, `space`, `dleft`, `ddown`, `dup`, `dright`,
2642
2649
  `bleft`, `bdown`, `bup`, `bright`, `cleft`, `cdown`, `cup`, `cright`],
2643
2650
 
2644
2651
  chara5_2: [`left`, `down`, `space`, `up`, `right`],
2645
2652
  chara8_2: [`sleft`, `left`, `leftdia`, `down`, `space`, `up`, `rightdia`, `right`],
2653
+ chara9h_2: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2654
+ chara11_2: [`left`, `sleft`, `sdown`, `leftdia`, `down`, `space`,
2655
+ `up`, `sup`, `sright`, `rightdia`, `right`],
2656
+ chara11L_2: [`left`, `sleft`, `sdown`, `leftdia`, `down`, `space`,
2657
+ `up`, `sup`, `sright`, `rightdia`, `right`],
2658
+
2659
+ chara9h_3: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2660
+ chara9h_4: [`1x`, `ax`, `gor`, `zx`, `sx`, `hx`, `yx`, `ux`, `siyo`, `mx`, `ix`],
2661
+ chara9h_5: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2662
+ chara9h_6: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2663
+
2664
+ chara9A_7: [`left`, `sleft`, `sdown`, `sright`, `down`, `up`, `right`, `space`, `sup`],
2665
+ chara9h_7: [`1x`, `ax`, `zx`, `sx`, `hx`, `yx`, `ux`, `mx`, `ix`],
2646
2666
 
2647
2667
  // 頻度の高い譜面データ名パターン
2648
2668
  // 後で chara4A, chara4A_a, chara4A_b, ... に変換する
@@ -2660,11 +2680,15 @@ const g_keyObj = {
2660
2680
  color9A_0_0: [0, 0, 0, 0, 2, 3, 3, 3, 3],
2661
2681
  color9B_0_0: [1, 0, 1, 0, 2, 0, 1, 0, 1],
2662
2682
  color9i_0_0: [0, 0, 0, 0, 2, 2, 2, 2, 2],
2683
+ color9d_0_0: [0, 1, 0, 2, 2, 2, 0, 1, 0],
2684
+ color9h_0_0: [2, 3, 3, 3, 1, 0, 1, 1, 0],
2663
2685
  color11_0_0: [3, 3, 3, 3, 0, 1, 0, 2, 0, 1, 0],
2664
2686
  color11L_0_0: [3, 3, 3, 3, 0, 1, 0, 2, 0, 1, 0],
2665
2687
  color11W_0_0: [2, 3, 3, 2, 0, 1, 0, 2, 0, 1, 0],
2666
2688
  color11i_0_0: [0, 0, 2, 0, 0, 2, 3, 3, 2, 3, 3],
2689
+ color11j_0_0: [2, 0, 0, 0, 0, 2, 3, 3, 3, 3, 2],
2667
2690
  color12_0_0: [3, 3, 3, 3, 2, 0, 1, 0, 1, 0, 1, 0],
2691
+ color12i_0_0: [1, 0, 1, 0, 3, 3, 3, 3, 0, 1, 0, 1],
2668
2692
  color13_0_0: [4, 4, 4, 4, 0, 0, 0, 0, 2, 3, 3, 3, 3],
2669
2693
  color14_0_0: [4, 3, 3, 3, 3, 4, 2, 0, 1, 0, 1, 0, 1, 0],
2670
2694
  color14i_0_0: [2, 2, 2, 3, 3, 3, 3, 0, 1, 0, 2, 0, 1, 0],
@@ -2685,6 +2709,8 @@ const g_keyObj = {
2685
2709
  color9A_2_0: [3, 0, 3, 0, 2, 0, 3, 0, 3],
2686
2710
  color9B_2_0: [0, 0, 0, 0, 2, 1, 1, 1, 1],
2687
2711
 
2712
+ color9B_3_0: [0, 0, 2, 0, 0, 2, 1, 1, 2, 1, 1],
2713
+
2688
2714
  // ColorGroup - 2
2689
2715
  color9A_0_1: [0, 0, 3, 0, 2, 0, 0, 3, 0],
2690
2716
  color9B_0_1: [4, 3, 1, 0, 2, 0, 1, 3, 4],
@@ -2715,11 +2741,15 @@ const g_keyObj = {
2715
2741
  shuffle9A_0_0: [0, 0, 0, 0, 1, 0, 0, 0, 0],
2716
2742
  shuffle9B_0_0: [0, 0, 0, 0, 1, 0, 0, 0, 0],
2717
2743
  shuffle9i_0_0: [0, 0, 0, 0, 1, 1, 1, 1, 1],
2744
+ shuffle9d_0_0: [0, 0, 0, 1, 1, 1, 2, 2, 2],
2745
+ shuffle9h_0_0: [1, 0, 0, 0, 1, 1, 1, 0, 0],
2718
2746
  shuffle11_0_0: [0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1],
2719
2747
  shuffle11L_0_0: [0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1],
2720
2748
  shuffle11W_0_0: [0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1],
2721
2749
  shuffle11i_0_0: [0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0],
2750
+ shuffle11j_0_0: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
2722
2751
  shuffle12_0_0: [0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2],
2752
+ shuffle12i_0_0: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
2723
2753
  shuffle13_0_0: [0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 3],
2724
2754
  shuffle14_0_0: [0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2],
2725
2755
  shuffle14i_0_0: [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2],
@@ -2741,6 +2771,8 @@ const g_keyObj = {
2741
2771
  shuffle11_0_1: [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3],
2742
2772
  shuffle11L_0_1: [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3],
2743
2773
  shuffle11i_0_1: [0, 0, 1, 0, 0, 2, 3, 3, 4, 3, 3],
2774
+ shuffle11j_0_1: [3, 0, 0, 0, 0, 1, 2, 2, 2, 2, 4],
2775
+ shuffle12i_0_1: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2],
2744
2776
  shuffle15A_0_1: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 4],
2745
2777
  shuffle17_0_1: [0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2],
2746
2778
  shuffle23_0_1: [0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2],
@@ -2761,11 +2793,15 @@ const g_keyObj = {
2761
2793
  stepRtn9A_0_0: [0, -90, 90, 180, `onigiri`, 0, -90, 90, 180],
2762
2794
  stepRtn9B_0_0: [45, 0, -45, -90, `onigiri`, 90, 135, 180, 225],
2763
2795
  stepRtn9i_0_0: [0, -90, 90, 180, `monar`, `giko`, `c`, `morara`, `onigiri`],
2796
+ stepRtn9d_0_0: [0, -45, -90, `giko`, `onigiri`, `iyo`, 90, 135, 180],
2797
+ stepRtn9h_0_0: [`giko`, 0, -90, 180, 45, -90, 135, -45, -90],
2764
2798
  stepRtn11_0_0: [0, -90, 90, 180, 0, -45, -90, `onigiri`, 90, 135, 180],
2765
2799
  stepRtn11L_0_0: [0, -90, 90, 180, 0, -45, -90, `onigiri`, 90, 135, 180],
2766
2800
  stepRtn11W_0_0: [`giko`, 135, 45, `iyo`, 0, -45, -90, `onigiri`, 90, 135, 180],
2767
2801
  stepRtn11i_0_0: [0, -90, `giko`, 90, 180, `onigiri`, 0, -90, `iyo`, 90, 180],
2802
+ stepRtn11j_0_0: [`giko`, 0, -90, 90, 180, `onigiri`, 0, -90, 90, 180, `iyo`],
2768
2803
  stepRtn12_0_0: [0, -90, 90, 180, `onigiri`, 0, 30, 60, 90, 120, 150, 180],
2804
+ stepRtn12i_0_0: [45, 0, -45, -90, `giko`, `onigiri`, `iyo`, `c`, 90, 135, 180, 225],
2769
2805
  stepRtn13_0_0: [0, -90, 90, 180, 0, -90, 90, 180, `onigiri`, 0, -90, 90, 180],
2770
2806
  stepRtn14_0_0: [45, 0, -90, 90, 180, 135, `onigiri`, 0, 30, 60, 90, 120, 150, 180],
2771
2807
  stepRtn14i_0_0: [`giko`, `onigiri`, `iyo`, 0, -90, 90, 180, 0, -45, -90, `onigiri`, 90, 135, 180],
@@ -2779,8 +2815,6 @@ const g_keyObj = {
2779
2815
  stepRtn9i_1_0: [`monar`, `giko`, `c`, `morara`, `onigiri`, 0, -90, 90, 180],
2780
2816
  stepRtn17_1_0: [0, -45, -90, -135, `onigiri`, 45, 90, 135, 180,
2781
2817
  -22.5, -67.5, -112.5, -157.5, 22.5, 67.5, 112.5, 157.5],
2782
- stepRtn17_1_1: [45, 0, -45, -90, `onigiri`, 90, 135, 180, 225,
2783
- 45, 0, -45, -90, 90, 135, 180, 225],
2784
2818
 
2785
2819
  stepRtn5_2_0: [0, -90, `onigiri`, 90, 180],
2786
2820
  stepRtn8_2_0: [`onigiri`, 0, 30, 60, 90, 120, 150, 180],
@@ -2789,6 +2823,9 @@ const g_keyObj = {
2789
2823
  stepRtn11i_0_1: [0, -135, `giko`, 45, 180, `onigiri`, 0, -135, `iyo`, 45, 180],
2790
2824
  stepRtn17_0_1: [-30, 0, 30, 60, 90, 120, 150, 180, `onigiri`, 0, 30, 60, 90, 120, 150, 180, 210],
2791
2825
 
2826
+ stepRtn17_1_1: [45, 0, -45, -90, `onigiri`, 90, 135, 180, 225,
2827
+ 45, 0, -45, -90, 90, 135, 180, 225],
2828
+
2792
2829
  // ShapeGroup - 3 (矢印回転、AAキャラクタ)
2793
2830
  stepRtn17_0_2: [45, 45, 0, 0, -45, -45, -90, -90, `onigiri`, 90, 90, 135, 135, 180, 180, 225, 225],
2794
2831
 
@@ -2801,6 +2838,7 @@ const g_keyObj = {
2801
2838
  // 各キーの区切り位置
2802
2839
  // - 未指定の場合は下段への折り返し無し
2803
2840
  div9i_0: 6,
2841
+ div9h_0: 7,
2804
2842
  div11_0: 6,
2805
2843
  div11L_0: 6,
2806
2844
  div11W_0: 6,
@@ -2814,9 +2852,13 @@ const g_keyObj = {
2814
2852
 
2815
2853
  div17_1: 9,
2816
2854
 
2855
+ // 各キーの下段最終位置
2856
+ divMax9h_0: 15,
2857
+
2817
2858
  // 各キーの位置関係
2818
2859
  // - 未指定の場合は0からの連番が入る
2819
2860
  pos9i_0: [2, 3, 4, 5, 6, 7, 8, 9, 10],
2861
+ pos9h_0: [0, 4, 5, 6, 8, 9, 10, 11.75, 13],
2820
2862
  pos11_0: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
2821
2863
  pos11L_0: [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12],
2822
2864
  pos11W_0: [0, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12],
@@ -2837,11 +2879,15 @@ const g_keyObj = {
2837
2879
  keyCtrl9A_0: [[`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`K`], [`I`], [`L`]],
2838
2880
  keyCtrl9B_0: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`;`]],
2839
2881
  keyCtrl9i_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`A`], [`S`], [`D`], [`F`], [`Space`]],
2882
+ keyCtrl9d_0: [[`S`], [`D`], [`F`], [`V`], [`B`], [`N`], [`J`], [`K`], [`L`]],
2883
+ keyCtrl9h_0: [[`D1`], [`Y`], [`U`], [`I`], [`A`], [`Z`], [`S`], [`H`], [`M`]],
2840
2884
  keyCtrl11_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
2841
2885
  keyCtrl11L_0: [[`W`], [`E`], [`D3`, `D4`], [`R`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
2842
2886
  keyCtrl11W_0: [[`D1`, `D2`], [`T`], [`Y`], [`D0`, `Minus`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
2843
2887
  keyCtrl11i_0: [[`S`], [`X`, `C`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`M`, `Comma`], [`K`], [`I`, `O`], [`L`]],
2888
+ keyCtrl11j_0: [[`Tab`], [`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`K`], [`I`], [`L`], [`Enter`]],
2844
2889
  keyCtrl12_0: [[`U`], [`I`], [`D8`, `D9`], [`O`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
2890
+ keyCtrl12i_0: [[`F1`], [`F2`], [`F3`], [`F4`], [`F5`], [`F6`], [`F7`], [`F8`], [`F9`], [`F10`], [`F11`], [`F12`]],
2845
2891
  keyCtrl13_0: [[`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`J`], [`K`], [`I`], [`L`]],
2846
2892
  keyCtrl14_0: [[`T`, `Y`], [`U`], [`I`], [`D8`, `D7`, `D9`, `D0`], [`O`], [`BracketLeft`, `P`], [`Space`], [`N`], [`J`], [`M`], [`K`], [`Comma`], [`L`], [`Period`]],
2847
2893
  keyCtrl14i_0: [[`Z`, `W`], [`X`, `E`], [`C`, `R`], [`Left`], [`Down`], [`Up`], [`Right`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`]],
@@ -2860,6 +2906,7 @@ const g_keyObj = {
2860
2906
  keyCtrl9A_1: [[`S`], [`D`], [`E`, `R`], [`F`], [`Space`], [`Left`], [`Down`], [`Up`], [`Right`]],
2861
2907
  keyCtrl9i_1: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`Left`], [`Down`], [`Up`], [`Right`]],
2862
2908
  keyCtrl12_1: [[`Y`], [`U`, `I`], [`D8`, `D7`, `D9`], [`O`], [`Space`], [`B`], [`H`], [`N`, `M`], [`J`, `K`], [`Comma`], [`L`], [`Period`]],
2909
+ keyCtrl12i_1: [[`Q`], [`W`], [`E`], [`R`], [`T`], [`Y`], [`U`], [`I`], [`O`], [`P`], [`Ja-@`], [`Ja-[`]],
2863
2910
  keyCtrl14_1: [[`R`, `T`], [`Y`], [`U`, `I`], [`D8`, `D6`, `D7`, `D9`, `D0`], [`O`], [`BracketLeft`, `P`], [`Space`], [`B`], [`H`], [`N`, `M`], [`J`, `K`], [`Comma`], [`L`], [`Period`]],
2864
2911
  keyCtrl17_1: [[`A`], [`S`], [`D`], [`F`], [`Space`], [`J`], [`K`], [`L`], [`;`], [`Z`], [`X`], [`C`], [`V`], [`N`], [`M`], [`Comma`], [`Period`]],
2865
2912
 
@@ -2897,6 +2944,10 @@ const g_keyObj = {
2897
2944
  blank5_2: 57.5,
2898
2945
  blank9A_0: 52.5,
2899
2946
  blank9B_0: 52.5,
2947
+ blank9i_1: 52.5,
2948
+ blank9d_0: 52.5,
2949
+ blank11j_0: 50,
2950
+ blank12i_0: 50,
2900
2951
  blank23_0: 50,
2901
2952
 
2902
2953
  // 矢印群の倍率指定
@@ -2905,11 +2956,13 @@ const g_keyObj = {
2905
2956
  scale17_0: 0.95,
2906
2957
 
2907
2958
  // ショートカットキーコード
2908
- keyRetry: 8,
2909
- keyRetry8_0: 9,
2959
+ keyRetry: 8, // 8: Backspace
2960
+ keyRetry8_0: 9, // 9: Tab
2910
2961
  keyRetry8_1: 9,
2962
+ keyRetry11j_0: 123, // 123: F12
2911
2963
 
2912
- keyTitleBack: 46,
2964
+ keyTitleBack: 46, // 46: Delete
2965
+ keyTitleBack11j_0: 27, // 27: Escape
2913
2966
 
2914
2967
  // 別キー
2915
2968
  transKey8_2: '12',
@@ -2925,6 +2978,7 @@ const g_keyObj = {
2925
2978
  '9A-2': '9A',
2926
2979
  '9B-1': '9B',
2927
2980
  '9B-2': '9B',
2981
+ 'himsiyauz': '9h',
2928
2982
  'TP': '13',
2929
2983
  '15': '15A',
2930
2984
  '15R': '15B',
@@ -3010,7 +3064,6 @@ const g_keyObj = {
3010
3064
  'Twist': [1, 1, -1, -1, -1, 1, 1, -1, -1],
3011
3065
  'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
3012
3066
  },
3013
-
3014
3067
  scrollDir9i_1: {
3015
3068
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1],
3016
3069
  'Cross': [1, 1, -1, -1, -1, -1, -1, 1, 1],
@@ -3019,6 +3072,18 @@ const g_keyObj = {
3019
3072
  'Twist': [1, 1, -1, -1, 1, 1, 1, -1, -1],
3020
3073
  'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
3021
3074
  },
3075
+ scrollDir9d_0: {
3076
+ '---': [1, 1, 1, 1, 1, 1, 1, 1, 1],
3077
+ 'Cross': [1, 1, 1, -1, -1, -1, 1, 1, 1],
3078
+ 'Split': [1, 1, 1, 1, -1, -1, -1, -1, -1],
3079
+ 'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1],
3080
+ 'Twist': [1, 1, -1, -1, -1, 1, 1, -1, -1],
3081
+ 'Asymmetry': [1, -1, -1, 1, -1, -1, 1, 1, -1],
3082
+ },
3083
+ scrollDir9h_0: {
3084
+ '---': [1, 1, 1, 1, 1, 1, 1, 1, 1],
3085
+ 'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1],
3086
+ },
3022
3087
 
3023
3088
  scrollDir11_0: {
3024
3089
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
@@ -3040,12 +3105,25 @@ const g_keyObj = {
3040
3105
  'Twist': [1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1],
3041
3106
  'Asymmetry': [1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1],
3042
3107
  },
3108
+ scrollDir11j_0: {
3109
+ '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
3110
+ 'Cross': [1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1],
3111
+ 'Split': [1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1],
3112
+ 'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1],
3113
+ 'AA-Split': [1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 1],
3114
+ },
3043
3115
 
3044
3116
  scrollDir12_0: {
3045
3117
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
3046
3118
  'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1],
3047
3119
  'Twist': [1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1],
3048
3120
  },
3121
+ scrollDir12i_0: {
3122
+ '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
3123
+ 'Cross': [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1],
3124
+ 'Split': [1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1],
3125
+ 'Alternate': [1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1],
3126
+ },
3049
3127
  scrollDir13_0: {
3050
3128
  '---': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
3051
3129
  'Flat': [1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
@@ -3097,6 +3175,10 @@ const g_keyObj = {
3097
3175
  'Left': [1, 1, 1, 1, 0, 0, 0, 0, 0],
3098
3176
  'Right': [0, 0, 0, 0, 0, 1, 1, 1, 1],
3099
3177
  },
3178
+ assistPos9d_0: {
3179
+ 'Left': [1, 1, 1, 1, 0, 0, 0, 0, 0],
3180
+ 'Right': [0, 0, 0, 0, 0, 1, 1, 1, 1],
3181
+ },
3100
3182
 
3101
3183
  assistPos11i_0: {
3102
3184
  'Left': [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],
@@ -3123,7 +3205,16 @@ const g_keyObj = {
3123
3205
  minWidth5: 500,
3124
3206
  minWidth7i: 550,
3125
3207
  minWidth9A: 650,
3208
+ minWidth9B: 650,
3209
+ minWidth9i: 650,
3210
+ minWidth9d: 650,
3211
+ minWidth9h: 650,
3212
+ minWidth11: 650,
3213
+ minWidth11L: 650,
3126
3214
  minWidth11i: 650,
3215
+ minWidth11j: 650,
3216
+ minWidth12: 675,
3217
+ minWidth12i: 675,
3127
3218
  minWidth13: 650,
3128
3219
  minWidth16i: 650,
3129
3220
  minWidth17: 825,
@@ -3143,7 +3234,7 @@ Object.keys(g_keyObj)
3143
3234
  // ・コピー先:コピー元の順に指定する
3144
3235
  // ・上から順に処理する
3145
3236
  const g_copyKeyPtn = {
3146
- '8_3': `8_2`,
3237
+ '8_3': `8_2`, // 12key下部はマッピングが異なるため、8_2を流用
3147
3238
  '8_4': `8_2`,
3148
3239
  '8_5': `8_2`,
3149
3240
  '7_1': `7_0`,
@@ -3163,27 +3254,74 @@ const g_copyKeyPtn = {
3163
3254
  '9A_1': `9A_0`,
3164
3255
  '9A_2': `9B_0`,
3165
3256
  '9A_3': `11i_0`,
3257
+ '9A_4': `9i_0`,
3258
+ '9A_5': `9i_1`,
3259
+ '9A_6': `9d_0`,
3260
+ '9A_7': `9h_0`,
3261
+
3166
3262
  '9B_1': `9A_0`,
3167
3263
  '9B_2': `9A_1`,
3168
-
3264
+ '9B_3': `11i_0`,
3265
+ '9B_4': `9i_0`,
3266
+ '9B_5': `9i_1`,
3267
+ '9B_6': `9d_0`,
3268
+ '9B_7': `9A_7`, // 9hはcharaX_Yのマッピングが異なるため、9A_7を流用
3269
+
3270
+ '9i_2': `9A_0`,
3271
+ '9i_3': `9A_1`,
3272
+ '9i_4': `9B_0`,
3273
+ '9i_5': `11i_0`,
3274
+ '9i_6': `9d_0`,
3275
+ '9i_7': `9A_7`, // 9hはcharaX_Yのマッピングが異なるため、9A_7を流用
3276
+
3277
+ '9d_1': `9A_0`,
3278
+ '9d_2': `9A_1`,
3279
+ '9d_3': `9B_0`,
3280
+ '9d_4': `11i_0`,
3281
+ '9d_5': `9i_0`,
3282
+ '9d_6': `9i_1`,
3283
+ '9d_7': `9A_7`, // 9hはcharaX_Yのマッピングが異なるため、9A_7を流用
3284
+
3285
+ // 9hはcharaX_Yのマッピングが異なるため、既存パターンをコピーしたうえでcharaX_Yを入れ替え
3286
+ '9h_1': `9A_0`,
3287
+ '9h_2': `9A_1`,
3288
+ '9h_3': `9B_0`,
3289
+ '9h_4': `11i_0`,
3290
+ '9h_5': `9i_0`,
3291
+ '9h_6': `9i_1`,
3292
+ '9h_7': `9d_0`,
3293
+
3294
+ '12i_1': `12i_0`, // 12keyで12ikeyの参照を行うため先に定義
3169
3295
  '12_1': `12_0`,
3170
3296
  '12_2': `12_0`,
3171
3297
  '12_3': `12_0`,
3298
+ '12_4': `12i_0`,
3299
+ '12_5': `12i_1`,
3300
+
3172
3301
  '11_1': `11L_0`,
3173
- '11_2': `12_0`,
3174
- '11_3': `12_1`,
3175
- '11_4': `12_2`,
3176
- '11_5': `12_3`,
3302
+ '11_2': `11i_0`,
3303
+ '11_3': `12_0`,
3304
+ '11_4': `12_1`,
3305
+ '11_5': `12_2`,
3306
+ '11_6': `12_3`,
3307
+
3177
3308
  '11L_1': `11_0`,
3178
- '11L_2': `12_0`,
3179
- '11L_3': `12_1`,
3180
- '11L_4': `12_2`,
3181
- '11L_5': `12_3`,
3309
+ '11L_2': `11_2`, // 1iiはcharaX_Yのマッピングが異なるため、11_2を流用
3310
+ '11L_3': `12_0`,
3311
+ '11L_4': `12_1`,
3312
+ '11L_5': `12_2`,
3313
+ '11L_6': `12_3`,
3314
+
3182
3315
  '11W_1': `12_0`,
3183
3316
  '11W_2': `12_1`,
3184
3317
  '11W_3': `12_2`,
3185
3318
  '11W_4': `12_3`,
3186
3319
 
3320
+ '12i_2': `12_0`,
3321
+ '12i_3': `12_1`,
3322
+ '12i_4': `12_2`,
3323
+ '12i_5': `12_3`,
3324
+
3187
3325
  '14_1': `14_0`,
3188
3326
  '14_2': `14_0`,
3189
3327
  '14_3': `14_0`,
@@ -3245,10 +3383,12 @@ Object.keys(g_copyKeyPtn).forEach(keyPtnTo => {
3245
3383
  copyKeyPtnVal(`keyRetry`);
3246
3384
  copyKeyPtnVal(`keyTitleBack`);
3247
3385
 
3248
- if (g_keyObj[`transKey${keyPtnFrom}`] !== undefined) {
3249
- g_keyObj[`transKey${keyPtnTo}`] = g_keyObj[`transKey${keyPtnFrom}`];
3250
- } else if (g_keyObj[`transKey${keyPtnTo}`] === undefined && keyPtnFrom.split(`_`)[0] !== keyPtnTo.split(`_`)[0]) {
3251
- g_keyObj[`transKey${keyPtnTo}`] = keyPtnFrom.split(`_`)[0];
3386
+ if (g_keyObj[`transKey${keyPtnTo}`] === undefined || g_keyObj[`transKey${keyPtnTo}`].includes(`_`)) {
3387
+ if (g_keyObj[`transKey${keyPtnFrom}`] !== undefined) {
3388
+ g_keyObj[`transKey${keyPtnTo}`] = g_keyObj[`transKey${keyPtnFrom}`];
3389
+ } else if (g_keyObj[`transKey${keyPtnTo}`] === undefined && keyPtnFrom.split(`_`)[0] !== keyPtnTo.split(`_`)[0]) {
3390
+ g_keyObj[`transKey${keyPtnTo}`] = keyPtnFrom.split(`_`)[0];
3391
+ }
3252
3392
  }
3253
3393
  });
3254
3394
 
@@ -5,11 +5,15 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2024/10/29
8
- * Revised : 2024/11/07 (v38.0.2)
8
+ * Revised : 2025/05/24 (v42.0.0)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
12
12
 
13
+ /** @deprecated */
14
+ const getFontSize = (_str, _maxWidth, _font = getBasicFont(), _maxFontsize = 64, _minFontsize = 5) =>
15
+ getFontSize2(_str, _maxWidth, { font: _font, maxSiz: _maxFontsize, minSiz: _minFontsize });
16
+
13
17
  /** @deprecated */
14
18
  const createSprite = (_parentObjName, _newObjName, x, y, w, h, _options = {}) =>
15
19
  createEmptySprite(document.getElementById(_parentObjName), _newObjName, { x, y, w, h, title: _options?.description });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "41.4.2",
3
+ "version": "42.0.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {