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

jimstrom

I love em, so much beter than the original sprites, i also really like your Ganon, reminds me of my own mockup i did based on his Oracle of Ages/Seasons appearance which in my opinion is his best appearance. Waiting with excitement for Gleeok and Aquamentus!

The3Dude

Mandhandla and Digdogger are looking great! Love the improvements. :thumbsup:
~The3Dude~

jimstrom

I tried giving your Manhandla sprite the Aquamentus palette, and in my opinion it fit's better making it much more plantlike, maybe something to concider, or maybe not.

ShadowOne333

Okay I think I'm done with the Boss sprites for now.
Let me know what you guys think.


The3Dude

Quote from: ShadowOne333 on April 19, 2020, 11:34:25 PM
Okay I think I'm done with the Boss sprites for now.
Let me know what you guys think.



I think it looks great! :D

Now I just can't wait for the patch. ;D
~The3Dude~

ShadowOne333

I just remembered something :P

There's is another somewhat official source for artwork on all the enemies, one which is not listed anywhere and not many know about it.

That other source being...
BS The Legend of Zelda

Here's the sprites for all the enemies used for it in 16bit:


As you can see, most of them follow the official artwork, and Ganon's follows a similar design pattern to that of ALttP.

Still though, I'm quite happy with how the sprites I made turned out in the end compared to the 16bit ones :)

EthansDreamLand

I think your redesigned sprites are cool while sticking true to the original sprites and artwork.

This is more related to the Link's Awakening GFX patch, but what is the sprite used for Ganon? Is it that Moblin King sprite from the Oracle games or is it similar to Ganon from the Oracle series.

mdtauk

Just to throw some more artwork into the conversation...
















AdamDravian

Quote from: ShadowOne333 on April 19, 2020, 11:34:25 PM
Let me know what you guys think.

I think the new bosses look great. Ganon, in particular, is a vast improvement. Excellent work.
Writer of the '80s-themed webcomic Satan Ninja 198X

ShadowOne333

Thank you, guys!
I'll take some time to implement the redesigns into the actual sprites, so maybe next week.

Quote from: EthansDreamLand on April 20, 2020, 03:01:06 AM
I think your redesigned sprites are cool while sticking true to the original sprites and artwork.

This is more related to the Link's Awakening GFX patch, but what is the sprite used for Ganon? Is it that Moblin King sprite from the Oracle games or is it similar to Ganon from the Oracle series.

Iirc it's the Moblin King sprite.
Tbh it looks really off and not good looking to me.

EthansDreamLand

Quote from: ShadowOne333 on April 20, 2020, 05:43:28 PM
Iirc it's the Moblin King sprite.
Tbh it looks really off and not good looking to me.

TBH, I don't think the sprite itself is bad, it's just:

A. There's already a Ganon sprite in the Oracle games.
B. The Moblin King sprite is too goofy to be considered a final boss.

IDK how easy it would be to port the Oracle Ganon sprite, but if it's possible, I would like to see that in a future update for the Link's Awakening GFX patch. But I think the main Redux hack should take more priority though. Also, thanks for letting me know; I have been busy since my Spring college quarter started and I haven't gotten time to do another Zelda 1 playthrough.

pocket

Quote from: ShadowOne333 on April 19, 2020, 11:34:25 PM
Okay I think I'm done with the Boss sprites for now.
Let me know what you guys think.



Wowzers, this is crazy improvement that I didn't think was even possible, Ganon is the most impressive of all i'd say.
Somebody alert me when a user friendly BS Zelda hacking tool is made. I will give my soul to work on a faithful SNES remake of Zelda 1.

Vanya

I have a suggestion for Manhandla.
The original had some pretty severe perspective going on with the body.
This new version does a much better job with that.

In contrast, the thing that still feels off that the original did as well is that the upper maw id just a flipped-over version of the lower one.
That really throws off the perspective. And even the SNES version has the same issue.

My actual suggestion is to either make the two side maws have the same overhead perspective as the other two (probably easier, but also less cool-looking) or give the upper maw some perspective so it makes more sense visually.

ShadowOne333

#253
Quote from: EthansDreamLand on April 21, 2020, 12:58:18 AM
TBH, I don't think the sprite itself is bad, it's just:

A. There's already a Ganon sprite in the Oracle games.
B. The Moblin King sprite is too goofy to be considered a final boss.

IDK how easy it would be to port the Oracle Ganon sprite, but if it's possible, I would like to see that in a future update for the Link's Awakening GFX patch. But I think the main Redux hack should take more priority though. Also, thanks for letting me know; I have been busy since my Spring college quarter started and I haven't gotten time to do another Zelda 1 playthrough.

That's what makes it look bad for me...
The goofiness of it lol
I'll see what can be done about the LA GFX patch for Ganon's sprite specifically. The fact that his sprite is only half of the body and mirrored for all of the 4-5 poses he does will make it hard to accommodate to LA's one.

Quote from: pocket on April 22, 2020, 06:08:30 AM
Wowzers, this is crazy improvement that I didn't think was even possible, Ganon is the most impressive of all i'd say.

Coming from you, that's a great compliment, thanks! :D

Quote from: Vanya on April 22, 2020, 03:45:40 PM
I have a suggestion for Manhandla.
The original had some pretty severe perspective going on with the body.
This new version does a much better job with that.

In contrast, the thing that still feels off that the original did as well is that the upper maw id just a flipped-over version of the lower one.
That really throws off the perspective. And even the SNES version has the same issue.

My actual suggestion is to either make the two side maws have the same overhead perspective as the other two (probably easier, but also less cool-looking) or give the upper maw some perspective so it makes more sense visually.

I think I kind of understand what you mean, but just to be sure, could you make a mockup for reference?
I think the problem with most sprites in Zelda 1 is that they really save up on GFX by mirroring graphics like there's no tomorrow.
The side and up/down jaws I think are mirrored, but I haven't implemented this enemy yet, so I have yet to test in-game.

Actually, I have already implemented all the enemies and NPCs, and most bosses.
I'm only missing Manhandla, Gleeok and Aquamentus, and test everything in-game.


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


The newly redesigned sprites are now implemented!
Please be sure to give the game a full test, also Ganon has a new palette now ;)

The only sprite which I couldn't implement as I desired is Digdogger.
For some weird reason, the Digdogger loads both the big sprite and half of the little digdogger within the same sprite, so I had to make both the little and big Digdoggers share the same eye so they don't look off.

If someone has a better idea on how to implement Digdogger, let me know.
But outside of that, everything else got in quite smoothly :D

Let me know if there's anything wrong!
Oh and I have also updated the OP to reflect the current updates.

pleasejust

#254
Just tried out the latest patches. Redux with optional patches:

-5 bomb upgrade
-rearranged bosses
-recolored dungeons

On initial impressions I noticed that
-seems like the rupee counter is only 2 digits. I thought 999 was the max)
-Arrows do appear as enemy drops right from the start. I thought you mentioned that you're only supposed to be able to buy arrows.
-Bombable walls hint on overworld is still a bit too obvious but it's ok. Would've been nice if it was more subtle, like a couple of odd pixels or something.
-I guess going through breakable wall tiles is a know thing...

Thanks.

ShadowOne333

#255
Quote from: pleasejust on April 23, 2020, 09:30:20 PM
Just tried out the latest patches. Redux with optional patches:

-5 bomb upgrade
-rearranged bosses
-recolored dungeons

On initial impressions I noticed that
-seems like the rupee counter is only 2 digits. I thought 999 was the max)
-Arrows do appear as enemy drops right from the start. I thought you mentioned that you're only supposed to be able to buy arrows.
-Bombable walls hint on overworld is still a bit too obvious but it's ok. Would've been nice if it was more subtle, like a couple of odd pixels or something.
-I guess going through breakable wall tiles is a know thing...

Thanks.


  • All the counters in the game work in the same way.
    Meaning, you won't see 3 digits in the counter until you actually get to that amount of items.
    So it won't show the third digit until you get 100 rupees at least, the same applies to the Arrows and Bombs, although the bombs are limited to a max of 16 I think in vanilla.
  • Arrows are only obtainable in amounts of 5 from enemy drops. The arrows in the shops are a bundle of 30 when purchased, to accommodate for the price tag which I think is a reasonable price for the amount you get. Later on, when Arrow limits are implemented, you will pretty much max out on arrows (without the upgrade) with a simple purchase on shops.
  • You are using the Link's Awakening graphics, right? I had to make the cracked walls sprites based on Link's Awakening myself, since the original LA graphics hack didn't have cracked walls, so if they clash a lot it's because of the original graphics not being suited for actual rock-like tiles. A new custom tile for the overworld walls is needed for it, so it plays well alongside the theme of Zelda 1. Here's an example from LA DX:


  • Yeah that is a known problem. We still haven't figured out what exactly tells the game which tiles are solid and which are not (collision). Once that's figured out, the cracked walls feature should be 100% complete.

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

I modified the cracked wall tiles to be more akin to what the original LA GFX had, please redownload the patch and try again, let me know what you guys think:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/raw/master/patches/optional/Link's%20Awakening%20GFX.ips

stratoform

#256
Dropping by to say that this project so far is beyond amazing! Played this oldie so many times over, and now it feels refreshing. The QoL adjustments and care taken to improve this game for fans is top-notch (finished Dungeon 1 using Redux only, no optional). Looking forward to using the add-ons later.

I'm amazed how the community has come together to give this game such careful love. And the project still has more goals to achieve! Doubt I can help anywhere but obviously all the smart and clever people have done milestones of progress. Thank you everyone. :)


====================
====================
====================


For PRG 0, USA. Likely can be modified to work with Japan too.


Let's you use flute to kill Pols Voice.

; x11C46 = $04:9C36
JSR flute_pols_call



; x13F40 = $04:BF30

flute_pols_call:
JSR $79D0        ; detour code

; -----------------------

LDA $051B        ; flute (0) = unused, exit
BEQ flute_pols_exit

; -----------------------

LDA $28,X        ; timer (0) = start sfx
BNE flute_pols_timer

LDA #$44+$80-1   ; timer = x44 frames
STA $28,X
RTS

; -----------------------

flute_pols_timer:
BMI flute_pols_exit    ; timer (x80+) = playing sfx
                       ; timer (x7F) = done

JSR $FEA6              ; kill all pols

; -----------------------

flute_pols_exit:
RTS


Note that pols don't use timers so it should be okay.



Famicom release
    $04:9C50: AD 18 05  LDA $0518   ; check microphone level
    $04:9C53: C9 14     CMP #$14
    $04:9C55: 90 03     BCC $9C5A

    $04:9C57: 20 90 FE  JSR $FE90   ; kill all Pols


Note that $0518 looks unused in USA. So might be free variable to play with.



USA PRG 0
$04:9C31: A9 FE     LDA #$FE
$04:9C33: 9D B2 04  STA $04B2,X
$04:9C36: 20 D0 79  JSR $79D0
==> insert new code here
$04:9C39: 60        RTS



================
================
================



05:B06A: B9 54 B0  LDA $B054,Y @ $B058 = #$89  (overworld)
05:B06D: 9D 46 03  STA $0346,X @ $034A = #$89

05:B06A: B9 54 B0  LDA $B054,Y @ $B05D = #$78  (dungeon)
05:B06D: 9D 46 03  STA $0346,X @ $034A = #$78


5-byte mystery table (B054-B058, B059-B05D)
05:B070: C8        INY
05:B071: E8        INX
05:B072: E0 05     CPX #$05
05:B074: D0 F4     BNE $B06A
05:B076: 60        RTS -----------------------------------------



$07:F119: CD 4A 03  CMP $034A = #$89  ; collision tile (range check)
$07:F11C: 90 30     BCC $F14E         ; bcc = always walkable


Some information on collision tiles. The cracked dungeon tiles maybe work because they are hybrid (DE 58 | DE 59). Overworld tiles as we know are problem (54-57).


================
================
================


How to flip heart rows. Make these hex changes.

; write cursor
05:AC71  [x16C81] = 82 08
05:AC7C  [x16C8C] = A2 08

; in-game vram ptrs
[x671B] = 69 12
[x6728] = 69 07



Original

         $6E97: A2 00     LDX #$00                                     A:05 X:08 Y:0C S:F8 P:nvUBdIzC
         $6E99: 98        TYA                                          A:05 X:00 Y:0C S:F8 P:nvUBdIZC
         $6E9A: 18        CLC                                          A:0C X:00 Y:0C S:F8 P:nvUBdIzC
         $6E9B: 69 07     ADC #$07                                     A:0C X:00 Y:0C S:F8 P:nvUBdIzc
         $6E9D: 85 0B     STA $0B = #$65                               A:13 X:00 Y:0C S:F8 P:nvUBdIzc

         $6EA5: A5 0D     LDA $0D = #$0C                               A:F2 X:08 Y:FF S:F8 P:nvUBdIZC
         $6EA7: 18        CLC                                          A:0C X:08 Y:FF S:F8 P:nvUBdIzC
         $6EA8: 69 12     ADC #$12                                     A:0C X:08 Y:FF S:F8 P:nvUBdIzc
         $6EAA: 85 0B     STA $0B = #$0B                               A:1E X:08 Y:FF S:F8 P:nvUBdIzc


05:B8A2: B9 70 AC  LDA $AC70,Y @ $AC71 = #$A2
>05:B8A5: 99 02 03  STA $0302,Y @ $0303 = #$A2



Reload game for changes to show. RAM looks persistent.

Or hack RAM to fix savestates
x6E9C = 12
x6EA9 = 07


================
================
================


You may want to update the OP as 999 rupees looks finished?


================
================
================


To move game over text closer,

x1ACE5 = AC 08  ; continue text pos
x1ACF0 = EC 04  ; save text pos
x14AF5 = 50 27 37 47  ; heart cursor pos


================
================
================


fix game over flashing text



; x14B65 = 05:8B55

JSR gameover_flash_call
NOP
STA $0305
RTS



; x17F50 = 05:BF40

gameover_flash_call:
BEQ gameover_flash_done   ; old detour code


LDA $13      ; get save option (0-2)
AND #$03

TAY          ; load correct palette
LDA gameover_flash_attr,Y


gameover_flash_done:
RTS


gameover_flash_attr:
db $05,$50,$55



; flash text position
x14AFC = 05:8AEC = 23 D2 43 00 FF CB CB D3


old code:

05:8B49: B9 F1 8A  LDA $8AF1,Y @ $8B46 = #$29
05:8B4C: 8D 03 03  STA $0303 = #$C2
05:8B4F: A0 00     LDY #$00
05:8B51: A5 29     LDA $29 = #$3F
05:8B53: 29 04     AND #$04
05:8B55: F0 02     BEQ $8B59

05:8B57: A0 55     LDY #$55
>05:8B59: 8C 05 03  STY $0305 = #$00
05:8B5C: 60        RTS -----------------------------------------

ShadowOne333

Oh wow @stratoform!

I didn't notice you replied to this thread at all, since I didn't get the notification by mail, but hot damn!
That's a lot of code lol

Let me go through each one:

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

1. POLLS VOICE:

I went through your Pols code, and it seems to be working just fine!
I tested killing the Pols with the normal Arrow method, and also with the flute, and they both work as intended!
Arrows kill only the Pols they touch, and using the Flute kills all the Pols in the room, just like the microphone feature from the Famicom release!

Also, interesting thing there about the RAM address $0518.
Indeed, if that's the address used by the Famicom release for the microphone, then that's an unused entry on the USA release.

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

2. COLLISION DATA:

Man that will surely come in handy.
While we still don't know how to make tiles $54-$57 react as solid tiles, that information might be helpful later on to fix that long-dreaded bug.
Once that's settled, cracked walls should be finished and properly implemented into Zelda 1!
(That's the only remaining bug with cracked walls)

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

3. FLIP HEART ROWS:

There seems to be a bit of confusion with this one.
From what I can see, your code modifies the heart rows in-game.

What I was attempting was to flip over the heart rows in the File Selection screen:


I want to flip them over so the first 3 hearts (and its subsequent hearts) appear next to the name, instead of next to the Death counter, and the ones from the Death counter move them upwards, next to the name
I can already change the row below next to the player's name, but the problem I have is that I haven't found a way to move the ones currently in the player's name to below.

Here's the data I've collected about that:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/blob/06b9403e3aadb3e1dd7e0b1961d1eb0935ad5d46/code/redux.asm#L38-L54

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

4. GAME OVER TEXT AND FLASHING:

I'm having issue with this code.
While the text and cursor have been moved properly, when I select any of the options (CONTINUE/SAVE/RETRY), for some reason, instead of getting the Red flashing, I get background tiles.
It shifts between $05 (Number 5 in tiles), $50 (one of the heart tiles from the meter) and $55 (which is one of the rock tiles).
It doesn't change colours, it instead shows sprites/tiles.

I'm not sure if my implementation was wrong or something, but here's the code for that particular part, including your newly implemented code:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/blob/06b9403e3aadb3e1dd7e0b1961d1eb0935ad5d46/code/redux.asm#L120-L206

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

Let me know if you need any clarification or if you have any doubt :)
Thanks for the help and code you did!

PS: I forgot to tell you that I added your name to the code you made as credits, and will also add you to the main README inside the Credits section for this work.

stratoform

#258
#2
My thought was to do this for collisions. I haven't tried the code yet but seems like it would work?


$07:F119
JSR collision_tiles_call


collision_tiles_call:
CMP #$54        ; $00-53 = old detour code
BCC collision_tiles_normal
CMP #$58        ; $54-57 = secret tiles, solid
BCC collision_tiles_solid

; add more secret tile checks if needed


collision_tiles_normal:
CMP $034A    ; old range check
RTS


collision_tiles_solid:
SEC          ; solid tile, no walk
RTS




original code

$07:F119: CD 4A 03  CMP $034A = #$89  ; collision tile (range check)
$07:F11C: 90 30     BCC $F14E         ; bcc = always walkable



I'll check #3 and #4 and (edit) report back. Thanks again!


===================
===================


#3
Here's how it appears for me:


Could you do a mockup of what it should look like? I'm bad with text descriptions. :lol:


#4
Maybe missing a hex edit. Let me double check..


=========================
=========================

#4

Missed this hex edit:

; flash text position
x14AFC = 05:8AEC

20 D2 43 00 FF CB CB D3
==>
23 D2 43 00 FF CB CB D3


===========================
===========================


#2
Don't see any free space in bank 07. Maybe have to bankswap out to 05, run the code, then bankswap back to (original)?

ShadowOne333

#2. CRACKED WALL OVERWORLD COLLISION

Oooh that looks interesting.
I already wrote down the code in my file, but as you said, there's no free space in bank 7 anymore, so seems like we'll have to use bank switching for it.

I think Bank 5 gets loaded when you are in the overworld, so anything from Bank 5 might do.
It's just... I simply forgot how to bank switch lol.

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

#3. FLIP HEARTS

Oh my, I see my mistake now.
So you see, the thing about the code you wrote for that, is that it flips not only the File Select screen hearts...
But ALSO the in-game ones!
So I was trying out the code in-game and it was changing the hearts there, I didn't notice it also changed them in the File Select screen.

So with those slight changes you made, I un-did the change I made through PPU transfers to flip the hearts in the HUD, and now both the File Select and HUD hearts are flipped with the same code :)
That should be it for that! Thank you so much!

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

#4: GAME OVER RED FLASH

I'm not sure what the problem is.
I did have that very change you mention in here:


bank 5;
// (Changes Y position of the "Continue/Save/Retry text)
org $8AE5 // $14AF5
db $50,$27,$37,$47 // Originally 4F 67 7F
// (Changes Y position of the red/white flashing when selecting an option)
org $8AEC // 0x14AFC
db $20,$D2,$43
db $00,$FF,$CB,$CB,$D3


However, I am still getting numbers and sprites instead of the red flashing.
Did I miss anything else?

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

Thank you yet again for the help!