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

bogaabogaa

I did load a lot of empty bytes to my SRAM page so CPU $7f2d-7ffe is free SRAM. This is at PRG $779d. I also made my patch.txt more readable now. If you have question about it just ask. Documenting things is not my strong side yet.
CV ROM DiscordServer
https://discord.gg/PvFgxRg

Vanya

Quote from: ShadowOne333 on March 31, 2020, 09:55:32 PM
You mean the originals or LA ones?

LA ones. They look like weird two-legged fleas.

ShadowOne333

#202
Quote from: The3Dude on April 01, 2020, 12:04:53 PM
Oh my gosh, I totally still need to check that!

I let you know what I find later, Shadow and bogaa.

Please do let us know how it goes! :D
The more RAM addresses we can cross out, the better!
Once those addresses are confirmed to be unused, I could update the Data Crystal entry myself and properly add those as "Unused"

Quote from: bogaabogaa on April 01, 2020, 01:16:11 PM
I did load a lot of empty bytes to my SRAM page so CPU $7f2d-7ffe is free SRAM. This is at PRG $779d. I also made my patch.txt more readable now. If you have question about it just ask. Documenting things is not my strong side yet.

Oh wow, so basically with your hack, we now have around $D0 (208) free bytes for SRAM?
Sounds like more than enough for anything that might be required for this hack. That's amazing.

Just some questions though.
For starters, are the addresses in your code PRG1 or PRG0?
I am using PRG0 as the base ROM for this hack, since that's what the disassembly is based off.
Another thing, is that in the patch.txt file, I assume that since I won't be using the Heart Piece stuff, I will not need the following code, correct?

////////////////////////////////////////////////////////////////////
//Make the HeartContainer a Quater of a Heart

/ inc $0677 ;increase value in SRAM
/ lda #$04    ;loade 04 (MaxHeartFragments)
/ jmp $7ee1 ;Jump to free space
 
/ cmp $0677      ;compare
/ beq $06        ;branch if equal to adc
/ lda $066f
/ jmp $73b5      ;not equal jump to store
/ lda #$00      ;reset counter
/ sta $0677   
/ clc ;reset carry
/ lda $066f      ;add heart container and health
/ cmp #$f0 ;Overflow check
/ bcs $02
/ adc #$11
/ JMP $73B5      ;jump to store

//Hijack Here
put 6c74 EE7706A9044CE17E

//NewSpace
put 7751 CD7706F006AD6F064CB573A9008D770618AD6F06C9F0B00269114CB573


I would only need what starts at Visual and forth, right?
I might need to replace the code for the hearts with a custom one for Arrows.

Last, in this part of the code:

/"erase old table" (+ update half heart routine)
put 6507 AD77 068D 2E03 A021 AD64 0660 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Does that mean that all the addresses $6507, $AD77, $068D, $2E03, $A021, $AD64 and $0660 should be replaced with 29 entries of $FF?

Quote from: Vanya on April 01, 2020, 03:07:07 PM
LA ones. They look like weird two-legged fleas.

Yeah I'm not fond of the LA Tektites neither.
The only other ones that could be used are the Water Tektite sprites from LA/OoS/OoA, which look like this:



It's the only other official sprite for Tektites in 8bit 2D, other than Zelda 2.

Vanya

The Water tektite would make a good base for a new sprite.
It would at least look like a proper creature instead of that thing.

Pineapplefish

ShadowOne333 and gang, you're all doing terrific work. I especially like the idea of keeping the original sprites and fixing them slightly.

I just want to share the following: the magical clock item that drops occasionally seems a little OP to me. One can just relax and take their sweet time on the current screen when they grab one. Would it be possible to introduce a timed element to it? Such as when you grab one you have a specific amount of time to deal with the current enemies before they unfreeze.

Just thought I'd throw this out there. All in all, it's a pretty minor thing.

Mandrasx

#205
Has anyone noticed that either the Link sprite or sword sprite y-position is offset by 2 when entering dungeons? This even occurs in the vanilla game, but is less noticeable because the horizontal sword sprite is more centered with Link's mid-line.

This makes the lower position with the LAGFX kind of problematic, as the sword is practically emerging from his feet in dungeons. I was able to get a better-looking result by moving the sword up 2 pixels (making it even with his hand when in dungeons and slightly above when outside). I don't know if there is any other way to fix this?


The3Dude

Quote from: Mandrasx on April 02, 2020, 04:12:18 PM
Has anyone noticed that either the Link sprite or sword sprite y-position is offset by 2 when entering dungeons? This even occurs in the vanilla game, but is less noticeable because the horizontal sword sprite is more centered with Link's mid-line.

This makes the lower position with the LAGFX kind of problematic, as the sword is practically emerging from his feet in dungeons. I was able to get a better-looking result by moving the sword up 2 pixels (making it even with his hand when in dungeons and slightly above when outside). I don't know if there is any other way to fix this?





Yes! Oh my gosh I thought I was the only one who noticed :o.
~The3Dude~

lastdual

Yeah, that always bothered me. In the personal hack I use, I edited the position a bit to make it less noticeable, though not really fixed:


Mandrasx

There is a bug with the item select. There are two ways to trigger it:

When handing the letter to the old woman, and before you choose the blue or red potion, if you start cycling items with select you will go out of the intended range and start getting heart pieces/triforce/random stuff. If you try to use them the game crashes.

The second cause is whenever you completely consume a red/blue potion and the item is removed from your inventory. The letter comes back in its place, and using select to go past the letter will take you into the invalid key items/random tiles (compass, etc). You CAN get it back to a valid inventory item by pausing and cycling through until the cursor lands on something in your inventory than unpausing.

You can get it back to normal for good by going back to the old woman and buying a potion (removing the letter again), but you need to keep at least the blue version in your inventory to prevent it from happening again.




Also Aquamentus is suffering from some kind of disease! I was able to make him green by modifying his colors:
[1A2A0]
13 16 35
1D 2A 36




Colorized Dungeons:
Dungeon 5 is really hard on the eyes; in the asm file it says Level-5 is supposed to be a "Brown" color scheme. I removed the reddish color:
[19807,19878,198B8]
0F 08 17 18
0F 08 2D 18



Dungeon 9 is red too... but you also get the Red Tunic/Ring here and a lot of the enemies are red. There's just a whole lot of red going on in this very long dungeon. Maybe Death Mountain could be the one dungeon that uses the default grey color scheme?

gzip

Quote from: Mandrasx on April 03, 2020, 03:33:33 PM
There is a bug with the item select. There are two ways to trigger it...

I've fixed this issue in my hack, A New Light. It's my first attempt at assembly though (directly in hex as well), so it could probably be coded better. It still might be helpful. The addresses are the same since I used the redux code as a start (thanks!). There's still one issue in my code that if you have the letter and no boomerang it won't cycle (this doesn't happen in my hack since you start out with the boomerang).

ShadowOne333

#210
Oh damn guys, I disappear for a couple days and all hell breaks loose :P
Okay let me address the recent posts:

Quote from: Pineapplefish on April 02, 2020, 11:29:30 AM
ShadowOne333 and gang, you're all doing terrific work. I especially like the idea of keeping the original sprites and fixing them slightly.

I just want to share the following: the magical clock item that drops occasionally seems a little OP to me. One can just relax and take their sweet time on the current screen when they grab one. Would it be possible to introduce a timed element to it? Such as when you grab one you have a specific amount of time to deal with the current enemies before they unfreeze.

Just thought I'd throw this out there. All in all, it's a pretty minor thing.

I'm still thinking about what to do with the clock.
I always thought the clock was really out of place in Zelda 1 tbh.
I might lower its drop rate a bit when the Arrow drops for enemies are implemented, so it becomes a rare item instead of a common one, but I am still unsure if that's how I will address the Clock stuff alongside the Arrows.

Quote from: Mandrasx on April 02, 2020, 04:12:18 PM
Has anyone noticed that either the Link sprite or sword sprite y-position is offset by 2 when entering dungeons? This even occurs in the vanilla game, but is less noticeable because the horizontal sword sprite is more centered with Link's mid-line.

This makes the lower position with the LAGFX kind of problematic, as the sword is practically emerging from his feet in dungeons. I was able to get a better-looking result by moving the sword up 2 pixels (making it even with his hand when in dungeons and slightly above when outside). I don't know if there is any other way to fix this?



Ah yet another oversight when implementing the LA graphics.
I have already modified the graphics for the sword, so they should now be like in your fix :)

Quote from: Mandrasx on April 03, 2020, 03:33:33 PM
There is a bug with the item select. There are two ways to trigger it:

When handing the letter to the old woman, and before you choose the blue or red potion, if you start cycling items with select you will go out of the intended range and start getting heart pieces/triforce/random stuff. If you try to use them the game crashes.

The second cause is whenever you completely consume a red/blue potion and the item is removed from your inventory. The letter comes back in its place, and using select to go past the letter will take you into the invalid key items/random tiles (compass, etc). You CAN get it back to a valid inventory item by pausing and cycling through until the cursor lands on something in your inventory than unpausing.

You can get it back to normal for good by going back to the old woman and buying a potion (removing the letter again), but you need to keep at least the blue version in your inventory to prevent it from happening again.




Also Aquamentus is suffering from some kind of disease! I was able to make him green by modifying his colors:
[1A2A0]
13 16 35
1D 2A 36




Colorized Dungeons:
Dungeon 5 is really hard on the eyes; in the asm file it says Level-5 is supposed to be a "Brown" color scheme. I removed the reddish color:
[19807,19878,198B8]
0F 08 17 18
0F 08 2D 18



Dungeon 9 is red too... but you also get the Red Tunic/Ring here and a lot of the enemies are red. There's just a whole lot of red going on in this very long dungeon. Maybe Death Mountain could be the one dungeon that uses the default grey color scheme?

Oh boy, some people have already mentioned the bug with the Select button doing that, but I haven't found a way to completely fix it yet :/
It seems to trigger ONLY when you have the Old Letter in the inventory, if you use the Red/Blue potions and it reverts back to the Old letter, the same thing will happen.
So it seems the Old Letter is the one at fault here.
I tried adding other items, key items, etc., and it only seemed to bork when you have the Old letter, so that one should be the culprit of the issue.

As for the other two issues:

1) Aquamentus' palette is modified inside the "redux.asm" file at the VERY end of it, simply comment it and you will get the default green palette for him.
2) The brown dungeon palette I agree in, but it can be easily changed inside the Recoloured Dungeons.asm file. I will still leave it as-is, since the colours are based off from the Modern Classic hack.

Quote from: gzip on April 04, 2020, 02:46:01 AM
I've fixed this issue in my hack, A New Light. It's my first attempt at assembly though (directly in hex as well), so it could probably be coded better. It still might be helpful. The addresses are the same since I used the redux code as a start (thanks!). There's still one issue in my code that if you have the letter and no boomerang it won't cycle (this doesn't happen in my hack since you start out with the boomerang).

Oh so you managed to fix the issue with the Old Letter?
Would you please share what changes you made to get that fixed?
That would greatly help to finally have this bug fixed, since it has eluded me for quite some time now.
Also, the issue with the items not cycling when you only have the Old letter and no boomerang is exclusive to your fix, or is it also in the original implementation from Redux?
If the latter, then I can cycle with only the Old letter in the inventory, but all the items are the bugged ones sadly.

Just went ahead and implemented your custom fix and credited you for it :P
Just one other thing, would you mind sharing how you modified the speed in which the waterfall moves in the title screen? I'm interested in peeking at it to see what speeds can be used for it.

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

Out of that...
Thanks to a lot of back-and-forth discussion with user @bogaabogaa, there's some neat stuff in the future for Zelda Redux :)

Take a peek!


This is right now WIP, and the arrows code is not finished (we still have to hijack the code that subtracts rupees and move it to the arrow counter, same for adding arrow numbers to the counter when purchasing the item, and also adding the enemy drop for Arrows and make that drop increase the arrow counter too), but it is coming along nicely!

gzip

Quote from: ShadowOne333 on April 05, 2020, 03:27:54 PM
Oh so you managed to fix the issue with the Old Letter?
Would you please share what changes you made to get that fixed?
That would greatly help to finally have this bug fixed, since it has eluded me for quite some time now.

Here's the code. What it does is it checks for the rod if it has just cycled from the letter. If the rod is there then it selects it, otherwise it selects the boomerang. If there is no boomerang then it just stays on the letter (no harm, no foul, no crash). Now you could check for the boomerang, and then for bombs, and then for the candle, etc. but that's pretty messy, especially when you have the boomerang for most of the game. I have not dug into the JSR much to see why it chokes to begin with but there could be a more elegant solution hiding in there.

05:BFC0:
A9 01     LDA #$01
AC 56 06  LDY $0656
20 C8 B7  JSR $B7C8
AC 56 06  LDY $0656 ; load current item into Y
C0 10     CPY #$10  ; compare current item to 16 (letter is 15)
10 03     BPL $03   ; branch if greater than or equal to 16
4C E6 BF  JMP $BFE6 ; skip to return
AC 5F 06  LDY $0655 ; branch here to load rod status into Y
C0 01     CPY #$01  ; check if link has rod (1)
DO 08     BNE $08   ; branch to boomerang if no rod (0)
A9 0B     LDA #$0B  ; otherwise set to rod
8D 56 06  STA $0656 ; "
4C E6 BF  JMP $BFE6 ; skip to return
A9 00     LDA #$00  ; branch here to set to boomerang
8D 56 06  STA $0656 ; "
60        RTS       ; branch here to return

gzip

Quote from: ShadowOne333 on April 05, 2020, 03:27:54 PM
Just went ahead and implemented your custom fix and credited you for it :P
Just one other thing, would you mind sharing how you modified the speed in which the waterfall moves in the title screen? I'm interested in peeking at it to see what speeds can be used for it.

Looks like you beat the moderator to approval of my reply. :laugh:

There's no real control for the waterfall speed (at least the way I did it). I just NOP'd 3 bytes starting at $9905:

-00009900  fa 20 43 99 60 fe 20 04  fe 20 04 bd 20 04 c9 e3
+00009900  fa 20 43 99 60 ea ea ea  fe 20 04 bd 20 04 c9 e3

ShadowOne333

Quote from: gzip on April 05, 2020, 08:42:23 PM
Looks like you beat the moderator to approval of my reply. :laugh:

There's no real control for the waterfall speed (at least the way I did it). I just NOP'd 3 bytes starting at $9905:

-00009900  fa 20 43 99 60 fe 20 04  fe 20 04 bd 20 04 c9 e3
+00009900  fa 20 43 99 60 ea ea ea  fe 20 04 bd 20 04 c9 e3


Hahah yeah looks like I did :P
It seems those two INC opcode are what tells the game how many times to speed up the animation.
Went ahead and implemented the change, thanks!

lexluthermiester

#214
Quote from: ShadowOne333 on April 05, 2020, 03:27:54 PM
Out of that...
Thanks to a lot of back-and-forth discussion with user @bogaabogaa, there's some neat stuff in the future for Zelda Redux :)

Take a peek!


This is right now WIP, and the arrows code is not finished (we still have to hijack the code that subtracts rupees and move it to the arrow counter, same for adding arrow numbers to the counter when purchasing the item, and also adding the enemy drop for Arrows and make that drop increase the arrow counter too), but it is coming along nicely!
I think it all looks good!

ShadowOne333

Thanks to the incredible work by user @bogaabogaa, look at what's in store for Zelda Redux in this latest beta patch:



Can you spot anything special? ;D

After a lot of hardwork by Bogaa, and with a lot of back and forth between him and me, he managed to implement not only a separate arrows from the rupee counter hack, but also a fully working 999 rupees hack as well!

I cannot stress enough just how incredible Bogaa's work in the implementation of these two hacks, which seemed like just a dream for this project if I were to tackle it alone.

Huge, but HUGE shotouts to Bogaa for this work!

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

Now to get into details:


  • The rupee counter can now go up to 999 rupees
  • The new RAM addresses for the rupee counter are $067A for tenths and units in direct decimal format, and $067B for the hundredths number (in direct decimal format)
  • A new, and custom, arrow counter has been added under the rupee counter
  • The new RAM address for the arrow counter is $0677
  • Enemies can now drop arrows, giving you 5 arrows per drop
  • You can't use any arrows until you get the bow in your inventory
  • Shops now give you up to 60 arrows in one purchase
  • Arrows don't have max cap yet, so at the moment they cap at 255 as max (this will be changed later on)
  • What's planned for the arrow counter, is make it so that by default you can get a maximum of 30 arrows, and once you get the Silver Arrows, the max amount goes up to 60 arrows
  • Saving and loading the game should also save the arrow and rupee counters to what you last had when you saved

With that said, I suggest everyone who wants to try out these two milestones to get them from here:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/tree/09850917993c111297a3722d0e7cfee76357b5ef/patches

And also, PLEASE avoid using any of the optional patches alongside this hack for debugging/feedback purposes.
We need as much feedback and bug reports regarding the 999 rupee and arrow counters to be able to pinpoint the issues.
As far as we've tested, NPC rupee sustractions, NPC money givers and shops should all work for the Arrow counter, and the 999 rupee should also work normally.

The only thing left to do for the arrow counter is to give it a max cap of 30 arrows on a new game, and once you get the Silver arrows, the cap should go up to 60 arrows.


Please, do let me know if you guys find anything funny regarding either the 999 rupee counter, or the arrow counter.

Vanya

Wow! Things are looking great over here.
With these changes alone, I feel like it's going to be worth it to me to play Zelda again.
I can't wait to see how this turns out!

EthansDreamLand

Quote from: Vanya on April 15, 2020, 02:37:12 AM
Wow! Things are looking great over here.
With these changes alone, I feel like it's going to be worth it to me to play Zelda again.
I can't wait to see how this turns out!

Same here! Zelda 1 kind of feels a bit outdated gameplay wise for me to enjoy more, but I feel like this hack will do just that. I can't wait for the Zelda 1 & 2 Redux hacks to come out!

ifightdragons

Same here. These might just be the two most important NES Zelda hacks ever made. Shadow and the others have done an incredible job.

The only thing really missing now is making it so that Exp. is regained even at Game Over in Zelda 2. It really needs it, to avoid being a grind.

Pleiades7

Quote from: ShadowOne333 link=topic=29403.msg392594#msg392594 date=1586821386Please, do let me know if you guys find anything
/quote]

Hey there...

I saw there is another similar project.
https://zeldamasterpieceedition.tumblr.com

I notice that hack has updated some of the graphics! Some of them are great, other choices are meh.

But if you were going to do some optional patches that update the graphics (i.e. like some of the monsters, or environment, etc.) then maybe that modder would let you borrow some of his sprite work, to save you time, etc.

Thanx again for your hard work! Can't wait until the final release.