Ultima. If you want to learn about the jumping mechanics, you can start at 14C5, bank 0. It's not the exact start of everything related to Link's movement, but it's the main part for jumping. You may have to go back and forth between Bank 0 and Bank 7 a few times. I reuploaded all my disassemblies to my website (8 Banks + RAM Map), so that you can have the newest comments. You will need at least one variable of your own. You can store it in Cartridge RAM. That variable would indicate which jump Link is performing. You have to reset that variable when Link touches the ground. I figure the second jump would reset Link's negative Y velocity.
As for the Ice Tile shenanigans, the collision checks in Zelda II are quite limited. Either the tile is transparent (background tile, no collision), or the tile is solid. Every frame, the engine checks to the four sides of Link (and most enemies) whether the tile he touches is solid or not, and sets the variable at RAM A7 (A8,X for enemies) accordingly, one bit per side. This information is used to calculate jumps, falling, walking, etc.
Other than that, there are special tiles that have their own processes, like the surface of lava and breakable blocks, among others. Each region has a list of such tile codes, and the engine goes through them. For example, for West Hyrule, at 451A, there is a table of 9 bytes like this :
451A: Tile Codes for Specific Interactions (9 bytes)
00 00 00 00 61 60 80 87 91
Tile Code 61 is Breakable Block, 60 is Breaking Bridge, 80 and 87 are Lava Surface (maybe one is Water Surface, but the graphics are the same), and 91 is Swamp. Same table for East Hyrule, in Bank 2. Other banks have their own list. We can safely assume 00 does nothing, and therefore we can set whatever value we want there and code whatever we want.
For an Ice Tile to work, we would have to slow down acceleration and deceleration in some way. As far as I know, there is no "subunits" for velocity/acceleration in Zelda II, so we have to work with integers. On the other hand, table at 13B3 says that 18 is Link's max X Velocity, which can't be pixels/frame, that would be way too fast.EDIT
Ultima. Banks 1 to 5 have palettes at [bank offset + 0x0E], so 400E, 800E, and so on. First the background palettes (8 groups of 0x10, plus one for grotto without candle), then at 0x40AE, sprites palettes, with the first byte of each group set to FF. Palette 0 is the one used for Link, so you can change them to whatever you want. If you want Link to always have the same color, you have to change the 5 sprite palette groups. The values I used in the Ice Tile hack are: FF 08 36 11. Use this chart for approximate reference:EDIT 2
Links for the disassemblies:http://www.bwass.org/romhack/zelda2/zelda2bank0.txthttp://www.bwass.org/romhack/zelda2/zelda2bank1.txthttp://www.bwass.org/romhack/zelda2/zelda2bank2.txthttp://www.bwass.org/romhack/zelda2/zelda2bank3.txthttp://www.bwass.org/romhack/zelda2/zelda2bank4.txthttp://www.bwass.org/romhack/zelda2/zelda2bank5.txthttp://www.bwass.org/romhack/zelda2/zelda2bank6.txthttp://www.bwass.org/romhack/zelda2/zelda2bank7.txthttp://www.bwass.org/romhack/zelda2/zelda2rammap.txt