# -*- coding: utf-8 -*- #----------------------------------------------------------------------- # # Racer-specific SYS extensions # #----------------------------------------------------------------------- from __future__ import ( absolute_import, division, print_function, unicode_literals, ) from asm import * # Peek into the ROM's symbol table sysArgs = symbol('sysArgs0') vTmp = symbol('vTmp') vPC = symbol('vPC') vAC = symbol('vAC') #----------------------------------------------------------------------- # SYS_RacerUpdateVideoX_40 #----------------------------------------------------------------------- # Updates the odd videoTable entries for rendering the road curvature. # This SYS call self-repeats for a total of 47 times and is equivalent to: # [do # q, X- p. p 4- p= # q, X= q<++ # q<, if<>0loop] # label('SYS_RacerUpdateVideoX_40') ld([sysArgs+2],X) #15 q, ld([sysArgs+3],Y) #16 ld([Y,X]) #17 st([vTmp]) #18 suba([sysArgs+4]) #19 X- ld([sysArgs+0],X) #20 p. ld([sysArgs+1],Y) #21 st([Y,X]) #22 ld([sysArgs+0]) #23 p 4- p= suba(4) #24 st([sysArgs+0]) #25 ld([vTmp]) #26 q, st([sysArgs+4]) #27 X= ld([sysArgs+2]) #28 0 1] tmp= # SegmentY 254& tmp+ p. # p<++ p<++ # SegmentY<++ # p<, 238^ label('SYS_RacerUpdateVideoY_40') ld([sysArgs+3]) #15 8& anda(8) #16 bne(pc()+3) #17 [if<>0 1] bra(pc()+3) #18 ld(0) #19 ld(1) #19(!) st([vTmp]) #20 tmp= ld([sysArgs+1],Y) #21 ld([sysArgs+0]) #22