Dwedit's Board

Enjoy the board

You are not logged in.

Announcement

Welcome, fellow visitors from other websites!
Whenever you download a file, I'd appreciate it if you posted a nice "Thank You" message, then tell me which site you came from. Thanks.
- Dwedit

#1 2007-01-11 3:10:14 am

Dwedit
Administrator
From: Chicago
Registered: 2004-12-12
Posts: 1,017
Website

Yay, Zelda 2 rom expansion

Okay, here's an ASM hack that allows you to expand Zelda 2.
Read the text file, zelda2_expand.txt.

Also read the overworld locations table format text file, zelda2_overwold.txt, so you know what the hell I mean when I say "W" byte.

The ASM hack allows you to specify that an exit to an overworld/town/palace is on the second 128k.
You do that by setting bit $20 of the "W" byte.
LIMITATIONS:
When you leave a palace or town located on the second 128k, you will go back to an overworld on the second 128k, even if the teleporter that took you there was on the first 128k.
You also need to specify the $20 bit for ALL towns and palaces you want to place on the second 128k, otherwise they will switch back to the first 128k.
When you continue or restore from a save, you start on that half of the rom.

<h1>Example!</h1>
An example of using the expanded rom:
First expand the rom and apply the asm hacks
Then copy 4000 bytes at 8010 [file address] to 24010.

Let's change that forest with the 50 point P bag to another overworld.

Hack these bytes:
4631: AA
46AF: 00
46E0: 20

After doing all the hacking, that forest now takes you to a messed-up version of the second overworld (because we copied that rom bank from 8010 to 24010).

If someone can point me to a good patch creating tool I could make the expansion and example as a patch.

Possible hack ideas: (use your imagination!)
Double the width of the overworld maps by having caves link the two halves together.
Make huge palaces, now that you have twice as much room as before.
Have a light world/dark world.  Note that palaces share RAM areas to store their state, so you could put the key in one world, and the locked door in the other.
Have a Palace that you enter in such a way that is hard to exit from, then when you clear it, you emerge on the second world.


zelda2_expand.txt:

First, you need to physically expand the rom.
Duplicate the first 128k after the NES header, then change the header to indicate that the PRG size is now $10 instead of $08.

Then make these changes to allow the game to use the expansion:


Paste this code into FF64 (3FF74)
	A9 00     LDA #$00
	8D FE 7F  STA $7FFE
	8D FF 7F  STA $7FFF
	4C 70 FF  JMP $FF70

Modify reset vector at FFFC (4000C)
 replace this:
  70 FF
 with this:
  74 FF


Paste this code into FF4C (3FF4C)
	4A        LSR
	4A        LSR
	48        PHA
	29 08     AND #$08
	8D FE 7F  STA $7FFE
	68        PLA
	29 07     AND #$07
	60        RTS

Go to CBA6 (3CBB6)
 Replce this:
  4A        LSR
  4A        LSR
  29 07     AND #$07
 With this:
  20 4C FF  JSR $FF4C
  EA        NOP

Paste this code into FF58 (3FF68)
	8D 69 07  STA $0769 
	48        PHA
	AD FE 7F  LDA $7FFE 
	8D FF 7F  STA $7FFF 
	68        PLA
	60        RTS

Go to CD59 (3CD69)
 Replace this:
  8D 69 07  STA $0769
 with this:
  20 58 FF  JSR $FF58

Replace the bankswitching code at FFC5 (3FFD5) with this:
	A9 00     LDA #$00
	F0 06     BEQ $FFCF
	AD 69 07  LDA $0769
	0D FF 7F  ORA $7FFF
	8D 00 E0  STA $E000
	4A        LSR
	8D 00 E0  STA $E000
	4A        LSR
	8D 00 E0  STA $E000
	4A        LSR
	8D 00 E0  STA $E000
	4A        LSR
	8D 00 E0  STA $E000
	60        RTS

Zelda2_overworld.txt

Zelda 2 overworld information

----------------------------
"Browse Around" information
----------------------------
locations of towns and caves and such:
base addresses

This is copied to SRAM area 6A00-6AFB

0x462F  west hyrule
0x611C  death mtn
0x862F  east hyrule
0xA10C  maze island

Base address is for "Y"
Add 3F to get "X"
Add 7E to get "Z"
Add BD to get "W"

"Y":
.xxxxxxx - Y position plus 1E (30).  Subtract 30 to decode, add 30 to encode
x....... - "External" bit, this makes it a warp to overworld, town, or palace

"X":
..xxxxxx - X position
.x...... - Is second part of a cave
x....... - ?

"Z":
..xxxxxx - Map number
xx...... - Horizontal position to enter within map  (ignored for two-exit locations)
	00 = enter at middle of first screen
	01 = enter at middle of second screen
	10 = enter at middle of third screen
	11 = enter at middle of fourth screen

"W":
x....... - Fall into a pit when entering
.x...... - "two-exit", like a bridge.  Must go through level to cross this tile.
..x..... - Enter at right side instead of middle
...000xx - (requires External) Warp to same numbered exit in overworld #xx
...xxx.. - (requires External) Warp to overworld, town, town2, palace, palace2, great palace

------------------------------
Rock pointers
------------------------------

0x479F - lv 1
0x47A1 - lv 2
0x47A3 - lv 3
0x47A5 - lv 4?
0x1879F - lv 5
0x187A1 - lv 6
0x187A5 - lv 4

"We are merely sprites that dance at the beck and call of our button pressing overlord."

Offline

#2 2007-01-12 4:23:47 am

Dwedit
Administrator
From: Chicago
Registered: 2004-12-12
Posts: 1,017
Website

Re: Yay, Zelda 2 rom expansion

For no reason, I just made an IPS patch which after expanding the rom, turns Zelda 2 into a version that can switch between the hack "Zelda II Part 2" (by the_icepenguin) and the original zelda 2.  This is just a test...

Enter North Castle to change which game.
Apply the patch to an expanded Zelda 2.


Attachments:
Attachment Icon z2_part2.ips, Size: 14,555 bytes, Downloads: 229

"We are merely sprites that dance at the beck and call of our button pressing overlord."

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman