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

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.

Topics - gzip

Pages: [1]
Personal Projects / The Legend of Zelda: A New Light
« on: May 10, 2020, 12:21:18 am »
Hello ROM hacking community! I've released several versions of The Legend of Zelda: A New Light now and I'd like to use this thread for discussion and to ask for some help. Thanks to everyone who's helped me along the way so far. :beer:

I now have a much larger release that I'd like to get some testers on before submitting it to the site.

The release candidate is here. There's a list of major changes in the readme and a ton of smaller changes not listed.

I also have a few minor issues that I need help with:

  • The palette is incorrect in some screens after coming back up from a stairway in a dungeon. Entering a dark room corrects the palette. It seems to be related to the Automap patch. Fixed!
  • There's some screen corruption in the bottom right corner after opening and closing the subscreen. Fixed!
  • There's some weird artifacting in a few dungeon rooms where the Lanmola tile flashes across the screen quickly. One example is the entrance room to level 4.

ROM Hacking Discussion / Zelda 1 overworld secret path
« on: April 18, 2020, 03:54:05 pm »
You know the one, from the green gambling tree to the secret 100 rupees (or blue ring in quest 2). Zelda Tech screen 11 to 14.

First how does it work? Second, how can I move the secret path to a different location? I tried debugging around LDA $EB/$EC (A5 EB) and CMP #$1F (C9 1F) but couldn't make out anything relevant.

Btw, I have a few other questions like this around Zelda 1. Is it ok to post a new thread here under Discussion for each question or is it better to start a new thread under Personal Projects and lump them all together there? :police:

ROM Hacking Discussion / Zelda 1 map cursor help
« on: April 09, 2020, 09:36:12 pm »
I'm working on a small change for my Zelda 1 hack which uses two different map cursors, one for the overworld and a different one in dungeons. Why am I making this change? Because the hack also contains automap where a smaller cursor looks great - but the normal cursor looks better in the dungeon.

It has been mostly successful but has introduced a rendering artifact because I'm currently using tile $1C (which seemed unused but actually is). I can't find where the artifact gets written (Mesen shows it's a sprite). Here's a screenshot to clarify the problem:

And here's the patch. It can be applied on top of my hack or vanilla Zelda 1. The most relevant bits are at $7761 ROM / $7EE1 RAM. I can paste the commented code and related data locations if that's helpful.

Any pointers on how to get rid of this or how to use a different tile from the other pattern table will be appreciated!

April 11, 2020, 02:58:08 am - (Auto Merged - Double Posts are not allowed before 7 days.)
After reading a doc about OAM on nesdev it was much easier than I thought to change to an unused tile (see part about bit 0 in Byte 1). For example, FCEUX PPU Viewer showed $5C for an empty tile in the right side pattern table so add $1 to make it $5D. Too easy. Here are the relevant RAM locations for anyone wanting to edit the cursors.

Code: (RAM locations for map cursors) [Select]
0250 Map cursor Y pos (dungeon subscreen)
0251 Map cursor tile (dungeon subscreen)
0252 Map cursor attributes (dungeon subscreen)
0253 Map cursor X pos (dungeon subscreen)

0254 Map cursor Y pos (also used to blink cursor)
0255 Map cursor tile
0256 Map cursor attributes
0257 Map cursor X pos

April 11, 2020, 08:06:29 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Sorry to keep replying to myself but I think this info might be useful to others at some point.

Based on the same OAM document it occurred to me that I could find the original rendering artifact as well. Before I had been searching for $1C $00 (the tile id plus the palette number) which didn't yield what I was looking for. But I had also noted that the sprite was behind the background. That was a clue that bit 5 of the attribute byte would be set. So add $20. Viola, $1C $20 has only one occurrence in RAM and it's what I'm looking for. Once I found that, another solution to my problem could be to add $80 to the attribute byte (bit 7 is flip vertical), making $1C $A0, to effectively hide the sprite behind the background. Fun stuff!

ROM Hacking Discussion / Zelda 1 sound effects
« on: March 28, 2020, 08:13:50 pm »
I've been looking through Trax's bank 0 disassembly and this line caught my eye:

Code: [Select]
185B: Table for ? (6E bytes)
Here's what I found so far (these are ROM locations):

Code: [Select]
186B    shield sound pointer
186C    boomerang stun pointer
186D    rod sound pointer
186E    pick up heart pointer
186F    dialog sound pointer
1870    bomb placement pointer
1871    low hearts pointer

1872    low hearts sound
1887    shield sound
1892    rod sound
18B1    dialog sound (also affects arrow chirp)
18B7 boomerang stun sound
18C7    pick up heart sound
18D2    bomb placement sound

So this is a table for some of the sound effects as listed above. For example, the table starts at $186B with the byte $1C. Add the offset to the table start address to get the sound location ($186B + $1C = $1887). The offset for bomb placement is $67 so the sound starts at $18D2 ($186B + $67 = $18D2).

I also found the following sounds using the technique outlined later in this thread. I'm not sure where the corresponding table is located.

Code: [Select]
1F09-1F0E    stairs sound
1FC2-1FCB    sword swoosh sound
1FCC-1FD0    boomerang swish sound
1FD1-1FE0    fire sound
1A4D-1A64    bomb explosion sound

Pages: [1]