News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Lynna Lab - Oracle of Ages editor + disassembly  (Read 6670 times)

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Lynna Lab - Oracle of Ages editor + disassembly
« on: May 27, 2015, 03:08:49 pm »
This is a project I'm working on in 2 parts. The first part is intended to be a full disassembly for Oracle of Ages: https://github.com/Drenn1/ages-disasm

The second part is a level editor written in mono/C#/Gtk, which works by editing files from this disassembly, called Lynna Lab: https://github.com/Drenn1/LynnaLab

Seasons support is one of my long-term goals, but I think that will be easier to add after the Ages disassembly has matured quite a bit more.

At this time, the disassembly is very unix/linux-centric and will probably be difficult to compile on windows systems, though it should be possible if wla-dx is compiled under cygwin. I don't really plan on making things more user-friendly until everything stabilizes a bit more. Although once it has, expect to see more rom hacks from me. I'm still probably going to do a Master Quest version of Ages.

Quote from: Original Post
What the title said. My grand ultimate plot is to make a level editor which works by editing files from this disassembly. But that's a ways off. Another part of my ultimate plot is to add seasons support as well, but, baby steps. I have a lot to do with ages first.

The main cool thing I've done so far is added the ability to edit compressed graphics. And now I'm working on extracting the text. Since there's much work to be done, I guess I'm posting this half to show off, and half on the hope I may find some more helping hands.

This was very much inspired by the pokered disassembly, shoutouts to iimarckus ;)

Source
« Last Edit: July 29, 2015, 04:28:55 am by Drenn »
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #1 on: July 29, 2015, 04:39:02 am »
For the past week or so I've been working on the next piece of this project, the actual editor which works by editing files from the disassembly. At this point it has the most basic functionality working, editing rooms. Progress comes slower than it would if I was editing the ROM directly, though I like to think this is a more flexible and stable approach to rom hacking. Lots more work though.

Spoiler:
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

Seihen

  • Sr. Member
  • ****
  • Posts: 404
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #2 on: July 29, 2015, 07:36:13 pm »
I just want to say: this is absolutely AMAZING work you're doing here. I don't have much to add, but just wanted to mention how impressed I was.
Good luck on your project!

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #3 on: July 30, 2015, 06:39:58 pm »
Hey thanks. I appreciate that. :) Here's another thing.

Spoiler:

Apparently ZOLE didn't read the "dungeon metadata", and just listed each dungeon's floor as a separate thing, unlike LL. Score one for me. :)

August 04, 2015, 10:37:51 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
If anyone's interested in more frequent updates I'll be posting random screenshots of my progress on twitter - https://twitter.com/drenn9

I'll post big announcements here though, like around the time I'd consider it "usable" for making hacks and I make some instructions for using it.

Since I'm taking the time to post I may as well show how it looks currently: https://pbs.twimg.com/tweet_video/CLdf7hIUsAEJ3Ms.mp4
« Last Edit: August 04, 2015, 10:37:51 pm by Drenn »
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #4 on: January 23, 2016, 01:33:32 am »
Soooo I'm still working on this. Looks like the gui's changed a bit since I last posted.

Spoiler:

In addition to showing the interactions (should probably be called "objects" instead) I've got this "plugin" system. This was Lin's idea, the guy who created ZOLE. I don't really expect other people to write plugins, but it could be a neat way to implement obscure functionality particular to a single rom hack. I might also implement some important functionality this way.

In terms of the disassembly, I reached a bit of a milestone today, which is that I can shift around all the data in rom bank 1 without the game exploding. In fact it seemed to work perfectly. It's a pretty code-heavy bank so I had to manually go over most of it. It's still only 1/64th of the game though. :P

I want to do that for other banks before I start encouraging other people to actually use LynnaLab. It'll allow me to seamlessly insert data, like new tilesets. That's one of the big advantages to not editing the rom directly.

Oh and I threw in the MIT license, why not.
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

SunGodPortal

  • Hero Member
  • *****
  • Posts: 2917
  • 2 + 2 = 5
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #5 on: January 23, 2016, 01:47:26 am »
This sounds cool. If you ever want to know what not to do study Hyrule Magic. :P
War is Peace. Freedom is Slavery. Ignorance is Strength.

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #6 on: January 24, 2016, 02:50:26 am »
This sounds cool. If you ever want to know what not to do study Hyrule Magic. :P
I'll refrain from passing judgement on that since alttp looks significantly more complicated... at least in terms of graphics... :P What specifically do you find wrong with it, is the interface just too arcane or something?
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

SunGodPortal

  • Hero Member
  • *****
  • Posts: 2917
  • 2 + 2 = 5
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #7 on: January 24, 2016, 03:59:04 am »
Quote
I'll refrain from passing judgement on that since alttp looks significantly more complicated... at least in terms of graphics... :P What specifically do you find wrong with it, is the interface just too arcane or something?

Foreword: I use HM on a daily basis so I take the oppurtunity to bash it when I can.

Besides all of the bugs that result from the program not being designed to properly deal with the data structures of the ROM (something it should have more extensively expanded and rearranged as soon as you began editing the ROM) most of my complaints can be chalked up to it being unfinished, abandoned and having an author who is too much of a *insert insult here* to allow people to finish what he started (no source code). The program has a ton of features to edit nearly everything in the game but half of them are "use at your own risk" or "never use" because they are broken/unfinshed.

Let's say you want to totally redesign a room. Most people would probably want to empty the room first and then refill it. Never do this with HM unless you want to destroy your ROM. It's too stupid to do something like this. If you want to totally redesign a room the best thing is to resize all of the objects that can be resized to their smallest and then pile all of the pieces in one spot and pick things from it one at a time. If you don't want to use the objects that the room was composed of you have to highlight an object, right click and then choose what you would rather it be. This opens a window with all of the different pieces in it but the window doesn't work with the mouse wheel so instead of scrolling easily you either have to click up or down, drag the bar on the side or type in the number of the piece you want (there are hundreds). Scrolling with the mouse would make this much less annoying. When you have used up all of the existing pieces you can safely add a few, but not many. If you have some left over it's probably best to only remove a few and leave the rest somewhere out of visibilty if you have the option.

Let's say you want to add a door in one of the rooms. You choose BG3, left-click anywhere, choose "insert a door", navigate the same stupid window desrcibed above (no mouse wheel support) and when you make your selection, the door will appear, but in a random spot. To move the door to different positions that are predetermined you MUST USE THE ARROW FUNCTION OF THE NUMPAD ONLY!!!!!!! YOU CANNOT USE THE STANDARD DIRECTION KEYS!!!! My laptop does not have a numpad so every time I want to add or move a door I must open a virtual "on-screen keyboard" and move the doors with it. STUPID.

A few things I would suggest to make you editor all that it can be:
-Have people use it and give feedback so you will know what you are overlooking or what can be improved upon (AND FOR BUGS!!!).
-Take the time to finish it and if you don't, allow someone else to. If even a half-assed editor exists, no one is going to take the effort to make a proper editor because it takes less effort to use a buggy, unfinished editor than to program one yourself. (I don't wanna hear about Black Magic)

Closing remarks: Hyrule Magic is so shitty that to make the best use of what the game itself has to offer, your best bet is to design one dungeon at a time in separate ROMs and then when finished, cut and paste the data from each into one expanded ROM with a hex editor and then rewrite a bunch of pointers. Despite there being many people who want to hack this game, there are so few existing hacks because a person has to be insane (like me) to do all that must be done to finish a functioning hack with this program. You have to spend weeks or months learning exactly what you can and can't do with it: what is safe and what will destroy your ROM. Even then you will be required to fix bugs with a hex editor.

Well, I don't know if that will help or if I am just blowing off steam. LOL
War is Peace. Freedom is Slavery. Ignorance is Strength.

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #8 on: January 24, 2016, 04:30:01 am »
Nah I actually find that pretty interesting. I've become a bit of an open source nut myself, having wanted to make my own tweaks to editors before. I don't think hacks should be confined to an editor's current capabilities. If you're modding the game, you should be able to mod the tools you're using. Both to fix bugs and maybe add features specific to your hack. When ZOLE was open sourced I pretty quickly noticed that it had a bug which would permanently make certain enemies crash the game, if you used the enemy editor. He didn't notice since the most common enemies worked fine.

A few things I would suggest to make you editor all that it can be:
-Have people use it and give feedback so you will know what you are overlooking or what can be improved upon (AND FOR BUGS!!!).
I'd be thrilled if people used it, I just don't want people making hacks yet because things will break as I make updates.
Quote
-Take the time to finish it and if you don't, allow someone else to. If even a half-assed editor exists, no one is going to take the effort to make a proper editor because it takes less effort to use a buggy, unfinished editor than to program one yourself. (I don't wanna hear about Black Magic)
It'll take a while to finish, cause of the disassembly, but if I can work consistently at it it could be ready in a few months. It would not be difficult at all for anyone else to modify LynnaLab, the difficulty would lie in finding someone else crazy enough to finish disassembling the game. Hopefully that's a moot point though, I intend to finish.

Oh yeah... did I mention people will probably need to learn git to get updates for the disassembly, and thus for LynnaLab probably? I can't really find a way around this. I'll need to take some time to noob-proof the documentation... and be as careful as possible to avoid merge conflicts for the users. :P
« Last Edit: January 24, 2016, 04:48:15 am by Drenn »
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

SunGodPortal

  • Hero Member
  • *****
  • Posts: 2917
  • 2 + 2 = 5
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #9 on: January 25, 2016, 09:23:54 pm »
You may find this interesting. Sometimes Hyrule Magic (Hyrule Tragic) will do this to one of your dungeon areas:



It will do so at random, without warning and the damage is irreversible outside of a hex editor. At this point it's best to just revert to a backup and lose valuable progress. Isn't that great? Things like this are the reason why there aren't about 10 amazing hacks of Zelda III already.

Anyway, let me know when it comes time to test this thing out. I'd be interested to see what I could do within the confines of another Zelda engine. I've had a number of ideas that I've had to pass on because they would be too difficult to pull off using ALttP for one reason or another. I might also be able to provide valuable insight when testing since I've already spent a year editing another game in the series with another editor that has it's pros and cons that I am by now very familar with.
War is Peace. Freedom is Slavery. Ignorance is Strength.

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #10 on: January 25, 2016, 09:48:55 pm »
Yeah that's the worst. I made an editor for wario land 3 and a user once reported a level getting completely corrupted, pretty bad feeling. Then I wrote a level importer/exporter, which made me feel a bit safer.

Anyway I've pretty much distrusted rom editors since writing one myself. When I made an ages hack with ZOLE, I had the ROM under version control, and I also had a submodule with all my assembly patches, which were never applied directly to the rom until I wanted the final product. I think you'll agree with me that it wasn't paranoia. :P
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

SunGodPortal

  • Hero Member
  • *****
  • Posts: 2917
  • 2 + 2 = 5
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #11 on: January 25, 2016, 11:44:36 pm »
Quote
Anyway I've pretty much distrusted rom editors since writing one myself. When I made an ages hack with ZOLE, I had the ROM under version control, and I also had a submodule with all my assembly patches, which were never applied directly to the rom until I wanted the final product. I think you'll agree with me that it wasn't paranoia. :P

LOL Yeah. I'd say if an editor isn't designed with the fore site to restructure the ROM pretty extensively there's a limit to how safe or useful it can be. It also seems like a bunch of editors are never actually finished. That doesn't help. I wouldn't be nearly as harsh towards Hyrue Magic and it's author if it were still a work-in-progress or at least open-source.

I bitch a lot, but I'm actually proud to be a Zelda III hacker because I know I'm succeeding in an arena where the vast majority of those who enter taste defeat. LOL
War is Peace. Freedom is Slavery. Ignorance is Strength.

Bahamut ZERO

  • Hero Member
  • *****
  • Posts: 903
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #12 on: January 26, 2016, 03:56:25 pm »
LOL Yeah. I'd say if an editor isn't designed with the fore site to restructure the ROM pretty extensively there's a limit to how safe or useful it can be. It also seems like a bunch of editors are never actually finished. That doesn't help. I wouldn't be nearly as harsh towards Hyrue Magic and it's author if it were still a work-in-progress or at least open-source.

I bitch a lot, but I'm actually proud to be a Zelda III hacker because I know I'm succeeding in an arena where the vast majority of those who enter taste defeat. LOL


After reading this thread, I'm sort of happy I didn't pick Zelda 3 to cut my teeth on hacking-wise. O_O


But looks like some badass progress is being done with Oracle of Ages tho! Keep up the good work man!
Like Super Mario Land? Then you'll love my first completed Rom Hack: Maniac on the Run!

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #13 on: February 12, 2016, 09:18:34 am »
Speaking of badass progress. Today, the music bends to my will.

https://www.youtube.com/watch?v=a6JUDguQ5rg
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

Kurt91

  • Jr. Member
  • **
  • Posts: 10
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #14 on: February 15, 2016, 01:59:59 am »
I'm a bit curious, since both games use the same engine, how difficult would it be to implement Seasons functionality to this? Honestly, it would be amazing if you could load both Age and Seasons in the editor, (so that you technically aren't distributing the actual code from the games) and be able to port items and bosses exclusive to one into the other. I know that space-wise it wouldn't be feasible to have all the stuff from both games crammed into one, but I can imagine having a set number of slots that you can assign bosses to. You could remove one boss from Ages as well as the corresponding special item needed for it in order to replace them with a different boss from Seasons and it's corresponding item.

I ask only because I remember seeing those April Fools "Oracle of Hours" maps, and it looks like the creator borrowed things from both games as well as Link's Awakening. Being able to have cross-compatibility in this way would make it easier to try and make a functioning playable version of Hours. (With fewer edits since I figure it would be less feasible to have the same cross-compatibility feature with Awakening)

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #15 on: February 15, 2016, 02:05:38 am »
I'm a bit curious, since both games use the same engine, how difficult would it be to implement Seasons functionality to this? Honestly, it would be amazing if you could load both Age and Seasons in the editor, (so that you technically aren't distributing the actual code from the games) and be able to port items and bosses exclusive to one into the other. I know that space-wise it wouldn't be feasible to have all the stuff from both games crammed into one, but I can imagine having a set number of slots that you can assign bosses to. You could remove one boss from Ages as well as the corresponding special item needed for it in order to replace them with a different boss from Seasons and it's corresponding item.

I ask only because I remember seeing those April Fools "Oracle of Hours" maps, and it looks like the creator borrowed things from both games as well as Link's Awakening. Being able to have cross-compatibility in this way would make it easier to try and make a functioning playable version of Hours. (With fewer edits since I figure it would be less feasible to have the same cross-compatibility feature with Awakening)
Seasons will take a lot of work, but it's on the todo list. Basically I'll need to somehow integrate a seasons disassembly with the current ages one. It will be painful, but so worth it. The cross-compatibility you mentioned is something you'd think I'd have thought about but haven't, realy. That would indeed be cool.

There's a guy who once tried to make oracle of hours, using the other editor, ZOLE. He released a demo as well, and supposedly he's still working on it. It's closer to reality than you realized.  ;)

https://www.youtube.com/watch?v=BvEFg1RdLVw
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

Drenn

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #16 on: September 07, 2020, 08:34:09 pm »
Let's see, it's been... *checks notes* over 5 years since I made this topic?

Well it took slightly longer than anticipated, but I finally made a "1.0.0" release. The disassembly is "complete", both for ages and seasons, in the sense that all ROM address references have been accounted for, which means that virtually everything can be shifted. This makes editing code almost trivial, especially with all the documentation, too.

Seasons support isn't complete in LynnaLab (the GUI editor) yet, but that should change before too long. In the meantime the focus is on Ages.



Since it's built on top of a disassembly, this is not for the faint of heart, but it's an incredibly powerful method of ROM hacking.

I made a tutorial for setting it all up. In the future I'll make videos going over more advanced topics, such as custom events, perhaps even custom enemies.

https://www.youtube.com/watch?v=R-wAhHg1OIk
Zeldahacking.net: The hub for Zelda: Oracle of Ages and Seasons hacking. We have a discord!

PowerPanda

  • Full Member
  • ***
  • Posts: 157
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #17 on: September 08, 2020, 10:27:27 pm »
This is really, really impressive. Well done.

MysticLord

  • Jr. Member
  • **
  • Posts: 48
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #18 on: September 12, 2020, 08:31:31 pm »
Oracle of Ages is still in my queue to play, but this looks very fun.

Vanya

  • Hero Member
  • *****
  • Posts: 1752
    • View Profile
Re: Lynna Lab - Oracle of Ages editor + disassembly
« Reply #19 on: September 13, 2020, 09:06:11 am »
This looks awesome! Being able to hack these games with such a powerful method is tantalizing.
There are quite a few things I can think of that I'd like to do with this.
~~~Oracle of Secrets... (º﹃º)