add LagFrameCounter
This commit is contained in:
parent
18d90d06a2
commit
8b4b5244e9
3 changed files with 80 additions and 0 deletions
18
NTSC-J 1.0/LagFrameCounter.txt
Normal file
18
NTSC-J 1.0/LagFrameCounter.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
$ LagFrameCounter (2022/11/02) [sup39]
|
||||
C210C3AC 00000003
|
||||
39600001 3D808180
|
||||
996C9FF7 7C0802A6
|
||||
60000000 00000000
|
||||
C2203238 00000002
|
||||
3C608180 80639FFC
|
||||
60000000 00000000
|
||||
C20ED1AC 00000009
|
||||
3CC08180 84669FFC
|
||||
808D9440 80A6FFFC
|
||||
9086FFFC 39850002
|
||||
7D8C2050 7C636214
|
||||
8806FFFB 7C000379
|
||||
41A20010 38000000
|
||||
9806FFFB 38600000
|
||||
90660000 3B000000
|
||||
60000000 00000000
|
11
src/LagFrameCounter.ld
Normal file
11
src/LagFrameCounter.ld
Normal file
|
@ -0,0 +1,11 @@
|
|||
$$ = 0;
|
||||
$C2$.showCounter = 0x80203238;
|
||||
$C2$.updateCounter = 0x800ed1ac;
|
||||
$C2$.resetCounter = TMarDirector.setupObjects;
|
||||
|
||||
$counter = 0x817f9ffc;
|
||||
/**
|
||||
* [-5] resetFlag
|
||||
* [-4] retraceCount0
|
||||
* [ 0] counter
|
||||
*/
|
51
src/LagFrameCounter.s
Normal file
51
src/LagFrameCounter.s
Normal file
|
@ -0,0 +1,51 @@
|
|||
/**
|
||||
* Show lag frame count at coin counter
|
||||
*/
|
||||
|
||||
.set a$ptr, $counter
|
||||
.set off$counter, 0
|
||||
.set off$retraceCount0, -4
|
||||
.set off$resetFlag, -5
|
||||
|
||||
.showCounter:
|
||||
lis r3, $counter@ha
|
||||
lwz r3, $counter@l(r3)
|
||||
|
||||
.updateCounter:
|
||||
.set r$cnt, 3 # counter
|
||||
.set r$rtcnt, 4 # retraceCount
|
||||
.set r$rtcnt0, 5 # retraceCount0
|
||||
.set r$ptr, 6 # &counter
|
||||
lis r$ptr, a$ptr@ha
|
||||
lwzu r$cnt, a$ptr@l(r$ptr)
|
||||
lwz r$rtcnt, vi.retraceCount$r13(r13)
|
||||
lwz r$rtcnt0, off$retraceCount0(r$ptr)
|
||||
## store retraceCount
|
||||
stw r$rtcnt, off$retraceCount0(r$ptr)
|
||||
## cnt += rtcnt - (rtcnt0 + 2)
|
||||
addi r12, r$rtcnt0, 2
|
||||
sub r12, r$rtcnt, r12
|
||||
add r$cnt, r$cnt, r12
|
||||
## check resetFlag
|
||||
lbz r0, off$resetFlag(r$ptr)
|
||||
mr. r0, r0
|
||||
beq+ .updateCounter.done
|
||||
.updateCounter.reset:
|
||||
### resetFlag = 0
|
||||
li r0, 0
|
||||
stb r0, off$resetFlag(r$ptr)
|
||||
### counter = 0
|
||||
li r$cnt, 0
|
||||
.updateCounter.done:
|
||||
## store counter
|
||||
stw r$cnt, off$counter(r$ptr)
|
||||
## orig
|
||||
li r24, 0
|
||||
|
||||
.resetCounter:
|
||||
.set $resetFlag, a$ptr+off$resetFlag
|
||||
li r11, 1
|
||||
lis r12, $resetFlag@ha
|
||||
stb r11, $resetFlag@l(r12)
|
||||
## orig
|
||||
mflr r0
|
Loading…
Reference in a new issue