Compare commits

..

2 commits

Author SHA1 Message Date
0ae5bb1b3c
fix (ILSEx): disable code in Z menu 2024-02-24 04:53:57 +09:00
4b3a1aac37
feat: add QFSGT 2024-02-24 04:51:15 +09:00
16 changed files with 703 additions and 305 deletions

View file

@ -78,80 +78,80 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC0D80 7C7D1B79 90AC0D80 7C7D1B79
41820248 818D97E8 4182024C 818D97E8
7D8C6379 41820010 7D8C6379 41820014
880C0064 2C000005 898C0064 38000021
41820230 70A00004 5C00656B 40820230
41A20040 881F0008 70A00004 41A20040
2C000008 41820034 881F0008 2C000008
881F000E 3D40803B 41820034 881F000E
394A40E8 7CEA00AE 3D40803B 394A40E8
2C070001 40810204 7CEA00AE 2C070001
38070001 5400EFFE 40810204 38070001
7CE70214 54E7403E 5400EFFE 7CE70214
60E700FF 480000FC 54E7403E 60E700FF
70A00008 41A201E4 480000FC 70A00008
4800003D 00141516 41A201E4 4800003D
0017181D 34000090 00141516 0017181D
2F2E3020 32293328 34000090 2F2E3020
2A1FBA3C 371E213A 32293328 2A1FBA3C
0E2C3900 00010507 371E213A 0E2C3900
08090200 123457D0 00010507 08090200
24567000 12234070 123457D0 24567000
23467001 7D2802A6 12234070 23467001
54A6CF3A 50A6E7BC 7D2802A6 54A6CF3A
50A6D7FE 54A0F77A 50A6E7BC 50A6D7FE
7CC60378 54A0C738 54A0F77A 7CC60378
50A0B77C 7CC60378 54A0C738 50A0B77C
54A3873F 41820054 7CC60378 54A3873F
2C030009 41820098 41820054 2C030009
3C00C84A 6000C004 41820098 3C00C84A
1C630003 5C031F7E 6000C004 1C630003
5465103A 2C06000C 5C031F7E 5465103A
408000BC 2C06000A 2C06000C 408000BC
408000D4 2C060008 2C06000A 408000D4
40800090 3C005689 2C060008 40800090
60000234 546C103A 3C005689 60000234
5C0C652E 7CC76378 546C103A 5C0C652E
54C8077E 480000C4 7CC76378 54C8077E
A0FF000E 2C060000 480000C4 A0FF000E
41820028 2C060004 2C060000 41820028
41820028 2C06000A 2C060004 41820028
41820028 7C0930AE 2C06000A 41820028
540744AE 5408CFFE 7C0930AE 540744AE
1D080007 48000094 5408CFFE 1D080007
A01F000A B01F000E 48000094 A01F000A
890B00DF 4800008C B01F000E 890B00DF
A0E40028 8904002A 4800008C A0E40028
48000078 3989000C 8904002A 48000078
7C0C30AE 540744AE 3989000C 7C0C30AE
5007CFFE 3C00AC1A 540744AE 5007CFFE
60005CA2 1D860003 3C00AC1A 60005CA2
5C08677E 48000054 1D860003 5C08677E
39890018 7C0C18AE 48000054 39890018
540744AE 3C001373 7C0C18AE 540744AE
60002301 5C082F7E 3C001373 60002301
48000038 3989FFF8 5C082F7E 48000038
54C016B8 7C0C006E 3989FFF8 54C016B8
5C072F7E 5007252E 7C0C006E 5C072F7E
800C0004 5C082F7E 5007252E 800C0004
48000018 3C001578 5C082F7E 48000018
60009200 5C072F3E 3C001578 60009200
60E70100 39000000 5C072F3E 60E70100
B0E40028 9904002A 39000000 B0E40028
38000001 980400B3 9904002A 38000001
990B00DF 38000000 980400B3 990B00DF
900B00D8 A00B00CC 38000000 900B00D8
60004000 54000524 A00B00CC 60004000
B00B00CC B0FF0012 54000524 B00B00CC
54E0C63E 819F0020 B0FF0012 54E0C63E
2C000007 2C80000E 819F0020 2C000007
4C423382 3800003B 2C80000E 4C423382
41820008 38000000 3800003B 41820008
B00C00E4 A00C00E2 38000000 B00C00E4
540007FA B00C00E2 A00C00E2 540007FA
54FDD7BE 3BBD0005 B00C00E2 54FDD7BE
60000000 00000000 3BBD0005 00000000
</source> </source>
<source version="GMSE01"> <source version="GMSE01">
C22A6170 00000052 C22A6170 00000052
@ -163,80 +163,80 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC4484 7C7D1B79 90AC4484 7C7D1B79
41820248 818D9FB8 4182024C 818D9FB8
7D8C6379 41820010 7D8C6379 41820014
880C0064 2C000005 898C0064 38000021
41820230 70A00004 5C00656B 40820230
41A20040 881F0008 70A00004 41A20040
2C000008 41820034 881F0008 2C000008
881F000E 3D40803E 41820034 881F000E
394AF498 7CEA00AE 3D40803E 394AF498
2C070001 40810204 7CEA00AE 2C070001
38070001 5400EFFE 40810204 38070001
7CE70214 54E7403E 5400EFFE 7CE70214
60E700FF 480000FC 54E7403E 60E700FF
70A00008 41A201E4 480000FC 70A00008
4800003D 00141516 41A201E4 4800003D
0017181D 34000090 00141516 0017181D
2F2E3020 32293328 34000090 2F2E3020
2A1FBA3C 371E213A 32293328 2A1FBA3C
0E2C3900 00010507 371E213A 0E2C3900
08090200 123457D0 00010507 08090200
24567000 12234070 123457D0 24567000
23467001 7D2802A6 12234070 23467001
54A6CF3A 50A6E7BC 7D2802A6 54A6CF3A
50A6D7FE 54A0F77A 50A6E7BC 50A6D7FE
7CC60378 54A0C738 54A0F77A 7CC60378
50A0B77C 7CC60378 54A0C738 50A0B77C
54A3873F 41820054 7CC60378 54A3873F
2C030009 41820098 41820054 2C030009
3C00C84A 6000C004 41820098 3C00C84A
1C630003 5C031F7E 6000C004 1C630003
5465103A 2C06000C 5C031F7E 5465103A
408000BC 2C06000A 2C06000C 408000BC
408000D4 2C060008 2C06000A 408000D4
40800090 3C005689 2C060008 40800090
60000234 546C103A 3C005689 60000234
5C0C652E 7CC76378 546C103A 5C0C652E
54C8077E 480000C4 7CC76378 54C8077E
A0FF000E 2C060000 480000C4 A0FF000E
41820028 2C060004 2C060000 41820028
41820028 2C06000A 2C060004 41820028
41820028 7C0930AE 2C06000A 41820028
540744AE 5408CFFE 7C0930AE 540744AE
1D080007 48000094 5408CFFE 1D080007
A01F000A B01F000E 48000094 A01F000A
890B00DF 4800008C B01F000E 890B00DF
A0E40028 8904002A 4800008C A0E40028
48000078 3989000C 8904002A 48000078
7C0C30AE 540744AE 3989000C 7C0C30AE
5007CFFE 3C00AC1A 540744AE 5007CFFE
60005CA2 1D860003 3C00AC1A 60005CA2
5C08677E 48000054 1D860003 5C08677E
39890018 7C0C18AE 48000054 39890018
540744AE 3C001373 7C0C18AE 540744AE
60002301 5C082F7E 3C001373 60002301
48000038 3989FFF8 5C082F7E 48000038
54C016B8 7C0C006E 3989FFF8 54C016B8
5C072F7E 5007252E 7C0C006E 5C072F7E
800C0004 5C082F7E 5007252E 800C0004
48000018 3C001578 5C082F7E 48000018
60009200 5C072F3E 3C001578 60009200
60E70100 39000000 5C072F3E 60E70100
B0E40028 9904002A 39000000 B0E40028
38000001 980400B3 9904002A 38000001
990B00DF 38000000 980400B3 990B00DF
900B00D8 A00B00CC 38000000 900B00D8
60004000 54000524 A00B00CC 60004000
B00B00CC B0FF0012 54000524 B00B00CC
54E0C63E 819F0020 B0FF0012 54E0C63E
2C000007 2C80000E 819F0020 2C000007
4C423382 3800003B 2C80000E 4C423382
41820008 38000000 3800003B 41820008
B00C00E4 A00C00E2 38000000 B00C00E4
540007FA B00C00E2 A00C00E2 540007FA
54FDD7BE 3BBD0005 B00C00E2 54FDD7BE
60000000 00000000 3BBD0005 00000000
</source> </source>
<source version="GMSP01"> <source version="GMSP01">
C229E080 00000052 C229E080 00000052
@ -248,80 +248,80 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90ACBC24 7C7D1B79 90ACBC24 7C7D1B79
41820248 818D9EE0 4182024C 818D9EE0
7D8C6379 41820010 7D8C6379 41820014
880C0064 2C000005 898C0064 38000021
41820230 70A00004 5C00656B 40820230
41A20040 881F0008 70A00004 41A20040
2C000008 41820034 881F0008 2C000008
881F000E 3D40803D 41820034 881F000E
394A6DB0 7CEA00AE 3D40803D 394A6DB0
2C070001 40810204 7CEA00AE 2C070001
38070001 5400EFFE 40810204 38070001
7CE70214 54E7403E 5400EFFE 7CE70214
60E700FF 480000FC 54E7403E 60E700FF
70A00008 41A201E4 480000FC 70A00008
4800003D 00141516 41A201E4 4800003D
0017181D 34000090 00141516 0017181D
2F2E3020 32293328 34000090 2F2E3020
2A1FBA3C 371E213A 32293328 2A1FBA3C
0E2C3900 00010507 371E213A 0E2C3900
08090200 123457D0 00010507 08090200
24567000 12234070 123457D0 24567000
23467001 7D2802A6 12234070 23467001
54A6CF3A 50A6E7BC 7D2802A6 54A6CF3A
50A6D7FE 54A0F77A 50A6E7BC 50A6D7FE
7CC60378 54A0C738 54A0F77A 7CC60378
50A0B77C 7CC60378 54A0C738 50A0B77C
54A3873F 41820054 7CC60378 54A3873F
2C030009 41820098 41820054 2C030009
3C00C84A 6000C004 41820098 3C00C84A
1C630003 5C031F7E 6000C004 1C630003
5465103A 2C06000C 5C031F7E 5465103A
408000BC 2C06000A 2C06000C 408000BC
408000D4 2C060008 2C06000A 408000D4
40800090 3C005689 2C060008 40800090
60000234 546C103A 3C005689 60000234
5C0C652E 7CC76378 546C103A 5C0C652E
54C8077E 480000C4 7CC76378 54C8077E
A0FF000E 2C060000 480000C4 A0FF000E
41820028 2C060004 2C060000 41820028
41820028 2C06000A 2C060004 41820028
41820028 7C0930AE 2C06000A 41820028
540744AE 5408CFFE 7C0930AE 540744AE
1D080007 48000094 5408CFFE 1D080007
A01F000A B01F000E 48000094 A01F000A
890B00DF 4800008C B01F000E 890B00DF
A0E40028 8904002A 4800008C A0E40028
48000078 3989000C 8904002A 48000078
7C0C30AE 540744AE 3989000C 7C0C30AE
5007CFFE 3C00AC1A 540744AE 5007CFFE
60005CA2 1D860003 3C00AC1A 60005CA2
5C08677E 48000054 1D860003 5C08677E
39890018 7C0C18AE 48000054 39890018
540744AE 3C001373 7C0C18AE 540744AE
60002301 5C082F7E 3C001373 60002301
48000038 3989FFF8 5C082F7E 48000038
54C016B8 7C0C006E 3989FFF8 54C016B8
5C072F7E 5007252E 7C0C006E 5C072F7E
800C0004 5C082F7E 5007252E 800C0004
48000018 3C001578 5C082F7E 48000018
60009200 5C072F3E 3C001578 60009200
60E70100 39000000 5C072F3E 60E70100
B0E40028 9904002A 39000000 B0E40028
38000001 980400B3 9904002A 38000001
990B00DF 38000000 980400B3 990B00DF
900B00D8 A00B00CC 38000000 900B00D8
60004000 54000524 A00B00CC 60004000
B00B00CC B0FF0012 54000524 B00B00CC
54E0C63E 819F0020 B0FF0012 54E0C63E
2C000007 2C80000E 819F0020 2C000007
4C423382 3800003B 2C80000E 4C423382
41820008 38000000 3800003B 41820008
B00C00E4 A00C00E2 38000000 B00C00E4
540007FA B00C00E2 A00C00E2 540007FA
54FDD7BE 3BBD0005 B00C00E2 54FDD7BE
60000000 00000000 3BBD0005 00000000
</source> </source>
<source version="GMSJ0A"> <source version="GMSJ0A">
C2285FCC 00000052 C2285FCC 00000052
@ -333,79 +333,79 @@
28830001 4C451102 28830001 4C451102
40A2000C 38A00008 40A2000C 38A00008
90AC5458 7C7D1B79 90AC5458 7C7D1B79
41820248 818D9E78 4182024C 818D9E78
7D8C6379 41820010 7D8C6379 41820014
880C0064 2C000005 898C0064 38000021
41820230 70A00004 5C00656B 40820230
41A20040 881F0008 70A00004 41A20040
2C000008 41820034 881F0008 2C000008
881F000E 3D40803D 41820034 881F000E
394AF9B8 7CEA00AE 3D40803D 394AF9B8
2C070001 40810204 7CEA00AE 2C070001
38070001 5400EFFE 40810204 38070001
7CE70214 54E7403E 5400EFFE 7CE70214
60E700FF 480000FC 54E7403E 60E700FF
70A00008 41A201E4 480000FC 70A00008
4800003D 00141516 41A201E4 4800003D
0017181D 34000090 00141516 0017181D
2F2E3020 32293328 34000090 2F2E3020
2A1FBA3C 371E213A 32293328 2A1FBA3C
0E2C3900 00010507 371E213A 0E2C3900
08090200 123457D0 00010507 08090200
24567000 12234070 123457D0 24567000
23467001 7D2802A6 12234070 23467001
54A6CF3A 50A6E7BC 7D2802A6 54A6CF3A
50A6D7FE 54A0F77A 50A6E7BC 50A6D7FE
7CC60378 54A0C738 54A0F77A 7CC60378
50A0B77C 7CC60378 54A0C738 50A0B77C
54A3873F 41820054 7CC60378 54A3873F
2C030009 41820098 41820054 2C030009
3C00C84A 6000C004 41820098 3C00C84A
1C630003 5C031F7E 6000C004 1C630003
5465103A 2C06000C 5C031F7E 5465103A
408000BC 2C06000A 2C06000C 408000BC
408000D4 2C060008 2C06000A 408000D4
40800090 3C005689 2C060008 40800090
60000234 546C103A 3C005689 60000234
5C0C652E 7CC76378 546C103A 5C0C652E
54C8077E 480000C4 7CC76378 54C8077E
A0FF000E 2C060000 480000C4 A0FF000E
41820028 2C060004 2C060000 41820028
41820028 2C06000A 2C060004 41820028
41820028 7C0930AE 2C06000A 41820028
540744AE 5408CFFE 7C0930AE 540744AE
1D080007 48000094 5408CFFE 1D080007
A01F000A B01F000E 48000094 A01F000A
890B00DF 4800008C B01F000E 890B00DF
A0E40028 8904002A 4800008C A0E40028
48000078 3989000C 8904002A 48000078
7C0C30AE 540744AE 3989000C 7C0C30AE
5007CFFE 3C00AC1A 540744AE 5007CFFE
60005CA2 1D860003 3C00AC1A 60005CA2
5C08677E 48000054 1D860003 5C08677E
39890018 7C0C18AE 48000054 39890018
540744AE 3C001373 7C0C18AE 540744AE
60002301 5C082F7E 3C001373 60002301
48000038 3989FFF8 5C082F7E 48000038
54C016B8 7C0C006E 3989FFF8 54C016B8
5C072F7E 5007252E 7C0C006E 5C072F7E
800C0004 5C082F7E 5007252E 800C0004
48000018 3C001578 5C082F7E 48000018
60009200 5C072F3E 3C001578 60009200
60E70100 39000000 5C072F3E 60E70100
B0E40028 9904002A 39000000 B0E40028
38000001 980400B3 9904002A 38000001
990B00DF 38000000 980400B3 990B00DF
900B00D8 A00B00CC 38000000 900B00D8
60004000 54000524 A00B00CC 60004000
B00B00CC B0FF0012 54000524 B00B00CC
54E0C63E 819F0020 B0FF0012 54E0C63E
2C000007 2C80000E 819F0020 2C000007
4C423382 3800003B 2C80000E 4C423382
41820008 38000000 3800003B 41820008
B00C00E4 A00C00E2 38000000 B00C00E4
540007FA B00C00E2 A00C00E2 540007FA
54FDD7BE 3BBD0005 B00C00E2 54FDD7BE
60000000 00000000 3BBD0005 00000000
</source> </source>
</code> </code>

View file

@ -1,7 +1,8 @@
# Instant Level Select Extra # Instant Level Select Extra
## Caveats ## Caveats
- Do not use this code when opening/closing Z menu, or the game may crash! - The code is disabled when paused and in Z menu
## Usage ## Usage
### Instant Restart ### Instant Restart
- Press `D-Pad Up` to **restart the current area** - Press `D-Pad Up` to **restart the current area**

View file

@ -3,11 +3,11 @@
<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.0</version> <version>1.1</version>
<date>Feb 09, 2024</date> <date>Feb 24, 2024</date>
<description lang="en-US"> <description lang="en-US">
::: warning ::: warning
Do not use this code when opening/closing Z menu, or the game may crash! The code is disabled when paused and in Z menu.
::: :::
#### Instant Restart #### Instant Restart
@ -39,7 +39,7 @@
</description> </description>
<description lang="ja-JP"> <description lang="ja-JP">
::: warning ::: warning
Zメニューを開く・閉じる最中にこのコードを使うとクラッシュする可能性があります このコードはポーズ時及びZメニューでは無効化されます。
::: :::
#### ポーズせずにやり直し #### ポーズせずにやり直し

View file

@ -60,10 +60,11 @@
lwz r12, gpMarDirector$r13(r13) lwz r12, gpMarDirector$r13(r13)
mr. r12, r12 mr. r12, r12
beq .L.checkPaused.done beq .L.checkPaused.done
### if (u8) @ *gpMarDirector + 0x64 == 5 ### if (u8) @ *gpMarDirector + 0x64 == 5 or 10
lbz r0, 0x64(r12) lbz r12, 0x64(r12)
cmpwi r0, 5 li r0, 0x21 # (LSB 0, 5 == 1)
beq .L.done rlwnm. r0, r0, r12, 31-10, 31-10 # LSB 10
bne .L.done
.L.checkPaused.done: .L.checkPaused.done:

215
QFSGT/@code.xml Normal file
View file

@ -0,0 +1,215 @@
<code>
<id>QFSGT</id>
<category>timer</category>
<title lang="en-US">QFSGT</title>
<author>sup39(サポミク), Noki Doki</author>
<version>0.1</version>
<date>Feb 24, 2024</date>
<description lang="en-US">
Show Quarterframe timer with in-game timer appearance on shine get.
</description>
<source version="GMSJ01">
C20ECE44 00000005
981A0260 3CE0817F
880700B3 2C000000
41820010 B00700B2
3800FFFC 900700B4
60000000 00000000
C20EFA30 00000005
3CA0817F A00500B2
2C000000 40820014
800500B4 80C3005C
7C003214 900500B4
7C0802A6 00000000
C20EDB30 00000005
3CA0817F 80C500B4
8003005C 7CC60214
38C60004 54C6003A
90C500B4 38C0FFFF
B0C500B2 00000000
C21D1F38 00000005
3D00817F 80C800B4
8003005C 7CC60214
38C60004 54C6003A
90C800B4 38C0FFFF
B0C800B2 00000000
C22257CC 00000002
2C030001 3C60817F
98A300B3 00000000
C20EBD78 00000002
389C0001 3CA0817F
988500B3 00000000
C20EC72C 00000002
3CA0817F 38600001
986500B3 00000000
C20ED8F0 00000002
3CA0817F 980500B3
60000000 00000000
C2206774 0000000C
3C60817F 888300B2
2C040000 41A20048
38800000 988300B2
7FE3FB78 3D808021
398CC428 7D8803A6
4E800021 7FE3FB78
3C80817F 808400B4
380004B0 1C8403E9
7C840396 3D808021
398C9E14 7D8803A6
4E800021 881F0044
60000000 00000000
</source>
<source version="GMSE01">
C22998C0 00000005
981A0260 3CE0817F
880700B3 2C000000
41820010 B00700B2
3800FFFC 900700B4
60000000 00000000
C229C520 00000005
3CA0817F A00500B2
2C000000 40820014
800500B4 80C3005C
7C003214 900500B4
7C0802A6 00000000
C229A5AC 00000005
3CA0817F 80C500B4
8003005C 7CC60214
38C60004 54C6003A
90C500B4 38C0FFFF
B0C500B2 00000000
C21FA384 00000005
3D00817F 80C800B4
8003005C 7CC60214
38C60004 54C6003A
90C800B4 38C0FFFF
B0C800B2 00000000
C2164E24 00000002
2C030001 3C60817F
98A300B3 00000000
C229880C 00000002
389C0001 3CA0817F
988500B3 00000000
C22991A8 00000002
3CA0817F 38600001
986500B3 00000000
C229A36C 00000002
3CA0817F 980500B3
60000000 00000000
C2143F54 0000000C
3C60817F 888300B2
2C040000 41A20048
38800000 988300B2
7FE3FB78 3D808015
398CAFCC 7D8803A6
4E800021 7FE3FB78
3C80817F 808400B4
380004B0 1C8403E9
7C840396 3D808015
398C836C 7D8803A6
4E800021 881F0044
60000000 00000000
</source>
<source version="GMSP01">
C2291758 00000005
981A0260 3CE0817F
880700B3 2C000000
41820010 B00700B2
3800FFFC 900700B4
60000000 00000000
C22943FC 00000005
3CA0817F A00500B2
2C000000 40820014
800500B4 80C3005C
7C003214 900500B4
7C0802A6 00000000
C2292480 00000005
3CA0817F 80C500B4
8003005C 7CC60214
38C60004 54C6003A
90C500B4 38C0FFFF
B0C500B2 00000000
C21F225C 00000005
3D00817F 80C800B4
8003005C 7CC60214
38C60004 54C6003A
90C800B4 38C0FFFF
B0C800B2 00000000
C2159E9C 00000002
2C030001 3C60817F
98A300B3 00000000
C22906A4 00000002
389C0001 3CA0817F
988500B3 00000000
C2291040 00000002
3CA0817F 38600001
986500B3 00000000
C2292204 00000002
3CA0817F 980500B3
60000000 00000000
C2138B90 0000000C
3C60817F 888300B2
2C040000 41A20048
38800000 988300B2
7FE3FB78 3D808014
398CFC5C 7D8803A6
4E800021 7FE3FB78
3C80817F 808400B4
380004B0 1C8403E9
7C840396 3D808014
398CCFF0 7D8803A6
4E800021 881F0044
60000000 00000000
</source>
<source version="GMSJ0A">
C2279570 00000005
981A0260 3CE0817F
880700B3 2C000000
41820010 B00700B2
3800FFFC 900700B4
60000000 00000000
C227C214 00000005
3CA0817F A00500B2
2C000000 40820014
800500B4 80C3005C
7C003214 900500B4
7C0802A6 00000000
C227A298 00000005
3CA0817F 80C500B4
8003005C 7CC60214
38C60004 54C6003A
90C500B4 38C0FFFF
B0C500B2 00000000
C21DA0FC 00000005
3D00817F 80C800B4
8003005C 7CC60214
38C60004 54C6003A
90C800B4 38C0FFFF
B0C800B2 00000000
C2145EBC 00000002
2C030001 3C60817F
98A300B3 00000000
C22784B4 00000002
389C0001 3CA0817F
988500B3 00000000
C2278E58 00000002
3CA0817F 38600001
986500B3 00000000
C227A01C 00000002
3CA0817F 980500B3
60000000 00000000
C21252E0 0000000C
3C60817F 888300B2
2C040000 41A20048
38800000 988300B2
7FE3FB78 3D808013
398CC3C0 7D8803A6
4E800021 7FE3FB78
3C80817F 808400B4
380004B0 1C8403E9
7C840396 3D808013
398C9740 7D8803A6
4E800021 881F0044
60000000 00000000
</source>
</code>

11
QFSGT/info.xml Normal file
View file

@ -0,0 +1,11 @@
<code>
<id>QFSGT</id>
<category>timer</category>
<title lang="en-US">QFSGT</title>
<author>sup39(サポミク), Noki Doki</author>
<version>0.1</version>
<date>Feb 24, 2024</date>
<description lang="en-US">
Show Quarterframe timer with in-game timer appearance on shine get.
</description>
</code>

21
QFSGT/make.py Normal file
View file

@ -0,0 +1,21 @@
from supSMSGecko import make_xml, symbols
def main(g, ver):
S = symbols[ver]
g.C2(S['TMarDirector_direct'] + 0x88, 'src/onAreaInit.s')
g.C2(S['TMarDirector_delete_0'], 'src/onAreaDeinit.s')
g.C2(S['TMarDirector_fireGetStar'] + (0x48 if ver in ['GMSJ01', 'GMSE01'] else 0x84), 'src/onShineGet.s')
g.C2(S['TBathtub_startDemo'] + (0x21c if ver in ['GMSJ01', 'GMSJ0A'] else 0x21c), 'src/onBrowserFightDone.s')
g.C2(S['TCardLoad_changeScene'] + {
'GMSJ01': 0x1278,
'GMSE01': 0x1384,
'GMSP01': 0x13b0,
'GMSJ0A': 0x13b0,
}[ver], 'src/onFileStart.s')
g.C2(S['TMarDirector_nextStateInitialize'] + (0x56c if ver == 'GMSJ01' else 0x5bc), 'src/onMiss.s')
g.C2(S['TMarDirector_changeState'] + 0x328, 'src/onExitArea.s')
g.C2(S['TMarDirector_setNextStage'] + 0x50, 'src/onLoadingZone.s')
g.C2(S['TGCConsole2_drawWater'] - 0x28c, 'src/showTimer.s')
make_xml(main)

15
QFSGT/src/onAreaDeinit.s Normal file
View file

@ -0,0 +1,15 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## if Stop at QFT Offset flag
lis r5, 0x817f
lhz r0, 0xb2(r5)
cmpwi r0, 0
bne- .done
## cumulative time += globalQF
lwz r0, 0xb4(r5)
lwz r6, 0x5c(r3) ## globalQF
add r0, r0, r6
stw r0, 0xb4(r5)
## orig
.done:
mflr r0

19
QFSGT/src/onAreaInit.s Normal file
View file

@ -0,0 +1,19 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## orig
stb r0, 0x260(r26)
## check if should reset QFT (0xb3 flag)
lis r7, 0x817f
lbz r0, 0xb3(r7)
cmpwi r0, 0
## duration of timer freeze = 0
# li r0, 0
# stw r0, 0xbc(r7)
beq .done
## reset QFT
### stop at QFT offset flag = false
sth r0, 0xb2(r7)
### cumulative time = -4
li r0, -4
stw r0, 0xb4(r7)
.done:

View file

@ -0,0 +1,15 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## r8 = cumulative time + global QF
lis r8, 0x817f
lwz r6, 0xb4(r8) ## cumulative time
lwz r0, 0x5c(r3) ## global QF
add r6, r6, r0
## round cumulative time to next 4x QF
addi r6, r6, 4
clrrwi r6, r6, 2 ## clear least significant 2 bits
stw r6, 0xb4(r8)
## stop at QFT offset flag (0xb2 flag) = true (0xFF)
## restart flag (0xb3 flag) = true (0xFF)
li r6, -1
sth r6, 0xb2(r8)

17
QFSGT/src/onExitArea.s Normal file
View file

@ -0,0 +1,17 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## restart flag = 1
lis r5, 0x817f
li r3, 1
stb r3, 0xb3(r5)
## displayed time = rounded up frame
# lwz r3, 0x5c(r31)
# addi r3, r3, 3
# clrrwi r3, r3, 2
# stw r3, 0xb8(r5)
## freeze duration = -1
# li r3, -1
# stw r3, 0xbc(r5)
## orig ignored?
# sth r28, 0x94(r1)

8
QFSGT/src/onFileStart.s Normal file
View file

@ -0,0 +1,8 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## r5 = 0x40005 in TFlagManager::getFlag()
## orig
cmpwi r3, 1
## restart flag = true
lis r3, 0x817f
stb r5, 0xb3(r3)

15
QFSGT/src/onLoadingZone.s Normal file
View file

@ -0,0 +1,15 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## r0 = 0
## QFT restart flag = 0
lis r5, 0x817f
stb r0, 0xb3(r5)
## round global QF to next 4x
# lwz r0, 0x5c(r30)
# addic r0, r0, 4
# clrrwi r0, r0, 2
## displayed time = rounded QF
# stw r0, 0xb8(r5)
## freeze duration = -1
# li r0, -1
# stw r0, 0xbc(r5)

7
QFSGT/src/onMiss.s Normal file
View file

@ -0,0 +1,7 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## orig (r4 = 0x20001)
addi r4, r28, 1
## restart flag = true (1)
lis r5, 0x817f
stb r4, 0xb3(r5)

15
QFSGT/src/onShineGet.s Normal file
View file

@ -0,0 +1,15 @@
/** Disassemble from Noki Doki's Quarterframe Timer code */
## r6 = cumulative time + global QF
lis r5, 0x817f
lwz r6, 0xb4(r5) ## cumulative time
lwz r0, 0x5c(r3) ## global QF
add r6, r6, r0
## update cumulative time and round to next 4x QF
addi r6, r6, 4
clrrwi r6, r6, 2 ## clear least significant 2 bits
stw r6, 0xb4(r5)
## stop at QFT offset flag (0xb2 flag) = true (0xFF)
## restart flag (0xb3 flag) = true (0xFF)
li r6, -1
sth r6, 0xb2(r5)

38
QFSGT/src/showTimer.s Normal file
View file

@ -0,0 +1,38 @@
## only start showing timer when finished (stop at QFT offset flag == true)
lis r3, 0x817f
lbz r4, 0xb2(r3)
cmpwi r4, 0
beq+ .done
## reset stop at QFT offset flag (only start showing once)
li r4, 0
stb r4, 0xb2(r3)
## tgcConsole2.startAppearTime(this, isCountDown=false)
### r3 = this
mr r3, r31
### r4 (isCountDown) = false (count up)
# li r4, 0
### call
lis r12, TGCConsole2_startAppearTimer@ha
la r12, TGCConsole2_startAppearTimer@l(r12)
mtlr r12
blrl
## tgcConsole2.setTimer(this, time)
### r3 = this
mr r3, r31
### r4 = cumulative time
lis r4, 0x817f
lwz r4, 0xb4(r4)
li r0, 1200
mulli r4, r4, 1001
divwu r4, r4, r0
### call
lis r12, TGCConsole2_setTimer@ha
la r12, TGCConsole2_setTimer@l(r12)
mtlr r12
blrl
.done:
## orig
lbz r0, 0x44(r31)