add InstantShineSelect
This commit is contained in:
parent
d85deb34bc
commit
85a88d5e7c
3 changed files with 103 additions and 0 deletions
19
NTSC-J 1.0/InstantShineSelect.txt
Normal file
19
NTSC-J 1.0/InstantShineSelect.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
$ Instant Shine Select (2022/10/14) [sup39]
|
||||
C20EC424 00000011
|
||||
3CA08040 80A50D80
|
||||
28050801 40A20074
|
||||
3C60817F 38A00001
|
||||
98A300B3 98A30100
|
||||
3CA0803E 8D85600E
|
||||
3C60803B 386340E8
|
||||
7C6360AE 38030001
|
||||
5400EFFE 7C630214
|
||||
5463442E 606300FF
|
||||
B0650004 806D97D0
|
||||
38000000 900300DC
|
||||
7FE3FB78 3D80800F
|
||||
398CAB40 7D8803A6
|
||||
4E800021 3B800009
|
||||
3D80800F 398CCB28
|
||||
7D8803A6 4E800020
|
||||
2800000C 00000000
|
3
src/InstantShineSelect.ld
Normal file
3
src/InstantShineSelect.ld
Normal file
|
@ -0,0 +1,3 @@
|
|||
$$ = 0;
|
||||
$C2$.Mar.changeState = 32 + TMarDirector.changeState;
|
||||
.Mar.changeState.applied = 1828 + TMarDirector.changeState;
|
81
src/InstantShineSelect.s
Normal file
81
src/InstantShineSelect.s
Normal file
|
@ -0,0 +1,81 @@
|
|||
.set btn, 0x801
|
||||
|
||||
.Mar.changeState:
|
||||
## read button input: [M]*1 [C]*1 [btn]*2
|
||||
lis r5, JUTGamePad.mPadButton@ha
|
||||
lwz r5, JUTGamePad.mPadButton@l(r5)
|
||||
cmplwi r5, btn
|
||||
bne+ .Mar.changeState.notActivated
|
||||
## reset QFT
|
||||
lis r3, 0x817F
|
||||
li r5, 0x1
|
||||
stb r5, 0xB3(r3)
|
||||
stb r5, 0x100(r3)
|
||||
## set next area
|
||||
lis r5, gpApplication+0xE@ha
|
||||
## r12=curArea, r5=&curArea
|
||||
lbzu r12, gpApplication+0xE@l(r5)
|
||||
lis r3, System.shineStageTable@ha
|
||||
la r3, System.shineStageTable@l(r3)
|
||||
lbzx r3, r3, r12
|
||||
## +1 for >=7
|
||||
addi r0, r3, 1
|
||||
rlwinm r0, r0, 32-3, 0x1
|
||||
add r3, r3, r0
|
||||
## <<8 as area, ep=0xff
|
||||
rlwinm r3, r3, 8, 0x10, 0x17
|
||||
ori r3, r3, 0xff
|
||||
## r3=shineArea, r5+4=&nextArea
|
||||
sth r3, 4(r5)
|
||||
## reset coin counter
|
||||
lwz r3, TFlagManager.smInstance$r13(r13)
|
||||
li r0, 0
|
||||
stw r0, 0xDC(r3)
|
||||
## moveStage
|
||||
mr r3, r31
|
||||
lis r12, TMarDirector.moveStage@ha
|
||||
la r12, TMarDirector.moveStage@l(r12)
|
||||
mtlr r12
|
||||
blrl
|
||||
li r28, 9 # nextState = LevelTransition
|
||||
lis r12, .Mar.changeState.applied@ha
|
||||
la r12, .Mar.changeState.applied@l(r12)
|
||||
mtlr r12
|
||||
blr
|
||||
|
||||
.Mar.changeState.notActivated:
|
||||
cmplwi r0, 0xc
|
||||
|
||||
#.TMarDirector.updateGameMode:
|
||||
## check input
|
||||
# lis r3, aInput@ha
|
||||
# lhz r5, aInput@l(r3)
|
||||
# cmplwi r5, btn
|
||||
# bne+ .L_done
|
||||
## reset QFT
|
||||
# lis r3, 0x817F
|
||||
# li r5, 0x1
|
||||
# stb r5, 0xB3(r3)
|
||||
# stb r5, 0x100(r3)
|
||||
## set next area
|
||||
# lis r5, aArea@ha
|
||||
# ## r12=curArea, r5=&curArea
|
||||
# lbzu r12, aArea@l(r5)
|
||||
# lis r3, System.shineStageTable@ha
|
||||
# la r3, System.shineStageTable@l(r3)
|
||||
# lbzx r3, r3, r12
|
||||
# rlwinm r3, r3, 8, 0x10, 0x17 # <<8
|
||||
# ori r3, r3, 0xff
|
||||
# ## r3=shineArea, r5+4=&nextArea
|
||||
# stw r3, 4(r5)
|
||||
## set curArea to 0x40 to force reset coin counter
|
||||
# li r3, 0x40
|
||||
# stw r3, 0(r5)
|
||||
## b moveStage
|
||||
# lis r3, aBL@h
|
||||
# ori r3, r3, aBL@l
|
||||
# mtlr r3
|
||||
# blr
|
||||
#.L_done:
|
||||
## original instruction
|
||||
# cmpwi r0, 0x2
|
Loading…
Reference in a new issue