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

Author Topic: Zelda 1 Redux / The Legend of Zelda Redux  (Read 168846 times)

ifightdragons

  • Full Member
  • ***
  • Posts: 126
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #500 on: November 30, 2020, 11:09:14 am »
I think Zelda II uses MMC1

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 573
  • I am the baldest romhacker
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #501 on: November 30, 2020, 03:24:33 pm »
FCEUX -> Help -> Message Log

Some useful links
http://tuxnes.sourceforge.net/nesmapper.txt
http://bootgod.dyndns.org:7777/home.php, use Quick Search on the right with "Titles, Catalog ID" option
« Last Edit: November 30, 2020, 05:15:39 pm by Cyneprepou4uk »
iromhacker.ru - NES ROM hacking tutorials for beginners. Please use Google Translate browser extension

jimstrom

  • Jr. Member
  • **
  • Posts: 66
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #502 on: December 01, 2020, 05:25:08 pm »
Something else thats bothering me. In quest 2 you have to use the recorder to find some secrets, these are in my opinion very random, anyway to make these secrets a bit easier to found rather than by trying over and over on every screen?

Don't know how it could be done though? Maybe by a slight audio cue or something?

Aclectico

  • Full Member
  • ***
  • Posts: 112
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #503 on: December 02, 2020, 10:59:06 am »
BS The Legend of Zelda has a pretty straightforward hint for the recorder/ocarina. Below is an example. However, pursuing something similar may be a bit controversial. I've tried something similar and at least one user stated that they wished the hints were not as obvious.

Spoiler:


« Last Edit: December 02, 2020, 11:05:13 am by Aclectico »

Vanya

  • Hero Member
  • *****
  • Posts: 1857
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #504 on: December 02, 2020, 05:26:41 pm »
I also prefer hints to be subtle. If you put up a sign with a graphic of the item you should use on the spot it should be used, that stops being a hint and becomes an instruction.

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #505 on: December 02, 2020, 06:51:38 pm »
I tried debugging today the recently bombed wall not having the proper tile properties for Link to enter when the wall has just been bombed, and I believed I managed to find the routine and actual change needed to make this work now.

Code: [Select]
// Add rock arc at the top of bombable walls, so they don't look as plain black squares
bank 4; org $8F08 // 0x10F18
// Modification so the bombed walls use out custom arc cave tiles ($54,$55,$56,$57) instead of being all black tiles ($24)
lda.b #$54 // Originally LDA #$24

// Fix recently bombed overworld wall collision and tile properties (Unsure what this does precisely)
// (Routine for the following code begins at $ABC4 (0x16BD4)
bank 5; org $ABED // 0x16BFD
cmp.b #$57 // Originally CMP #$27

The CMP #$27 at 0x16BFD seems to be what's preventing my new tiles to load the tile properties properly for my $54-$57 tiles. Changing the CMP #$27 to CMP #$57 seems to do the trick.

However, I was doing this in a random fashion and changing code related to the bombed wall which I thought could be related, but I have absolutely no clue as to what the actual routine does precisely.
The routine where the code I changed is located within begins at 0x16BD4 and ends at 0x16C16. If someone more adept can tell me what the hell that routine does, and IF my modification is correct, please chime in.

In the meanwhile, I have updated the GitHub repository with the latest changes, so please test out the game and let me know if this new change borked anything elsewhere.
« Last Edit: December 03, 2020, 10:30:28 pm by ShadowOne333 »

erpster2

  • Jr. Member
  • **
  • Posts: 56
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #506 on: December 03, 2020, 10:01:38 pm »

In the meanwhile, I have updated the GitHub repository with the latest changes, so please test out the game and let me know if this new change borked anything elsewhere.


this new IPS patch of 12/2/2020 caused the ruby/bomb/arrow/key counters to appear glitched or messed up.

ah never mind, I deleted the old save file and created a new one for this update and the counters appear correctly again

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #507 on: December 03, 2020, 10:29:14 pm »

this new IPS patch of 12/2/2020 caused the ruby/bomb/arrow/key counters to appear glitched or messed up.

ah never mind, I deleted the old save file and created a new one for this update and the counters appear correctly again

You got me worried there for a second :P
Good to know that fixed it tho!

Still, to anyone, please let me know if something odd pops up!

bogaabogaa

  • Full Member
  • ***
  • Posts: 210
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #508 on: December 06, 2020, 04:17:14 pm »
I remember how you told me @ShadowOne333 that you been able to change CHR banks in the MMC5 Patch I shared. Then I did think it will only be a matter of time till you figure the surroundings of the game to actually implement it properly. But then you went of to MMC3 what is a similar task. Anyway it seems you could not really grip the task. NES assembly code can be very confusing specially if you struggle to consult the proper resources and make sense of what is going on. It is easy to just tab in the dark and try funny things that will get you nowhere. I am still not sure how close you been of understanding it.

I finished the MMC5 patch today and made a 4 frame animation for the overworld. The graphics for the dungeons should be implemented properly. But you know I just know how to navigate through the game with manipulation RAM. I can quick test every Level in the first and second quest but may be I been missing things.

I hope this will make it easier for you to do the animation you like to do. Also I did try to just add it to Redux but there seem to be conflicts (Automap.asm + Redux.asm conflict). I am sure you are good to figure them out by now.

Here is the patch:
https://www.dropbox.com/s/447qyabvs37r015/MMC5%20Redux.zip?dl=0



Update: Fixed movable blocks.. and probably some other things.
« Last Edit: December 06, 2020, 08:11:16 pm by bogaabogaa »
CV ROM DiscordServer
https://discord.gg/PvFgxRg

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #509 on: December 06, 2020, 08:46:05 pm »
I remember how you told me @ShadowOne333 that you been able to change CHR banks in the MMC5 Patch I shared. Then I did think it will only be a matter of time till you figure the surroundings of the game to actually implement it properly. But then you went of to MMC3 what is a similar task. Anyway it seems you could not really grip the task. NES assembly code can be very confusing specially if you struggle to consult the proper resources and make sense of what is going on. It is easy to just tab in the dark and try funny things that will get you nowhere. I am still not sure how close you been of understanding it.

I finished the MMC5 patch today and made a 4 frame animation for the overworld. The graphics for the dungeons should be implemented properly. But you know I just know how to navigate through the game with manipulation RAM. I can quick test every Level in the first and second quest but may be I been missing things.

I hope this will make it easier for you to do the animation you like to do. Also I did try to just add it to Redux but there seem to be conflicts (Automap.asm conflict). I am sure you are good to figure them out by now.

Here is the patch:
https://www.dropbox.com/s/447qyabvs37r015/MMC5%20Redux.zip?dl=0



Update: Fixed movable blocks.. and probably some other things.

Holy damn, Bogaa. You really surprised me.
I wasn't expecting you to go all out with the MMC5 patch that you initially did months ago.

I started doing conversion tests last week.
Nothing fancy or anything, I simply started doing some easy conversions and testing graphics with it.
The last test I did was a conversion from CHR-RAM to CHR-ROM, and I got it to boot up the game with the title screen, story text and item scroll fully working, but not much after that.

I really didn't want to bother you anymore with this stuff, since it kinda made me feel bad that you work so hard with all of this and I just couldn't bring myself up to the standard required to make this work from where you left it off. :/


I checked this out today in a somewhat quick manner (I wont be able to check it in detail until mid-week due to end of semester work stuff), but from my quick test I found some issues:

  • The movable rocks in the Overworld getting glitches when they are being moved
  • The Dungeon tiles being borked after you enter in a couple of frames afterwards
  • Don't know if this is normal or not (I assume it is, given the MMC5 treatment), but when viewing the tiles/sprites through the FCEUX PPU Viewer, I get both of the background tiles tables mirrored in both sides, instead of being sprites in the left and background in the right. Is this normal?

You mentioned this MMC5 conversion having collisions with "automap.asm" right?
I recently moved part of Automap slightly to make room for the new column definitions I made, so maybe I could put the new MMC5 conversion hack in place of where the original column definitions were.
I will make room for it to play nicely with full-on Redux during the week, for sure.

Just as a side question, do the cracked walls and burnable tree sprites work with the MMC5 hack?
I'm referring to this code specifically, which you worked on some time ago:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/blob/master/code/gameplay/visible_secrets.asm

I'll let you know if I find anything else.
And, again, thanks Bogaa. I really feel quite useless at times when it comes to in-depth ASM hacking, but I really appreciate your efforts, feedback and overall help that you've shared over time.

Thank you, sincerely.



I took some time and I think I found the code that clashes with Automap.
From automap.asm, this two routines are the ones that clash with the MMC5 code you updated.

1st routine. Location inside the Automap.asm file:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/blob/master/code/gameplay/automap.asm#L804-L822

Code: [Select]
bank 7; org $FFC0 // 0x1FFD0 - Start of Unused Space
// Map update hijack routine
DoWholeMapHijack:
lda.b {LevelNumber} // Only run this routine for the overworld
bne Exit // BNE $0D, Branch to exit

// Load Bank 5
lda.b #$05 // The code we want to run is in a different bank than is currently loaded
jsr {BankSwap} // Jump to Bank swap routine

jsr DrawWholeMap // Jump to Draw whole map routine

// Load Bank 6
lda.b #$06 // This is the bank that was previously loaded
jsr {BankSwap} // Jump to Bank swap routine

Exit: // $FFD1, 0x1FFE1
// Displaced code
inc.b $11 // Increment value at RAM $11
rts

2nd routine. Location in the Automap.asm file:
https://github.com/ShadowOne333/The-Legend-of-Zelda-Redux/blob/master/code/gameplay/automap.asm#L170-L182

Code: [Select]
// Blip update routine
bank 7; org $FFD6 // 0x1FFE6
SafeBlipUpdate:
// Only runs the blip-flashing code when it is banked in.
pha // Need to preserve A
lda.w $8000 // Load address $8000
cmp.b #$20 // Is this bank 5? (checking for a known value)
bne l_FFE2 // BNE $04
pla
jmp BlipUpdate // Jump to Blip Update

l_FFE2: // 0x1FFF2
pla
jmp $77E7 // Jump to $77E7
« Last Edit: December 06, 2020, 09:18:56 pm by ShadowOne333 »

bogaabogaa

  • Full Member
  • ***
  • Posts: 210
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #510 on: December 07, 2020, 03:43:05 am »
Don't feel bad about "wasting the time of someone" you do great work and it is about your time also. Sure I have other projects I like to go after but I seek distraction in smaller task sometimes as I have motivation issues on some stuff. I do always learn with this smaller stuff too.

Yes as I posted the patch there been a issue with the dungeon tiles. I made the overworld animation as a afterthought. First I did think I will tell you how to do it but then I did think it is probably best just to do a example. I forgot to check and not run in dungeons. I fixed that along the sprite. The MMC5 will not wrap around on odd values to grab sprites from the tile page. The MMC5 does have a extra page 8kb ($2000 byte) altogether only for spites. I did not duplicate all the tiles to the sprite page so it is easier to see where is free space. But there might be issues because of this. There is no emulator that can show this properly so FCEUX will just show tile in both PPU viewers.

There are still tasks to do since you have graphic patches to convert. Probably best to add MMC5 related options in the Main.ASM if you decide to run with it.
I did not look into the conflicts to much. Worst case you probably make a new version to run along MMC5. I might look into it later and post again.

The side question if other patches work. As long they only modify name and attribute tables in the PPU they run well along the MMC5. When they start using mapper related registers or try to write to the pattern table you need to do things different.
« Last Edit: December 07, 2020, 03:57:00 am by bogaabogaa »
CV ROM DiscordServer
https://discord.gg/PvFgxRg

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #511 on: December 07, 2020, 06:05:14 pm »
Thanks for the reply, Bogaa!
I did some progress today regarding some of the compatibility issues between some Redux features and the MMC5 hack.

To explain the issues I was having:
  • First off, I was having issues with the Item Toggle, pressing Select immediately "crashed" the game at any point. It's not really a crash, but the game resets entirely, putting me back at the title screen.
  • Second, the Visible Secrets (cracked tiles in both Overworld and Dungeons, and burnable trees) gave the strange side effect of resetting the game entirely upon any button input, so as soon as I tried moving Link, the game would instantly reset. A similar behaviour to point #1
I studied the MMC5 code a bit, and also had the Item Toggle & Visible Secrets ASM files opened up, reviewing the side to side, and I noticed the culprit of the issue was not a matter of code being overwritten, quite the contrary, none of those codes overlap at all.

The actual culprit was that the Bank Swap routine used in the original Zelda 1 (in Bank 7 at $FFAC or 0x1FFBC) actually got moved in the MMC5 just some bytes below. So now the bank swapping routine with the MMC5 hack is located at bank 7 $FFE2 (or 0x1FFF2).
With that said, I managed to modify both of the features giving me issues with the new bank swapping routine address, and voala! They now work without issues!

I tested the MMC5 with every other feature (except Automap) and they all seem to work just fine as well.
All I have to do is to find a way to move the Automap code to anything else BUT the $FFD0-$FFF5 range in Bank 7 to make it fully compatible with Redux.


Oh also, Bogaa, I think you misundertood me about the moving block in the overworld.
I did check, and moving blocks inside Dungeons works properly. However, it is the overworld movable rocks which are glitched:


(Don't pay attention to the missing icons, the "A" and the lack of Automap and moved maps in the HUD, those are all a result of not having Automap fully compatible with MMC5 yet)

Those are the ones I meant. As for the Dungeon tiles, they do work properly now, though I'd have to check if all the Dungeons with their proper sprites (Enemies and Bosses) work properly with MMC5.

I'll let you know what else I can find.

erpster2

  • Jr. Member
  • **
  • Posts: 56
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #512 on: December 07, 2020, 07:26:59 pm »
it's nice that the game allows up to 999 rupees but I found some problems when carrying certain high amounts of rupees.

I'll let the following pics do the talking:





link cannot buy items in item shop nor play the money making game when carrying the following amount of rupees (and link appears to walk thru either the items or the rupees in the money game as if he had less than the required amount to do either one):

680-689

710-729

880-889

910-929

950-969


ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #513 on: December 07, 2020, 08:01:26 pm »
it's nice that the game allows up to 999 rupees but I found some problems when carrying certain high amounts of rupees.

I'll let the following pics do the talking:





link cannot buy items in item shop nor play the money making game when carrying the following amount of rupees (and link appears to walk thru either the items or the rupees in the money game as if he had less than the required amount to do either one):

680-689

710-729

880-889

910-929

950-969

Something about Automap seems to be borking that, specifically.
I cannot tell what at the moment, but I know it's Automap, since commenting it out and compiling with everything else except Automap makes that range of Rupees work without issues.
I'll take a look at it later, after some of the MMC5 stuff is handled.



@Bogaa, I stumbled upon a bit of a problem when trying to move the two Automap routines that collide with the MMC5 hack.

There are two specific routines that go at the very end of bank 7.
$FFC0 and $FFD6, specifically.

It seems like these two routines need to be placed in a fixed bank (I assume this refers to a bank that's always loaded?). Both routines actually go hand in hand, so the one at $FFD6 goes right after the one at $FFC0.

I will include a comment that Snarfblam added in the Automap source code:

Quote from: Snarfblam
* For the routine at $FFD6:

This routine was placed after DoWholeMapHijack (under "Draw whole map -HIJACK-") below because these two functions must be placed in the fixed bank, together in the small available space.
This code really belongs under the "Map blip blinking" section, but is placed with DoWholeMapHijack, because they need to be placed together in the tiny bit of free space in the fixed bank.

* For the routine at $FFC0:
This routine must go in the fixed bank because bank-swapping is needed to run the desired code.

Apparently, the reason why these routines were added into bank 7 seems to be because they both require bank swapping to work properly. I tried moving around the code with JMPs, fitting it into the incredibly scarce free space that's left in Bank 7, but nothing I tried so far makes it work properly.

I will continue doing more tests.
I'll leave the full source of those two routines with comments for reference:

Code: [Select]
// Hijack
// ———————————————
// Hijack JSR has been moved to the end of the file!

bank 7; org $F322 // 0x1F332, Per-frame update hijack
// Safe Blip Update
jsr SafeBlipUpdate // Jump to subroutine at $FFD6 ($1FFE6 in PC) - Originally 20 E7 77 (JSR $77E7)
 
// SafeBlipUpdate
// ———————————————
// This routine was placed after DoWholeMapHijack (under "Draw whole map -HIJACK-") below because these two functions must be placed in the fixed bank, together in the small available space.
// This code really belongs under the "Map blip blinking" section, but is placed with DoWholeMapHijack, because
// they need to be placed together in the tiny bit of free space in the fixed bank.

bank 7; org $FFD6 // 0x1FFE6
SafeBlipUpdate:
// Only runs the blip-flashing code when it is banked in.
pha // Need to preserve A
lda.w $8000 // Load address $8000
cmp.b #$20 // Is this bank 5? (checking for a known value)
bne l_FFE2 // BNE $04
pla
jmp BlipUpdate // Jump to Blip Update

l_FFE2: // 0x1FFF2
pla
jmp $77E7 // Jump to $77E7

Code: [Select]
//************************************
// Draw whole map hijack
//************************************

// Hijack
// ———————————————
bank 6; org $8089 // 0x18099 - Free space
// Jump to Do Whole Map Hijack code
jmp DoWholeMapHijack // Jump to $FFC0 (or $1FFD0 in PC) - Originally E6 11 60 (INC $11, RTS)


// Hijack code
// ———————————————
// This routine must go in the fixed bank because bank-swapping is
// needed to run the desired code.

bank 7; org $FFC0 // 0x1FFD0 - Start of Unused Space
DoWholeMapHijack:
lda.b {LevelNumber} // Only run this routine for the overworld
bne Exit // BNE $0D, Branch to exit

// Load Bank 5
lda.b #$05 // The code we want to run is in a different bank than is currently loaded
jsr {BankSwap} // Jump to Bank swap routine

jsr DrawWholeMap // Jump to Draw whole map routine

// Load Bank 6
lda.b #$06 // This is the bank that was previously loaded
jsr {BankSwap} // Jump to Bank swap routine

Exit: // $FFD1, 0x1FFE1
// Displaced code
inc.b $11 // Increment value at RAM $11
rts
« Last Edit: December 07, 2020, 08:11:26 pm by ShadowOne333 »

bogaabogaa

  • Full Member
  • ***
  • Posts: 210
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #514 on: December 07, 2020, 09:23:58 pm »
I did take a look at it a bit. I am not familiar what the blip does. I think it stands for blinking period. After consulting some pages about MMC1 I could not figure what is archived when reading form $8000. I did figure it might run on Hblank and did something with MMC5 register 5204. I added the AutoMap since you can fit the code into the last bank since the MMC5 bank switching saves some space. Just know it is broken! But might give you ideas.
I also fixed the overworld push able rock and made the mmc5.asm a bit more readable. For me it is the same the automap.asm does still break playmode but the other patches seem to work. Beside that only vanilla CHR graphics are used..

When the rupee pay out stopped working then you did probably paste something after this table. That one is used to figure out if you have enough cash. I should at last have written out how many $ff it needs.. or code the whole thing different. I am sure this code will make everyone scratch there head since it is a wired solution for the problem. 

Code: [Select]
org $ACA0 // 0x16CB0, Originally $B8F0, 0x17900
// CPU $B8F0, PRG $178F0, PC 0x17900 (Originally 0x17910)
TrueTableHex10:
// This table needs only to get base 8 bit to find out that we have enough money.
// So there are a lot of FF needed you could mistake as free space.
db $00,$0A,$14,$1E,$28,$32,$3C,$46
db $50,$5A,$64,$6E,$78,$82,$8C,$96
db $A0,$AA,$B4,$BE,$C8,$D2,$DC,$E6
db $F0,$FA,$FF
//this is missing $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

In order to make the automap compatible I need to understand it better. What might take some time to do.
You find my updated files in my old dropbox link.
« Last Edit: December 07, 2020, 09:40:18 pm by bogaabogaa »
CV ROM DiscordServer
https://discord.gg/PvFgxRg

Cyneprepou4uk

  • Hero Member
  • *****
  • Posts: 573
  • I am the baldest romhacker
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #515 on: December 07, 2020, 09:47:06 pm »
Quote
After consulting some pages about MMC1 I could not figure what is achieved when reading from $8000

It's not mapper related, it's a simple byte reading from $8000.

I don't recall any mapper doing something particular by reading $8000-$FFFF range.
« Last Edit: December 07, 2020, 09:53:19 pm by Cyneprepou4uk »
iromhacker.ru - NES ROM hacking tutorials for beginners. Please use Google Translate browser extension

bogaabogaa

  • Full Member
  • ***
  • Posts: 210
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #516 on: December 08, 2020, 02:02:47 am »
Thanks Cyneprepou4uk. Yes my mistake. I did miss read this routine.
Code: [Select]
SafeBlipUpdate:
// Only runs the blip-flashing code when it is banked in.
pha // Need to preserve A
lda.w $8000 // Load address $8000
cmp.b #$20 // Is this bank 5? (checking for a known value)
bne l_FFE2 // BNE $04
pla
jmp BlipUpdate // Jump to Blip Update

l_FFE2: // 0x1FFF2
pla
jmp $77E7 // Jump to $77E7

I did make it smaller and did think it is a loop. Did think SaveBlipUpdate and BlipUpdate is the same. Will probably fix it later tonight. Might just work..

Update: Yeha could not make it smaller. I tried with using y or x register and you get very funny glitches if you do that since the values there keep track of links sprite.

So I ended up moving that code to SRAM what seems to work well.

This looks like this:
Code: [Select]
bank 7;
org $e901 //Good Hijack point to load more data/code to SRAM
jsr MoveCodeToSRAM

//org $FFD6 // Orginal 0x1FFE6
org $ff43 //MMC5
SafeBlipUpdate:
jmp $7f30

bank 1;
org $a450
MoveCodeToSRAM: //Copy Code to SRAM $7f30
ldy #$00 //Make sure y is $00
LoopRomToSRAM:
lda SafeBlipUpdateCopy,y
sta $7f30,y
iny
cpy #$20
bne LoopRomToSRAM

jsr $8d00 //HijackFix Orginal routine to load SRAM

SafeBlipUpdateCopy:
// Only runs the blip-flashing code when it is banked in.
pha
lda $8000 // Load address $8000
cmp #$20 // Is this bank 5? (checking for a known value)
bne l_FFE2 // BNE $04
pla
jmp BlipUpdate // Jump to Blip Update
l_FFE2: // 0x1FFF2
pla
jmp $77E7 // Jump to $77E7
!!NOTE: The Automap.asm here will only work with MMC5 and needs to be a separate file. May be you could use "if MMC5" statement in the assembler to do this cleaner. Or just have two separate files for AutoMap.

To test this properly I need to arrange the CHR banks with Redux graphics still.
I repost my dropbox link here: https://www.dropbox.com/s/447qyabvs37r015/MMC5%20Redux.zip?dl=0

As I started to create a new CHR arrangement I did see that the automap does write to patternable. So this needs to be changed so it does this with the name table..
Also added a IPS for people who just like to test the mmc5 version and point out more bugs I might have missed.

Update:
I did look into the rupee.asm and I could not find enough space in that bank anymore. Then I did reclaim some space you reserved in overworld screens (line 641). The moved the HexTo10th lookup table into that space. Added the files to the dropbox. Updated the IPS so this should not be a bug anymore.

« Last Edit: December 08, 2020, 03:20:37 pm by bogaabogaa »
CV ROM DiscordServer
https://discord.gg/PvFgxRg

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #517 on: December 08, 2020, 03:21:50 pm »
Oooof I completely missed the extra $FFs for the Rupee code.
I went ahead and implemented the missing $FFs there, here's how the table looks right now:

Code: [Select]
bank 5;
org $9F00 // 0x15F10, Originally $B8F0, 0x17900, moved for compatibility with Automap!
// CPU $B8F0, PRG $178F0, PC 0x17900 (Originally 0x17910)
TrueTableHex10:
// This table needs only to get base 8 bit to find out that we have enough money.
// So there are a lot of FF needed you could mistake as free space.
db $00,$0A,$14,$1E,$28,$32,$3C,$46
db $50,$5A,$64,$6E,$78,$82,$8C,$96
db $A0,$AA,$B4,$BE,$C8,$D2,$DC,$E6
db $F0,$FA,$FF

db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
db $FF,$FF,$FF,$FF,$FF,$FF,$FF

fillto $9F9C,$FF // Ends at $9F9C, 0x15FAC

Please, let me know if that's correct, Bogaa, I counted 0x7E bytes of $FF (not counting the one in $F0,$FA,$FF).
I compiled with that modification (I had to move the code somewhere else to have enough bytes free for the extra $FFs), and tested with the values posted earlier, and it all seems to work fine now.
Thanks!




As for the Automap code, I did think about using the SRAM section for it, since that is loaded at all times, but didn't have time to test it out. Glad you managed to test it on your end, Bogaa.

I went ahead and checked your code in detail, and Automap does seem to work now without immediately stopping the ROM from loading on boot. I also reverted the previous Bank Swap changes I did to Item Toggle & Visible Secrets to the original $FFAC, since I saw you positioned the bank swapping routine back at its original position.

I tested out Automap in detail, and the hearts decrement in 1/4 works, the dot blinking works.
Although, I did find two issues, I'll try to explain them to the best of my abilities.



1) One of the features of Automap is to have the map be filled as you visit each screen. For example, when you start, only the initial screen will be visible in the minimap, and when you travel to a new screen, that screen will be visible in Automap from there onwards. I did notice you added all of the Automap tiles into the Overworld graphics, but that makes the map load all at once. Without the tiles there, the map doesn't appear.

With the modifications made, it seems this feature broke on transition.

                     Original Automap                  /  MMC5 Automap with Map tiles in OW CHR / MMC5 Automap with no Map tiles in OW CHR




2) Something odd I noticed (and I recall having this behaviour before when I was doing some tests with Automap I think, but I can't recall what exactly :/ ).
When transitioning between screens horizontally, it seems the screen has issues catching up or loading up the next screen properly. It can be seen easily when changing any screens horizontally. Vertical transitions do seem to work just fine tho.

Here's a quick example of what happens when transitioning when going from the screen at the left of the beginning, to the beginning screen:



If there's anything else that's needed, I'd be glad to help!

bogaabogaa

  • Full Member
  • ***
  • Posts: 210
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #518 on: December 08, 2020, 04:34:44 pm »
About the automap update. This is what I tried to say with the MMC5 can't update PPU patternable. This needs to be recoded to do with the name table. This takes time for me to do. Sorry for not making it clear that I work on that.

I could not replicate the glitch with vertical scrolling.

About Rupee yes if you just added the extra FF to the existing table it should be right. I might test once you do a commit with the new changes. There is no way I could work of the changes you do right now. But it is also not really needed. Since I feel like you will be fine implementing the files once we sort out the errors.

Also I did try to pull and make a branch to your repository. So I could commit my changes and it would be easy for you to review them. Well me and git don't get along well as much I like the ideas it comes with the desktop tool doesn't let me do that giving me errors that this branch exist and it ignores my commits or pushes. Sure it is a matter of understanding that bloody thing. What I can do is delete and upload it as my own thing what will not do any good for you.  https://github.com/bogaa/The-Legend-of-Zelda-Redux-PRG0

Also don't forget about the end semester work stuff.

Update:
Is file_select.asm supposed to work? I remember it having errors as I just got it form your github. So I ignored it all along. I always forgot to mention it.
« Last Edit: December 08, 2020, 04:56:34 pm by bogaabogaa »
CV ROM DiscordServer
https://discord.gg/PvFgxRg

ShadowOne333

  • Hero Member
  • *****
  • Posts: 1586
    • View Profile
Re: Zelda 1 Redux / The Legend of Zelda Redux
« Reply #519 on: December 08, 2020, 04:53:55 pm »
Oh I'm sorry
I got somewhat lost in the thread and I might have overlooked or missed that about the Automap and the PPU stuff, sorry.

And you're right, I forgot I haven't updated the repository in a while, as least not since I started the mapper tests. Here's my current folder for Redux with MMC5 with everything added so far:
https://www.dropbox.com/s/61aztzpemsprl92/MMC5_Redux.zip?dl=0

As for the scrolling glitch, it doesn't happen in vertical transitions, it only happens in horizontal scrollings.
Maybe you could try replicating the horizontal scrolling glitch with the files I uploaded.

I also made a special CHR.bin called "NewCHR.bin", which includes all of the Redux graphics put into them.
I'll make one for the Link's Awakening graphics once the last bugs are ironed out.

I'll continue testing stuff out, and don't worry, work stuff is being handled just fine so far, I'm doing this in between breaks ;)



EDIT:
For the ASM file you mention, you mean the file_select.asm or the file_tweaks.asm file?
The first one, file_select.asm located inside the 'gfx' folder, is basically just changes some characters and graphics from the File Select menu.

The 2nd one, titled "file_tweaks.asm", is a WIP routine that SpiderDave started to accomplish a feature like a Copy/Erase save file similar to A Link to the Past or Ocarina of Time, in which you could select empty save files, and then redirects you to the "Register Your Name" screen, and the current options for Register Your Name and Elimination mode would be modified to instead be a "Copy File" and "Erase File".
The code right now simply makes it so selecting an empty save file redirects to the Register Your Name screen, but the Copy stuff wasn't done, so that's why I left it commented out.

I am most likely not have that feature on the final release tbh, I just left the file there for reference, as it'll be dropped alongside the Diagonal Sword swing.
« Last Edit: December 08, 2020, 05:38:49 pm by ShadowOne333 »