Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- http://infrid.com/rcp64/docfiles/n64maps.txt
- 80F8ED20 to 00000000000000000010000000000000 (+ 0x2000)
- 80F8ED22 add 0x20 if < 0x20
- vc addresses - 0xE74000 = n64 Address
- interrupt counter: 0x8000A4CC
- game file: 0x8011AC80
- update rate: offset: 0x1430 + 0x0110 = uint16_t
- start+a+b to reset counter:
- 0x1600 at address
- 289F6A88 00000008 --dpad up pressed
- 04E7E4CC 00000000 --reset vi counter
- 04F93C30 00000000 --reset game frames
- 80000005 00000000 --reset register 5 (last real game frames)
- 8000000A 00000000 --reset register 10 (current 60 fps game frames)
- 02F8ECB4 00000000 --reset rupee counter to 0
- E2000001 80008000
- 48000000 80F900B0 --load base file ptr to get update_rate (can be moved to be after the frame changed check)
- DE000000 80008180 --verify ptr
- 92110009 00E74110 --load refresh value into register 9
- E2000001 80008000
- 20F93C30 00000000 --check if game frames are 0 (this block ensures a reset doesnt clear the ingame frame counter)
- 2400181C 00000000 --check if register 5 is bigger than 0 (this means a reset has taken place)
- 84210005 00F93C30 --write register 5 back to frame counter
- E2000002 80008000
- 2400182C 00000000 --verify reg 9 is > 0
- 24F93C30 00000000 --check if game frames > 0
- 82210006 00F93C30 --set register 6 to current real game frames
- 84210005 00001824 --copy reg 5 (last real game frames) to reg 7
- 86100007 FFFFFFFF --inverse reg 7
- 88000006 00000007 --subtract reg 7 from reg 6 and save result in reg 6
- 24001820 00000000 --check if register 6 is bigger than 0 (this means actual game frames increased)
- 88100006 00000009 --multiply reg 6 by update_rate (reg 9) = game frames that need to be added to the 60 fps counter
- 8800000A 00000006 --add reg 6 to reg 10 (new 60 fps game frames)
- 82210005 00F93C30 --set reg 5 back to real game frame counter
- 82210002 00E7E4CC --set register 2 to vi frames
- 8421000A 00001824 --copy reg 10 (60 fps game frames) to reg 7
- 86100007 FFFFFFFF --inverse reg 7
- 88000002 00000007 --add register 7 to register 2 and save res in reg 2
- 26001810 00000FFF --check reg 2 < 4095 ; avoid negative numbers being printed
- 84110002 00F8ECB4 --store reg 2 at dest (rupee counter for now)
- 24001810 000003E7 --check reg 2 > 999 ; timer exceeds boundaries, subtract 999 from it for next cycle
- 86000002 FFFFFC19 --add (subtract) -999 from reg 2
- 84110002 00F8ECB4 --store new cycle reg 2 at dest (rupee counter for now)
- 84210002 00E7E4CC --store new cycle reg 2 at vi counter
- 04F93C30 00000000 --reset game frames for new cycle
- 80000005 00000000 --reset register 5 (last game frames) for new cycle
- 8000000A 00000000 --reset register 10 (current 60 fps game frames) for new cycle
- E2000005 80008000
- OLD VERSION:
- 289F6A88 00000008 --dpad up pressed
- 04E7E4CC 00000000 --reset vi counter
- 04F93C30 00000000 --reset game frames
- 80000001 00000000 --reset register 1 (whole vi frames)
- 80000005 00000000 --reset register 5 (game frames)
- E2000001 80008000
- 60000002 0000000P --prepare 2 repetitions of this section to ensure the vi timer cant break ahead
- 24F93C30 00000000 --check if game frames > 0 (this block ensures a reset doesnt clear the ingame frame counter)
- 82210005 00F93C30 --set register 5 to game frames
- E2000001 80008000
- 20F93C30 00000000 --check if game frames are 0
- 2400181C 00000000 --check if register 5 is bigger than 0 (this means a reset has taken place)
- 84210005 00F93C30 --write register 5 back to frame counter
- E2000002 80008000
- 48000000 80F900B0 --load base file ptr to get update_rate
- DE000000 80008180 --verify ptr
- 92110002 00E74110 --load refresh value into reg 2
- E2000001 80008000
- 24001810 00000000 --verify reg 2 is > 0
- 82210003 00E7E4CC --load vi frames into reg 3
- 86100003 FFFFFFFF --inverse reg 3
- 88000002 00000003 --subtract reg 3 from reg 2 and save result in reg 2
- E2000001 80008000
- 24001810 00000000 --check reg 2 > 0
- 26001810 00000004 --check if reg 2 < 4 (in this case the register value indicates no processing needs to be done, skip to end)
- 6600000A 00000000 --skip to end of code
- E2000002 80008000
- --this section is only reached if the whole vi frames increased and lag frames should be updated
- 86100002 FFFFFFFF --inverse reg 2
- 84210002 00E7E4CC --store reg 2 at vi frames addr
- 86000001 00000001 --increase reg 1 by 1
- 84210001 00001810 --copy reg 1 to reg 2 (store reg 1 at 0x1810)
- 82210003 0000181C --load game frames from reg 5 into reg 3
- 86100003 FFFFFFFF --mul reg 3 with -1 (inverse)
- 88000002 00000003 --add register 3 to register 2 and save res in reg 2
- 84210002 00001818 --store reg 2 at dest (reg 4 for now)
- 62000000 0000000P --starts the jump back to the initial section to ensure the vi timer cant jump ahead
- E0000000 80008000 --end of code
- update rate is 3 input frames per visual frame (jp runs at 20 fps visually)
- check if vi frames are 3 (or greater)
- set vi frames to 0
- increase register 1 by 1
- copy register 1 to register 2 (store reg 1 at address of reg 2)
- store game frames in register 3
- inverse register 3 to be negative (mul with -1 = 0xFFFFFFFF)
- add register 3 to register 2 (subtraction, reg 2 add reg 3)
- register 2 now contains the total lag frames
- store register 2 at destination
- 80F93C30: game frames
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement