fix(ILSEx): disable while paused, map B to Z #3

Merged
sup39 merged 1 commit from ILSEx/disable-while-paused into main 2024-02-23 00:57:18 +09:00
4 changed files with 135 additions and 89 deletions

View file

@ -19,7 +19,8 @@
- Pressing `D-Pad Down` in Plaza has no effect
#### Level Select
Press `{the following button combination} + D-Pad Up` to warp to other area instantly:
Press `{the following button combination} + D-Pad Up` to warp to other area instantly.
As the alternatives of `Z` button, you can also press `B` or `Start`.
![Level Select Combinations](/img/levelselect.png)
- For `Z + D-Pad Up`, the current area will be restarted, but the **respawn position will be reset**. It is like `D-Pad Up`, but the respawn position will be the default position instead of the previous one
@ -47,9 +48,11 @@
#### シャイン選択画面からやり直し
- `十字キー下`で**現在のステージのシャイン選択画面からやり直す**
- ポーズ中にこのコードは無効化されます
#### レベル選択
`{次のボタン}+十字キー上`でレベル選択
`{次のボタン}+十字キー上`でレベル選択
`Z`ボタンの代わりに`B`か`Start`ボタンを押すこともできます
![レベル選択](/img/levelselect.png)
@ -66,7 +69,7 @@
4. これで好きなだけハニスキを練習できます。他のエリアに入ろうとする時に自動的にやり直すので、手動でやり直す必要がありません。必要であれば`十字キー上`でやり直すこともできます。
</description>
<source version="GMSJ01">
C20F9B74 0000004D
C20F9B74 00000052
3C80817F 816D97D0
3D808040 80AC0D80
20050022 540A043D
@ -75,25 +78,30 @@
28830001 4C451102
40A2000C 38A00008
90AC0D80 7C7D1B79
41820220 70A00004
41A20034 881F000E
3D40803B 394A40E8
7CEA00AE 2C070001
40810200 38070001
5400EFFE 7CE70214
54E7403E 60E700FF
480000F8 70A00008
41A201E0 4800003D
00141516 0017181D
34000090 2F2E3020
32293328 2A1FBA3C
371E213A 0E2C3900
00010507 08090200
123457D0 24567000
12234070 23467001
7D2802A6 54A6CF38
50A6F77A 50A6E7BC
50A6D7FE 54A0C738
41820248 818D97E8
7D8C6379 41820010
880C0064 2C000005
41820230 70A00004
41A20040 881F0008
2C000008 41820034
881F000E 3D40803B
394A40E8 7CEA00AE
2C070001 40810204
38070001 5400EFFE
7CE70214 54E7403E
60E700FF 480000FC
70A00008 41A201E4
4800003D 00141516
0017181D 34000090
2F2E3020 32293328
2A1FBA3C 371E213A
0E2C3900 00010507
08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378
54A3873F 41820054
2C030009 41820098
@ -146,7 +154,7 @@
60000000 00000000
</source>
<source version="GMSE01">
C22A6170 0000004D
C22A6170 00000052
3C80817F 816D9FA0
3D808040 80AC4484
20050022 540A043D
@ -155,25 +163,30 @@
28830001 4C451102
40A2000C 38A00008
90AC4484 7C7D1B79
41820220 70A00004
41A20034 881F000E
3D40803E 394AF498
7CEA00AE 2C070001
40810200 38070001
5400EFFE 7CE70214
54E7403E 60E700FF
480000F8 70A00008
41A201E0 4800003D
00141516 0017181D
34000090 2F2E3020
32293328 2A1FBA3C
371E213A 0E2C3900
00010507 08090200
123457D0 24567000
12234070 23467001
7D2802A6 54A6CF38
50A6F77A 50A6E7BC
50A6D7FE 54A0C738
41820248 818D9FB8
7D8C6379 41820010
880C0064 2C000005
41820230 70A00004
41A20040 881F0008
2C000008 41820034
881F000E 3D40803E
394AF498 7CEA00AE
2C070001 40810204
38070001 5400EFFE
7CE70214 54E7403E
60E700FF 480000FC
70A00008 41A201E4
4800003D 00141516
0017181D 34000090
2F2E3020 32293328
2A1FBA3C 371E213A
0E2C3900 00010507
08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378
54A3873F 41820054
2C030009 41820098
@ -226,7 +239,7 @@
60000000 00000000
</source>
<source version="GMSP01">
C229E080 0000004D
C229E080 00000052
3C80817F 816D9EC8
3D808040 80ACBC24
20050022 540A043D
@ -235,25 +248,30 @@
28830001 4C451102
40A2000C 38A00008
90ACBC24 7C7D1B79
41820220 70A00004
41A20034 881F000E
3D40803D 394A6DB0
7CEA00AE 2C070001
40810200 38070001
5400EFFE 7CE70214
54E7403E 60E700FF
480000F8 70A00008
41A201E0 4800003D
00141516 0017181D
34000090 2F2E3020
32293328 2A1FBA3C
371E213A 0E2C3900
00010507 08090200
123457D0 24567000
12234070 23467001
7D2802A6 54A6CF38
50A6F77A 50A6E7BC
50A6D7FE 54A0C738
41820248 818D9EE0
7D8C6379 41820010
880C0064 2C000005
41820230 70A00004
41A20040 881F0008
2C000008 41820034
881F000E 3D40803D
394A6DB0 7CEA00AE
2C070001 40810204
38070001 5400EFFE
7CE70214 54E7403E
60E700FF 480000FC
70A00008 41A201E4
4800003D 00141516
0017181D 34000090
2F2E3020 32293328
2A1FBA3C 371E213A
0E2C3900 00010507
08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378
54A3873F 41820054
2C030009 41820098
@ -306,7 +324,7 @@
60000000 00000000
</source>
<source version="GMSJ0A">
C2285FCC 0000004D
C2285FCC 00000052
3C80817F 816D9E60
3D80803F 80AC5458
20050022 540A043D
@ -315,25 +333,30 @@
28830001 4C451102
40A2000C 38A00008
90AC5458 7C7D1B79
41820220 70A00004
41A20034 881F000E
3D40803D 394AF9B8
7CEA00AE 2C070001
40810200 38070001
5400EFFE 7CE70214
54E7403E 60E700FF
480000F8 70A00008
41A201E0 4800003D
00141516 0017181D
34000090 2F2E3020
32293328 2A1FBA3C
371E213A 0E2C3900
00010507 08090200
123457D0 24567000
12234070 23467001
7D2802A6 54A6CF38
50A6F77A 50A6E7BC
50A6D7FE 54A0C738
41820248 818D9E78
7D8C6379 41820010
880C0064 2C000005
41820230 70A00004
41A20040 881F0008
2C000008 41820034
881F000E 3D40803D
394AF9B8 7CEA00AE
2C070001 40810204
38070001 5400EFFE
7CE70214 54E7403E
60E700FF 480000FC
70A00008 41A201E4
4800003D 00141516
0017181D 34000090
2F2E3020 32293328
2A1FBA3C 371E213A
0E2C3900 00010507
08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378
54A3873F 41820054
2C030009 41820098

View file

@ -12,7 +12,8 @@
- Pressing `D-Pad Down` in Plaza has no effect
### Level Select
Press `{the following button combination} + D-Pad Up` to warp to other area instantly:
Press `{the following button combination} + D-Pad Up` to warp to other area instantly.
As the alternatives of `Z` button, you can also press `B` or `Start`.
![Level Select Combinations](../.img/levelselect.png)
- For `Z + D-Pad Up`, the current area will be restarted, but the **respawn position will be reset**. It is like `D-Pad Up`, but the respawn position will be the default position instead of the previous one

View file

@ -19,7 +19,8 @@
- Pressing `D-Pad Down` in Plaza has no effect
#### Level Select
Press `{the following button combination} + D-Pad Up` to warp to other area instantly:
Press `{the following button combination} + D-Pad Up` to warp to other area instantly.
As the alternatives of `Z` button, you can also press `B` or `Start`.
![Level Select Combinations](/img/levelselect.png)
- For `Z + D-Pad Up`, the current area will be restarted, but the **respawn position will be reset**. It is like `D-Pad Up`, but the respawn position will be the default position instead of the previous one
@ -47,9 +48,11 @@
#### シャイン選択画面からやり直し
- `十字キー下`で**現在のステージのシャイン選択画面からやり直す**
- ポーズ中にこのコードは無効化されます
#### レベル選択
`{次のボタン}+十字キー上`でレベル選択
`{次のボタン}+十字キー上`でレベル選択
`Z`ボタンの代わりに`B`か`Start`ボタンを押すこともできます
![レベル選択](/img/levelselect.png)

View file

@ -54,10 +54,27 @@
beq .L.done
## disable the code if paused
.L.checkPaused:
### r12 = *gpMarDirector
lwz r12, gpMarDirector$r13(r13)
mr. r12, r12
beq .L.checkPaused.done
### if (u8) @ *gpMarDirector + 0x64 == 5
lbz r0, 0x64(r12)
cmpwi r0, 5
beq .L.done
.L.checkPaused.done:
## check button (Shine Select)
.L.checkButton.ShineSelect:
andi. r0, rBtn, $btnShineSelect
beq+ .L.checkButton.ShineSelect.done
### disable Shine Select when already in Shine Select
lbz r0, 0x8(rApp) # directory type
cmpwi r0, 8 # shine select
beq .L.checkButton.ShineSelect.done
.ShineSelect:
## rAns = shineStageTable[curArea]
lbz r0, 0xE(rApp) # current area
@ -121,12 +138,14 @@
.L.main:
## calc index
## btn: S YXZA -LRZ ----
## XZRL=8,4,2,1
rlwinm rIdx, rBtn, 32-7, 0x8 # X=8
rlwimi rIdx, rBtn, 32-2, 0x4 # Z=4
## btn: S YXBA -LRZ ----
## XBRL=8,4,2,1
rlwinm rIdx, rBtn, 32-7, 0xC # X,B=8,4
rlwimi rIdx, rBtn, 32-4, 0x2 # R=2
rlwimi rIdx, rBtn, 32-6, 0x1 # L=1
## Z=4
rlwinm r0, rBtn, 32- 2, 0x4 # Z=4
or rIdx, rIdx, r0
## YSY=8,4,2
rlwinm r0, rBtn, 32- 8, 0x8 # Y=+8
rlwimi r0, rBtn, 32-10, 0x6 # S,Y=4,+2