EarthBound/ASM/VRAM DMA Transfer Routines: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
m (Remove extra space.)
(→‎$C085B7-$C08615: Transfer memory to VRAM in batches: Document batched transfer routine)
Line 1: Line 1:
{{subpage|game=EarthBound}}
{{subpage|game=EarthBound}}


==<tt>$C085B7-$C08615</tt>: Transfer memory to VRAM in batches==
==<tt>$C085B7-$C08615</tt>: Batched memory/VRAM transfer==
Batched transfers between main memory (ROM/WRAM) and VRAM. Makes the transfers using multiple calls to [[#$C08643|<tt>$C08643</tt>]] for batches of 0x1200 bytes, with a final transfer of the remainder up to 0x1201 bytes. Before each batch, spins on [[EarthBound:$7E0099|<tt>$7E0099</tt>]], waiting for the value to become <code>#$0000</code>.
 
===Inputs===
* <tt>a</tt>: Transfer style. Pointer into [[EarthBound:VRAM_DMA_Transfer_Style_Table|VRAM DMA Transfer Style Table]]
* <tt>x</tt>: Transfer size (bytes)
* <tt>y</tt>: VRAM address (word)
* <tt>$0e..$10</tt>: Memory address long pointer


==<tt>$C08616-$C0865A</tt>: Transfer memory to VRAM==
==<tt>$C08616-$C0865A</tt>: Transfer memory to VRAM==

Revision as of 20:17, 14 June 2023

This is a sub-page of EarthBound/ASM.

$C085B7-$C08615: Batched memory/VRAM transfer

Batched transfers between main memory (ROM/WRAM) and VRAM. Makes the transfers using multiple calls to $C08643 for batches of 0x1200 bytes, with a final transfer of the remainder up to 0x1201 bytes. Before each batch, spins on $7E0099, waiting for the value to become #$0000.

Inputs

  • a: Transfer style. Pointer into VRAM DMA Transfer Style Table
  • x: Transfer size (bytes)
  • y: VRAM address (word)
  • $0e..$10: Memory address long pointer

$C08616-$C0865A: Transfer memory to VRAM

$C0865B-$C0865E: Perform DMA transfer (JSL)

Trivial JSL wrapper around a call to $C0865F.

$C0865F-$C086DD: Perform DMA transfer (JSR)

So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?