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

Login with username, password and session length
News: The website has switched hosts and now has the domain zeldahacking.net!
 
  Home Help Search Login Register  
  Show Posts
Pages: 1 [2] 3 4 ... 38
16  Oracles Hacking / ZOLE / Re: Any New Plans In Store for Zole? on: February 12, 2014, 10:34:44 PM
Sure, you can use TLP
Why is everyone using Tile Layer Pro, when better sprite editing programs, like YY-CHR, already exist?
That's a good question. TLP lacks so many features like opening a ROM with it and expecting TLP to load the ROM. But perhaps it's because it's popular, simple, and has a rememberable name, unlike YY-CHR.
17  Oracles Hacking / ZOLE / Re: ZOLE 4 Version 1.26.1 Released! on: February 12, 2014, 10:33:23 PM
Can you re-up the last version (1.26.1)?

Please!
http://zeldahacking.net/downloads/ZOLE%204.zip Sorry
18  Oracles Hacking / Projects / Re: Zelda Oracle of Nature (By Me and Fatories) - Demo Released (Updated 7/24/11) on: February 04, 2014, 08:29:06 PM
Well, it has a lot of flaws. For starters, it's way too difficult. There were some pretty terrible design choices. Second, it uses all old ZOLE stuff so down the line it would become harder to work with. Third, we don't like the overworld. Fourth, our skills regarding assembly and programming have greatly improved. We could do everything a lot better.
19  Oracles Hacking / Projects / Re: Zelda Oracle of Nature (By Me and Fatories) - Demo Released (Updated 7/24/11) on: February 04, 2014, 08:15:04 PM
May I help with the overworld map? I've kinda edited the overworld to fix some inconsistencies before and after events, as well made some "stopping screens" to disallow Link from traveling out of bounds into the remains of Labrynna. Wink Maps are in the attachments.

While the offer and help is appreciated, this project has long since died. We aren't working on it anymore and don't have plans to resume it in the future. Sorry. The announcement for it was kind of hidden.

So with all that to read, I give you news regarding Fatories's and my hack, Oracle of Nature. It's dead. For good. It's not completely because we don't want to work on it, but the path we took after level 3 was disastrous and we don't like it. We also did a poor job with the overworld and could make a significantly better hack now. The dungeons are all really cool still though, so we might still use those if we ever make another hack.
20  Other / Programming Discussion / Re: WonOhFive on: January 27, 2014, 04:14:09 AM
I like it! It actually looks pretty good too. Interesting idea.



First game, so beginner's luck maybe? Tongue
21  Oracles Hacking / Help / Re: Many questions about ZOSE... on: January 21, 2014, 10:36:26 PM
Yes, or Tools > Create Backup.
22  Oracles Hacking / Help / Re: Many questions about ZOSE... on: January 20, 2014, 11:15:05 PM
1. There is not a command, but a while ago I figured out a rigged way to do it. It's by no means simple. This is part of the script from Nature that sends Link to the island after you beat level 2 and talk to some lady:
Code:
//fade in
setmemory c4ac 01
setmemory c2ff 1d
setmemory c4b1 ff
setmemory c4b2 ff
setmemory c4b3 ff
setmemory c4b4 ff
setmemory c4ab 0a
//we're gonna callscript the map warping procedure
//so we have to simulate a warp
setmemory cc47 00 //group
setmemory cc4a 42 //entrance type
setmemory cc49 81
setmemory cc4f 0a
//setmemory d000 03
//setmemory cc31 01
//setmemory cc35 ff
setmemory cc2d 00
setmemory cc48 c3 //map
setmemory cc30 c3
setmemory d00b 48 //Link Y
setmemory d00d 68 //Link X
setmemory d040 0
setmemory d140 0
setmemory d240 0
asm15 20
//End

At 0x20 in the ROM, I have these bytes:
Code:
F0 97 F5 3E 01 E0 97 EA 22 22 CD 60 5A F1 E0 97 EA 22 22 C9
You shouldn't have anything important at 0x20, but if you do, you could put those bytes in some free space in bank 0 (0-0x3FFF) and change the 20 in asm15 to wherever you put those bytes.

2. SetVisible shows (or hides?) an interaction. I don't know what those values do. They can vary from interaction to interaction. With enemies, those values respectively are the enemy's stage, unknown (maybe lower byte of a movement timer), and movement direction.

3. PlaySound just plays a sound without looping and keeps the current music. SetMusic changes the music.

4. I don't know what it's used for. Most likely a value related to the map you're on (eg. how many torches are lit, how far the wall lever is pulled out, etc). Most likely yes, except it would use 2 extra bytes.

5. Not an easy way in scripts that I can think of. Here is a list of all the inventory slot's memory addresses.
Code:
00:C688 b_weapon
00:C689 a_weapon
00:C68A inv_slot_0
00:C68B inv_slot_1
00:C68C inv_slot_2
00:C68D inv_slot_3
00:C68E inv_slot_4
00:C68F inv_slot_5
00:C690 inv_slot_6
00:C691 inv_slot_7
00:C692 inv_slot_8
00:C693 inv_slot_9
00:C694 inv_slot_A
00:C695 inv_slot_B
00:C696 inv_slot_C
00:C697 inv_slot_D
00:C698 inv_slot_E
00:C699 inv_slot_F

6. A cycle is usually just a set of tasks that get performed every iteration. For example, every cycle, it handles interaction code. Maybe every cycle it increments C622, and perhaps whenever the game needs to get a random number, it uses the value at C622 as a seed for the randomizer, which would make it seem random.

7. No. Each stage increments the lever in steps of 10 (0xA). For 7 steps, thats 7 * 10 = 70, or 0x46. However, when a lever is pulled out as far as it can go, the value changes to 0xC0, so that's what you would check for. The length you can pull it out to depends on what you put in the interaction data.

8. FF and FF. Overworld maps are 10x8 in block sizes. Each block is 16x16 pixels, which the coordinates represent. -8 for the center, that comes out to be (154, 120). Big room sizes are 15x11 tiles, so do the same thing. 240x176, -8, you get (232, 168)

9. I believe it shows a text ID and jumps to the script at 305F0. I don't know what the script at 305F0 is, and ZOSE doesn't handle opcode EB apparently, so maybe we'll never know.

10. There is a command "SetTextID", which will set an interaction's text ID. When you ShowLoadedText, it will use that value to display a text box, whereas with ShowText you provide an address in ZOSE. I can't think of any immediate benefits over doing one over the other, except for maybe using multiple scripts to affect one NPC.

11. Yes, but realistically no. The two values together make up a 16-bit integer, a value ranging from 0-65535 instead of 0-255. I believe the value is little-endian too, so value 1 would range from 0-255 and value 2 might only actually go from 0-10. I might have that backwards.

12. Yes, although Fatories has managed to make his own bosses. I don't know how he did it. You'll have to talk to him. As for making them appear, you just use the interactions you find in boss rooms. Do note that the game will crash if the doors in the room don't match the original. There's no way to change them unless you know how to edit the assembly behind the interactions. They do have their own enemy IDs though, if that's what you're asking. Zerpha compiled a list of them here: http://zeldahacking.net/forum/index.php?topic=34.msg501#msg501

13. Honestly, I have no idea.

14. http://en.wikipedia.org/wiki/Bitwise_operation

15. These are useful commands, although I've never used them. SetInteractionFactor allows you to set a DxYY value without knowing what the x is in your interaction's address. For example, if your interaction is at D2** or D4**, regardless of the number there, your code will set the same value. You just provide it with the YY (the **) and the value to set it to. AddSetInteractionFactor does the same thing but instead it adds a value onto the value that's already there.

16. ASM15 allows you to execute any assembly in bank 15 (and bank 00 if you remember how Gameboy addressing works). I used it in the script above to force a warp, even though there wasn't really one.

17. 50. Dang, I didn't realize it was so high. Lol.

And just for the record, I read the rules (http://zeldahacking.net/forum/index.php?topic=243.0), where it mentions about being "spoonfed" information, and I realized that I might be appearing that way with the post above.  I have tried some of these things I mentioned, but I just can't figure them out.  I don't want to attempt some stuff, cause I'd be afraid I would enter a "wrong" value and mess up the entire hack I've been working on for a while.  Better to be safe then sorry.  If I'm coming off as being rude, offensive, or just plain too curious, I apologize in advance.  Just wanted to mention that.  I wish you guys all the best : )
Backups are extremely useful. I highly recommend making them often. Also, just plugging in random values to something is a good way to figure out how something works. It might not always be enough to just observe something properly working. You might need to see it incorrectly working to see exactly what it's doing. Also it's no problem.
23  Link's Awakening Hacking / Help / Re: How do I handle text & character editing? on: January 14, 2014, 07:41:45 PM
I do not believe LALE comes with a sprite editor. But luckily, all of the graphics in Link's Awakening are uncompressed. This means you can use any Gameboy graphics editor, like TLP and paint the graphics to look like you choose. Of course, you'll have to manually search for them but you can find them just by scrolling through the ROM or using a memory viewer to get the tile's raw data and a hex editor to search for it. Since you're just doing a translation, I don't think there is anything fancy you'll need to edit like palette indexes, so you should be good.
24  Oracles Hacking / ZOLE / Re: Zelda Oracles Suite? (ZOLE 6) [Also an update on Nature] on: January 09, 2014, 07:15:26 AM
Beta 0.05 is almost done. I've been focusing entirely on this though: http://www.youtube.com/watch?v=-CPpcF4ycPU
25  Other / General Discussion / Re: Favorite Hockey Team on: January 06, 2014, 04:37:08 AM
Oh, that's too bad. They're basically the worst team in the NHL Tongue And thank you, lol.
26  Other / General Discussion / Re: Favorite Hockey Team on: January 05, 2014, 03:15:07 AM
I'm not surprised, hockey is one of the least popular sports Tongue

And yeah, the NHL games are really fun, especially 2009, the last PC version. And the Buffalo Sabers, huh? I sure hope you're not a real fan of them, because it must be rough, haha.
27  Oracles Hacking / Help / Re: Could I get a little bit more information on Interactions? on: December 30, 2013, 10:02:16 PM
Well back in the day when ZOSE first came out, type 72 interactions had to initially start in bank C, where the original scripts are located. There was very little space here, so in order to preserve as much of that space as possible we would make it jump immediately to a bank with more space. I believe with the newer ZOSE though you don't need the jump3byte and can start at any address you want.
28  Oracles Hacking / Help / Re: Could I get a little bit more information on Interactions? on: December 30, 2013, 09:36:58 PM
A bank is just a way data is grouped. The gameboy uses 16-bit addressing, meaning it's memory can only go up to 0xFFFF. But wait, ROMs need at least 24-bit addressing! The gameboy then introduces something called the memory bank controller (MBC), which will contain one defined bank in its memory from 0x4000-0x7FFF. So if it's reading bank 12, it will have the same data in the ROM at 0x48000-0x4BFFF stored in its memory from 0x4000-0x7FFF. In order for the gameboy to read this data, instead of using 0x48123 for the address, it uses 0x4123. This is why you almost always see pointers in the range of 0x4000-0x7FFF.

Bank 12 is mostly home to all of the map interaction data. Of course, it can be anything, but the developers were kind enough to organize everything so that certain banks contain certain data. The type 3 ID is a pointer, meaning its value is most likely going to be 0x4000-0x7FFF. So to get the absolute address, take bank 0x12, multiply by 0x4000, subtract 0x4000 from the type 3 ID, and add it to the bank's total. 0x12 * 0x4000 + type3ID - 0x4000. To reverse an absolute address and turn it into a gameboy pointer, the easiest way is to modulus the absolute address by 0x4000 and add 0x4000. So absoluteAddress % 0x4000 + 0x4000. Now, the gameboy always keeps the ROM's 0x0000-0x3FFF data loaded in the beginning of its memory from 0x0000-0x3FFFF, meaning bank 0 is always loaded and accessible. If you wanted to read from it, you wouldn't add the 0x4000, you would just use the absolute address. This means it's possible to keep the first 2 banks of the ROM loaded into the RAM and whole-number-accessible. But you probably won't have to deal with that.

Type 3s point to interaction data. You can't really edit this with ZOLE so you'll have to use a hex editor. The interaction format is pretty simple though - Fx ID ID (any parameters in bytes here). So a type 2 interaction with the ID 1234 located at the coordinates 28, 68, would (probably) look like: F2 12 34 28 68. The pointer doesn't know how many interactions it's going to read, so it goes until it hits the byte FE. Interactions for maps usually end with FF, but IIRC in the game code, FE means it's the end of a loaded pointer (AKA type 3) and it needs to resume the normal data. So if you point a type 3 to your regular map's interaction data, your game might crash or the interactions will stop loading after the type 3. The same type 2 interaction above being ended would just look like: F2 12 34 28 68 FE. And that's it. Pretty simple stuff.
29  Oracles Hacking / Help / Re: Could I get a little bit more information on Interactions? on: December 30, 2013, 08:19:29 AM
1 and 5. Interactions 1, 2, and 9 are all the same. The IDs all share the same assembly pointer tables, so having a type 1 interaction with the ID of 2201 and a type 9 with that same ID will create the same thing. The only difference is 1 is a no-parameter interaction (it only contains the interaction ID), type 2 has two parameters (commonly used for coordinates but can be used for other things), and type 9 has I believe four parameters. When I originally created ZOLE I didn't know this.

2. See 1. Type 3s (yellow) are literally just bank 0x12 pointers. They point to a group of interactions and are used to save space spawning interactions that may have already been defined somewhere else.

3. Type 5 is the same as type 3 except the enemies only spawn is a specific flag is set. I think it's flag 80 but I'm not entirely sure. The only place I've seen these used is the second screen in Seasons where you met Din. After that event, octoroks will spawn.

4. I've never messed with them before but I just looked into them. They're very simple. 13XX is their ID, with the XX being the text index you want them to show. As usual, you'll just have to try and find the text using ZOTE since there is no pointer editing unfortunately. The position value is just the YX you want the owl to appear at.

5. See 1

6. Ah, great question. In 1 I explained that 1, 2, and 9 are all the same, so really it comes down to your scripts. Fatories and I started using type 1s for our 72 scripts to conserve space if the script didn't take any parameters. Even for ones that did, like a position value, if we needed the space we would use a type 1 and do a "setposition" command in the script. Our philosophy was we'd rather take up the 1MB+ of space you get with scripts filling the position and other values instead of taking up the small hundreds of bytes you get with interactions. Of course, if you plan on making it a widely-used script that accepts a position, you might want to just use a type 2.


EDIT: If you're curious, I made a tiny program a long time ago that never became anything or got released (it's attached). Most of it is junk and only works for specific interactions (it's a small semi-NPC sprite editor) but it allows you to put in any interaction ID and will give you the bank, relative address, and exact address of the interaction's assembly if you want to get dirty.
30  Oracles Hacking / Help / Re: Taking/giving rupees from/to Link? on: December 15, 2013, 01:02:56 AM
Ah, sorry. Hmm... Maybe it's below 4D. I checked the list and I can't find anything. Odd.
Pages: 1 [2] 3 4 ... 38
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!