Difference between revisions of "00026e7c - 00026f54"
Jump to navigation
Jump to search
m |
m |
||
Line 6: | Line 6: | ||
00026e84: 8c422968 lw r2,0x2968(r2) // GP1 | 00026e84: 8c422968 lw r2,0x2968(r2) // GP1 | ||
00026e88: 34630007 ori r3,r3,0x0007 | 00026e88: 34630007 ori r3,r3,0x0007 | ||
− | 00026e8c: ac430000 sw r3,0x0000(r2) // send instruction 7 to GPU1, get vertical display range | + | 00026e8c: ac430000 sw r3,0x0000(r2) // send instruction 7 to GPU1, get vertical display range? |
00026e90: 3c058003 lui r5,0x8003 | 00026e90: 3c058003 lui r5,0x8003 | ||
00026e94: 8ca52964 lw r5,0x2964(r5) // GP0 | 00026e94: 8ca52964 lw r5,0x2964(r5) // GP0 | ||
Line 15: | Line 15: | ||
00026ea8: 34030002 ori r3,r0,0x0002 | 00026ea8: 34030002 ori r3,r0,0x0002 | ||
00026eac: 1043001d beq r2,r3,0x00026f24 // branch if VRAM is 2 MB (I assume). for psxfin, this is true. | 00026eac: 1043001d beq r2,r3,0x00026f24 // branch if VRAM is 2 MB (I assume). for psxfin, this is true. | ||
− | 00026eb0: 3c03e100 lui r3,0xe100 | + | 00026eb0: 3c03e100 lui r3,0xe100 // |
00026eb4: 3c028003 lui r2,0x8003 | 00026eb4: 3c028003 lui r2,0x8003 | ||
− | 00026eb8: 8c422968 lw r2,0x2968(r2) | + | 00026eb8: 8c422968 lw r2,0x2968(r2) // GPUSTAT |
00026ebc: 00000000 nop | 00026ebc: 00000000 nop | ||
− | 00026ec0: 8c420000 lw r2,0x0000(r2) | + | 00026ec0: 8c420000 lw r2,0x0000(r2) // read GPUSTAT |
− | 00026ec4: 34631000 ori r3,r3,0x1000 | + | 00026ec4: 34631000 ori r3,r3,0x1000 // 0xe1001000 |
− | 00026ec8: 30423fff andi r2,r2,0x3fff | + | 00026ec8: 30423fff andi r2,r2,0x3fff // get lower values of current gpu status (bits 0 -> D) |
− | 00026ecc: 00431025 or r2,r2,r3 | + | 00026ecc: 00431025 or r2,r2,r3 // |
− | 00026ed0: aca20000 sw r2,0x0000(r5) | + | 00026ed0: aca20000 sw r2,0x0000(r5) // store back as if instruction? (immediately sets drawmode to current GPU drawing status?) |
00026ed4: 3c028003 lui r2,0x8003 | 00026ed4: 3c028003 lui r2,0x8003 | ||
00026ed8: 8c422964 lw r2,0x2964(r2) | 00026ed8: 8c422964 lw r2,0x2964(r2) | ||
00026edc: 3c038003 lui r3,0x8003 | 00026edc: 3c038003 lui r3,0x8003 | ||
00026ee0: 8c632968 lw r3,0x2968(r3) // read returns GPU status | 00026ee0: 8c632968 lw r3,0x2968(r3) // read returns GPU status | ||
− | 00026ee4: 8c420000 lw r2,0x0000(r2) | + | 00026ee4: 8c420000 lw r2,0x0000(r2) // ? does this just serve to mark the register as read? |
00026ee8: 8c620000 lw r2,0x0000(r3) | 00026ee8: 8c620000 lw r2,0x0000(r3) | ||
00026eec: 00000000 nop | 00026eec: 00000000 nop | ||
Line 43: | Line 43: | ||
00026f14: 34420504 ori r2,r2,0x0504 | 00026f14: 34420504 ori r2,r2,0x0504 | ||
− | 00026f18: ac620000 sw r2,0x0000(r3) | + | 00026f18: ac620000 sw r2,0x0000(r3) // prototype disable texture instruction, argument 0x504 means... disable textures. |
00026f1c: 08009bd4 j 0x00026f50 // return gpu env = 2 | 00026f1c: 08009bd4 j 0x00026f50 // return gpu env = 2 | ||
00026f20: 34020002 ori r2,r0,0x0002 | 00026f20: 34020002 ori r2,r0,0x0002 | ||
Line 50: | Line 50: | ||
00026f28: 10400008 beq r2,r0,0x00026f4c // all calls to this routine mean below code isn't executed. return GPU environment = 3 | 00026f28: 10400008 beq r2,r0,0x00026f4c // all calls to this routine mean below code isn't executed. return GPU environment = 3 | ||
00026f2c: 3c040900 lui r4,0x0900 | 00026f2c: 3c040900 lui r4,0x0900 | ||
− | 00026f30: 34840001 ori r4,r4,0x0001 | + | 00026f30: 34840001 ori r4,r4,0x0001 // otherwise, calls the second texture disable function with argument "disable textures" fun. |
00026f34: 3c038003 lui r3,0x8003 | 00026f34: 3c038003 lui r3,0x8003 | ||
00026f38: 8c632968 lw r3,0x2968(r3) | 00026f38: 8c632968 lw r3,0x2968(r3) |
Revision as of 06:41, 1 August 2023
Determines GPU environment? 00026e7c: 3c031000 lui r3,0x1000 00026e80: 3c028003 lui r2,0x8003 00026e84: 8c422968 lw r2,0x2968(r2) // GP1 00026e88: 34630007 ori r3,r3,0x0007 00026e8c: ac430000 sw r3,0x0000(r2) // send instruction 7 to GPU1, get vertical display range? 00026e90: 3c058003 lui r5,0x8003 00026e94: 8ca52964 lw r5,0x2964(r5) // GP0 00026e98: 3c0300ff lui r3,0x00ff 00026e9c: 8ca20000 lw r2,0x0000(r5) // Read result of get GPU vertical display range 00026ea0: 3463ffff ori r3,r3,0xffff 00026ea4: 00431024 and r2,r2,r3 00026ea8: 34030002 ori r3,r0,0x0002 00026eac: 1043001d beq r2,r3,0x00026f24 // branch if VRAM is 2 MB (I assume). for psxfin, this is true. 00026eb0: 3c03e100 lui r3,0xe100 // 00026eb4: 3c028003 lui r2,0x8003 00026eb8: 8c422968 lw r2,0x2968(r2) // GPUSTAT 00026ebc: 00000000 nop 00026ec0: 8c420000 lw r2,0x0000(r2) // read GPUSTAT 00026ec4: 34631000 ori r3,r3,0x1000 // 0xe1001000 00026ec8: 30423fff andi r2,r2,0x3fff // get lower values of current gpu status (bits 0 -> D) 00026ecc: 00431025 or r2,r2,r3 // 00026ed0: aca20000 sw r2,0x0000(r5) // store back as if instruction? (immediately sets drawmode to current GPU drawing status?) 00026ed4: 3c028003 lui r2,0x8003 00026ed8: 8c422964 lw r2,0x2964(r2) 00026edc: 3c038003 lui r3,0x8003 00026ee0: 8c632968 lw r3,0x2968(r3) // read returns GPU status 00026ee4: 8c420000 lw r2,0x0000(r2) // ? does this just serve to mark the register as read? 00026ee8: 8c620000 lw r2,0x0000(r3) 00026eec: 00000000 nop 00026ef0: 30421000 andi r2,r2,0x1000 // check gpu ready to receive DMA block 00026ef4: 14400003 bne r2,r0,0x00026f04 // branch if so 00026ef8: 30820008 andi r2,r4,0x0008 // 00026efc: 08009bd4 j 0x00026f50 // return gpu env = 0 00026f00: 00001021 addu r2,r0,r0
00026f04: 14400003 bne r2,r0,0x00026f14 // 00026f08: 3c022000 lui r2,0x2000 00026f0c: 08009bd4 j 0x00026f50 // return gpu env = 1 00026f10: 34020001 ori r2,r0,0x0001
00026f14: 34420504 ori r2,r2,0x0504 00026f18: ac620000 sw r2,0x0000(r3) // prototype disable texture instruction, argument 0x504 means... disable textures. 00026f1c: 08009bd4 j 0x00026f50 // return gpu env = 2 00026f20: 34020002 ori r2,r0,0x0002
00026f24: 30820008 andi r2,r4,0x0008 00026f28: 10400008 beq r2,r0,0x00026f4c // all calls to this routine mean below code isn't executed. return GPU environment = 3 00026f2c: 3c040900 lui r4,0x0900 00026f30: 34840001 ori r4,r4,0x0001 // otherwise, calls the second texture disable function with argument "disable textures" fun. 00026f34: 3c038003 lui r3,0x8003 00026f38: 8c632968 lw r3,0x2968(r3) 00026f3c: 34020004 ori r2,r0,0x0004 00026f40: ac640000 sw r4,0x0000(r3) 00026f44: 08009bd4 j 0x00026f50 // return gpu env = 4 00026f48: 00000000 nop
00026f4c: 34020003 ori r2,r0,0x0003 // this seems to be the value fft uses? 00026f50: 03e00008 jr r31 00026f54: 00000000 nop