fix (ILSEx v1.3.1): use white loading screen for episode area

This commit is contained in:
sup39 2024-02-25 19:30:52 +09:00
parent 993f16e808
commit fa5bca53ce
Signed by: sup39
GPG key ID: 111C00916C1641E5
3 changed files with 132 additions and 102 deletions

View file

@ -3,7 +3,7 @@
<title lang="en-US">Instant Level Select Extra</title> <title lang="en-US">Instant Level Select Extra</title>
<title lang="ja-JP">レベル選択EX</title> <title lang="ja-JP">レベル選択EX</title>
<author>sup39(サポミク)</author> <author>sup39(サポミク)</author>
<version>1.3</version> <version>1.3.1</version>
<date>Feb 25, 2024</date> <date>Feb 25, 2024</date>
<description lang="en-US"> <description lang="en-US">
::: warning ::: warning
@ -69,7 +69,7 @@
4. これで好きなだけハニスキを練習できます。他のエリアに入ろうとする時に自動的にやり直すので、手動でやり直す必要がありません。必要であれば`十字キー上`でやり直すこともできます。 4. これで好きなだけハニスキを練習できます。他のエリアに入ろうとする時に自動的にやり直すので、手動でやり直す必要がありません。必要であれば`十字キー上`でやり直すこともできます。
</description> </description>
<source version="GMSJ01"> <source version="GMSJ01">
C20F9B74 00000057 C20F9B74 0000005A
3C80817F 816D97D0 3C80817F 816D97D0
3D808040 80AC0D80 3D808040 80AC0D80
20050022 540A043D 20050022 540A043D
@ -78,20 +78,20 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC0D80 7C7D1B79 90AC0D80 7C7D1B79
41820274 818D97E8 4182028C 818D97E8
280C0000 41820014 280C0000 41820014
898C0064 38000021 898C0064 38000021
5C00656B 40820258 5C00656B 40820270
70A00004 41A20040 70A00004 41A20040
881F0008 2C000008 881F0008 2C000008
41820034 881F000E 41820034 881F000E
3D40803B 394A40E8 3D40803B 394A40E8
7CEA00AE 2C070001 7CEA00AE 2C070001
4081022C 38070001 40810244 38070001
5400EFFE 7CE70214 5400EFFE 7CE70214
54E7403E 60E700FF 54E7403E 60E700FF
480000FC 70A00008 480000FC 70A00008
41A2020C 4800003D 41A20224 4800003D
00141516 0017181D 00141516 0017181D
34000090 2F2E3020 34000090 2F2E3020
32293328 2A1FBA3C 32293328 2A1FBA3C
@ -144,22 +144,25 @@
900B00D8 A00B00CC 900B00D8 A00B00CC
60004000 54000524 60004000 54000524
B00B00CC B0FF0012 B00B00CC B0FF0012
54E0C63E 819F0020 819F0020 54E0C63E
2C000007 2C80000E 2F000009 2880000F
4C423382 3800003B 3940007D 5D4A05EF
41820008 38000000 4EC51042 2C000007
B00C00E4 A00C00E2 2C80000E 4C423382
540007FA B00C00E2 3800003B 41820008
54FDD7BE 3BBD0005 38000000 B00C00E4
819F0034 38000000 A00C00E2 540007FA
900C0020 38000012 B00C00E2 54FDD7BF
900C0024 380000FF 3BBD0005 819F0034
280709FF 40A2000C 38000000 900C0020
3C00D2D2 6000D2FF 419A000C 40820010
900C0018 00000000 4096000C 3C00D2D2
6000D200 600000FF
900C0018 38000012
900C0024 00000000
</source> </source>
<source version="GMSE01"> <source version="GMSE01">
C22A6170 00000057 C22A6170 0000005A
3C80817F 816D9FA0 3C80817F 816D9FA0
3D808040 80AC4484 3D808040 80AC4484
20050022 540A043D 20050022 540A043D
@ -168,20 +171,20 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC4484 7C7D1B79 90AC4484 7C7D1B79
41820274 818D9FB8 4182028C 818D9FB8
280C0000 41820014 280C0000 41820014
898C0064 38000021 898C0064 38000021
5C00656B 40820258 5C00656B 40820270
70A00004 41A20040 70A00004 41A20040
881F0008 2C000008 881F0008 2C000008
41820034 881F000E 41820034 881F000E
3D40803E 394AF498 3D40803E 394AF498
7CEA00AE 2C070001 7CEA00AE 2C070001
4081022C 38070001 40810244 38070001
5400EFFE 7CE70214 5400EFFE 7CE70214
54E7403E 60E700FF 54E7403E 60E700FF
480000FC 70A00008 480000FC 70A00008
41A2020C 4800003D 41A20224 4800003D
00141516 0017181D 00141516 0017181D
34000090 2F2E3020 34000090 2F2E3020
32293328 2A1FBA3C 32293328 2A1FBA3C
@ -234,22 +237,25 @@
900B00D8 A00B00CC 900B00D8 A00B00CC
60004000 54000524 60004000 54000524
B00B00CC B0FF0012 B00B00CC B0FF0012
54E0C63E 819F0020 819F0020 54E0C63E
2C000007 2C80000E 2F000009 2880000F
4C423382 3800003B 3940007D 5D4A05EF
41820008 38000000 4EC51042 2C000007
B00C00E4 A00C00E2 2C80000E 4C423382
540007FA B00C00E2 3800003B 41820008
54FDD7BE 3BBD0005 38000000 B00C00E4
819F0034 38000000 A00C00E2 540007FA
900C0020 38000012 B00C00E2 54FDD7BF
900C0024 380000FF 3BBD0005 819F0034
280709FF 40A2000C 38000000 900C0020
3C00D2D2 6000D2FF 419A000C 40820010
900C0018 00000000 4096000C 3C00D2D2
6000D200 600000FF
900C0018 38000012
900C0024 00000000
</source> </source>
<source version="GMSP01"> <source version="GMSP01">
C229E080 00000057 C229E080 0000005A
3C80817F 816D9EC8 3C80817F 816D9EC8
3D808040 80ACBC24 3D808040 80ACBC24
20050022 540A043D 20050022 540A043D
@ -258,20 +264,20 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90ACBC24 7C7D1B79 90ACBC24 7C7D1B79
41820274 818D9EE0 4182028C 818D9EE0
280C0000 41820014 280C0000 41820014
898C0064 38000021 898C0064 38000021
5C00656B 40820258 5C00656B 40820270
70A00004 41A20040 70A00004 41A20040
881F0008 2C000008 881F0008 2C000008
41820034 881F000E 41820034 881F000E
3D40803D 394A6DB0 3D40803D 394A6DB0
7CEA00AE 2C070001 7CEA00AE 2C070001
4081022C 38070001 40810244 38070001
5400EFFE 7CE70214 5400EFFE 7CE70214
54E7403E 60E700FF 54E7403E 60E700FF
480000FC 70A00008 480000FC 70A00008
41A2020C 4800003D 41A20224 4800003D
00141516 0017181D 00141516 0017181D
34000090 2F2E3020 34000090 2F2E3020
32293328 2A1FBA3C 32293328 2A1FBA3C
@ -324,22 +330,25 @@
900B00D8 A00B00CC 900B00D8 A00B00CC
60004000 54000524 60004000 54000524
B00B00CC B0FF0012 B00B00CC B0FF0012
54E0C63E 819F0020 819F0020 54E0C63E
2C000007 2C80000E 2F000009 2880000F
4C423382 3800003B 3940007D 5D4A05EF
41820008 38000000 4EC51042 2C000007
B00C00E4 A00C00E2 2C80000E 4C423382
540007FA B00C00E2 3800003B 41820008
54FDD7BE 3BBD0005 38000000 B00C00E4
819F0034 38000000 A00C00E2 540007FA
900C0020 38000012 B00C00E2 54FDD7BF
900C0024 380000FF 3BBD0005 819F0034
280709FF 40A2000C 38000000 900C0020
3C00D2D2 6000D2FF 419A000C 40820010
900C0018 00000000 4096000C 3C00D2D2
6000D200 600000FF
900C0018 38000012
900C0024 00000000
</source> </source>
<source version="GMSJ0A"> <source version="GMSJ0A">
C2285FCC 00000057 C2285FCC 0000005A
3C80817F 816D9E60 3C80817F 816D9E60
3D80803F 80AC5458 3D80803F 80AC5458
20050022 540A043D 20050022 540A043D
@ -348,20 +357,20 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC5458 7C7D1B79 90AC5458 7C7D1B79
41820274 818D9E78 4182028C 818D9E78
280C0000 41820014 280C0000 41820014
898C0064 38000021 898C0064 38000021
5C00656B 40820258 5C00656B 40820270
70A00004 41A20040 70A00004 41A20040
881F0008 2C000008 881F0008 2C000008
41820034 881F000E 41820034 881F000E
3D40803D 394AF9B8 3D40803D 394AF9B8
7CEA00AE 2C070001 7CEA00AE 2C070001
4081022C 38070001 40810244 38070001
5400EFFE 7CE70214 5400EFFE 7CE70214
54E7403E 60E700FF 54E7403E 60E700FF
480000FC 70A00008 480000FC 70A00008
41A2020C 4800003D 41A20224 4800003D
00141516 0017181D 00141516 0017181D
34000090 2F2E3020 34000090 2F2E3020
32293328 2A1FBA3C 32293328 2A1FBA3C
@ -414,18 +423,21 @@
900B00D8 A00B00CC 900B00D8 A00B00CC
60004000 54000524 60004000 54000524
B00B00CC B0FF0012 B00B00CC B0FF0012
54E0C63E 819F0020 819F0020 54E0C63E
2C000007 2C80000E 2F000009 2880000F
4C423382 3800003B 3940007D 5D4A05EF
41820008 38000000 4EC51042 2C000007
B00C00E4 A00C00E2 2C80000E 4C423382
540007FA B00C00E2 3800003B 41820008
54FDD7BE 3BBD0005 38000000 B00C00E4
819F0034 38000000 A00C00E2 540007FA
900C0020 38000012 B00C00E2 54FDD7BF
900C0024 380000FF 3BBD0005 819F0034
280709FF 40A2000C 38000000 900C0020
3C00D2D2 6000D2FF 419A000C 40820010
900C0018 00000000 4096000C 3C00D2D2
6000D200 600000FF
900C0018 38000012
900C0024 00000000
</source> </source>
</code> </code>

View file

@ -3,7 +3,7 @@
<title lang="en-US">Instant Level Select Extra</title> <title lang="en-US">Instant Level Select Extra</title>
<title lang="ja-JP">レベル選択EX</title> <title lang="ja-JP">レベル選択EX</title>
<author>sup39(サポミク)</author> <author>sup39(サポミク)</author>
<version>1.3</version> <version>1.3.1</version>
<date>Feb 25, 2024</date> <date>Feb 25, 2024</date>
<description lang="en-US"> <description lang="en-US">
::: warning ::: warning

View file

@ -11,6 +11,8 @@
.set rApp, 31 # gpApplication .set rApp, 31 # gpApplication
.set rNextGameMode, 29 .set rNextGameMode, 29
.set crAreaLock, 7 .set crAreaLock, 7
.set crArea9, 6
.set crArea234568, 5
.set $btnLevelSelect, 0x8 # D_UP .set $btnLevelSelect, 0x8 # D_UP
.set $btnShineSelect, 0x4 # D_DOWN .set $btnShineSelect, 0x4 # D_DOWN
@ -18,12 +20,6 @@
lis \reg, \val@h lis \reg, \val@h
ori \reg, \reg, \val@l ori \reg, \reg, \val@l
.endm .endm
#.macro call addr
# li32 r12, \addr
# mtlr r12
# blrl r12
# #bl call
#.endm
.L.prepare: .L.prepare:
## prepare registers ## prepare registers
@ -146,10 +142,6 @@
.long 0x12234070 .long 0x12234070
.long 0x23467001 .long 0x23467001
#call:
# mtctr r12
# bctr
.L.LevelSelect: .L.LevelSelect:
mflr rD mflr rD
@ -316,48 +308,74 @@ handlePlaza:
### write nextArea ### write nextArea
sth rAns, 0x12(rApp) sth rAns, 0x12(rApp)
.set rMGP, 12 .L.handleStickCD:
# SirenaHotel(0x07) or Casino(0x0E) ? 59 : 0 lwz r12, 0x20(rApp) # TMarioGamePad*
## area
rlwinm r0, rAns, 32-8, 0xFF # area rlwinm r0, rAns, 32-8, 0xFF # area
lwz rMGP, 0x20(rApp) # TMarioGamePad* ## crArea9(eq): area == 9
cmpwi crArea9, r0, 9
## crArea234568(eq)
### cr1(gt): area >= 0x10
cmplwi cr1, r0, 0xF
### cr0(eq): area magic == 0
li rTmp, 0x7D # 234568 => 111_1101
rlwnm. rTmp, rTmp, r0, 31-8, 31-8 # LSB 8
### crArea234568(eq) = !(area >= 0x10) && !(area magic == 0)
crnor 4*crArea234568+eq, 4*cr1+gt, eq
## SirenaHotel(0x07) or Casino(0x0E) ? 59 : 0
cmpwi r0, 0x07 # SirenaHotel cmpwi r0, 0x07 # SirenaHotel
cmpwi cr1, r0, 0x0E # Casino cmpwi cr1, r0, 0x0E # Casino
cror eq, eq, 4*cr1+eq cror eq, eq, 4*cr1+eq # (NOTE: cannot use rlwnm trick since area may >= 0x20)
li r0, 59 li r0, 59
beq- .L.handleStickCD beq- .L.handleStickCD.apply
li r0, 0 li r0, 0
.L.handleStickCD: .L.handleStickCD.apply:
sth r0, 0xe4(rMGP) sth r0, 0xe4(r12)
.L.handleStickFlag: .L.handleStickFlag:
## clear 0x2 bit of 0xe2 flag ## clear 0x2 bit of 0xe2 flag
lhz r0, 0xe2(rMGP) lhz r0, 0xe2(r12)
rlwinm r0, r0, 0, 31, 29 rlwinm r0, r0, 0, 31, 29
sth r0, 0xe2(rMGP) sth r0, 0xe2(r12)
## set nextGameMode if gpMarDirector == NULL ## set nextGameMode if gpMarDirector == NULL
### nextGameMode = nextArea == (shine select) ? 8 : 5 ### nextGameMode = nextArea == (shine select) ? 8 : 5
## ep==0xFF ? 3 : 0 (Note: all valid ep id < 0x40) ## ep==0xFF ? 3 : 0 (Note: all valid ep id < 0x40)
rlwinm rNextGameMode, rAns, 32-6, 0x3 ## cr0(eq) == ep!=0xFF
rlwinm. rNextGameMode, rAns, 32-6, 0x3
addi rNextGameMode, rNextGameMode, 5 addi rNextGameMode, rNextGameMode, 5
.L.setFader: .L.setFader:
## TSMSFader::setFadeStatus(gpApplication.fader, FadedOut(=0)) ## TSMSFader::setFadeStatus(gpApplication.fader, FadedOut(=0))
lwz r12, 0x34(rApp) lwz r12, 0x34(rApp)
.L.setFader.status:
### this->status = FadedOut(0); ### this->status = FadedOut(0);
li r0, 0 li r0, 0
stw r0, 0x20(r12) stw r0, 0x20(r12)
.L.setFader.color:
## TSMSFader::setColor(gpApplication.fader, color)
/**
* (9, *) => white (0xd2d2d2ff)
* (*, 0xFF) => black (0xff)
* (2|3|4|5|6|8, *) => white
* _ => black
*/
### area == 9 => white
beq crArea9, .L.setFader.color.white
### !(ep != 0xFF) => black (Note: DO NOT DESTROY cr0 UNTIL HERE!)
bne cr0, .L.setFader.color.black
### area != 2|3|4|5|6|8 => black
bne crArea234568, .L.setFader.color.black
.L.setFader.color.white:
li32 r0, 0xd2d2d200
.L.setFader.color.black:
ori r0, r0, 0xff # r0 = 0 in .L.setFader.status
.L.setFader.color.apply:
stw r0, 0x18(r12)
### this->color->a = 0xff; (overwritten afterward) ### this->color->a = 0xff; (overwritten afterward)
### (this->wipeRequest).type = 0x12; ### (this->wipeRequest).type = 0x12;
li r0, 0x12 li r0, 0x12
stw r0, 0x24(r12) stw r0, 0x24(r12)
## TSMSFader::setColor(gpApplication.fader, color=0xff)
### this->color = rAns == 0x09FF ? 0xd2d2d2ff : 0xff
li r0, 0xff
cmplwi rAns, 0x09FF
bne+ .L.setFader.color.apply
li32 r0, 0xd2d2d2ff
.L.setFader.color.apply:
stw r0, 0x18(r12)
.L.done: .L.done: