What clock speed are you testing at?
Does that even effect things at all ?
I assume the games were linked with some library that handled all these functions automatically for the programmers
;
; dayto2pe: part of the boot-up sequence and main program loop
;
;...
0x00018A30: 0x4807B961 bl 0x00094390
0x00018A34: 0x2C030000 cmpi cr0,0,r3,0x0
0x00018A38: 0x4181008C bt cr0[gt],0x00018AC4 ; jumps to service menu
0x00018A3C: 0x4807BEC5 bl 0x00094900
0x00018A40: 0x4807C025 bl 0x00094A64
0x00018A44: 0x480796D5 bl 0x00092118
0x00018A48: 0x480003F5 bl 0x00018E3C
0x00018A4C: 0x48000475 bl 0x00018EC0
0x00018A50: 0x480779FD bl 0x0009044C
0x00018A54: 0x48063205 bl 0x0007BC58
0x00018A58: 0x48065541 bl 0x0007DF98
0x00018A5C: 0x4BFEC6A5 bl sub5100 ; DEC calibration
0x00018A60: 0x48033EE9 bl 0x0004C948
0x00018A64: 0x48033F89 bl 0x0004C9EC
0x00018A68: 0x48003B51 bl 0x0001C5B8
0x00018A6C: 0x48000089 bl 0x00018AF4
0x00018A70: 0x3C600010 li r3,0x00100000 ; <-- top of main loop
0x00018A74: 0x88635007 lbz r3,0x5007(r3)
0x00018A78: 0x2C030000 cmpi cr0,0,r3,0x00
0x00018A7C: 0x40820048 bf cr0[eq],0x00018AC4 ; jumps to service menu
0x00018A80: 0x38600000 li r3,0x00000000
0x00018A84: 0x3C400073 li r2,0x00730000
0x00018A88: 0x906279B4 stw r3,0x79B4(r2)
0x00018A8C: 0x480356AD bl 0x0004E138
0x00018A90: 0x4BFF5275 bl 0x0000DD04
0x00018A94: 0x48006955 bl 0x0001F3E8
0x00018A98: 0x3C600050 li r3,0x00500000
0x00018A9C: 0x480069A1 bl 0x0001F43C ; tilegen patterns, scroll table, mask table
0x00018AA0: 0x48063031 bl 0x0007BAD0 ; null function (does nothing, returns immediately)
0x00018AA4: 0x38600000 li r3,0x00000000
0x00018AA8: 0x3C400011 li r2,0x00110000
0x00018AAC: 0x986287EC stb r3,-0x7814(r2)
0x00018AB0: 0x4BFF53D9 bl 0x0000DE88 ; VBL (delay loop here?), followed by tilegen name table
0x00018AB4: 0x48000051 bl 0x00018B04 ; another VBL (delay loop here?)
0x00018AB8: 0x4BFFFFB8 b 0x00018A70
I discovered that Daytona 2 (and this is probably true of most games) separates transfers to tilegen VRAM into two separate batches: name table data (which can be updated each frame) and the rest (patterns, scroll, mask, palette -- which often needs not be updated).
Ian wrote:I discovered that Daytona 2 (and this is probably true of most games) separates transfers to tilegen VRAM into two separate batches: name table data (which can be updated each frame) and the rest (patterns, scroll, mask, palette -- which often needs not be updated).
This is what scud is doing in the rolling start. Only we aren't drawing at the correct time, so we get updates of the scrolling from frame 1, but the colour or whatever it is updates from frame 2.
Users browsing this forum: No registered users and 1 guest