The current URL is datacrystal.tcrf.net.
EarthBound/Temp VRAM DMA Data Block: Difference between revisions
(Create page) |
(→Usage: Document usage) |
||
Line 10: | Line 10: | ||
==Usage== | ==Usage== | ||
Memory is allocated by the [[EarthBound:ASM:VRAM_DMA_Transfer_Routines#$C086DE|Allocate temporary WRAM for VRAM DMA routine]], which updates <tt>$7E00A1</tt> accordingly. Memory is deallocated after each VRAM DMA transfer by the [[EarthBound:ASM:VRAM_DMA_Transfer_Routines#$C0865F|Perform DMA transfer routine]] or the [[EarthBound:ASM:VBLANK_Interrupt_Routine|VBLANK Interrupt Routine]] by resetting <tt>$7E00A1</tt> to the value of <tt>$7E00A3</tt>. | |||
Additionally, the [[EarthBound:ASM:VBLANK_Interrupt_Routine|VBLANK Interrupt Routine]] seems to flip <tt>$7E00A3</tt> each frame between <tt>#$2000</tt> and <tt>#$2200</tt>. It would seem that this would rotate the entire Temp VRAM DMA Data Block between <tt>$7e1e00-$7e1fff</tt> and <tt>$7e2000-$7e21ff</tt>, but it is unclear if the allocation routine is ever called while <tt>$7E00A3</tt> is set to <tt>#$2000</tt>. | |||
[[Category:EarthBound|Temp VRAM DMA Data Block]] | [[Category:EarthBound|Temp VRAM DMA Data Block]] |
Revision as of 03:16, 21 August 2023
This is a sub-page of EarthBound.
Block of WRAM that can be dynamically allocated for temporary storage for data to be transferred to VRAM using DMA. Reset after each completed VRAM DMA.
Auxiliary Data
- $7E00A1: #$200 more than the next unallocated section, meaning the entire 512 byte block is unallocated when $7E00A1 is equal to $7E00A3.
- $7E00A3: End of data block.
Usage
Memory is allocated by the Allocate temporary WRAM for VRAM DMA routine, which updates $7E00A1 accordingly. Memory is deallocated after each VRAM DMA transfer by the Perform DMA transfer routine or the VBLANK Interrupt Routine by resetting $7E00A1 to the value of $7E00A3.
Additionally, the VBLANK Interrupt Routine seems to flip $7E00A3 each frame between #$2000 and #$2200. It would seem that this would rotate the entire Temp VRAM DMA Data Block between $7e1e00-$7e1fff and $7e2000-$7e21ff, but it is unclear if the allocation routine is ever called while $7E00A3 is set to #$2000.