Primary Zelda Hacking
April 21, 2014, 09:43:33 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Current Zelda Oracles Hacking Suite beta version: 0.05
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Memory Address List  (Read 791 times)
Fatories
LALE Creator
Administrator
Full Member
*****
Offline Offline

Posts: 223



View Profile
« on: July 05, 2011, 08:29:37 PM »

Here is an extensive list of memory addresses for various things in the Legend of Zelda Oracle of Ages. This is for Oracle of Ages ONLY. Although OoA and OoS (Oracle of Seasons) are very similar the memory addresses are not in the exact same locations, nor are values the same. You can use these memory addresses in the VBA (Visual Boy Advance) Memory Viewer to edit various aspects of the game, or if you have knowledge on gameshark codes you could easily make them into gameshark codes for stuff such as permanent pegasus seed use.

Table of Contents:
       - Life/Rupee Addresses
       - Item Addresses
               - Inventory Addresses
               - Item count
               - Weapon/Item Level
               - Miscellaneous Item Addresses
       - Ring Addresses
       - Animal Addresses
       - Miscellaneous Addresses
       - Credits

Life/Rupee Addresses:

Rupees:
C6AD - The first byte the game reads your rupee total from. Changes the ones and tens digits (0-99 rupees).
C6AE - Second byte, changes the hundreds digit (100+ rupees)

Life:
C6AA - Your current life in-game
C6AB - Total amount of hearts you have

Item Addresses:

Inventory Addresses:
C688 - B Button
C689 - A button
C68A-C699 - Slots 1 to 16 on inventory screen.

Item Count:
C6B9 - Number of ember seeds
C6BA - Number of scent seeds
C6BB - Number of pegasus seeds
C6BC - Number of gale seeds
C6BD - Number of mystery seeds
C6BE - Number of gasha seeds
C6B0 - Number of Bombs
C6AC - Number of pieces of heart
C675 - Number of small keys

Weapon/Item Level:
C6B2 - Sword Level
C6AF - Shield Level
C6B8 - Power Bracelet Level
C6B7 - Harp of Ages songs obtained

Miscellaneous Item Addresses:
C6BF - Essences (FF = all essences)
C69F-C6A5 - Secondary Items (FF in all for all items with mermaid suit, or FF in all except C6A3 with FB for all items with flippers)
C69E - Seeds obtained for use (FF = all seeds)

Ring Addresses:
C616-C61D - Rings obtained in ring list (FF for all rings in each list)
C6CC - Level of Ring Box
C6C6-C6CA - Rings in Ring Box
C6CB - Ring currently equipped
C6CD - Number of Rings (resets on inventory open)

Animal Addresses:
C6B5 - Animal flute icon(01 Rickey, 02 Dimitri, 03 Moosh)
C610 - Animal Song+Animal+Map Features (0B Rickey, 0C Dimitri, 0D Moosh)

Miscellaneous Addresses:
D00D = Links X position
D00B = Links Y position
CC99 = The tile coordinates that Link is standing on (YX)
CC9A = Tile ID that Link is standing on
CC2D = Active map group (00 present overworld, 01 past overworld, 02 present underwater, 03 past underwater, 04/05 dungeons, 06-07 side scrolling rooms)
CC2F = Map backup/real map to go into
CC30 = Active map
CD23 = Active map tileset
CD25 = Active map animation
CD28 = Active map unique
CD29 = Active map palette
CC48 = Map to warp into

CE00-CEBF = Collision data (Same bit style as D033)
CF00-CFBF = Map data

Pegasus Seed timer = CC6C
Pegasus Seed timer loop = CC6D

D033 Bits:
00 - regular walking
C0 - touching up
0C - touching left
30 - touching down
03 - touching right
10 - top left corner (top end)
01 - top left corner (left side)
02 - bottom left corner (bottom end)
40 - bottom left corner (bottom end)
80 - bottom right corner (bottom end)
08 - bottom right corner (right side)
20 - top right corner (top end)
04 - top right corner (right side)

Note: Values can combine such as if you are touching both left side and top side, D033 will become CC
Note2: When pushing up against an object, D034 is set to 10.

Credits:

Oracle of Ages Memory Address document written by Fatories. Special thanks to Lin for giving some memory addresses and helping with a few things.

Other than a few memory addresses given by Lin, all were found using the VBA memory viewer by myself.
« Last Edit: December 14, 2013, 04:56:39 AM by Fatories » Logged

The force of a true man can penetrate all. Nothing is safe.
Lin
ZOLE Creator
Administrator
Hero Member
*****
Offline Offline

Posts: 580



View Profile
« Reply #1 on: January 08, 2012, 11:03:28 PM »

Sorry if I'm not supposed to reply to this thread, but I think I found something while messing around in VBA's Memory Viewer.  I was trying to figure out how to make the Harp of Ages work so that you could choose which song to play, because when I gave it in-game, you weren't able to select the song.  I figured out that the address C6B7 determines which song is currently selected by the harp, whereas how many songs you have, and whether or not you get a menu, is intertwined with the number of seeds address, C69E.  Sorry if this has been posted before.  I'm currently trying to work out a list, but for now I can say for sure that the values '61' to '7F' is where you first get two song options, Echoes and Currents and 'E1' to 'FF' gives you all 3 songs.  Changing the 2nd number gives different seed combinations.  There are some other values inbetween these (81-DF), but the harp song images don't match up with the tunes or the names, so I guess they're kinda buggy.  It seems like the first number goes up by 6 (hex) and the 2nd goes up by 2 (hex), with the 2nd number always being an odd number.

I'm not super great with hex editing, so I could be wrong about some of this stuff.  Maybe someone more experienced could also play around with this and see what they can find out.  I'll still try to map out a full list for people to use.
Huh, really? That means the upper 3 bits of the seeds byte actually are used. Interesting find. What might help you understand the value is it's a bit mask - each bit is a boolean (true/false). There are 8 bits in a byte, so the first 5 bits are for the seeds and the upper 3 are for the harp songs (According to your findings anyway).
Logged
Lin
ZOLE Creator
Administrator
Hero Member
*****
Offline Offline

Posts: 580



View Profile
« Reply #2 on: February 12, 2012, 06:08:34 AM »

Some memory addresses I have that I'm sure are on here but I'm too lazy to check.

Memory Addresses
CC46/CC35 - The current music index
CC30 - The current map
CC2D - The current map group
CC39 - The current dungeon
CBB6 - The selected spot on the minimap
CBB7 - The selected warp-to spot when warping with a gale seed
CBBF - The image shown of the hovered warp-to spot
CBA3 - The dialogue index being shown
CC2A - Input bitmap (pressed once, not held). Also the value the game checks to use your weapon
C688 - B weapon
C689 - A weapon
CBE9 - Show B weapon
C6C4 - Selected seed satchel seed
C6C5 - Selected seed shooter seed
C69E - Seeds that you have (Bitmap)
CD02 - The direction you went when going map-to-map (00 = Up, 01 = Right, 02 = Down, 03 = Left)
CDD1 - Enemy count
CCA0 - Triggers stepped on
CC8F - Torches lit (count)
CCAB - The length of the lever you pull from the wall (Bit 7 is set if it's pulled all the way)
C6AA - Current health (00 dead, 40 full)
C6AB - Max health (00 if dead, 40 full)
CCAD - Cube torch color (8x if lit)
D029 - If >= 80, decrease health while > 0 (If it's FD, take away 2 health. FC, 3, etc)

Enemy RAM
=========
Dx80 - In use byte
Dx81 - Main ID
Dx82 - Sub ID
Dx84 - Enemy stage (For example, 09 in a stalfos is walk, 0A is prepare jump, 0B is jumping)
Dx86 - Movement timer (How long to walk in a direction unless hits a collision)
Dx89 - Movement direction. 00 = up, 08 - right, 10 = down, 18 = left
Dx8B - Y
Dx8D - X
Dx9A - Not sure, but if < 80, enemy disappears
Dx9B - Palette echo
Dx9C - Palette
DxA1 - Sprite index (current step)
DxA2 - Lower byte of data
DxA3 - Upper byte of data
DxA4 - If bit 7 is set, the enemy is vulnerable
DxA6 - Collision height radius
DxA7 - Collision width radius
DxA8 - Damage that gets dealt (FF - [value])
DxA9 - Health - A level 1 sword deals 2 damage
DxAE - Frozen timer (boomerang hit)

During the enemy loading procedure, FF8F = Main ID, FF8E = Sub ID

The format for enemies is mainly the same for particles and regular interactions, except particles are 0xC0-0xFF and regular interactions are 0x40-0x7F.
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!