Homebrew [Release] Zelda ROTH for 3ds

  • Thread starter Thread starter nop90
  • Start date Start date
  • Views Views 93,773
  • Replies Replies 169
  • Likes Likes 78
The crash should be a problem causeb bu cpu going out of sync e with gpu. On o3ds should happen after 2-3 hours of game.

For n3ds I enabled the speedup function hoeing tbat this will improve the stability. But I don't have a n3ds to test it.
But that's the thing now you say it should crash after two to three hours of play on a old 3ds but for Mr and some others it's after a few minutes of play.
 
On 0.2 using my N3DS, I can't even get an hour of play without a crash. It does whatever it wants, sometimes it lasts a while (Less than an hour), or sometimes it crashes early. It's like a ticking time bomb ready to go off randomly.
 
On 0.2 using my N3DS, I can't even get an hour of play without a crash. It does whatever it wants, sometimes it lasts a while (Less than an hour), or sometimes it crashes early. It's like a ticking time bomb ready to go off randomly.
Thank god it's not just a old 3ds problem then if you have the same problem as me on your new 3ds.
 
I'm really liking what I'm seeing in the latest build, @nop90! In regards to the hotkey mapping, I noticed you're mapping it rather similarly to LTTP! There are a couple of differences though:

- SNES LTTP used X to open the map, although I think it's nice that X behaves similar to Y! It might work even better if it functioned the same way Start currently does, so users don't have to reach down for the start button to quickly switch items. (L+Y is a good mapping for the map, by the way, and so is L+B to open the enemy menu! [I'd prefer a touch-screen menu, but that might be asking too much]. By the way, can you allow the user to close that menu by pressing B, instead of how it currently closes with A?)
- SNES LTTP used the same controls you are using for the A button, but it also used A for pegasus boots and picking up items with the glove. I don't know how the game is currently coded, but if you cannot remap the pegasus boots along with the A button, then nevermind. (I like it on L, too though: the GBA LTTP, ALBW and Tri Force Heroes all use L for dashing)
- I noticed you mapped the gloves to both X and Y. I really like this, but I noticed I can only place my bombs with the X button! SNES LTTP primarily mapped it to Y!

Alternatively, you could try the GBA LTTP button scheme [Even better if it's a change-able option in the Options menu]:
B - Sword, Spin Attack, Cancel menu options, Close menus
A - Item selected from pause menu, Open Chests, Interact with people
Start - Open save/quit menu
Select - Open item menu
L - Open map
R - Pegasus Boots, pick up objects with the glove, open chests, interact with people (SNES LTTP does all of R's functionalities using the A button instead)

Although most of the controls feel very comfortable in the second version, I think some users could get confused without some way to view the instructions within the app: Perhaps you could toggle-display the entire list of controls on the bottom screen if the user taps it while it's not being used for anything else?

Now, I'm not sure if the original game did this or not, but the text's sfx overlapping can get a bit grating on the ears: Do you think you can stop the sfx each time it's about to play, so it "overwrites" the previously-playing character writing sound? I think that could polish the sound up a bit more.

I'm not sure if this is just me or not, but the graphics seem to tile improperly every now and then: there's a single-pixel-wide vertical line that cuts through each 16x16 tile occasionally, perhaps due to an improper screen draw. Also, do you have plans to re-scale the resolution so it's not stretching the pixels?

All in all, this is looking very promising! I've been playing for an hour on my 11.0 non-XL N3DS, and I haven't experienced any random crashes [Exiting to homebrew menu still crashes for me though]. This could easily be one of my favorite homebrews on the 3DS (Right next to Syobon Action, thanks for that by the way! And if you ever want help with volume mixing on the audio, I can lend a hand!)
 
Last edited by CrispyYoshi,
  • Like
Reactions: cearp
Thank you for your feedbacks.

Tiles scaling is a common approxumation peoblem with sf2d. I fixed it on syobon so i think I'll solve it here to.

Also i implemented a very basic sound engine with a lot of limits. But the original game should work the same.

For key mappings I'm testing different solutions. Using gloves with A is one of this.

But the priority now is to fix bugs and midi output.
 
  • Like
Reactions: CrispyYoshi
Pegasus boots can't really be put on A imo, because they don't function the same way they do in ALttP.

In fact the boots themselves don't even exist in ROTH; they do exist in the later games though. But all they do is enable a toggle for a run feature, making Link move faster. It's even a hidden feature in ROTH because I don't believe I've ever seen it mentioned anywhere in-game.

Would be weird to hold A to move faster (or press A to toggle it.)
R would be the best, since it isn't too awkward to hold R while playing imo. Heck, we could try and make it so double-tapping R would toggle it on/off, while simply holding R would temporarily turn it on/off as long as the button is held.
(No idea what the current button mapping is tbh, what's everything set to right now?)

Also, I would like to have feedback on the touched-up translation. Maybe somebody found something that sounded odd or something.
The one thing I'm not entirely satisfied with is shopkeeper dialogues, I kinda want to go back make it closer to what shopkeepers say in ALttP. Ideally, I would want to have all game dialogue as consistent as possible with ALttP, but for a lot of things, I just didn't really have the motivation to play ALttP to look at the dialogue. I could do it sometime later though, because I kinda feel like playing it now.
Edit: turns out the shops in ALttP don't even really have dialog when you want to buy something, you just walk up to it and press A (or R in the GBA version) and you get the item for the amount of money displayed. The only dialogue is if you don't have enough rupees or can't carry any more of it.

I want to keep things consistent with it because it's meant to be a sequel to ALttP, so keeping dialogue and game text in general similar to ALttP works best. I also got rid of the excessive use of punctuation!!! at the end of every sentence!!! because imo, it didn't look very professional. Another thing was to make it say things like, "press the B button" rather than just "press B", the former being more in-line with Nintendo's standards.
 
Last edited by ,
Pegasus boots can't really be put on A imo, because they don't function the same way they do in ALttP.

In fact the boots themselves don't even exist in ROTH; they do exist in the later games though. But all they do is enable a toggle for a run feature, making Link move faster. It's even a hidden feature in ROTH because I don't believe I've ever seen it mentioned anywhere in-game.

Would be weird to hold A to move faster (or press A to toggle it.)
R would be the best, since it isn't too awkward to hold R while playing imo. Heck, we could try and make it so double-tapping R would toggle it on/off, while simply holding R would temporarily turn it on/off as long as the button is held.
(No idea what the current button mapping is tbh, what's everything set to right now?)

Also, I would like to have feedback on the touched-up translation. Maybe somebody found something that sounded odd or something.
The one thing I'm not entirely satisfied with is shopkeeper dialogues, I kinda want to go back make it closer to what shopkeepers say in ALttP. Ideally, I would want to have all game dialogue as consistent as possible with ALttP, but for a lot of things, I just didn't really have the motivation to play ALttP to look at the dialogue. I could do it sometime later though, because I kinda feel like playing it now.
Edit: turns out the shops in ALttP don't even really have dialog when you want to buy something, you just walk up to it and press A (or R in the GBA version) and you get the item for the amount of money displayed. The only dialogue is if you don't have enough rupees or can't carry any more of it.

I want to keep things consistent with it because it's meant to be a sequel to ALttP, so keeping dialogue and game text in general similar to ALttP works best. I also got rid of the excessive use of punctuation!!! at the end of every sentence!!! because imo, it didn't look very professional. Another thing was to make it say things like, "press the B button" rather than just "press B", the former being more in-line with Nintendo's standards.
Can you post the entire translation somewhere here? (If not, can you send it to me so I can take a look at it?)

I can't speak French natively, but I can try touching up on some of the English grammar.
 
It's within those two source files.

In ROTH this wasn't much of a problem, but in the translation of OLB, sometimes there were lines of text that were so badly translated that the meaning was completely wrong (like a line of text that ended up meaning the exact opposite of what was intended) so being able to read and speak French is kind of a necessity for actually touching up the translation, but I went through all of this, so it's just a matter of looking at grammar and wording right now, really.

I've done OLB last time as well, and I'm going to start working on the last two right now. tbh I'm not entirely sure if their translation sucked as much as the first two, they may have gotten a better translator since. But I'll see.

Oh yeah, while we're at it, I think nop is probably going to wait until the ROTH port is finalized before moving on to the next ones, but I might as well have other people look back over the translation for them right now so that we have a good one for when it'll be needed.

btw I believe that the *'s in the text is for line breaks, so if you're going to change some text around a bit, I'd recommend not touching those.


(Man there is A LOT of text in Time to Triumph.)

Also uh, I just realized that the semicolon character isn't actually in the character map for the game, but I've used it several times.
If you're gonna be going back through the translation, could you replace all the instances of semicolons and replace them with something else? Long as it keeps the same meaning, it should be fine.

I'll keep in mind not to use it in the future, but since someone else is already going back through the translation, might as well get them to do it for me... :p
 

Attachments

Last edited by ,
I'm uploading the code to github so if someoune want to help with the translations can direcly push a commint.

It would be great if someone complete the italian traslation (now there is the english text as placeholder).
 
  • Like
Reactions: cearp
Yeah, I was thinking about this before I just got on, that it'd be a whole lot easier to just have the code on github and let people push commit for translation haha.

Anyway I thought you'd be the one doing the Italian translation :o
 
Last edited by ,
Yeah, I was thinking about this before I just got on, that it'd be a whole lot easier to just have the code on github and let people push commit for translation haha.

Anyway I thought you'd be the one doing the Italian translation :o

If no one do it, I'll do. But there are a lot of italian following the 3ds scene on gbatemp that could help.
 
  • Like
Reactions: Deleted-236924
Update:

- added background music
- fixed tiles rendering in widescreen mode

After fixing the midi synt I wasn't satisfied by the sound quality, so converted all the midi in raw PCM wave file (at 8000k to save space, the size is about the same of a mp3 at the original frequency, but esier to handle). Everything works fine but the build size raised at 50Mb.

Also tested the "use gloves" on A key, it worKs but there is the side effect that after reading an informatin panel Link destroies it. I dont like it so "Using gloves" remains mapped to the Y key.

Updated code is on github.

When I fix the crashes that happens after reloading a saved game, I'll release build 0.3.
 
Why not make it the R button for picking up objects when you have the gloves? It doesn't seem like that button is used for anything yet, and it would make a lot of sense because the GBA version of ALttP uses the R button for the same purpose (Minish Cap does it too.)

Then the map could be mapped (lol) to X like in the SNES version of ALttP.
 
Last edited by ,
Yeah I missed that when I was reading the list of controls, my bad.

Couldn't we still do it like this, though?
R to pick up objects when you have the gloves (instead of X)
X to open the map when you have it (instead of L+Y)
Circle Pad to look around (instead of R + D-Pad), because I'm pretty sure Circle Pad and D-Pad can be mapped to different functions.

Do you have a way to detect double-tap for key presses? Hold L is being used for the run function, but if possible, we could make it so double-tapping L toggles it on and off, rather than having to hold L all the time. :p

I apologize if I seem pushy, but I really want the control scheme to be as close to ALttP as possible, and likely other people feel the same way. I mean, of course, this is your homebrew, so you can do it however you want, but with it being based on ALttP, it would be a lot more intuitive if the control scheme was similar to the official games.
 
Last edited by ,
  • Like
Reactions: cearp
I'm very busy with my work so this project is halted for at least another week.

But I found the cause of the crashes (it's the same cause for the random crash and the one happening reloading a savegame). The memory allocated for images is not properly released, so when the linear memory is over, the program crashes.

This seems to be a problem in the original code, no of my port. On a PC probably a crash doesn't happen because of the large amount of ram usually available, but on a 3ds it's very limited.

Fixing this problem is not easy because there are memory pointers used as global variables, with memory allocated from a class and released from others. Overall the code is not bad at all, but on this topic it's a very ugly example of using c++ object programming.

I think i can fix it when I have more time. I'll trace on a file every linear memory allocation and the related image file name, and I'll trace the deallocated memory pointers too. Thel I'll check allocation and deallocation, so I should be able to find which image adata is not deallocated. This will simplify the identification of the point in the code to fix.
 
Last edited by nop90,
Released v0.3

The only change is the added background music, but I fixed a lot bugs (both mine and from the original sources).

Adding the background music increased the file size to about 55MB (both CIA and 3DSX) so the zip package is now very big for an homebrew.

Please let me know if someone has other random crashes.
 
Last edited by nop90,
I have recently updated to the latest release. So far, I am liking the addition of that background music. However, I have noticed a strange bug when battling Agahnim (Level 4 boss). The game consistently crashes every time he fires his lightning bolts before I have the chance to land one final attack. Specifically, the game seems to crash as he is firing the fourth lightning bolt in this sequence.

I'm not sure how much this additional information will help, but I am using the CIA version of the game on an old 3DS with 11.0 emuNAND.
 
Probably there are other memory leak in the code. I'll check the code again.

Could you provide me a savagame of a point close to the crash?
 

Site & Scene News

Popular threads in this forum