Difference between revisions of "000263d8 - 00026420"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "<font face='Courier New'> 000263d8: 3c030400 lui r3,0x0400 000263dc: 3c028003 lui r2,0x8003 000263e0: 8c422968 lw r2,0x2968(r2) 000263e4: 34630002 ori r3,r3,0x0002 0002...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
<font face='Courier New'>
 
<font face='Courier New'>
+
Called to draw Otag list (tells GPU to start drawing to the screen)
 +
 
 
  000263d8: 3c030400 lui r3,0x0400
 
  000263d8: 3c030400 lui r3,0x0400
 
  000263dc: 3c028003 lui r2,0x8003
 
  000263dc: 3c028003 lui r2,0x8003
  000263e0: 8c422968 lw r2,0x2968(r2)
+
  000263e0: 8c422968 lw r2,0x2968(r2)                   # GP1
 
  000263e4: 34630002 ori r3,r3,0x0002
 
  000263e4: 34630002 ori r3,r3,0x0002
  000263e8: ac430000 sw r3,0x0000(r2)
+
  000263e8: ac430000 sw r3,0x0000(r2)                  # write Gp1 instruction 0x04000002 (ready to receive command word, tpage base x = 2?)
 
  000263ec: 3c028003 lui r2,0x8003
 
  000263ec: 3c028003 lui r2,0x8003
  000263f0: 8c42296c lw r2,0x296c(r2)
+
  000263f0: 8c42296c lw r2,0x296c(r2)                   # DMA2 0x0
 
  000263f4: 00000000 nop
 
  000263f4: 00000000 nop
  000263f8: ac440000 sw r4,0x0000(r2)
+
  000263f8: ac440000 sw r4,0x0000(r2)                   # store primative list address
 
  000263fc: 3c028003 lui r2,0x8003
 
  000263fc: 3c028003 lui r2,0x8003
  00026400: 8c422970 lw r2,0x2970(r2)
+
  00026400: 8c422970 lw r2,0x2970(r2)                   # DMA2 0x4
 
  00026404: 3c030100 lui r3,0x0100
 
  00026404: 3c030100 lui r3,0x0100
  00026408: ac400000 sw r0,0x0000(r2)
+
  00026408: ac400000 sw r0,0x0000(r2)                   # store 0 to DMA2 0x4
 
  0002640c: 3c028003 lui r2,0x8003
 
  0002640c: 3c028003 lui r2,0x8003
  00026410: 8c422974 lw r2,0x2974(r2)
+
  00026410: 8c422974 lw r2,0x2974(r2)                   #
 
  00026414: 34630401 ori r3,r3,0x0401
 
  00026414: 34630401 ori r3,r3,0x0401
  00026418: ac430000 sw r3,0x0000(r2)
+
  00026418: ac430000 sw r3,0x0000(r2)                   # store 0x01000401 to DMA2 0x8
 
  0002641c: 03e00008 jr r31
 
  0002641c: 03e00008 jr r31
 
  00026420: 00000000 nop
 
  00026420: 00000000 nop
 
</font>
 
</font>
 +
for references sake, DMA2 0x8 is stored as the following set of flags:
 +
0x8000 0000 - not used
 +
0x4000 0000 - unknown (R/W)
 +
0x2000 0000 - Pause related?
 +
0x1000 0000 - start trigger (0 normal, 1 manual)
 +
0x0e00 0000 - not used
 +
0x0100 0000 - started (0 stopped/completed, 1 start/busy)
 +
0x0080 0000 - not used
 +
0x0070 0000 - chopping CPU window size (not sure what this means)
 +
0x0008 0000 - not used
 +
0x0007 0000 - chopping DMA window size (not sure what this means)
 +
0x0000 f800 - not used
 +
0x0000 0600 - sync mode (0: start immediately, 1: sync blocks to dma requests, 2 linked list mode, 3 reserved (unused))
 +
0x0000 0100 - chopping enabled
 +
0x0000 00fc - not used
 +
0x0000 0002 - madr step (0 +4 per, 1 -4 per)
 +
0x0000 0001 - transfer direction (0 is to ram, 1 is from ram)
 +
 +
therefore the above sends the instructions (considering 0 the default):
 +
start, sync mode 2, transfer from ram

Latest revision as of 03:20, 16 July 2023

Called to draw Otag list (tells GPU to start drawing to the screen)

000263d8: 3c030400 lui r3,0x0400
000263dc: 3c028003 lui r2,0x8003
000263e0: 8c422968 lw r2,0x2968(r2)                   # GP1
000263e4: 34630002 ori r3,r3,0x0002
000263e8: ac430000 sw r3,0x0000(r2)                   # write Gp1 instruction 0x04000002 (ready to receive command word, tpage base x = 2?)
000263ec: 3c028003 lui r2,0x8003
000263f0: 8c42296c lw r2,0x296c(r2)                   # DMA2 0x0
000263f4: 00000000 nop
000263f8: ac440000 sw r4,0x0000(r2)                   # store primative list address
000263fc: 3c028003 lui r2,0x8003
00026400: 8c422970 lw r2,0x2970(r2)                   # DMA2 0x4
00026404: 3c030100 lui r3,0x0100
00026408: ac400000 sw r0,0x0000(r2)                   # store 0 to DMA2 0x4
0002640c: 3c028003 lui r2,0x8003
00026410: 8c422974 lw r2,0x2974(r2)                   #
00026414: 34630401 ori r3,r3,0x0401
00026418: ac430000 sw r3,0x0000(r2)                   # store 0x01000401 to DMA2 0x8
0002641c: 03e00008 jr r31
00026420: 00000000 nop

for references sake, DMA2 0x8 is stored as the following set of flags:

0x8000 0000 - not used
0x4000 0000 - unknown (R/W)
0x2000 0000 - Pause related?
0x1000 0000 - start trigger (0 normal, 1 manual)
0x0e00 0000 - not used
0x0100 0000 - started (0 stopped/completed, 1 start/busy)
0x0080 0000 - not used
0x0070 0000 - chopping CPU window size (not sure what this means)
0x0008 0000 - not used
0x0007 0000 - chopping DMA window size (not sure what this means)
0x0000 f800 - not used
0x0000 0600 - sync mode (0: start immediately, 1: sync blocks to dma requests, 2 linked list mode, 3 reserved (unused))
0x0000 0100 - chopping enabled
0x0000 00fc - not used
0x0000 0002 - madr step (0 +4 per, 1 -4 per)
0x0000 0001 - transfer direction (0 is to ram, 1 is from ram)
therefore the above sends the instructions (considering 0 the default):
start, sync mode 2, transfer from ram