Show Posts
|
|
Pages: 1 ... 7 8 [9] 10
|
|
121
|
Oracles Hacking / Discussion / Re: Enemies
|
on: June 28, 2010, 11:40:25 PM
|
|
2F34 is the start of the enemy pointers. It's odd, but notice how the first monster pointed to is..Twinrova. Yeah, second last boss is the first sprite. After that is Veran's final form. BTW, like with interactions, there is a branch that loads the bank based on the sprite value. Funny thing though is that it's backwards. It loads bank 0F by default, and decreases the bank number by one if it's below 70, then below 30, and if below 08, loads bank 10.
If the enmy has an index, then when you get to that enemy's ASM, there should be a C7 followed by several pointers. Those pointers should be the index. Note that alot of code in this game actually has jump tables up the wazoo. Even the Switchhook has jmp tables that lead to jmp tables that lead to jmp tables. Stuff is usually either excecuted based on an index, or sequentially.
|
|
|
|
|
122
|
General GameBoy Hacking / Help / Re: Question
|
on: June 28, 2010, 02:59:44 AM
|
|
ZLADE is decend since it does much of the work had to do by hand, like edit levels and overworld. Other stuff though is going to have be done by hand.
|
|
|
|
|
123
|
Oracles Hacking / Help / Re: Game events
|
on: June 27, 2010, 11:12:10 PM
|
|
The addresses are...actually right there in the gameshark code. C610 will alter what animal you summon and what area appears. C6B5 is what song is on the flute. Apparently this is cosmetic only, and the only thing that really matters is if C610 is set to 0B, 0C, or 0D. Setting it to 0E will send you to Ambi's palace(stuck in a wall), and anything below 0B will set up versions of the different areas with graphical glitches.
Also note that 0103AFC6 is the level of the shield, and doesn't affect animals in any way.
BTW, please post more gameshark codes since some of them might give clues as to what memory addresses do what.
|
|
|
|
|
124
|
Oracles Hacking / Help / Re: Game events
|
on: June 27, 2010, 09:38:54 PM
|
|
I believe there are a few addresses that determine what area is loaded with what animal. Haven't looked too much into the animal's coding to see.
|
|
|
|
|
126
|
Oracles Hacking / Tutorials / Re: Making Chests Give Any Weapon using ZOCF
|
on: June 27, 2010, 12:35:12 AM
|
|
I also altered sprite 2B so that it's presence(F6 control code) will let you fall down to the screen below in a sideview area instead of catching you at the bottom. Right now I'm not working on any hacks untill the fixed version comes out, but things are going to be sweet!
|
|
|
|
|
128
|
Oracles Hacking / Tutorials / Re: Making Chests Give Any Weapon using ZOCR
|
on: June 26, 2010, 09:56:54 PM
|
|
When I am talking "level", I mean the second byte in the group, not the second index for the actual item. That is, I found the value that gives you the seeds when you talk to the Maku Tree, then I changed it's second value and at 02, it gave me the capacity for 99 seeds(plus 20 ember seeds, but that must be code related).
Oh and I also found the sprite pointers.
|
|
|
|
|
129
|
Oracles Hacking / Tutorials / Re: Making Chests Give Any Weapon using ZOCR
|
on: June 26, 2010, 08:30:16 PM
|
|
01 is the first seed upgrade, and 02 is the second seed upgrade. I think how it works is since you can't skip upgrades, the first time you get it, it goes into your inventory. The second time you get the item, it increaes it's level by 1, and so forth. Since it's the same graphics, all it would need to do is make a check to see if you have it or not to make it upgrade.
|
|
|
|
|
130
|
Oracles Hacking / Lists / Bank 0C event scripting code(WIP)
|
on: June 26, 2010, 06:07:47 PM
|
|
This is an partical list of the various opcodes that are used in bank 0C for scripting purposes:
84 xx xx yy yy - Spawn event at yy yy
88 xx xx - Interaction co-ordinates are now this
98 xx xx - Display text.
B0 xx - Check dungeon room flag
B1 xx - Set dungeon room flag
B6 xx - set global event flags. How it works is that it's in sets of 16 bits. For example, values 00 to 0F will set bits for C6D0 and C6D1. Value 00 to 07 set the 8 bits in the first ram spot, and values 08 to 0F set the value for the second spot. 0F is the value for the level 3 turnstile event to be triggered, and that translates into C6D1(80). For the value, the upper nybble indicates which 16 bits to reference. 30 will set the bit that cleans the ocean because 0 sets bit 0, and 3 means it's the third pair. B6 will set the value during an event, but in other cases, both to write and to check, the value is loaded using 3E(right into A) and then it goes to a subroutine at 31F3. For example, the code to set the Maku Gate is 12, and somewhere in bank 10 is a code that indeed does that. The other in the global scripts in bank 04 checks for that value the same way.
CD - perform following event if item flag has not been set
D3 yy xx xx - Check for switch index. For example, 01 would mean check to see if switch 01 has been pressed.
D5 xx xx yy - Check memory location for exact value, exit script on false
DD xx xx - Spawn an item
E0 - Load ASM routine from bank 15
E3 xx - Load sound effect
E8 - Set tile at event location.
F6 - Check monster clear flag
|
|
|
|
|
131
|
Oracles Hacking / Opinions and Experiments / Re: Chest Reader
|
on: June 26, 2010, 04:13:04 PM
|
|
Actually, like with everything in this game, the second value is an index. How it works is that all items are global, which means that anything and everything, from a falling key to a power glove chest is an index to code. For the power bracelet, the first value is for the power bracelet in level 1. 16 01 is for when you get your power bracelet back at Cresent Island. 16 02 is for the power glove, and because you find it in a chest, it comes out like a chest.
Most items have specific values that do specific things. The key, byte 30, has 3 types. 30 00 will make a key instantly appear, 01 makes a key fall down, and 02 is for a chest. You can actually change the ID value for a chest and a key can fall down from the celing(though the game will freeze as it's awating imput that never comes).
So that also means that with the sword, well the level 1 sword does not have a chest index value, so you have to code one from scratch(not hard but would require some code movement). Level 3's sword can be found in a chest since it appears as a secret link.
Edit: Scratch all of that. The first byte determines if the item is found, dropped, or in a chest. Second byte is the item level, if applicable. Third byte is text value, and last byte is the item's appearance.
Edit2: Furthermore, the first byte controls several key factors:
If bit 0 is active, then the item get sfx is played and Link uses one hand to lift up the item. If bit 1 is active, then do the same thing, except hold item with both hands If both bits are active, then the sfx won't play but Link will do a spinslash and aquire the item. If neither bits are set, Link will walk into the item and collect with with no fanfare or pose
Bit 2 is not used, and if combined with the other bits will actually crash the game.
Bit 3 is used to set bit 5 in the room flags signifying that an item has been obtained in that room Bit 4 makes the item appear in a puff of smoke Bit 5 makes the item fall down from the celing If bit 4 and 5 are both active, then the item will appear to come out of a treasure chest If neither bits are active, the item will appear from the getgo.
Bit 6 makes the item not appear Bit 7 turns the item into a collectable item, both sfx and pose are automatically added
|
|
|
|
|
132
|
Oracles Hacking / Bug Reports / Re: Possible bug with global map scripts
|
on: June 25, 2010, 02:13:59 AM
|
|
An example of the problem I found was that at room 43 in the second dungeon bank(Mermaid's Cavern Past, 1F), it should use map script 0C to add the wall that you light the torches to make slide. When I checked, it said there was no scripts. Also, there are two sets of map scripts. The one that causes several tiles to change, and the other that has a room value, a location, and a bit that's read to make that tile appear. I would guess that you intend to make both editable, perhaps from a sub menu?
Edit: Yeah, the problem with the map arranger is that it's not done in realtime. If it's too much to make the rooms change as you change the room number, then I suggest you instead just go simple and have blocks represent the rooms. Actually what would really help is if the map selector in the upper right corner actually changed the room at that location rather than just display a room. That would help alot, as well as an option to clear the room order data for each map.
Nephi was pretty good when it came to editing room order. At the upper left there was a 64 tile grid that had a blank square for a room that was 00, and a shded square for a spot with a room. Now since Link's Awakening had different minimap format(seperate spot for maps), you could just choose the map marker right there. Of course in Ages, it's much different. How you changed the room order in Nephi was a simple matter of selecting a black square and changing the room number. No additional menu was required.
So to make a long story short, allow for room arrangment on the main screen, with the map selector in the upper right be the selector. Then you can press ok to update the map. Also, there really isn't a need to have a prompt to update the minimap image since it's assumed the user wants the update as soon as they select it.
|
|
|
|
|
133
|
Oracles Hacking / Bug Reports / Re: Possible bug with global map scripts
|
on: June 25, 2010, 12:07:43 AM
|
|
Not really. I did find out that if I added some interactions to a new room, it bugs out the rest of the interactions massivly for the overworld areas. The map scripts are also seriously messed up, with many rooms not even registering a script when I know there is supposed to be one there. 2D CC is used to initiate all region headers, all of them. If you changed the way the headers worked, then a bunch of data won't work right. Ages and Seasons has those two extra regions for sideview areas, and getting rid of them will bug stuff up.
But anyway, hope things are going well. I created a hack of the first dungeon, but because the overworld was messed up, I deleted it. Otherwise everything works really well. Oh, as for the map arranger, I was thinking that the way you have it now, you enter a number and press OK to change one map is too time consuming. Instead I think it's better if you allow for being able to wipe the minimap and enter values directly and fix up the map they way you want it before it updates. There's also more data like what rooms have doors or the key sound and if the room is dark and stuff that needs space for editing. I also notice that the area editor doesn't seem to have a spot for flags such as water, or which level the area is in.
|
|
|
|
|
134
|
Oracles Hacking / Tutorials / Re: Most Common Dungeon Events
|
on: June 24, 2010, 10:00:28 PM
|
|
The game does make use of one way doors, but I think somthing else might trigger it that isn't often used. It's like how event 2B in Link's Awakening is used for both one way doors and doors you smash a pot into to open it up.
Right now I'm trying to find the sprite data ASM pointers. I've discovered an interesting thing that sprite 2B, which is used in the Vire/Donkey Kong minigame to make the fireballs appear. Normally on a sideview map, you can't go up or down rooms unless you are on a ladder. For this room which contains that sprite, it allows you to fall off the edge of the platform to the floor below, but only in one particular spot. If I find out how this spot is added, I could create a custom interaction that could allow this for any sideview room I want. In short, it would allow for more complex sideview areas.
|
|
|
|
|
135
|
Oracles Hacking / Tutorials / Re: Most Common Dungeon Events
|
on: June 24, 2010, 03:50:53 PM
|
|
Room 25 in level 1 does not have a down facing door, it has an up facing door. I also tested with index 04 and changed it's pointer to 83 46, which is the key falling down event 12 01(or where it's data points to). It made the up facing door not work when I put the cube on the hole, but a key dropped when I beat all the monsters. I think where you are getting confused is that apparently index 0 - 03 don't seem to be used. The pattern is always up, right, down, left. 00 to 03 are not used, and might be ini data. 04 to 07 are for floor switches, 08 0B are for enemies, unsure what 0C to OF are for, and 10 to 13 are for one way doors.
Edit: I think I might have misunderstood your post. When you mean a down shutter that opens up, you basically are refering to tile 78, right? The way you wrote, it seemed you were saying that tile 7A direction was first, then the others. Basically everything in the game, if it's direction based, goes in a clockwise direction from up to left. The pushable blocks work like that too.
|
|
|
|
|