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

Closes #1
This commit is contained in:
sup39 2024-02-23 00:45:26 +09:00
parent 4b1f983cd1
commit d14d00b911
Signed by: sup39
GPG key ID: 111C00916C1641E5
4 changed files with 135 additions and 89 deletions

View file

@ -19,7 +19,8 @@
- Pressing `D-Pad Down` in Plaza has no effect - Pressing `D-Pad Down` in Plaza has no effect
#### Level Select #### 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) ![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 - 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) ![レベル選択](/img/levelselect.png)
@ -66,7 +69,7 @@
4. これで好きなだけハニスキを練習できます。他のエリアに入ろうとする時に自動的にやり直すので、手動でやり直す必要がありません。必要であれば`十字キー上`でやり直すこともできます。 4. これで好きなだけハニスキを練習できます。他のエリアに入ろうとする時に自動的にやり直すので、手動でやり直す必要がありません。必要であれば`十字キー上`でやり直すこともできます。
</description> </description>
<source version="GMSJ01"> <source version="GMSJ01">
C20F9B74 0000004D C20F9B74 00000052
3C80817F 816D97D0 3C80817F 816D97D0
3D808040 80AC0D80 3D808040 80AC0D80
20050022 540A043D 20050022 540A043D
@ -75,25 +78,30 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC0D80 7C7D1B79 90AC0D80 7C7D1B79
41820220 70A00004 41820248 818D97E8
41A20034 881F000E 7D8C6379 41820010
3D40803B 394A40E8 880C0064 2C000005
7CEA00AE 2C070001 41820230 70A00004
40810200 38070001 41A20040 881F0008
5400EFFE 7CE70214 2C000008 41820034
54E7403E 60E700FF 881F000E 3D40803B
480000F8 70A00008 394A40E8 7CEA00AE
41A201E0 4800003D 2C070001 40810204
00141516 0017181D 38070001 5400EFFE
34000090 2F2E3020 7CE70214 54E7403E
32293328 2A1FBA3C 60E700FF 480000FC
371E213A 0E2C3900 70A00008 41A201E4
00010507 08090200 4800003D 00141516
123457D0 24567000 0017181D 34000090
12234070 23467001 2F2E3020 32293328
7D2802A6 54A6CF38 2A1FBA3C 371E213A
50A6F77A 50A6E7BC 0E2C3900 00010507
50A6D7FE 54A0C738 08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378 50A0B77C 7CC60378
54A3873F 41820054 54A3873F 41820054
2C030009 41820098 2C030009 41820098
@ -146,7 +154,7 @@
60000000 00000000 60000000 00000000
</source> </source>
<source version="GMSE01"> <source version="GMSE01">
C22A6170 0000004D C22A6170 00000052
3C80817F 816D9FA0 3C80817F 816D9FA0
3D808040 80AC4484 3D808040 80AC4484
20050022 540A043D 20050022 540A043D
@ -155,25 +163,30 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC4484 7C7D1B79 90AC4484 7C7D1B79
41820220 70A00004 41820248 818D9FB8
41A20034 881F000E 7D8C6379 41820010
3D40803E 394AF498 880C0064 2C000005
7CEA00AE 2C070001 41820230 70A00004
40810200 38070001 41A20040 881F0008
5400EFFE 7CE70214 2C000008 41820034
54E7403E 60E700FF 881F000E 3D40803E
480000F8 70A00008 394AF498 7CEA00AE
41A201E0 4800003D 2C070001 40810204
00141516 0017181D 38070001 5400EFFE
34000090 2F2E3020 7CE70214 54E7403E
32293328 2A1FBA3C 60E700FF 480000FC
371E213A 0E2C3900 70A00008 41A201E4
00010507 08090200 4800003D 00141516
123457D0 24567000 0017181D 34000090
12234070 23467001 2F2E3020 32293328
7D2802A6 54A6CF38 2A1FBA3C 371E213A
50A6F77A 50A6E7BC 0E2C3900 00010507
50A6D7FE 54A0C738 08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378 50A0B77C 7CC60378
54A3873F 41820054 54A3873F 41820054
2C030009 41820098 2C030009 41820098
@ -226,7 +239,7 @@
60000000 00000000 60000000 00000000
</source> </source>
<source version="GMSP01"> <source version="GMSP01">
C229E080 0000004D C229E080 00000052
3C80817F 816D9EC8 3C80817F 816D9EC8
3D808040 80ACBC24 3D808040 80ACBC24
20050022 540A043D 20050022 540A043D
@ -235,25 +248,30 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90ACBC24 7C7D1B79 90ACBC24 7C7D1B79
41820220 70A00004 41820248 818D9EE0
41A20034 881F000E 7D8C6379 41820010
3D40803D 394A6DB0 880C0064 2C000005
7CEA00AE 2C070001 41820230 70A00004
40810200 38070001 41A20040 881F0008
5400EFFE 7CE70214 2C000008 41820034
54E7403E 60E700FF 881F000E 3D40803D
480000F8 70A00008 394A6DB0 7CEA00AE
41A201E0 4800003D 2C070001 40810204
00141516 0017181D 38070001 5400EFFE
34000090 2F2E3020 7CE70214 54E7403E
32293328 2A1FBA3C 60E700FF 480000FC
371E213A 0E2C3900 70A00008 41A201E4
00010507 08090200 4800003D 00141516
123457D0 24567000 0017181D 34000090
12234070 23467001 2F2E3020 32293328
7D2802A6 54A6CF38 2A1FBA3C 371E213A
50A6F77A 50A6E7BC 0E2C3900 00010507
50A6D7FE 54A0C738 08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378 50A0B77C 7CC60378
54A3873F 41820054 54A3873F 41820054
2C030009 41820098 2C030009 41820098
@ -306,7 +324,7 @@
60000000 00000000 60000000 00000000
</source> </source>
<source version="GMSJ0A"> <source version="GMSJ0A">
C2285FCC 0000004D C2285FCC 00000052
3C80817F 816D9E60 3C80817F 816D9E60
3D80803F 80AC5458 3D80803F 80AC5458
20050022 540A043D 20050022 540A043D
@ -315,25 +333,30 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC5458 7C7D1B79 90AC5458 7C7D1B79
41820220 70A00004 41820248 818D9E78
41A20034 881F000E 7D8C6379 41820010
3D40803D 394AF9B8 880C0064 2C000005
7CEA00AE 2C070001 41820230 70A00004
40810200 38070001 41A20040 881F0008
5400EFFE 7CE70214 2C000008 41820034
54E7403E 60E700FF 881F000E 3D40803D
480000F8 70A00008 394AF9B8 7CEA00AE
41A201E0 4800003D 2C070001 40810204
00141516 0017181D 38070001 5400EFFE
34000090 2F2E3020 7CE70214 54E7403E
32293328 2A1FBA3C 60E700FF 480000FC
371E213A 0E2C3900 70A00008 41A201E4
00010507 08090200 4800003D 00141516
123457D0 24567000 0017181D 34000090
12234070 23467001 2F2E3020 32293328
7D2802A6 54A6CF38 2A1FBA3C 371E213A
50A6F77A 50A6E7BC 0E2C3900 00010507
50A6D7FE 54A0C738 08090200 123457D0
24567000 12234070
23467001 7D2802A6
54A6CF3A 50A6E7BC
50A6D7FE 54A0F77A
7CC60378 54A0C738
50A0B77C 7CC60378 50A0B77C 7CC60378
54A3873F 41820054 54A3873F 41820054
2C030009 41820098 2C030009 41820098

View file

@ -12,7 +12,8 @@
- Pressing `D-Pad Down` in Plaza has no effect - Pressing `D-Pad Down` in Plaza has no effect
### Level Select ### 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) ![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 - 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 - Pressing `D-Pad Down` in Plaza has no effect
#### Level Select #### 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) ![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 - 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) ![レベル選択](/img/levelselect.png)

View file

@ -54,10 +54,27 @@
beq .L.done 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) ## check button (Shine Select)
.L.checkButton.ShineSelect: .L.checkButton.ShineSelect:
andi. r0, rBtn, $btnShineSelect andi. r0, rBtn, $btnShineSelect
beq+ .L.checkButton.ShineSelect.done 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: .ShineSelect:
## rAns = shineStageTable[curArea] ## rAns = shineStageTable[curArea]
lbz r0, 0xE(rApp) # current area lbz r0, 0xE(rApp) # current area
@ -121,12 +138,14 @@
.L.main: .L.main:
## calc index ## calc index
## btn: S YXZA -LRZ ---- ## btn: S YXBA -LRZ ----
## XZRL=8,4,2,1 ## XBRL=8,4,2,1
rlwinm rIdx, rBtn, 32-7, 0x8 # X=8 rlwinm rIdx, rBtn, 32-7, 0xC # X,B=8,4
rlwimi rIdx, rBtn, 32-2, 0x4 # Z=4
rlwimi rIdx, rBtn, 32-4, 0x2 # R=2 rlwimi rIdx, rBtn, 32-4, 0x2 # R=2
rlwimi rIdx, rBtn, 32-6, 0x1 # L=1 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 ## YSY=8,4,2
rlwinm r0, rBtn, 32- 8, 0x8 # Y=+8 rlwinm r0, rBtn, 32- 8, 0x8 # Y=+8
rlwimi r0, rBtn, 32-10, 0x6 # S,Y=4,+2 rlwimi r0, rBtn, 32-10, 0x6 # S,Y=4,+2