<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://alttp.run/hacking/index.php?action=history&amp;feed=atom&amp;title=RAM%3A_Bank_0x7E%3A_Pages_0x10_to_0x1F</id>
		<title>RAM: Bank 0x7E: Pages 0x10 to 0x1F - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://alttp.run/hacking/index.php?action=history&amp;feed=atom&amp;title=RAM%3A_Bank_0x7E%3A_Pages_0x10_to_0x1F"/>
		<link rel="alternate" type="text/html" href="http://alttp.run/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&amp;action=history"/>
		<updated>2026-04-15T20:19:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>http://alttp.run/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&amp;diff=622&amp;oldid=prev</id>
		<title>Superskuj: Superskuj moved page Rom/Pages 0x10 to 0x17 to RAM: Bank 0x7E: Pages 0x10 to 0x1F</title>
		<link rel="alternate" type="text/html" href="http://alttp.run/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&amp;diff=622&amp;oldid=prev"/>
				<updated>2016-12-20T22:32:27Z</updated>
		
		<summary type="html">&lt;p&gt;Superskuj moved page &lt;a href=&quot;/hacking/index.php?title=Rom/Pages_0x10_to_0x17&quot; class=&quot;mw-redirect&quot; title=&quot;Rom/Pages 0x10 to 0x17&quot;&gt;Rom/Pages 0x10 to 0x17&lt;/a&gt; to &lt;a href=&quot;/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&quot; title=&quot;RAM: Bank 0x7E: Pages 0x10 to 0x1F&quot;&gt;RAM: Bank 0x7E: Pages 0x10 to 0x1F&lt;/a&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='1' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 22:32, 20 December 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan='2' style='text-align: center;' lang='en'&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Superskuj</name></author>	</entry>

	<entry>
		<id>http://alttp.run/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&amp;diff=585&amp;oldid=prev</id>
		<title>Tatters: Created page with &quot;* {{$|1000}}[{{0x|02}}] = For transfers that use variable $14, this indicates the current length written into the buffer starting at * {{$|1002 Seems to be addresses used for...&quot;</title>
		<link rel="alternate" type="text/html" href="http://alttp.run/hacking/index.php?title=RAM:_Bank_0x7E:_Pages_0x10_to_0x1F&amp;diff=585&amp;oldid=prev"/>
				<updated>2016-12-20T07:18:39Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;* {{$|1000}}[{{0x|02}}] = For transfers that use variable $14, this indicates the current length written into the buffer starting at * {{$|1002 Seems to be addresses used for...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* {{$|1000}}[{{0x|02}}] = For transfers that use variable $14, this indicates the current length written into the buffer starting at&lt;br /&gt;
* {{$|1002&lt;br /&gt;
Seems to be addresses used for blitting graphics onto the screen after a room or area has already loaded.&lt;br /&gt;
* {{$|1002}}[{{0x|02}}] = Big endian representation of the VRAM target address (word address)&lt;br /&gt;
* {{$|1004}}[{{0x|02}}] = dma configuration&lt;br /&gt;
ssssssss wftttttt&lt;br /&gt;
f - If set, DMA source address is fixed. Otherwise it auto increments.&lt;br /&gt;
s, t - One less(!) the 14-bit size of the DMA transfer, as expressed in bytes.&lt;br /&gt;
This value is composed of the 's' and 't' bits thusly:&lt;br /&gt;
00ttttttssssssss&lt;br /&gt;
w - If not set, vram target address increments on writes to $2118.&lt;br /&gt;
Otherwise, it increments on writes to $2119.&lt;br /&gt;
^ This documention is not 100% correct. I'll fix it when I have time.&lt;br /&gt;
Basically it determines whether or not to increment vram address by 1 or 32 words&lt;br /&gt;
after each adjustment (write to $2118 or $2119)&lt;br /&gt;
* {{$|1006}}[{{0x|??}}] = First word of data for the transfer. Many more may follow.&lt;br /&gt;
Setup for making overlaid tiles appear (word addresses):&lt;br /&gt;
Notes on converting in game tile positions into VRAM positions:&lt;br /&gt;
In game layout: (u = unused?) uuddaaaa abcccccc&lt;br /&gt;
Translated into VRAM base address: uuuddbaa aaaccccc&lt;br /&gt;
* {{$|1100}}[{{0x|02}}] = Target VRAM address for the transfer&lt;br /&gt;
* {{$|1102}}[{{0x|01}}] = The value that will be written to VMAIN ($2115) before the transfer.&lt;br /&gt;
Typically this controls whether the DMA transfer is intended to write words&lt;br /&gt;
or alternating bytes to VRAM.&lt;br /&gt;
* {{$|1103}}[{{0x|01}}] = Number of bytes to transfer to VRAM.&lt;br /&gt;
Note: Putting 0 here would transfer 0x10000 bytes, which could be really crazy.&lt;br /&gt;
* {{$|1104}}[{{0x|??}}] = Local portion of the source address for the DMA transfer. The source bank is forced to zero by the code.&lt;br /&gt;
584$1100 - Contains two chunks of data for blitting an extra tile to the screen. The hex values indicate where each portion&lt;br /&gt;
lies in the memory address.&lt;br /&gt;
0x8000 - indicates whether to use 2 byte or 64 byte increment when doing the DMA&lt;br /&gt;
0x4000 - ? not used?&lt;br /&gt;
0x3FFF - Contains the number of bytes to transfer&lt;br /&gt;
* {{$|1102}}[{{0x|02}}] = VRAM target address for the tile setup.&lt;br /&gt;
* {{$|1104}}[{{0x|02}}] = $1183 - The bytes that get blitted to VRAM&lt;br /&gt;
* {{$|1980}}[{{0x|20}}] = Low Byte: Door type (Take HM door type number, convert to hex, and multiply by 2)&lt;br /&gt;
High Byte: Door direction (0 = up, 2 = down, 4 = right, 6 = left)&lt;br /&gt;
* {{$|19A0}}[{{0x|10}}] = Door tilemap address&lt;br /&gt;
* {{$|19B0}}[{{0x|10}}] = For doors that have two halves, this is the tilemap address for the other half&lt;br /&gt;
* {{$|19C0}}[{{0x|20}}] = Door direction. 0 - up, 1 - down, 2 - left, 3 - right&lt;br /&gt;
* {{$|19E0}}[{{0x|02}}] = current door index when loading doors&lt;br /&gt;
* {{$|19E2}}[{{0x|08}}] = Seems to store the addresses of up to 4 different exit doors.&lt;br /&gt;
* {{$|19EA}}[{{0x|16}}] = free ram&lt;br /&gt;
* {{$|1A00}}[{{0x|14}}] = These $1AXX addresses seem to be related to tagalongs, that's the best I can tell so far&lt;br /&gt;
* {{$|1A14}}[{{0x|14] -&lt;br /&gt;
* {{$|1A28}}[{{0x|14] -&lt;br /&gt;
* {{$|1A3C}}[{{0x|14] -&lt;br /&gt;
* {{$|1A50}}[{{0x|14}}] = see Bank 09&lt;br /&gt;
* {{$|1A64}}[{{0x|14}}] = Tagalong priority bits&lt;br /&gt;
* {{$|1A78}}[{{0x|??}}] = ????&lt;br /&gt;
* {{$|1B00}}[{{0x|1C0}}] = indirect HDMA pointers for the spotlights that open and close when leaving/entering doors&lt;br /&gt;
* {{$|1CC0}}[{{0x|10}}] = free ram?&lt;br /&gt;
Text related variables ($1CD0}}[{{0x|20])&lt;br /&gt;
}}[{{0x|02}}] = When drawing the message box border, the value of $1CD2 gets stored here during initialization.&lt;br /&gt;
It is subsequently used as an index for forming DMA transfers that will copy the tilemap entries of the&lt;br /&gt;
message box border during the NMI interrupt.;&lt;br /&gt;
* {{$|1CD2}}[{{0x|02}}] = The VRAM position of upper left corner of the message box. This only has one of two values, and they&lt;br /&gt;
are&lt;br /&gt;
designed to not obscure Link's sprite.&lt;br /&gt;
* {{$|1CD4}}[{{0x|01}}] = Second Level controller for Module 0x0E.0x02&lt;br /&gt;
* {{$|1CD5}}[{{0x|01}}] = Maybe the current position the message is outputting to?&lt;br /&gt;
* {{$|1CD5}}[{{0x|01}}] = Mirror of speed below... but... not sure why this is different&lt;br /&gt;
$1CD6}}[{{0x|01}}] = Speed XX&lt;br /&gt;
* {{$|1CD7}}[{{0x|01}}] = ???? related to [window 01] (not used in game)&lt;br /&gt;
* {{$|1CD8}}[{{0x|01}}] = First Level controller for Module 0x0E.0x02 (i.e. it controls the sub-submodule)&lt;br /&gt;
* {{$|1CD9}}[{{0x|02}}] = Number of bytes into the $7F1200 buffer for the processed characters of the dialogue.&lt;br /&gt;
* {{$|1CDB}}[{{0x|01}}] = free ram&lt;br /&gt;
* {{$|1CDC}}[{{0x|01}}] = This is supposedly some kind of color variable according to Hyrule Magic but I can't find any affect to&lt;br /&gt;
using it. It's modified by the [Color XX] command in the monologue editor. This was included&lt;br /&gt;
presumably before they implemented a VWF, and used single or double spaced characters? The&lt;br /&gt;
reasoning being, with such a font you can set the colors for individual characters much more easily.&lt;br /&gt;
With 2bpp font characters you don't have a lot of available variety for colors in a single tile anyways.&lt;br /&gt;
* {{$|1CDD}}[{{0x|02}}] = Number of bytes into the source buffer for the dialogue message.&lt;br /&gt;
* {{$|1CDD}}[{{0x|02}}] = (alternate) - once the text begins being processed, this is instead the tile position for the output&lt;br /&gt;
0x00 is the first line, 0x28 is the second line, 0x50 is the third line&lt;br /&gt;
* {{$|1CDF}}[{{0x|01}}] = Used in [Scroll] command, not sure what else&lt;br /&gt;
* {{$|1CE0}}[{{0x|02}}] = ???? referenced in [Wait XX]&lt;br /&gt;
* {{$|1CE2}}[{{0x|02}}] = Is the template for the text message's tilemap. Each character has a tilemap value that differs&lt;br /&gt;
only in CHR&lt;br /&gt;
[Color XX] can change the palette (out of 8) obviously.&lt;br /&gt;
Changing this value can also alter the h-flip and v-flip, as&lt;br /&gt;
well as priority settings. Generally speaking you wouldn't want to do that unless you had a good reason.&lt;br /&gt;
* {{$|1CE4}}[{{0x|02}}] = free ram&lt;br /&gt;
* {{$|1CE6}}[{{0x|02}}] = Perhaps this is the graphical position of where the next character goes?&lt;br /&gt;
* {{$|1CE8}}[{{0x|01}}] = For a multi selection box with two choices, this is either 0 (the top choice) or 1 (the bottom choice)&lt;br /&gt;
* {{$|1CE9}}[{{0x|01}}] = This is a delay timer for the [WaitKey] command. Starts at 0x1C, when it counts down to zero&lt;br /&gt;
it starts looking for player input. (basically this is 1/3 of a second and is probably there to&lt;br /&gt;
give the game more time to draw its text&lt;br /&gt;
* {{$|1CEA}}[{{0x|01}}] = Determines how many times to scroll the text up by one pixel per frame&lt;br /&gt;
Only applies during the [Scroll] command and is set by the [ScrollSpd XX]&lt;br /&gt;
command. However, some other commands may inadvertently affect this address.&lt;br /&gt;
E.g. [Name], [Position XX]. As there is no logical connection I can only guess&lt;br /&gt;
that this was a coding oversight.&lt;br /&gt;
* {{$|1CF0}}[{{0x|02}}] = Dialogue Message Index. e.g. 0005 = &amp;quot;you can't enter with something following you&amp;quot;&lt;br /&gt;
This is the same numerical value that can be viewed in Hyrule Magic&lt;br /&gt;
(except there they're in decimal.)&lt;br /&gt;
* {{$|1CF2}}[{{0x|02}}] = Numeric parameter that can be passed to text messages. It goes as follows.&lt;br /&gt;
first byte: low nybble corresponds to [Number 00], high nybble to [Number 01]&lt;br /&gt;
second byte: low nybble is [Number 02], high nybble is [Number 03]&lt;br /&gt;
If you're confused see message number 004 in Hyrule Magic's dialogue editor.&lt;br /&gt;
586$1CF4}}[{{0x|01}}] = Used to save the value of $1CE8 when the save and continue box comes up&lt;br /&gt;
* {{$|1CF5}}[{{0x|0B}}] = free ram&lt;br /&gt;
* {{$|1D00}}[{{0x|10}}] = Cache for $0DD0&lt;br /&gt;
* {{$|1D10}}[{{0x|10}}] = Cache for $0E20&lt;br /&gt;
* {{$|1D20}}[{{0x|10]&lt;br /&gt;
* {{$|1D30}}[{{0x|10]&lt;br /&gt;
* {{$|1D40}}[{{0x|10]&lt;br /&gt;
* {{$|1D50}}[{{0x|10]&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
Cache for $0D10&lt;br /&gt;
Cache for $0D30&lt;br /&gt;
Cache for $0D00&lt;br /&gt;
Cache for $0D20&lt;br /&gt;
* {{$|1D60}}[{{0x|10}}] = Cache for $0DC0&lt;br /&gt;
* {{$|1D70}}[{{0x|10] -&lt;br /&gt;
* {{$|1D80}}[{{0x|10] -&lt;br /&gt;
* {{$|1D90}}[{{0x|10] -&lt;br /&gt;
* {{$|1DA0}}[{{0x|10] -&lt;br /&gt;
* {{$|1DB0}}[{{0x|10] -&lt;br /&gt;
* {{$|1DC0}}[{{0x|10] -&lt;br /&gt;
* {{$|1DD0}}[{{0x|10] -&lt;br /&gt;
* {{$|1DE0}}[{{0x|10] -&lt;br /&gt;
* {{$|1DF0}}[{{0x|10] -&lt;br /&gt;
Cache for $0D90&lt;br /&gt;
Cache for $0EB0&lt;br /&gt;
Cache for $0F50&lt;br /&gt;
Cache for $0B89&lt;br /&gt;
Cache for $0DE0&lt;br /&gt;
Cache for $0E40&lt;br /&gt;
Cache for $0F20&lt;br /&gt;
Cache for $0D80&lt;br /&gt;
Cache for $0E60&lt;br /&gt;
* {{$|1E00}}[{{0x|01}}] = Step counter during the Triforce sequence at the beginning.&lt;br /&gt;
* {{$|1E08}}[{{0x|01}}] = see module 0x14&lt;br /&gt;
* {{$|1E09}}[{{0x|01}}] = see module 0x14&lt;br /&gt;
* {{$|1E0A}}[{{0x|01}}] = Seems to be a frame counter (loops at 0xFF) used for various delays and timing&lt;br /&gt;
of events during the Triforce or Crystal sequences&lt;br /&gt;
* {{$|1E10}}[{{0x|01] -&lt;br /&gt;
* {{$|1E68}}[{{0x|98}}] = free ram???&lt;br /&gt;
* {{$|1F00}}[{{0x|01}}] = Flag that when set, tells IRQ to activate&lt;br /&gt;
* {{$|1F0A - Use to swap out the two different stacks. (the $1F00 region and the $1FF region)&lt;br /&gt;
* {{$|1F0C - Related to IRQs?&lt;br /&gt;
* {{$|1F32-$1F3F - Contains data to use when coming out of the IRQ. Including a return address, the Data Bank Register, the&lt;br /&gt;
Direct Page register (gets set to $1F00), and various other data. It took a while to figure this out, believe me.&lt;/div&gt;</summary>
		<author><name>Tatters</name></author>	</entry>

	</feed>