2019-10-28 23:19:29 -07:00
|
|
|
################################################################################
|
|
|
|
# Address: 802fef88
|
|
|
|
################################################################################
|
|
|
|
.include "Common/Common.s"
|
|
|
|
.include "Recording/Recording.s"
|
2019-03-07 01:38:04 -05:00
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Routine: FlushFrameBuffer
|
|
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Description: Flush the buffer once per frame to actually send the frame data
|
|
|
|
################################################################################
|
|
|
|
|
2019-10-23 20:41:32 -07:00
|
|
|
# struct offsets
|
|
|
|
.set OFST_CMD,0x0
|
|
|
|
.set OFST_FRAME,OFST_CMD+0x1
|
|
|
|
.set BOOKEND_STRUCT_SIZE,OFST_FRAME+0x4
|
|
|
|
|
|
|
|
# registers
|
2019-03-07 01:38:04 -05:00
|
|
|
.set REG_Buffer,30
|
|
|
|
.set REG_BufferOffset,29
|
2019-10-23 20:41:32 -07:00
|
|
|
.set REG_WritePos,28
|
2019-03-07 01:38:04 -05:00
|
|
|
|
|
|
|
backup
|
|
|
|
|
|
|
|
#Check if VS Mode
|
2020-03-27 12:29:17 -07:00
|
|
|
branchl r12,FN_ShouldRecord
|
2019-03-07 01:38:04 -05:00
|
|
|
cmpwi r3,0x0
|
|
|
|
beq Injection_Exit
|
|
|
|
|
|
|
|
# get buffer
|
2020-01-16 19:05:39 -08:00
|
|
|
lwz REG_Buffer,primaryDataBuffer(r13)
|
2019-03-07 01:38:04 -05:00
|
|
|
lwz REG_BufferOffset,bufferOffset(r13)
|
2019-10-23 23:32:01 -07:00
|
|
|
add REG_WritePos,REG_Buffer,REG_BufferOffset
|
|
|
|
|
|
|
|
# check if buffer length is 0
|
|
|
|
cmpwi REG_BufferOffset,0
|
|
|
|
beq Injection_Exit
|
2019-10-23 20:41:32 -07:00
|
|
|
|
|
|
|
# add frame bookend to transfer buffer
|
|
|
|
# send data
|
|
|
|
# initial RNG command byte
|
2019-10-23 23:32:01 -07:00
|
|
|
li r3,CMD_FRAME_BOOKEND
|
|
|
|
stb r3,OFST_CMD(REG_WritePos)
|
2019-10-23 20:41:32 -07:00
|
|
|
# send frame count
|
2019-10-23 23:32:01 -07:00
|
|
|
lwz r3,frameIndex(r13)
|
|
|
|
stw r3,OFST_FRAME(REG_WritePos)
|
2019-03-07 01:38:04 -05:00
|
|
|
|
2019-10-23 23:32:01 -07:00
|
|
|
# increment buffer offset, we dont need to write it to memory because it's
|
|
|
|
# about to get cleared anyway
|
|
|
|
addi REG_BufferOffset,REG_BufferOffset,BOOKEND_STRUCT_SIZE
|
2019-03-07 01:38:04 -05:00
|
|
|
|
|
|
|
#------------- Transfer Buffer ------------
|
|
|
|
mr r3,REG_Buffer
|
|
|
|
mr r4,REG_BufferOffset
|
|
|
|
li r5,CONST_ExiWrite
|
|
|
|
branchl r12,FN_EXITransferBuffer
|
|
|
|
|
|
|
|
# reset buffer offset
|
|
|
|
li r3,0
|
|
|
|
stw r3,bufferOffset(r13)
|
|
|
|
|
|
|
|
Injection_Exit:
|
|
|
|
restore
|
|
|
|
lwz r0, 0x0034 (sp)
|