1
0
Fork 0

add AttemptCounter

This commit is contained in:
sup39 2022-11-02 16:25:16 +09:00
parent 783002008b
commit 9e13a87a75
4 changed files with 175 additions and 0 deletions

View file

@ -0,0 +1,37 @@
Configuration:
* xxxx: x coordinate of the text
* yyyy: y coordinate of the text
* ssss: font size of the text
* rrggbbaa: color of the text
You can use the preview function of "Customized display" in https://gct.zint.ch/
by setting the format to
0
1
or something else
$ AttemptCounter (2022/11/02) [sup39]
0410C3C8 496EDB45
040EDB34 4970C411
04206898 495F36CC
077F9F0C 000000A8
7C7E1B78 3D808180
A40C9F08 A17E007C
7C005800 B16C0000
3960003C B16C0002
39600001 4082000C
816CFFFC 396B0001
916CFFFC 4E800020
3D808180 856C9F00
396B0001 916C0000
3960003C B16C000A
39000000 4E800020
4A83B2C5 3D808180
A46C9F0A 3463FFFF
4180003C B06C0000
3860xxxx 3880yyyy
38A0ssss 3CC0rrgg
60C6bbaa 7CC73378
4800000D 25640A25
64000000 7D0802A6
812CFFF6 814CFFFA
4BFF628D 4AA0C8EC

View file

@ -0,0 +1,26 @@
$ AttemptCounter (2022/11/02) [sup39]
0410C3C8 496EDB45
040EDB34 4970C411
04206898 495F36CC
077F9F0C 000000A8
7C7E1B78 3D808180
A40C9F08 A17E007C
7C005800 B16C0000
3960003C B16C0002
39600001 4082000C
816CFFFC 396B0001
916CFFFC 4E800020
3D808180 856C9F00
396B0001 916C0000
3960003C B16C000A
39000000 4E800020
4A83B2C5 3D808180
A46C9F0A 3463FFFF
4180003C B06C0000
38600090 3880007C
38A0001C 3CC0FFFF
60C6FFFF 7CC73378
4800000D 25640A25
64000000 7D0802A6
812CFFF6 814CFFFA
4BFF628D 4AA0C8EC

14
src/AttemptCounter.ld Normal file
View file

@ -0,0 +1,14 @@
$$ = 0x817f9f0c;
$bl$.onStart = 0x8010c3c8;
$bl$.onShineGet = 0x800edb34;
$b$.onRender = 0x80206898;
drawText = 0x817f0238;
/**
* u32 success count
* u32 total count
* u16 last area
* u16 freeze count
*/
$data = 0x817f9f00;

98
src/AttemptCounter.s Normal file
View file

@ -0,0 +1,98 @@
.set x, 144
.set y, 124
.set fontSize, 28
.set color, 0xffffffff
.set freezeDuration, 60
.set off$succnt, 0
.set off$tolcnt, 4
.set off$area0, 8
.set off$freeze, 10
.macro liDX reg val
.if -0x8000 <= \val && \val < 0x8000 || 0xffff8000 <= \val
li \reg, \val@l
.else
lis \reg, \val@h
.if \val&0xffff != 0
ori \reg, \reg, \val@l
.endif
.endif
.endm
.onStart:
.set r$$, 12
.set off$$, off$area0
.set a$$, $data+off$$
## orig
mr r30, r3
## check last area
### r0 = last area
### r11 = current area
lis r$$, a$$@ha
lhzu r0, a$$@l(r$$)
lhz r11, 0x7c(r30)
cmpw r0, r11
### store current area
sth r11, off$area0-off$$@l(r$$)
## set freeze
li r11, freezeDuration
sth r11, off$freeze-off$$(r$$)
## total count (r11)
### if curArea != area0, totalCount = 1
li r11, 1
bne .onStart.done
### else total Count += 1
lwz r11, off$tolcnt-off$$(r$$)
addi r11, r11, 1
.onStart.done:
stw r11, off$tolcnt-off$$(r$$)
blr
.onShineGet:
.set r$$, 12
.set off$$, off$succnt
.set a$$, $data+off$$
## success count += 1
lis r$$, a$$@ha
lwzu r11, a$$@l(r$$)
addi r11, r11, 1
stw r11, 0(r$$)
## set freeze
li r11, freezeDuration
sth r11, off$freeze-off$$(r$$)
## orig
li r8, 0
blr
.onRender:
## orig (setup2D)
bl setup2D
## check freeze count
.set r$$, 12
.set off$$, off$freeze
.set a$$, $data+off$$
### r$$ = &freezeCount
### r3 = freezeCount
lis r$$, a$$@ha
lhzu r3, a$$@l(r$$)
addic. r3, r3, -1
## if freezeCount < 0, return
blt .onRender.done
## update freezeCount
sth r3, off$freeze-off$$(r$$)
.onRender.drawText:
li r3, x
li r4, y
li r5, fontSize
#liDX r6, color # colorTop
lis r6, color@h
ori r6, r6, color@l
mr r7, r6 # colorBot
bl .onRender.fmt; .string "%d\n%d"; .align 2; .onRender.fmt: mflr r8
lwz r9, off$succnt-off$$(r$$)
lwz r10, off$tolcnt-off$$(r$$)
bl drawText
.onRender.done:
## orig
b 4+$b$.onRender