VSync call
Jump to navigation
Jump to search
Hsync/Hcount?
0001dba8: 3c028003 lui r2,0x8003 0001dbac: 8c4206ec lw r2,0x06ec(r2) # GPU control pointer 0001dbb0: 3c038003 lui r3,0x8003 0001dbb4: 8c6306f0 lw r3,0x06f0(r3) # timer 1 horizontal retrace 0001dbb8: 27bdffe0 addiu r29,r29,0xffe0 0001dbbc: afbf0018 sw r31,0x0018(r29) 0001dbc0: afb10014 sw r17,0x0014(r29) 0001dbc4: afb00010 sw r16,0x0010(r29) 0001dbc8: 8c500000 lw r16,0x0000(r2) # read GPU Status 0001dbcc: 8c620000 lw r2,0x0000(r3) # horizontal retrace timer 1 result 0001dbd0: 3c038003 lui r3,0x8003 0001dbd4: 8c6306f4 lw r3,0x06f4(r3) # horz. retrace count? 0001dbd8: 00000000 nop 0001dbdc: 00431023 subu r2,r2,r3 # 0001dbe0: 04810005 bgez r4,0x0001dbf8 0001dbe4: 3051ffff andi r17,r2,0xffff 0001dbe8: 3c028003 lui r2,0x8003 0001dbec: 8c4217b8 lw r2,0x17b8(r2) # ... vcount? 0001dbf0: 08007736 j 0x0001dcd8 0001dbf4: 00000000 nop
p1 > 1
0001dbf8: 34020001 ori r2,r0,0x0001 0001dbfc: 10820036 beq r4,r2,0x0001dcd8 # end if p1 = 1 0001dc00: 02201021 addu r2,r17,r0 0001dc04: 18800007 blez r4,0x0001dc24 0001dc08: 00000000 nop 0001dc0c: 3c028003 lui r2,0x8003 0001dc10: 8c4206f8 lw r2,0x06f8(r2) # Vcount? 0001dc14: 00000000 nop 0001dc18: 2442ffff addiu r2,r2,0xffff # i-- 0001dc1c: 0800770b j 0x0001dc2c 0001dc20: 00441021 addu r2,r2,r4 # Vcount? + p1
p1 = 0
0001dc24: 3c028003 lui r2,0x8003 0001dc28: 8c4206f8 lw r2,0x06f8(r2) # Vcount? 0001dc2c: 18800002 blez r4,0x0001dc38 0001dc30: 00002821 addu r5,r0,r0 # if p1 = 0 0001dc34: 2485ffff addiu r5,r4,0xffff # if p1 = 1 0001dc38: 0c00773c jal 0x0001dcf0 # Wait for Vertical Sync Vsync(Vcount, -1) 0001dc3c: 00402021 addu r4,r2,r0 # 0001dc40: 3c028003 lui r2,0x8003 0001dc44: 8c4206ec lw r2,0x06ec(r2) # GPU CTRL 0001dc48: 00000000 nop 0001dc4c: 8c500000 lw r16,0x0000(r2) # GPU STAT 0001dc50: 3c048003 lui r4,0x8003 0001dc54: 8c8417b8 lw r4,0x17b8(r4) # vcount? 0001dc58: 34050001 ori r5,r0,0x0001 0001dc5c: 0c00773c jal 0x0001dcf0 # Wait for Vertical Sync Vsync(Vcount + 1, 1) 0001dc60: 24840001 addiu r4,r4,0x0001 0001dc64: 3c020008 lui r2,0x0008 0001dc68: 02021024 and r2,r16,r2 # ask GPU for vertical resolution 0001dc6c: 10400010 beq r2,r0,0x0001dcb0 # branch if vres = 240p 0001dc70: 00000000 nop
vertical resolution = 480p
0001dc74: 3c038003 lui r3,0x8003 0001dc78: 8c6306ec lw r3,0x06ec(r3) 0001dc7c: 00000000 nop 0001dc80: 8c620000 lw r2,0x0000(r3) # GPU STAT 0001dc84: 00000000 nop 0001dc88: 02021026 xor r2,r16,r2 # if gpu status has changed since it was last asked for 0001dc8c: 04400008 bltz r2,0x0001dcb0 # branch check if interlace line even/oddness has changed 0001dc90: 00000000 nop 0001dc94: 3c048000 lui r4,0x8000 0001dc98: 8c620000 lw r2,0x0000(r3) # GPU STAT 0001dc9c: 00000000 nop 0001dca0: 02021026 xor r2,r16,r2 # if gpu status has changed since it was last asked for 0001dca4: 00441024 and r2,r2,r4 # 0001dca8: 1040fffb beq r2,r0,0x0001dc98 # wait until interlace even/oddness has changed 0001dcac: 00000000 nop
vertical resolution = 240p
0001dcb0: 3c028003 lui r2,0x8003 0001dcb4: 8c4217b8 lw r2,0x17b8(r2) # vcount? 0001dcb8: 3c038003 lui r3,0x8003 0001dcbc: 8c6306f0 lw r3,0x06f0(r3) # timer 1 horizontal retrace 0001dcc0: 3c018003 lui r1,0x8003 0001dcc4: ac2206f8 sw r2,0x06f8(r1) # store new Vcount 0001dcc8: 8c630000 lw r3,0x0000(r3) # 0001dccc: 02201021 addu r2,r17,r0 # 0001dcd0: 3c018003 lui r1,0x8003 0001dcd4: ac2306f4 sw r3,0x06f4(r1) # store new horizontal retrace
return
0001dcd8: 8fbf0018 lw r31,0x0018(r29) 0001dcdc: 8fb10014 lw r17,0x0014(r29) 0001dce0: 8fb00010 lw r16,0x0010(r29) 0001dce4: 27bd0020 addiu r29,r29,0x0020 0001dce8: 03e00008 jr r31 0001dcec: 00000000 nop
Return Locations
Battle.bin 00193e74: Main AI action setup