News:

11 March 2016 - Forum Rules

Main Menu

Zelda 1 Redux / The Legend of Zelda Redux

Started by ShadowOne333, October 10, 2019, 12:04:03 PM

Previous topic - Next topic

Thirteen 1355

Gameplay is king, but GOOD gameplay is above, and some elements in Zelda 1 aren't exactly good (though I just hated the game in general). Though some level/world elements are worked around obnoxious stuff like the weak sword stab, some elements, like the Rupee count, don't really impact how levels are built.

There's potential to improve upon Zelda 1's gameplay and though it's all up to the creators of this patch, I don't feel the 'gameplay is king' holds much value in a day and age where games like Zelda 1 get drowned beneath the rest because of annoying gameplay elements.
Helicoptering about till I find some ROM hacking treasure.

ShadowOne333

#61
I just disappeared for the weekend and came back to a lot of argument about 255-999 rupees. :laugh:

-------------------------------------------------------------------------------------

Quote from: lexluthermiester on November 03, 2019, 01:36:12 AM
IIRC, it's already be done on other LOZ1 projects. I think it just a matter of shifting values, but that's only a guess.
Do you happen to know what other Zelda 1 hacks implement 999 rupees?

-------------------------------------------------------------------------------------

The reason why I want to implement 999 rupees is not for consistency sake with the rest of the series (nor canon).
A lot of Zelda titles are inconsistent with the max amount of rupees.
Just see OoT/MM and WW/TP. Max in N64 was 500, and in GC max was in the thousands.

The main reason reason is because it's an obnoxious limit just set because devs didn't want to bother with two byte calculations. That's just it.
It comes out as an obnoxious limitation when you actually hit 255, and you can't gather any more rupees due to that.
I doubt limiting the player to only 255 rupees when there's an item that costs 250 rupees is anything but "balanced".

The way I play Zelda 1 is going dungeon to dungeon directly while gathering the most rupees I can to purchase the most I can in one go. Not being able to purchase two plot-important items at once, and being able to only purchase one before having to grind again because the counter doesn't go past 255 is just plain obnoxious and not a good design.
Sure, the items themselves outside of the ring, shield, candle and arrows are not as expensive, but so are a lot of the items in many more Zelda titles where the highest doesn't go above the halfway point of the rupee maximum (OoT with the tunics is a clear example), while still leaving room for other items to be purchased.

Say you want to purchase the blue ring, a magic shield and some bombs/arrows?
Well, you can only get one, or the two other, before having to grind all the way up to 100+ rupees just to get another go. That's not a good thing. What if you can't go into the next dungeon because you don't have enough money to buy the required item? You will have to grind for almost hours to just get going with the game again just because all those rupees you found while being at 255 already didn't add up to the counter, so those hours of extra grinding could have been avoided altogether with rupees/grinding you are already doing while playing, no need to do the same in a more monotonous manner.

The main focus of this hack is to improve on those things that people may find annoying/obnoxious from the original, and the rupee counter is one I also have my gripes about.
Those things that people consider obnoxious that can be modified for a better overall experience of the game.

-------------------------------------------------------------------------------------

@IcePenguin I think the game already sells arrows in multiple locations (4 locations per quest).
I just double checked, and these 4 locations always sell you arrows for 80 rupees regardless if you already have the arrow item or not, so this can be exploited for adding a proper arrow item into the game, though we might need to add a proper set value for the game to give once you purchase arrows on shops.
https://www.zeldadungeon.net/wiki/Item_Shop

Aside from that, perhaps giving a proper set value for how many arrows you get when you purchase them might be good too.
I'm not sure if 20-30 is a good set value for arrows.

The counter for arrows can fit in between the rupee and keys one, or maybe even rework the order.
I already made a custom arrow icon for the HUD, so I just need to figure out the PPU transfers to make it show up properly, and of course, the actual code to separate the rupee counter from arrows, and the code to make a proper arrow counter :^}

-------------------------------------------------------------------------------------

I still haven't found the collision data for the cracked walls on the overworld.
However, I did do some tests and found some interesting stuff:

By changing the value at 0x16987 (D8):

  • Values below $70 are walk-through
  • $70-$73 (ladder tiles) makes it so that you enter the cave immediately without even needing to blow the tile up
  • $86-$89 (cascade tiles) do make the wall solid
  • $8A (and onwards) seem to be mostly solid
So it seems like the game does have what tile values do what in a hardcoded manner, since putting the ladder tiles automatically makes Link enter the cave without even bombing it.
Now the thing is trying to find exacty what routine is in charge of defining what tiles are solid, which can be walked through, and which can be entered, and modify said routine (or add an exception) for tiles $54-$57.

I've also been trying to flip the hearts seen in the File Select screen, so that the starting hearts appear on the top row and the rest follow suit down below, like in every subsequent Zelda title, but I haven't found how to do so yet.
I did find the routines that seem to handle that though:

// Flip heart rows in the File Select Screen:
Found the routines, now I just gotta figure out how to invert the heart printing
A4C6: B9 54 A2  LDA $A254,Y @ $A258 = #$24
A264: 21 09 11 24 24 24 24 24 24 24 24 62 00 00 00 00 00 00 00 00 // PPU transfer for Name and hearts (top row)
A520: B9 74 A2  LDA $A274,Y @ $A278 = #$24
A278: 21 12 08 00 00 00 00 00 00 00 00 FF // PPU transfer for Hearts (bottom row)
A283: 21 89 03 24 24 01 // Counter for deaths

pleasejust

Yes, annoying elements are bad and should be improve upon. re: the rupee limit, what I'm saying is that it seems like the way it is now is the way it's intended to work and it works well. It's not a huge deal, but I just want to make my position clear. It turns out that needing to have near the max capacity of rupees in order to get an item is ok and works from a gameplay standpoint. Read Trax's comment. It makes sense. It forces the user to have to do some work and not just accumulate basically all the money you're going to need during regular gameplay before you even need to get the items. The way the economy is in the original Zelda is the way it's intended to be and is "balanced" so to speak. Maybe not but all I'm saying is ff you want to emulate the way it currently is implemented, make everything more expensive if you're going to go with the 999 limit. That's all. Because the way it is originally implemented is pretty good if you think about it.

wolpak

If you raise the rupee limit, you could also adjust the cost of items. 

IAmCaptPlanet

raised rupees does not hurt. i might actually be able to let the arrows fly willy nilly now

i would switch to the bow when it's needed and switch right back (as to not use up rupees)

i also never use bombs

-i would like a patch that worked like ALBW and have bombs/arrowa and other consumables on a gauge that re-fills (tho i suppose i could just use an infinity cheat)

but anyways i dont see an issue with having 999 rupees

lexluthermiester

Quote from: ShadowOne333 on November 04, 2019, 11:31:48 AM
I just disappeared for the weekend and came back to a lot of argument about 255-999 rupees. :laugh:

Do you happen to know what other Zelda 1 hacks implement 999 rupees?
Turns out, I've only ever seen it because of a GameGenie code. Sorry to have mislead anyone. I knew I'd seen it, it seems not as a part of a mod. Although, if works as a GameGenie code without glitching anything out, it might be something easily coded.

snarfblam

I was pretty sure I had made a 999 rupee mod for z1, but couldn't remember what hack it was for until now.

https://www.romhacking.net/forum/index.php?topic=27012.0


QuoteUser Snarfblam was nice enough to implement it for me, however I'm pretty sure he didn't take care of the save feature, and therefore it's buggy. I need help debugging this before I can finish the game. This is the only major thing holding this mod back.

...oops

ShadowOne333

Quote from: snarfblam on November 05, 2019, 10:11:44 PM
I was pretty sure I had made a 999 rupee mod for z1, but couldn't remember what hack it was for until now.

https://www.romhacking.net/forum/index.php?topic=27012.0


...oops
Hey snarfblam!
Thanks for dropping by!

Reading about it, do you think perhaps the 999 rupees code you made could be shared for this project?

I have done some ram research and I think I have found 4 or so free bytes that could be used for the 999 rupees, and perhaps for the save files as well.

lexluthermiester

#68
Quote from: snarfblam on November 05, 2019, 10:11:44 PM
I was pretty sure I had made a 999 rupee mod for z1, but couldn't remember what hack it was for until now.

https://www.romhacking.net/forum/index.php?topic=27012.0


...oops
Ah there it is! I knew I'd seen it somewhere, just couldn't remember..  :banghead:

Quote from: ShadowOne333 on November 06, 2019, 12:17:24 AM
Hey snarfblam!
Thanks for dropping by!

Reading about it, do you think perhaps the 999 rupees code you made could be shared for this project?

I have done some ram research and I think I have found 4 or so free bytes that could be used for the 999 rupees, and perhaps for the save files as well.
I think by posting it he is implying he'd be ok with such(once it's released).

SimplyDanny

Quote from: ShadowOne333 on October 10, 2019, 12:04:03 PM
Help needed for these points:
  • Remove the 1 Rupee flashing, and make it green if possible
The reason why they had the rupee flash instead of just making it green is because there really isn't a universal, green palette aside from Link's (which doesn't stay green forever due to the tunics; if you want to keep that color the same but still have the tunics be a different color, you'd either have to make another set of sprites on top of him that is just the tunic assigned to a different palette (which is one Hell of a nightmare, and even if you can make it work, it can cause scanline issues, i.e. flickering), or have it so that Link's assigned palette is changed to the other 2 universal palettes respectively (in which case, while it would technically work, he'd look hella pale, and his sleeves/hair/boots/etc. would become light blue/yellowish orange respectively, unless you managed to change the universal palettes in a way that could work on Link but still have it be roughly the same as before, which is tricky). Maybe instead of just making it actually green, you could make it look green by having the rupee flash between light blue and yellowish orange at a ridiculous speed, which would cause the colors to "blend" to the human eye and become green (which is what they did with the Hearts in NES Batman, and part of the reason why he's purple instead of black).
Hey there

ShadowOne333

Quote from: DannyPlaysSomeGames on November 11, 2019, 05:45:12 PM
The reason why they had the rupee flash instead of just making it green is because there really isn't a universal, green palette aside from Link's (which doesn't stay green forever due to the tunics; if you want to keep that color the same but still have the tunics be a different color, you'd either have to make another set of sprites on top of him that is just the tunic assigned to a different palette (which is one Hell of a nightmare, and even if you can make it work, it can cause scanline issues, i.e. flickering), or have it so that Link's assigned palette is changed to the other 2 universal palettes respectively (in which case, while it would technically work, he'd look hella pale, and his sleeves/hair/boots/etc. would become light blue/yellowish orange respectively, unless you managed to change the universal palettes in a way that could work on Link but still have it be roughly the same as before, which is tricky). Maybe instead of just making it actually green, you could make it look green by having the rupee flash between light blue and yellowish orange at a ridiculous speed, which would cause the colors to "blend" to the human eye and become green (which is what they did with the Hearts in NES Batman, and part of the reason why he's purple instead of black).
I did some test way back when I started this hack, and I found that the rupee palettes (both orange and blue) are shared with the enemies. So if I change the orange palette to a proper green, all of the orange enemies will be changed to green as well.

I have yet to find a proper solution to this.

The idea of a quick flashing for blending the colors is a good one, but I am unsure as to how feasible or how good it might look. Do you have an image/gif of how Batman does it for the hearts?
If that idea can't be done or doesn't look good and all else fails for this idea, I would still want to remove the 1 rupee flashing and just leave it orange. The 1 rupee flashing thing I feel would be better if it just stays as a solid color instead of switching between orange and blue. That way they have a proper color scheme between 1 rupee and 5 rupees like all the other Zeldas do.

Trax

I say, just use non flashing yellow and call it a day. Now, how to prevent the flashing, I can't pinpoint the place in the code.


IcePenguin

Quote from: DannyPlaysSomeGames on November 11, 2019, 05:45:12 PM
Maybe instead of just making it actually green, you could make it look green by having the rupee flash between light blue and yellowish orange at a ridiculous speed, which would cause the colors to "blend" to the human eye and become green (which is what they did with the Hearts in NES Batman, and part of the reason why he's purple instead of black).

That's really cool!  Never knew that about the Batman game.  It'd be interesting to see the results of that in Zelda, and since the rupee flashes between yellow and blue already, all that needs to be done if find the flashing speed data.

ShadowOne333

#74
Found an image of the heart flash in Batman:


I am doubtful about increasing the speed of the flashing due to photosensitive people.
I am unaware how much could that affect them, and one of my aims is to make the game accessible to as many people as possible, and photosensitive flash reduction is one thing I've been implementing in my hacks to help alleviate this.

Quote from: Trax on November 11, 2019, 06:18:28 PM
I say, just use non flashing yellow and call it a day. Now, how to prevent the flashing, I can't pinpoint the place in the code.

Gotta say I agree with this, I'd much rather prefer to just prevent the flashing and leave the 1 rupee color as a static orange one. Maybe I could release an optional patch that changes the enemies/rupees to green if people so desire, but I will not have it by default.

Still though, I have yet to find that routine as well.
I tried looking at RAM and see what possible value could be doing the flashing or switching palettes, but couldn't find anything at first glance.
I just hope that said routine does not share its code with the heart flashes, but this being Zelda 1, it's probable it does so. :P

lexluthermiester

Quote from: ShadowOne333 on November 12, 2019, 10:18:32 AM
Gotta say I agree with this, I'd much rather prefer to just prevent the flashing and leave the 1 rupee color as a static orange one. Maybe I could release an optional patch that changes the enemies/rupees to green if people so desire, but I will not have it by default.
You could do Red as a rupee colour. Red would be easy to work into the palette, if I understand how it works correctly.

Trax

Guys, guys, color on screen is additive, therefore mixing blue with yellow goes towards white. You're not mixing paint.

If you want to change the rupee to green, you can, with Link's palette. The problem is, Link's palette changes when he gets the Blue and Red Rings. Therefore, every other things equal, rupees will look green, blue or red, depending on what tunic Link is wearing. If not, then you have 3 other palettes to choose from, and you would have to insert a green color somewhere in one of these palettes, used for enemies.

On the Overworld :

Palette 0 : green, yellow, brown (Link)
Palette 1 : blue, light blue, white
Palette 2 : red, yellow, white
Palette 3 : black, teal, red (Blue Moblins and Zora)

aml435

Quote from: Trax on November 12, 2019, 08:20:41 PM
Guys, guys, color on screen is additive, therefore mixing blue with yellow goes towards white. You're not mixing paint.

If you want to change the rupee to green, you can, with Link's palette. The problem is, Link's palette changes when he gets the Blue and Red Rings. Therefore, every other things equal, rupees will look green, blue or red, depending on what tunic Link is wearing. If not, then you have 3 other palettes to choose from, and you would have to insert a green color somewhere in one of these palettes, used for enemies.

On the Overworld :

Palette 0 : green, yellow, brown (Link)
Palette 1 : blue, light blue, white
Palette 2 : red, yellow, white
Palette 3 : black, teal, red (Blue Moblins and Zora)


The Teal from the Zoras might work well for a slightly darker green rupee.

ShadowOne333

Quote from: Trax on November 12, 2019, 08:20:41 PM
Guys, guys, color on screen is additive, therefore mixing blue with yellow goes towards white. You're not mixing paint.

If you want to change the rupee to green, you can, with Link's palette. The problem is, Link's palette changes when he gets the Blue and Red Rings. Therefore, every other things equal, rupees will look green, blue or red, depending on what tunic Link is wearing. If not, then you have 3 other palettes to choose from, and you would have to insert a green color somewhere in one of these palettes, used for enemies.

On the Overworld :

Palette 0 : green, yellow, brown (Link)
Palette 1 : blue, light blue, white
Palette 2 : red, yellow, white
Palette 3 : black, teal, red (Blue Moblins and Zora)

Yeah unfortunately using Link's palette means that the rupee will also change color depending on what tunic/ring he has.
The same thing happens to the Sword and the Arrow/Bow as well, they change colors depending on what ring Link has.
Given that, I went ahead and made some mockups for the Rupees:

Original (Orange & Blue, used for Orange/Blue enemies as well):


With Link's palette:


With Moblin/Zora's palette:


I'm still on the idea that leaving it as plain orange without flashing is the best way to go about it, but I'm open for suggestions.

The3Dude

Shadow, in regards to changing how the hearts line up in the file select screen. I did line them up in the modern style for my Trial of Courage hack. The thing is though, the death counter is on top of your file name, not on the bottom.



and this right?



I'd have to find where I did that in code though, I haven't hacked Z1 since June-ish.
~The3Dude~