Advertisement
dragonbane

oot lag counter

Jan 15th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.14 KB | None | 0 0
  1. http://infrid.com/rcp64/docfiles/n64maps.txt
  2.  
  3. 80F8ED20 to 00000000000000000010000000000000 (+ 0x2000)
  4.  
  5. 80F8ED22 add 0x20 if < 0x20
  6.  
  7. vc addresses - 0xE74000 = n64 Address
  8.  
  9. interrupt counter: 0x8000A4CC
  10.  
  11. game file: 0x8011AC80
  12. update rate: offset: 0x1430 + 0x0110 = uint16_t
  13.  
  14. start+a+b to reset counter:
  15.  
  16. 0x1600 at address
  17.  
  18. 289F6A88 00000008 --dpad up pressed
  19. 04E7E4CC 00000000 --reset vi counter
  20. 04F93C30 00000000 --reset game frames
  21. 80000005 00000000 --reset register 5 (last real game frames)
  22. 8000000A 00000000 --reset register 10 (current 60 fps game frames)
  23. 02F8ECB4 00000000 --reset rupee counter to 0
  24. E2000001 80008000
  25.  
  26. 48000000 80F900B0 --load base file ptr to get update_rate (can be moved to be after the frame changed check)
  27. DE000000 80008180 --verify ptr
  28. 92110009 00E74110 --load refresh value into register 9
  29. E2000001 80008000
  30.  
  31. 20F93C30 00000000 --check if game frames are 0 (this block ensures a reset doesnt clear the ingame frame counter)
  32. 2400181C 00000000 --check if register 5 is bigger than 0 (this means a reset has taken place)
  33. 84210005 00F93C30 --write register 5 back to frame counter
  34. E2000002 80008000
  35.  
  36. 2400182C 00000000 --verify reg 9 is > 0
  37. 24F93C30 00000000 --check if game frames > 0
  38. 82210006 00F93C30 --set register 6 to current real game frames
  39. 84210005 00001824 --copy reg 5 (last real game frames) to reg 7
  40. 86100007 FFFFFFFF --inverse reg 7
  41. 88000006 00000007 --subtract reg 7 from reg 6 and save result in reg 6
  42. 24001820 00000000 --check if register 6 is bigger than 0 (this means actual game frames increased)
  43. 88100006 00000009 --multiply reg 6 by update_rate (reg 9) = game frames that need to be added to the 60 fps counter
  44. 8800000A 00000006 --add reg 6 to reg 10 (new 60 fps game frames)
  45. 82210005 00F93C30 --set reg 5 back to real game frame counter
  46.  
  47. 82210002 00E7E4CC --set register 2 to vi frames
  48. 8421000A 00001824 --copy reg 10 (60 fps game frames) to reg 7
  49. 86100007 FFFFFFFF --inverse reg 7
  50. 88000002 00000007 --add register 7 to register 2 and save res in reg 2
  51. 26001810 00000FFF --check reg 2 < 4095 ; avoid negative numbers being printed
  52. 84110002 00F8ECB4 --store reg 2 at dest (rupee counter for now)
  53. 24001810 000003E7 --check reg 2 > 999 ; timer exceeds boundaries, subtract 999 from it for next cycle
  54. 86000002 FFFFFC19 --add (subtract) -999 from reg 2
  55. 84110002 00F8ECB4 --store new cycle reg 2 at dest (rupee counter for now)
  56. 84210002 00E7E4CC --store new cycle reg 2 at vi counter
  57. 04F93C30 00000000 --reset game frames for new cycle
  58. 80000005 00000000 --reset register 5 (last game frames) for new cycle
  59. 8000000A 00000000 --reset register 10 (current 60 fps game frames) for new cycle
  60. E2000005 80008000
  61.  
  62.  
  63.  
  64. OLD VERSION:
  65.  
  66.  
  67. 289F6A88 00000008 --dpad up pressed
  68. 04E7E4CC 00000000 --reset vi counter
  69. 04F93C30 00000000 --reset game frames
  70. 80000001 00000000 --reset register 1 (whole vi frames)
  71. 80000005 00000000 --reset register 5 (game frames)
  72. E2000001 80008000
  73.  
  74. 60000002 0000000P --prepare 2 repetitions of this section to ensure the vi timer cant break ahead
  75.  
  76. 24F93C30 00000000 --check if game frames > 0 (this block ensures a reset doesnt clear the ingame frame counter)
  77. 82210005 00F93C30 --set register 5 to game frames
  78. E2000001 80008000
  79.  
  80. 20F93C30 00000000 --check if game frames are 0
  81. 2400181C 00000000 --check if register 5 is bigger than 0 (this means a reset has taken place)
  82. 84210005 00F93C30 --write register 5 back to frame counter
  83. E2000002 80008000
  84.  
  85. 48000000 80F900B0 --load base file ptr to get update_rate
  86. DE000000 80008180 --verify ptr
  87. 92110002 00E74110 --load refresh value into reg 2
  88. E2000001 80008000
  89.  
  90. 24001810 00000000 --verify reg 2 is > 0
  91. 82210003 00E7E4CC --load vi frames into reg 3
  92. 86100003 FFFFFFFF --inverse reg 3
  93. 88000002 00000003 --subtract reg 3 from reg 2 and save result in reg 2
  94. E2000001 80008000
  95.  
  96. 24001810 00000000 --check reg 2 > 0
  97. 26001810 00000004 --check if reg 2 < 4 (in this case the register value indicates no processing needs to be done, skip to end)
  98. 6600000A 00000000 --skip to end of code
  99. E2000002 80008000
  100. --this section is only reached if the whole vi frames increased and lag frames should be updated
  101. 86100002 FFFFFFFF --inverse reg 2
  102. 84210002 00E7E4CC --store reg 2 at vi frames addr
  103. 86000001 00000001 --increase reg 1 by 1
  104. 84210001 00001810 --copy reg 1 to reg 2 (store reg 1 at 0x1810)
  105. 82210003 0000181C --load game frames from reg 5 into reg 3
  106. 86100003 FFFFFFFF --mul reg 3 with -1 (inverse)
  107. 88000002 00000003 --add register 3 to register 2 and save res in reg 2
  108. 84210002 00001818 --store reg 2 at dest (reg 4 for now)
  109. 62000000 0000000P --starts the jump back to the initial section to ensure the vi timer cant jump ahead
  110.  
  111. E0000000 80008000 --end of code
  112.  
  113.  
  114.  
  115.  
  116. update rate is 3 input frames per visual frame (jp runs at 20 fps visually)
  117.  
  118.  
  119.  
  120. check if vi frames are 3 (or greater)
  121. set vi frames to 0
  122. increase register 1 by 1
  123. copy register 1 to register 2 (store reg 1 at address of reg 2)
  124. store game frames in register 3
  125. inverse register 3 to be negative (mul with -1 = 0xFFFFFFFF)
  126. add register 3 to register 2 (subtraction, reg 2 add reg 3)
  127. register 2 now contains the total lag frames
  128. store register 2 at destination
  129.  
  130.  
  131. 80F93C30: game frames
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement