News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - njosro

Pages: 1 2 [3] 4 5
Personal Projects / Re: Zelda II Redux
« on: April 19, 2018, 10:26:27 pm »
There are two things I remember that complicated things.

1. The space above each letter is printed because in the japanese there was a possibility for some characters having those lines (") above them. If you print any character in a certain range it will print (") (but actually comes out as garbage text in the US version since the tileset is different). Otherwise it prints a space character above the letter. So if you find the spot where it does that and get rid of that bit of code then you should probably be able to do the no skipping lines thing without a problem.

2. After printing 4 lines of text the counter wraps around to zero and starts printing from the top again. If I recall correctly, it was because the line number was actually stored as the y position that directly corresponds to the y position on screen, so you can't go down past the last line of text without requiring 2 bytes (which is why the text box is at the height you see in the game). You'd need to make things more complicated and do your own math routine to get past this.

So if you find the code that prints the extra character above the letters and remove it, and then make it increase the y counter by 0x08 instead of 0x10 you should be able to do it. But I'm just going by memory here...

I didn't read Midna's post fully! The dakuten is the symbol I'm talking about when I write this: (")

ROM Hacking Discussion / Re: zelda 2 ASM hacking and improvements
« on: April 17, 2018, 02:26:42 pm »
Hey Ultima, I recreated the ghost spell.

Get it here

It changes the shield spell. Nothing else is changed.

Personal Projects / Re: Zelda II Redux
« on: April 16, 2018, 04:09:00 pm »
This is looking good!
It'll be really cool to encourage other people to play this game who don't want to "appreciate" (suffer through) zelda 2's difficulty.

@Psyklax That bit of palette info is really helpful! I've been wanting to allow my text editor to do the intro text, but I'm no good with figuring out graphics stuff.

This is looking more and more exciting with each new update! It's gonna be an amazing experience. I can't wait!

Like Midna, I wonder what the blue ring does.
The new rupee scheme reminds me of the Oracle games. Very cool.

I like the graphic tweaks you made to the treasure chest btw.

Quote from: Trax
The Side View editor is quite advanced, but it doesn't save yet. You have access to all regions. You can change the association between the data and the area code. This is because more than one area can have the same terrain. Change the enemy group for each area. You can modify objects attributes, add or remove objects, modify enemies, add or remove enemies. The enemy sets can be browsed and selected from another window. You can change the area destinations for each of the four sides. You can also edit all the attributes: background map, no ceiling, extra layers, palette set, tile set, area width. In the Towns section, you can set the destinations of doors.

For the terrain data my editor is fine with moving it around, reassigning, add/delete and all that. But for the enemies, were you able to find a way to change the pointer of an enemy set (for add/delete purposes) without causing glitches? I was trying to get my editor to do it, but it causes freezing and other glitches in world 0. And I even downloaded another side view editor created recently ( to see how he did it, but when you change enemies in his editor it causes problems too.

Quote from: PowerPanda
First off, thank you so much for the existing hacks and utilities. I just did a full playthrough combining the easy-type hack with your restart from the current palace, along with using a utility to speed up the text, and it was like playing a new game. I ran into a bug in Palace 6 where the 2nd mounted knight boss would not appear, but taking an intentional game over fixed the game, so I don't know what happened there.

Thank you! I'm glad you liked it. I will have to look into that palace 6 thing to see if it's related...
As for the existing utilities, I put a lot of effort into making them as user friendly as possible so I'm glad to see you're liking them.

Quote from: ShadowOne333
is the code in the OP the one for v2.0 of the Restart from Current Palace hack?
I want to give it a try but I think the Hack's page has 1.0 and I'm not sure if v2.0 is the on in the OP or if it is in the works :P

The hack I submitted to RHDN is the current version. That old version Trax and I were referring to was more of a "version zero" that I made about 4 years ago.

Hey shadowone sorry to leave you in the dark for a bit. I actually did create a reply about the save thing, but I was dumb and didn't copy the text. When I tried to post, I had been inactive too long and rhdn booted me out, so I lost the reply. I intended to do it again the next day but forgot.

I'll reply properly soon.

It's great to hear from you again, Trax.

This post is not meant to be any kind of "told ya" rebuke, but well, I literally told you the first time I saw the code in writing.

Yes, I had that coming hahaha
I was so tired of messing around with the original code that year. I just left it even though it was flawed. But this version doesn't do any weird stuff :) Actually I'm a lot more familiar with the game's inner workings now thanks to making those editors and using your disassembly.

Do you mind explaining what happens in your code?

I created my own table for the exact reason you stated. I made it find the correct entry in the table by doing my own calculation instead of the one at CF30. I borrowed ideas from it though (of course).

LDA $706      ; get region
ASL         ; x2
ASL         ; x2
ADC $707      ; + world
ADC $748      ; + overworld area index
SBC #$34      ; -52

...And then it looks up the scene index (or "area code" in your terminology) from the table I created:

LDA $AB30,X      ; @ AB33, AB34, AB36, AB38, AB3B, AB3D, or AB3F
STA $561      ; set scene index

The table is not filled contiguously. There are gaps between the table entries to make the formula work.

I don't want to look too harsh regarding this project

Critiquing the code and offering your input makes it more satisfying and worthwhile to me. I will do the same if I think I have something to offer (even though I'm not as experienced).

@ultimaweapon - Use the zelda 2 disassembly I linked to in my previous post. It has the information you need.

Here is an excerpt from bank 1. This particular section is thanks to Trax! The bytes in this table start at 0x54E5 in rom.
Code: [Select]
Enemy Attributes (Palette, Experience Code, etc.)                 
"xx.. .... Palette Code (0-3)                                                  "
"..x. .... No Damage from Sword (needs Fire)                                   "
"...x .... Steals Experience Points                                            "
".... xxxx Experience Code (0-F)                                               "
"40 .x.. .... Fairy                                                            "
"40 .x.. .... Red Jar (or Exp. Bag or Magic/Heart Container)                   "
"40 .x.. .... Locked Door                                                      "
"C2 xx.. ..x. Myu                                                              "
"C1 xx.. ...x Bot                                                              "
"81 x... ...x Bit                                                              "
"94 x..x .x.. Moa                                                              "
"C2 xx.. ..x. Ache                                                             "
"80 x... .... ?                                                                "
"90 x..x .... ?                                                                "
"84 x... .x.. Acheman                                                          "
"10 ...x .... Bubble Generator                                                 "
"10 ...x .... Rock Generator                                                   "
"81 x... ...x Red Deeler                                                       "
"C2 xx.. ..x. Blue Deeler                                                      "
"02 .... ..x. Bago Bago Generator                                              "
"92 x..x ..x. Bago Bago                                                        "
"84 x... .x.. Red Octorok - Jumping                                            "
"84 x... .x.. Red Octorok - Moving                                             "
"40 .x.. .... Elevator                                                         "
"44 .x.. .x.. Moblin - Orange                                                  "
"85 x... .x.x Moblin - Red                                                     "
"C5 xx.. .x.x Moblin - Blue                                                    "
"48 .x.. x... Daira - Orange                                                   "
"89 x... x..x Daira - Red                                                      "
"45 .x.. .x.x Goriya - Orange                                                  "
"85 x... .x.x Goriya - Red                                                     "
"C6 xx.. .xx. Goriya - Blue                                                    "
"C2 xx.. ..x. Lowder                                                           "
"00 .... .... Moby Generator                                                   "
"51 .x.x ...x Moby                                                             "
"C3 xx.. ..xx Megmat                                                           "
"83 x... ..xx Geldarm                                                          "
"00 .... .... Dumb Moblin Generator                                            "
"50 .x.x .... Dumb Moblin                                                      "
"02 .... ..x. ?                                                                "

There is a table like this in each bank. search through the disassembly for "experience code" and you should find it.


The same recommendation goes for you too, ShadowOne333. It's great you found the relevant RAM addresses and opcode locations! These are readily available in the disassembly, which you can follow along as you discover new things. And if you would like to improve your ASM you should look through some of it because it is labeled and commented. Search the word "manual" in bank 0 of the disassembly and you'll find relevant code for the up + A thing.

I tinkered around tonight, and I have a strong base for anyone interested in the lava code. It's cool and all, but I don't want to spend time debugging and perfecting it. Here is what I've got. Feel free to build on it.

Whenever RAM $494 is incremented, you die. This is the way the game does it.

The code for sinking in lava and executing a lava death is at 119E in ROM:

Code: [Select]
LDA #$00
STA $0014
LDA $29         ; y position
CMP #$D0        ; if not at bottom of screen,
BCC $119C       ; skip next instruction
INC $0494       ; DIE
INC $29 ; increment y position

If you change INC $0494 to a JSR, you can inject your own code. I decided to JSR to the middle of some empty space at the end of bank 0 (at 3F0A in ROM). I put 3 instructions there:

Code: [Select]
LDA #$07
STA $0736

RAM $736 controls what 'mode' the game is in. A value of 7 instructs the game to reload the scene. The game naturally writes to this address when changing scenes. (Other values for $736 specify whether Link is falling, whether it's a side view vs the over world, and so on.)

It works, but with 2 issues.

1. You can see the screen jerk around a bit before it blacks out to refresh
2. The enemies don't reappear for some reason. Not even the blobs will respawn.

So there you go! Refer to the zelda 2 dump at if you want to add your own stuff.

Thanks guys!!

Another thing I would suggest is probably...
When you save the game manually, that counts as a Game Over or as a Death towards the counter in the Selection Screen.
Perhaps keep it so that when saving manually does NOT count towards that number, and only Deaths and Game Overs do count towards it.

To do that you would need to set a flag when the game detects up + A on the controller (or whatever it was), and then check the flag when you choose the save option. (But I always ignore the game over counter anyway hahaha)

Changing SPELL to GHOST is quite interesting. What is the link, so I can check that out? I wish I would have known that you have done that?

Also, do you think you could change JUMP in the way it behaves from jumping high to doing a double jump? I think a double just would be better for Zelda 2 as opposed to jumping higher.

I don't have a patch ready for download because I was just experimenting with it a long time ago. I don't think I have the file anymore. Maybe one day I'll try it again.
As for JUMP, I don't have much experience messing with the physics of the game. It's an interesting suggestion though, and I think I would try it!

The biggest "rough edge" I believe that the game has left would be losing a life when you fall into a pit.. Would it be feasible to make it instead restart the room and take 10-20% of your life?

I actually had the same thought! I haven't tried to do anything like that yet... but if I did, I'd imagine it going like this:
1. Lose a some life the moment you touch the lava
2. Skip the death, and just go to the routine that "refreshes" the room. This would also make the music keep playing.

Curious, if you don't get kicked back to the starting palace when you game over, what's the difference between losing one life and losing all of your lives? Do you now, in effect, have infinite lives?

No, you still get punished for losing all your lives. It's just softer. When you lose one life you start at the exact same screen, and you keep your EXP. When you lose all your lives, you get kicked back to the entrance of the palace and lose all your EXP. If you're not in a palace, you go back to the starting palace and lose all your EXP like the original.

That's one of the biggest problems with the game out of the way. All I'd change now is speeding up the NPC text.

If you download my dialog editor you can change the text speed.

Thanks guys!

ShadowOne, yes, I made a few other asm hacks. The most notable one is built-in to the side view editor. It lets you assign any key item to any palace (i.e. the condition to turn to stone) without screwing up the crystal returns. In the original game this was not possible.

This particular "respawn" hack does not affect where you start after rebooting the game. That would be a whole new thing to implement.

I also made one more half-done hack where SPELL becomes GHOST. It makes Link flicker for the entire screen so he's invulnerable.

Revility, you can patch this to your hack :) Just be careful that you don't overwrite something important. I don't think it will be a problem, but it's something to remember if you experience any problems.

ROM Hacking Discussion / zelda 2 ASM hacking and improvements
« on: February 05, 2018, 10:20:28 pm »
A few years ago I tried to do an asm hack that would alleviate the pain of being sent back to the beginning after you lost all your lives. It was my first time doing any sort of assembly, so it had a few flaws that would mess up the collectible items.

Recently I had a good reason to work on version 2.0: It was requested by hollowshadow for his new hack.

So here it is. It doesn't have any unwanted side effects! (at least I'm 95% sure...)

Here is the code for anyone interested.

Code: [Select]
Asterisk * means I added this section or modded the instruction.

07:CAD0 (01CAE0)
JSR $AB10*
00: AB10 (002B20)*
LDA $707 ; current world
07:CAD3 (01CAE3)
CMP #$03* ; if > 3
BCS $CADE ; goto the jsr below
LDA #$00
LDY #$01
JMP $CAF0 ; jump to ~~label 1~~
JSR $AB14*
00:AB14 (002B24)*
LDA $706 ; region
ASL ; *2
ASL ; *2
ADC $707 ; +world
ADC $748 ; +area_index
SBC #$34 ; -52
LDA $AB30,X ; @ AB33, AB34, AB36, AB38, AB3B, AB3D, or AB3F
STA $561 ; set scene index
JMP $C358

07:C358 () ; (built-in) reset lives and other paramaters.
LDA #$03
STA $700
INC $760
INC $76C
07:CAE1 ()
LDA #$00
STA $701
STA $75C
LDA #$01
LDY #$02
~~label 1~~
STA $76C
STY $75F

the end.

Personal Projects / Re: Zelda II - Nightmare of Gannon
« on: December 30, 2017, 01:28:02 pm »
This looks really good. These screenshots show a lot of nice ideas. This is so exciting!!

Also, you will be the first to make (serious) use of the town editing features... let me know how it goes.

Personal Projects / Re: Super Mario Land 2 DX [Released!]
« on: December 30, 2017, 01:20:53 pm »
I just downloaded it and started playing it. This is so awesome! Great work!! :thumbsup:

This looks great! I hope you're able to achieve everything you want to accomplish.

I would definitely play this version of the game. I like the idea of using the wand more, and the original was too hard for me  :-[

Personal Projects / Re: My Zelda 2 Editors - Released!
« on: August 03, 2017, 08:05:16 pm »
Those are some good suggestions. I don't think I'll be doing anything about palettes, but otherwise I'd like to add everything you've suggested... eventually. :P

The only thing about adding and removing enemies is that I tried to implement it a few different ways and it failed every time. I might get it to work one day!

Personal Projects / Re: My Zelda 2 Editors - Released!
« on: July 31, 2017, 11:45:01 am »
Thank you so much! It's great to see they worked so well for you.

I've replied to your question in the new thread you created. Let's hope it's a simple fix.

ROM Hacking Discussion / Re: My Zelda 2 Hack
« on: July 31, 2017, 11:41:05 am »
Hey there ultimaweapon,

I saw your post on my thread. I'm happy to know the editors have worked so well for you!

Without knowing any information other than what you've described, my first guess would be to check the settings of the area tile on the overworld that leads to the palace.  (area index 54 I think.) Make sure there's nothing weird going on with it.

Personal Projects / Re: My Zelda 2 Editors - Released!
« on: June 07, 2017, 10:22:44 am »
Hey hollowshadow, that's awesome! I'll download your hack and try it out :)

Quick update:
The dialog editor is in the process of getting accent support. The game is actually coded to support a dot character [tile $32] above any character whose tile code has a certain combo of bit 6 and 7 on/off (don't remember it right now). My guess is that it's a leftover from the Japanese version. So I made the editor have a patch option that lets you place the dot character (which you could manually change to an accute, grave, circumflex, or whatever accent) over any letter. You just hold Shift while typing the letter to indicate that it should be accented. The only drawback of course is that the game only supports one accent, but still it's something! I'll release it sometime soon.

Personal Projects / Re: My Zelda 2 Editors - Released!
« on: May 08, 2017, 08:30:17 am »
Released! They're all available for download now.

If you find a bug that messes up an editor's functionality (ex: clicking a button at a certain time makes everything crash) then just PM me.

I hope we can start seeing some awesome zelda 2 hacks soon!  ;D

Pages: 1 2 [3] 4 5