11 March 2016 - Forum Rules
Started by ShadowOne333, March 15, 2018, 01:29:52 PM
Quote from: Trax on October 29, 2018, 11:42:39 PMGoing from MMC1 to MMC3 is not a piece of cake. It involves a different way of loading graphics. You can probably use the same CHR swap as the original, i.e. swap 0x2000 bytes at PPU 0x0000 or 0x1000 in one shot. But the advantage of MMC3 is that you can individually swap smaller chunks of the PPU at any given time. I think the smallest is 0x400 bytes, which is a quarter of 0x0000 or 0x01000, or 64 tiles. That would make tile animation a lot easier and less "hacky".As far as I know, MMC1 allows a maximum of 16 banks, so the expansion of banks is possible with MMC1. Just change the ROM's header, and then make sure the correct banks are swapped as needed. As for Zelda II specifically, you have to take bank 7 and move it to 15. I think the rest can be left where it is.In Shadow of Night, the code for the Overworld bank swapping is at 0x2A40.
Quote from: ultimaweapon on November 21, 2018, 11:19:02 AMHow do you edit the text without using an separate text editor? How do you edit the palettes for the final room after you beat Dark Link and wake up princess Zelda without an editor?
Quote from: Trax on November 21, 2018, 09:47:41 PMI think the final scene with Link, Zelda and the Triforce uses the same data as North Castle. If it's the case, then changing palettes could be tricky.As for the tunic's color, the Shield spell puts the value #$16 in RAM $69DE (used for when Link flashes) and $070F (used for Link's color per se). RAM $070F is also used as the condition for Shield spell's effect, which is to half the damage received from enemies. If this variable is anything other than 0, then Shield is in effect. So, changing that color is a breeze, but having two types of tunics would require a bit of ASM.
Shield routine: Jump on colour original opcode -> Is life level <5? -> Branch to blue color -> Else go to original code
Quote from: Shadic on November 21, 2018, 06:42:35 PMI'm a fan of the first option.Also, I feel like the Fire spell should really be buffed in some way. Travel faster, do more damage (if feasible?), and definitely hurt all enemies.
Quote from: Trax on November 22, 2018, 08:20:11 PMShadowOne, keep in mind I'm not positive on the Ending Scene thing. Maybe there's a specific block of data in Bank 5. As for Shield, yes, it's the basic logic, so it's not complicated. And for the Pause thing, I don't really have time to check it out, mostly because I'm struggling with my own Overworld things, for my hack. I do know that RAM $79 and $7A are supposed to be the offset in the Name Table(s) for Overworld redrawing.
Quote from: Trax on November 28, 2018, 01:18:45 AMDon't touch the L tile in the HUD.This tile, as innocent as it may seem, is used to synchronize Sprite Zero, which is crucial for the timing of the HUD vs. the rest of the viewport, especially when it comes to scrolling. In the screenshot above, the L tile has been moved 2 tiles to the left. If you play the entire game and are absolutely certain that noting weird happens with vertical alignment of sprites or background tiles and scrolling, then you get a pass, but it's at your own risk.
Quote from: Trax on November 28, 2018, 01:18:45 AMAs for the white Magic square, it's actually a sprite that is drawn in the background (there's a sprite attribute for that), and serves as the last container that is not full or empty. Full and empty containers are drawn as background tiles. Same for the Life square. These sprites move leftward as you take damage or consume magic, and rightward as you gain them.I checked the code starting from the offset you gave me, and the code that sets the two sprites is a little further, starting at $17BB. There are 4 values written in sequence starting from $02F8 (this address is in a 2-byte table just before this routine, at $17B9), using the command STA ($00),Y. First value is 0F, which is the Y position of the sprites. This is your problem. The original game uses the same Y position for both. Your setup doesn't.Second value is the tile code, taken from $1689 (70) or $168A (6E), depending of whether you're drawing Life or Magic. Third value is 0x21, which is the sprite attributes, and it sets the palette to 01 and activates the flag to draw the sprite in the background. Fourth value is the X position, taken from $168B or $168C, plus the value of the last unit of the meter.Ideally, you'd have to rewrite the routine in a way that swaps the operations for X and Y positions. Your case has X position the same for both, so it would be hard-coded, and Y position different for each meter, so it would be taken from the table.
Page created in 0.092 seconds with 19 queries.