Zelda II Bank 2 0x8000 - 0xBFFF -------- 8000: Pointer table for background level data (1-6) 628C -> 8C62 7A8C -> 8C7A 8E8C -> 8C8E A28C -> 8CA2 BC8C -> 8CBC CE8C -> 8CCE 0000 -> Background area type 7 ---- 800E: Palettes for East Hyrule (38 * 4 = E0 bytes) The first byte of 0x10 sets the background color FF = transparency 0F 30 12 16 ? (Palette Type 0) 0F 36 16 07 0F 00 10 30 0F 23 03 0F 0F 30 12 16 Grotto (Palette Type 1) 0F 37 27 06 0F 27 16 0F 0F 30 10 00 22 30 12 16 Desert (Palette Type 2) 22 29 17 09 22 30 36 27 22 30 10 00 21 30 12 16 Grass (Palette Type 3) 21 30 00 0F 21 29 19 09 21 30 10 00 0F 30 12 16 Forest (Palette Type 4) 0F 17 07 08 0F 29 19 09 0F 30 10 00 21 30 12 16 Swamp (Palette Type 5) 21 37 18 0F 21 29 1C 0C 21 30 10 00 03 30 12 16 Graveyard (Palette Type 6) 03 19 09 0F 03 27 16 0F 03 30 00 0F 21 30 12 16 Bridge (Palette Type 7) 21 37 18 0F 21 30 11 01 21 30 10 00 0F 30 12 16 Grotto without Candle 0F 12 01 0F 0F 0F 0F 0F 0F 0F 0F 0F FF 18 36 2A Palettes for Sprites in Grass, Desert, Swamp, Graveyard FF 16 27 30 FF 0F 16 30 FF 0F 2C 30 FF 18 36 2A Palettes for Sprites in Palisade Pass FF 16 27 30 FF 07 16 30 FF 0C 2C 30 FF 18 36 2A ? FF 16 27 30 FF 0F 1C 2C FF 0F 15 25 FF 18 36 2A ? FF 16 27 30 FF 0F 2A 30 FF 0F 16 26 FF 01 21 11 ? FF 16 27 30 FF 0F 0F 0F FF 0F 0F 0F ---- 80EE: 8A TXA 80EF: 4A LSR 80F0: 4A LSR 80F1: 4A LSR 80F2: 4A LSR 80F3: AA TAX 80F4: CA DEX 80F5: AD 3007 LDA $0730 ; Position of Object Placement 80F8: 29 F0 AND #$F0 ; keep bits xxxx .... 80FA: C9 F0 CMP #$F0 80FC: D0 05 BNE $8103 80FE: 8A TXA 80FF: 18 CLC 8100: 69 0F ADC #$0F 8102: AA TAX 8103: 8A TXA 8104: 20 85D3 JSR $D385 ; Go to pointer A in following table ---- 8107: Pointer table for Objects Construction Routines (10 * 2 = 20 bytes) 8F93 -> 938F Background for Palisade (1x) F381 -> 81F3 Object 2 high, X wide (2x) F381 -> 81F3 Object 2 high, X wide (3x) F381 -> 81F3 Object 2 high, X wide (4x) 0182 -> 8201 Object 1 high, X wide (5x) 0182 -> 8201 Object 1 high, X wide (6x) 0182 -> 8201 Object 1 high, X wide (7x) 0182 -> 8201 Object 1 high, X wide (8x) 0182 -> 8201 Object 1 high, X wide (9x) 0182 -> 8201 Object 1 high, X wide (Ax) 0182 -> 8201 Object 1 high, X wide (Bx) 0182 -> 8201 Object 1 high, X wide (Cx) 1782 -> 8217 Object X high, 1 wide, single tile type (Dx) 1D82 -> 821D Object X high, 1 wide (Ex) 1D82 -> 821D Object X high, 1 wide (Fx) 1D82 -> 821D Object X high, 1 wide (invalid) 8127: Special Objects (Y Position = F) (4 * 2 = 8 bytes) 8A82 -> 828A Lava Pit 6582 -> 8265 Cactus D582 -> 82D5 Cactus with Arm BA82 -> 82BA Elevator ---- 412F: 8A TXA 4130: 20 85D3 JSR $D385 ; Go to pointer A in following table ---- 4133: Pointer table for Small Objects Construction Routines (10 * 2 = 20 bytes) F982 -> 82F9 Gravestone EE82 -> 82EE Cross F282 -> 82F2 Slanted Cross C882 -> 82C8 Tree Stump 1383 -> 8313 Dolmen C182 -> 82C1 Locked Door (Y Position set to 8) 4083 -> 8340 Zelda 4083 -> 8340 Zelda 3183 -> 8331 Pit Extending to Ground 5283 -> 8352 Long Cloud 5883 -> 8358 Short Cloud 5883 -> 8358 Short Cloud 5883 -> 8358 Short Cloud 5883 -> 8358 Short Cloud 5883 -> 8358 Short Cloud 5883 -> 8358 Short Cloud ---- 8153: Tables for Level Layers Tile Codes (8 * 9 = 48 bytes) 42 42 54 52 42 42 55 53 53 40 40 8D 90 40 40 8D 8C 90 40 40 40 80 40 40 40 89 89 40 40 40 87 40 40 40 91 91 40 40 40 8A 40 40 40 8F 8F 51 51 54 52 51 51 55 53 53 40 40 40 C9 40 40 8B 8B C9 40 40 54 52 40 40 55 53 53 ---- 819B: 53 5C 65 6E 77 80 89 92 Table for Level Layers Data pointers (8 bytes) Pointer created from 81 (81AC) and a value from this table 8153 -> 8153 815C -> 815C 8165 -> 8165 816E -> 816E 8177 -> 8177 8180 -> 8180 8189 -> 8189 8192 -> 8192 ---- Build a pointer with 81 and a value from 819B 81A3: AE 0C01 LDX $010C ; Tile Set for Ceiling and Floor 81A6: BD 9B81 LDA $819B,X 81A9: 85 0C STA $0C 81AB: A9 81 LDA #$81 ; A = 81 81AD: 85 0D STA $0D 81AF: A0 08 LDY #$08 ; Y = 08 81B1: B1 0C LDA ($0C),Y 81B3: 8D 0D01 STA $010D ; Area Bottom Row Tile Code 81B6: 60 RTS ---- 81B7: Table for Objects Set 0 Tile Codes (F * 2 = 1E bytes) xx.. .... Table selector, from pointer table at $8500 ..xx xxxx Tile Code 40 40 Invalid Object 8C 8D Forest Leaves, 2 high 8C 8D Forest Leaves, 2 high C0 C1 Curtains, 2 high 8D 8E Forest Leaves, 1 high 61 61 Breakable Blocks, 1 high (invisible) 40 40 Horizontal Pit, 1 high 81 81 Single Weed, 1 high 82 82 Double Weed, 1 high 50 50 North Castle Carpet, 1 high 8B 8B North Castle Bricks, 1 high 51 51 Volcano Background, 1 high 61 61 Breakable Blocks, 1 wide (invisible) 4C 4B Tree Trunk, 1 wide 86 85 Column, 1 wide 81D5: Table for Objects Set 1 Tile Codes (F * 2 = 1E bytes) xx.. .... Table selector, from pointer table at $8500 ..xx xxxx Tile Code 40 40 Invalid Object 52 53 Wide Rock Floor, 2 high 53 55 Wide Rock Ceiling, 2 high 4D 5D Bridge, 2 high 54 54 Rock Platform, 1 high 61 61 Breakable Blocks, 1 high (invisible) 60 60 Breaking Bridge, 1 high 81 81 Single Weed, 1 high 82 82 Double Weed, 1 high 40 40 Horizontal Pit, 1 high 8B 8B North Castle Bricks, 1 high 51 51 Volcano Background, 1 high 61 61 Breakable Blocks, 1 wide 52 53 Rock Floor, 1 wide 59 5A Vertical Dolmen, 1 wide ---- 81F3: 20 0182 JSR $8201 81F6: A5 00 LDA $00 81F8: 8D 1201 STA $0112 81FB: 20 4CDF JSR $DF4C 81FE: 4C 0482 JMP $8204 ---- 8201: 20 4782 JSR $8247 8204: AD 3107 LDA $0731 8207: 29 0F AND #$0F ; keep bits .... xxxx 8209: AA TAX 820A: 20 44C9 JSR $C944 820D: AD 1201 LDA $0112 8210: 20 E7DE JSR $DEE7 ; Set tile and move right 1 column 8213: CA DEX 8214: 10 F7 BPL $820D 8216: 60 RTS ---- 8217: 20 4782 JSR $8247 821A: 4C 3482 JMP $8234 ---- Object X high, 1 wide 821D: 20 4782 JSR $8247 8220: 20 44C9 JSR $C944 8223: AD 1201 LDA $0112 8226: 20 56DF JSR $DF56 8229: 8D 3007 STA $0730 822C: CE 3107 DEC $0731 822F: A5 00 LDA $00 8231: 8D 1201 STA $0112 8234: AD 3107 LDA $0731 8237: 29 0F AND #$0F ; keep bits .... xxxx 8239: AA TAX 823A: 20 44C9 JSR $C944 823D: AD 1201 LDA $0112 8240: 20 56DF JSR $DF56 ; Set tile and go down 1 row 8243: CA DEX 8244: 10 F7 BPL $823D 8246: 60 RTS ---- 8247: 8A TXA 8248: 0A ASL 8249: AA TAX 824A: A0 01 LDY #$01 ; Y = 01 824C: B1 D4 LDA ($D4),Y 824E: 0A ASL 824F: BD D581 LDA $81D5,X ; Table for Objects Set 1 Tile Codes 8252: B0 03 BCS $8257 8254: BD B781 LDA $81B7,X ; Table for Objects Set 0 Tile Codes 8257: 8D 1201 STA $0112 825A: BD D681 LDA $81D6,X 825D: B0 03 BCS $8262 825F: BD B881 LDA $81B8,X 8262: 85 00 STA $00 8264: 60 RTS ---- Cactus Tile Setup 8265: 20 47C9 JSR $C947 8268: AD 3007 LDA $0730 826B: 29 0F AND #$0F ; keep bits .... xxxx 826D: 09 90 ORA #$90 ; set bits x..x .... (default Y position) 826F: 8D 3007 STA $0730 8272: A8 TAY 8273: AD 3107 LDA $0731 8276: 29 0F AND #$0F ; keep bits .... xxxx 8278: AA TAX 8279: A9 47 LDA #$47 ; A = 47 (Cactus Base Tile Code) 827B: 91 0E STA ($0E),Y ; 827D: 98 TYA ; 827E: 38 SEC ; 827F: E9 10 SBC #$10 ; Go up 1 row 8281: A8 TAY ; 8282: CA DEX ; 8283: D0 F4 BNE $8279 ; loop to $8279 8285: A9 46 LDA #$46 ; A = 46 (Cactus Top Tile Code) 8287: 91 0E STA ($0E),Y 8289: 60 RTS ---- Lava Pit Tile Setup 828A: AD 3007 LDA $0730 828D: 29 0F AND #$0F ; keep bits .... xxxx 828F: 09 A0 ORA #$A0 ; set bits x.x. .... 8291: 8D 3007 STA $0730 8294: A9 80 LDA #$80 ; A = 80 (Lava Surface Tile Code) 8296: 8D 1201 STA $0112 8299: AD 3107 LDA $0731 829C: 29 0F AND #$0F ; keep bits .... xxxx 829E: AA TAX 829F: 20 44C9 JSR $C944 82A2: AD 1201 LDA $0112 ; 82A5: 20 E7DE JSR $DEE7 ; Set tile and move right 1 column 82A8: CA DEX ; 82A9: 10 F7 BPL $82A2 ; loop to $82A2 82AB: A9 89 LDA #$89 ; A = 89 (Lava Tile Code) 82AD: 8D 1201 STA $0112 82B0: 20 4CDF JSR $DF4C ; Go down 1 row 82B3: 29 F0 AND #$F0 ; keep bits xxxx .... 82B5: C9 D0 CMP #$D0 82B7: 90 E0 BCC $8299 82B9: 60 RTS ---- 82BA: AD 0A01 LDA $010A 82BD: 8D 5707 STA $0757 82C0: 60 RTS ---- 82C1: AD 0A01 LDA $010A 82C4: 8D 5807 STA $0758 82C7: 60 RTS ---- Tree Stump Tile Setup (glitched in East Hyrule) 82C8: 20 44C9 JSR $C944 82CB: A9 5B LDA #$5B ; A = 5B 82CD: 20 56DF JSR $DF56 ; Set tile and go down 1 row 82D0: A9 5C LDA #$5C ; A = 5C 82D2: 91 0E STA ($0E),Y 82D4: 60 RTS ---- Cactus with Arm Tile Setup 82D5: 20 47C9 JSR $C947 82D8: AD 3007 LDA $0730 82DB: 29 0F AND #$0F ; keep bits .... xxxx 82DD: 09 90 ORA #$90 ; set bits x..x .... (default Y position) 82DF: A8 TAY 82E0: A9 49 LDA #$49 ; A = 49 (Cactus with Arm Bottom Tile Code) 82E2: 91 0E STA ($0E),Y 82E4: 98 TYA 82E5: 38 SEC 82E6: E9 10 SBC #$10 ; Go up 1 row 82E8: A8 TAY 82E9: A9 48 LDA #$48 ; A = 48 (Cactus with Arm Top Tile Code) 82EB: 91 0E STA ($0E),Y 82ED: 60 RTS ---- 82EE: A2 00 LDX #$00 ; X = 00 82F0: F0 09 BEQ $82FB 82F2: A2 01 LDX #$01 ; X = 01 82F4: D0 05 BNE $82FB ---- 82F6: C6 C7 C5 Table for Cross, Slanted Cross and Gravestone (3 bytes) ---- 82F9: A2 02 LDX #$02 ; X = 02 82FB: 20 44C9 JSR $C944 82FE: BD F682 LDA $82F6,X 8301: 91 0E STA ($0E),Y 8303: 60 RTS ---- 8304: Table for Dolmen Tile Codes (F bytes) 56 57 57 58 High Part (Horizontal Rock) FF End Byte 59 40 40 59 Middle Part (Top of Vertical Rocks) FF End Byte 5A 40 40 5A Low Part (Bottom of Vertical Rocks) FF End Byte ---- Dolmen Tile Setup 8313: A2 00 LDX #$00 ; X = 00 8315: 20 44C9 JSR $C944 8318: BD 0483 LDA $8304,X ; refer to table at $8304 831B: C9 FF CMP #$FF 831D: F0 07 BEQ $8326 831F: 20 E7DE JSR $DEE7 ; Set tile and move right 1 column 8322: E8 INX 8323: 4C 1883 JMP $8318 ---- 8326: E0 0E CPX #$0E 8328: F0 D9 BEQ $8303 832A: 20 4CDF JSR $DF4C ; Go down 1 row 832D: E8 INX 832E: 4C 1583 JMP $8315 ---- Pit Extending to Ground Tile Setup 8331: 20 44C9 JSR $C944 8334: A9 40 LDA #$40 ; A = 40 (Empty Tile) 8336: 20 56DF JSR $DF56 ; Set tile and go down 1 row 8339: 29 F0 AND #$F0 ; keep bits xxxx .... 833B: C9 D0 CMP #$D0 ; stop at bottom of screen 833D: 90 F5 BCC $8334 833F: 60 RTS ---- Zelda Tile Setup (glitched in East Hyrule) 8340: 20 44C9 JSR $C944 8343: A2 01 LDX #$01 ; X = 01 8345: A9 4E LDA #$4E ; A = 4E (Zelda's Head Tile Code) 8347: D0 02 BNE $834B 8349: A9 4F LDA #$4F ; A = 4F (Zelda's Body Tile Code) 834B: 91 0E STA ($0E),Y 834D: C8 INY 834E: CA DEX 834F: 10 F8 BPL $8349 8351: 60 RTS ---- 8352: A2 00 LDX #$00 ; X = 00 8354: F0 04 BEQ $835A ---- 8356: Table for Right End of Clouds Tile Codes (2 bytes) C3 Long Cloud C4 Short Cloud ---- 8358: A2 01 LDX #$01 ; X = 01 835A: 20 44C9 JSR $C944 835D: A9 C2 LDA #$C2 ; A = C2 835F: 91 0E STA ($0E),Y 8361: C8 INY 8362: BD 5683 LDA $8356,X 8365: 91 0E STA ($0E),Y 8367: 60 RTS ---- Check for Hidden Palace spot 8368: AD 0607 LDA $0706 ; Current Region 836B: C9 02 CMP #$02 ; Region 02 = East Hyrule 836D: D0 1F BNE $838E ; if NOT 02, return 836F: A5 73 LDA $73 ; Y position on map 8371: C9 64 CMP #$64 ; Y position of Hidden Palace call spot 8373: D0 12 BNE $8387 8375: A5 74 LDA $74 ; X position on map 8377: C9 2D CMP #$2D ; X position of Hidden Palace call spot 8379: D0 0C BNE $8387 837B: A9 0B LDA #$0B ; A = 0B 837D: 8D 2507 STA $0725 ; PPU Macro Selector 8380: E6 01 INC $01 ; 2 tiles 8382: E6 01 INC $01 ; south... 8384: 4C 79DF JMP $DF79 ---- Check for Spider in OW 8387: AD 6305 LDA $0563 ; Type of terrain Link is facing 838A: C9 0F CMP #$0F ; Terrain Type F = Spider 838C: F0 01 BEQ $838F 838E: 60 RTS ---- 838F: 20 A183 JSR $83A1 8392: 4C 79DF JMP $DF79 ---- PPU Macro for transformation Rock -> Desert (C bytes) 8395: 0A 00 00 82 6C 6C 00 00 82 6C 6C FF The two "00 00" are replaced with an offset in the Name Table ---- 83A1: 20 01DF JSR $DF01 83A4: A9 00 LDA #$00 ; A = 00 83A6: 85 7D STA $7D 83A8: A0 0B LDY #$0B ; Y = 0B 83AA: B9 9583 LDA $8395,Y ; refer to table at $8395 83AD: 99 0103 STA $0301,Y 83B0: 88 DEY 83B1: 10 F7 BPL $83AA 83B3: A5 79 LDA $79 83B5: 8D 0203 STA $0302 83B8: 8D 0703 STA $0307 83BB: A5 7A LDA $7A 83BD: 8D 0303 STA $0303 83C0: 18 CLC 83C1: 69 01 ADC #$01 83C3: 8D 0803 STA $0308 83C6: A5 76 LDA $76 ; X position on map (Link) 83C8: 85 00 STA $00 83CA: A5 75 LDA $75 ; Y position on map (Link) 83CC: 85 01 STA $01 83CE: 60 RTS ---- 83CF: A5 00 LDA $00 83D1: C9 40 CMP #$40 ; Check if at the extreme right of the map 83D3: B0 2F BCS $8404 ; Overworld width here too (east boundary) 83D5: A5 01 LDA $01 83D7: 38 SEC 83D8: E9 1E SBC #$1E 83DA: 85 04 STA $04 83DC: C9 4B CMP #$4B 83DE: B0 24 BCS $8404 83E0: 20 BA93 JSR $93BA 83E3: E6 00 INC $00 83E5: A9 00 LDA #$00 ; A = 00 83E7: 85 03 STA $03 83E9: A2 03 LDX #$03 ; X = 03 83EB: B1 0E LDA ($0E),Y 83ED: 29 0F AND #$0F ; keep bits .... xxxx 83EF: 85 02 STA $02 83F1: B1 0E LDA ($0E),Y 83F3: 4A LSR 83F4: 4A LSR 83F5: 4A LSR 83F6: 4A LSR 83F7: 38 SEC 83F8: 65 03 ADC $03 83FA: 85 03 STA $03 83FC: C5 00 CMP $00 83FE: B0 08 BCS $8408 8400: C8 INY 8401: 4C EB83 JMP $83EB ---- 8404: A9 0C LDA #$0C ; A = 0C 8406: 85 02 STA $02 8408: 60 RTS ---- 8409: Code values for Random Battle Areas (7 * 2 = E bytes) North-East Hyrule / South-East Hyrule 5D 5E Desert 62 63 Grass 67 68 Forest 6F 70 Swamp 74 75 Graveyard 79 7A Road 7B 7C Lava xx.. .... Enter Code (1 = Middle of Screen 1) ..xx xxxx Area Code 04 - Desert 05 - Grass 06 - Forest 07 - Swamp 08 - Graveyard 09 - Road 0A - Lava 5D 5E -> 1D 1E 62 63 -> 22 23 67 68 -> 27 28 6F 70 -> 2F 30 74 75 -> 34 35 79 7A -> 39 3A 7B 7C -> 3B 3C ---- 8417: Table 0-1 for Area Objects Tile Mappings (22 * 4 = 88 bytes) F4 F4 F4 F4 F4 F4 F4 F4 38 39 3A 3B FD FD FD FD FF FF FF FF 53 53 54 54 3C 3D F4 F4 3D 3D F4 F4 3C 3D F4 3E 3D 3D 3F F4 6E 6E 6F 6F 44 45 46 47 33 45 34 47 F4 7C F4 7C 28 2C 29 2C 2A 2C 2B 2C 7F FE 7F FE 2C 2D 2E 2F A1 9F A2 A0 9D 9E 9F A0 A1 A3 A2 A4 9D A3 9E A4 88 89 8A 8B 8A 8B 8A 8B 8A 8B 8C 8D A7 A8 A9 AA A8 A8 AA AA 40 40 42 42 40 41 42 43 7D F4 7D F4 87 F4 87 F4 87 6D 87 6F 92 93 92 93 68 69 68 69 ---- 849F: Table 2 for Area Objects Tile Mappings (12 * 4 = 48 bytes) 98 99 98 99 4E 4F F4 F4 4E 4F 4E 4F 4C 4D 4C 4D 78 79 78 79 A5 A5 A6 A6 8E 8F 90 91 98 99 98 99 98 99 98 99 FE FE FE FE F4 F4 F4 35 9A 9B 9A 9B 50 51 52 53 50 54 52 55 7A 7F 7C 81 36 36 37 37 48 49 4A 4B 99 99 99 99 ---- 84E7: Unused Space (19 bytes) ---- 8500: Pointer table for Objects Tile Mappings (4 * 2 = 8 bytes) 1784 -> 8417 1784 -> 8417 9F84 -> 849F 6093 -> 9360 ---- 8508: Pointer table for Overworld Map Data (2 * 2 = 4 bytes) 4690 -> 9046 East Hyrule 4CA6 -> A64C Maze Island ---- Determine if Tile is Solid 850C: 48 PHA 850D: 29 C0 AND #$C0 ; keep bits xx.. .... 850F: 18 CLC 8510: 2A ROL 8511: 2A ROL 8512: 2A ROL 8513: A8 TAY 8514: 88 DEY 8515: 68 PLA 8516: D9 8C93 CMP $938C,Y 8519: 60 RTS ---- 851A: Tile Codes for Specific Interactions (9 bytes) 00 00 00 00 61 60 80 87 91 61 = Breakable Block 60 = Breaking Bridge 80 = Lava Surface 87 = Lava Surface (Water Surface maybe ?) 91 = Swamp ---- 8523: Area Pointers - East Hyrule (3F * 2 = 7E bytes) 808D -> 8D80 00 808D -> 8D80 848F -> 8F84 02 Palisade Pass 1 848F -> 8F84 848F -> 8F84 848F -> 8F84 0B8F -> 8F0B 8A8F -> 8F8A 7E8E -> 8E7E 628E -> 8E62 B48E -> 8EB4 2E8E -> 8E2E 9B8F -> 8F9B 968E -> 8E96 628E -> 8E62 D88C -> 8CD8 7E8E -> 8E7E 10 968E -> 8E96 D88C -> 8CD8 7E8E -> 8E7E 628E -> 8E62 628E -> 8E62 A68F -> 8FA6 0B8F -> 8F0B BF8E -> 8EBF BF8E -> 8EBF BF8E -> 8EBF D88C -> 8CD8 D88C -> 8CD8 D88C -> 8CD8 D88C -> 8CD8 D88C -> 8CD8 D88C -> 8CD8 20 B58D -> 8DB5 F48C -> 8CF4 F48C -> 8CF4 F48C -> 8CF4 F48C -> 8CF4 A08D -> 8DA0 0E8D -> 8D0E 0E8D -> 8D0E 0E8D -> 8D0E 0E8D -> 8D0E D88C -> 8CD8 F78D -> 8DF7 0490 -> 9004 F98F -> 8FF9 308D -> 8D30 308D -> 8D30 30 308D -> 8D30 308D -> 8D30 DC8D -> 8DDC 528D -> 8D52 528D -> 8D52 528D -> 8D52 528D -> 8D52 278F -> 8F27 718F -> 8F71 718F -> 8F71 BA8F -> 8FBA BA8F -> 8FBA BA8F -> 8FBA 1990 -> 9019 ---- 85A1: Enemy Pointers - East Hyrule (3F * 2 = 7E bytes) Base Offset is 88A0 F670 -> 8996 1071 -> 89B0 5E71 -> 89FE 6871 -> 8A08 7271 -> 8A12 7C71 -> 8A1C 0271 -> 89A2 0070 -> 88A0 2871 -> 89C8 3271 -> 89D2 FD71 -> 8A9D 3871 -> 89D8 5071 -> 89F0 4871 -> 89E8 4271 -> 89E2 0070 -> 88A0 A671 -> 8A46 9C71 -> 8A3C 5471 -> 89F4 C871 -> 8A68 AC71 -> 8A4C F48C -> 8CF4 ? 2070 -> 88C0 8E71 -> 8A2E CE71 -> 8A6E DC71 -> 8A7C EA71 -> 8A8A 0070 -> 88A0 0070 -> 88A0 0270 -> 88A2 5070 -> 88F0 5070 -> 88F0 5070 -> 88F0 8870 -> 8928 2070 -> 88C0 6070 -> 8900 6070 -> 8900 6070 -> 8900 9470 -> 8934 2E70 -> 88CE 7670 -> 8916 7670 -> 8916 7670 -> 8916 0070 -> 88A0 9E70 -> 893E 8A71 -> 8A2A 0070 -> 88A0 A270 -> 8942 A270 -> 8942 A270 -> 8942 A270 -> 8942 D870 -> 8978 BA70 -> 895A BA70 -> 895A BA70 -> 895A BA70 -> 895A BA70 -> 895A F771 -> 8A97 F771 -> 8A97 DC70 -> 897C DC70 -> 897C FE70 -> 899E FA71 -> 8A9A ---- 861F: East Hyrule - Key Areas Y Location (3F bytes) 865E: East Hyrule - Key Areas X Location (3F bytes) 869D: East Hyrule - Key Areas Map Number (3F bytes) 86DC: East Hyrule - Key Areas World Number (3F bytes) 871B: East Hyrule - Area Connectivity Data (1D * 4 = 74 bytes) ---- 878F: Pointer table for Palaces offsets in Saved RAM (4 * 2 = 8 bytes) 0A7D -> 7D0A Palace 5 087F -> 7F08 Palace 6 0000 -> 0000 Nothing A67D -> 7DA6 Palace 4 (in Maze Island) ---- 8797: 04 05 FF 03 Table for Palaces to test for completion (4 bytes) FF = don't test 04 = check for item at $0785 + offset 04 00 = Candle 01 = Glove 02 = Raft 03 = Boot 04 = Flute 05 = Cross ---- Transform completed palaces into stone 879B: A2 03 LDX #$03 ; X = 03 (test 0-1-2-3) 879D: AD 0607 LDA $0706 ; Current Region 87A0: C9 02 CMP #$02 87A2: D0 02 BNE $87A6 87A4: A2 01 LDX #$01 ; X = 01 87A6: BD 9787 LDA $8797,X ; refer to table at $8797 87A9: C9 FF CMP #$FF 87AB: F0 1E BEQ $87CB 87AD: A8 TAY 87AE: B9 8507 LDA $0785,Y ; Item Collected? 87B1: F0 18 BEQ $87CB 87B3: B9 8D07 LDA $078D,Y ; Crystal Placed? 87B6: F0 13 BEQ $87CB 87B8: 8A TXA 87B9: 0A ASL 87BA: A8 TAY 87BB: B9 8F87 LDA $878F,Y 87BE: 85 0E STA $0E 87C0: B9 9087 LDA $8790,Y 87C3: 85 0F STA $0F 87C5: A0 00 LDY #$00 ; Y = 00 87C7: A9 0B LDA #$0B ; A = 0B (0B = 1 Unit of Mountain) 87C9: 91 0E STA ($0E),Y 87CB: E0 03 CPX #$03 87CD: F0 03 BEQ $87D2 87CF: CA DEX 87D0: 10 D4 BPL $87A6 87D2: 60 RTS ---- 87D3: Unused Space (CD bytes) ---- 88A0: Enemy Data - East Hyrule and Maze Island (3C2 bytes) 01 01 11 63 16 6A 11 6E 16 61 56 6D 56 61 91 66 96 6B 96 0D 66 16 6E 16 61 58 6E 56 63 96 6A 96 07 6D 14 62 54 69 94 07 68 14 08 57 66 94 0D 44 15 59 15 4D 15 5C 55 41 95 49 95 15 03 0E 47 15 09 0D 5D 15 02 4E 0F 4D 40 95 03 8E 59 95 0A 8D 05 68 19 67 99 0B 66 16 68 19 63 56 6F 56 66 99 0D 72 14 78 04 70 44 72 54 73 84 76 94 09 78 14 7E 18 71 94 7C 94 09 47 1B 08 0D 45 9B 0A 8D 09 47 1A 08 0E 04 8E 45 9A 0B 76 16 7E 16 70 56 75 56 77 D6 01 09 5B 15 60 55 4E 55 22 95 01 03 7B 5A 01 0F 33 15 57 15 4E 15 03 57 4D 55 53 95 49 95 09 64 11 05 57 63 92 69 91 11 45 06 5B 06 1E 06 50 46 09 46 4D 46 60 86 36 86 0D 44 1C 49 06 43 46 3C 46 48 86 4B 9C 03 00 57 01 0D 25 06 3B 15 30 46 29 46 41 95 3A 86 0D 45 1C 27 06 3E 06 2A 46 42 9C 36 86 07 70 0F 1D 58 7F CF 01 03 67 99 01 0D 7F 0B 2D 12 32 52 51 92 71 D2 7F CB 01 07 70 0F 1D 58 7F CF 01 09 07 06 5A 19 3D 46 52 99 07 56 1A 08 57 46 9C 09 08 0A 06 4A 06 8A 70 D8 01 05 2C 14 4D 54 01 09 6C 55 31 95 0D 95 11 D5 01 05 01 5B 44 DA 01 07 6D 14 69 54 63 D4 01 03 79 99 01 05 7A 1C 7A 99 01 03 79 99 01 09 1F 1D 7C 5B 1F 5D 16 DD 01 09 1F 1D 7D 58 1F 5D 16 DD 01 09 1F 1D 7C 5B 1F 5D 16 DD 01 0D 1F 1D 60 06 1F 5D 3D 46 16 DD 45 C6 01 03 58 40 01 0D 2D 12 34 52 4C 52 50 92 56 92 71 D2 01 09 52 54 6C 54 58 94 60 D4 01 05 7A 1C 7A 9A 01 0F 27 15 1C 15 2A 55 3E 46 11 95 23 D5 41 C6 01 0B 27 15 1C 15 2A 55 11 95 23 D5 01 05 7A 1C 7A 99 01 0D 5B 1B 5A 55 30 86 47 86 6A 86 5D 9B 01 0D 5B 1A 5A 55 60 86 46 86 59 86 5D 9A 01 0D 5B 1B 5A 55 30 86 47 86 6A 86 5D 9B 03 76 C1 03 76 81 03 79 99 01 01 11 39 1F 3B 1F 3D 1F 44 5F 5C 5F 64 9F 7C 9F 7E 9F 0F 6A 04 5C 04 7D 55 6F 44 76 95 6C 84 74 C4 0F 6C 11 4E 11 20 51 70 9B 2F 91 41 D1 63 D1 0F 0D 07 03 47 0A 4A 7B 5C 01 C7 74 DC 05 CA 0B 7B 12 63 52 5B 52 43 92 3D 92 05 0F 0F 00 CF 0F 7A 5F 7D 5F 7F 5F 70 9C 00 C7 03 C7 75 D7 11 60 51 63 51 66 51 69 51 66 91 69 91 6C 91 6F 91 09 2D 16 4B 52 56 92 3C 92 09 76 5C 79 5A 7C 5C 70 D7 05 0F 0F 00 CF 0D 09 07 6B 04 0E 07 61 44 04 47 75 D7 0D 25 44 39 41 2D 44 71 98 23 84 2B 84 11 60 51 63 51 66 51 69 51 66 91 69 91 6C 91 6F 91 0D 08 07 0E 07 5C 17 02 47 06 87 7F 9B 0F 3A 05 45 45 4E 57 64 85 7E 85 63 D7 75 C5 0F 76 01 7E 04 53 57 66 44 42 84 29 97 25 C4 0F 7F 11 73 51 75 51 79 81 7C 91 7E 91 71 D1 0B 76 58 07 8A 79 9C 7D 9C 08 CA 05 76 57 7F 98 0F 78 5F 79 5F 7B 5F 73 97 7D 9C 7F 9C 72 DC 09 6D 03 50 58 76 43 7B D8 03 50 83 09 32 51 3C 51 47 91 2D 91 09 60 52 46 92 4E 92 21 D4 07 57 58 40 94 24 D4 0F 6E 14 51 54 58 54 41 94 38 94 3C 94 23 D4 0B 6A 18 68 58 6C 58 66 98 63 D8 07 60 98 64 98 62 D4 05 06 57 01 D7 09 3A 04 68 58 6A 58 60 D4 0B 1D 11 2F 14 50 81 3A 91 4D 94 07 6A 18 64 98 68 98 03 78 9B 0B 77 15 1B 0E 1D 4D 17 8E 79 95 0D 0F 1D 75 16 17 0E 15 8E 79 96 00 9D 0F 7F 0C 3A 20 3E 20 1A 60 31 A0 38 A0 70 8C 09 67 1C 5A 1B 56 9B 6A 9C 11 72 06 48 06 7E 06 60 46 2D 46 6F 46 49 86 5E 86 0D 35 06 79 18 6D 06 5F 46 45 98 3A 86 ---- 8C62: Background Areas Data (1-6) (76 bytes) 18 60 90 00 14 09 32 0A 28 09 06 0A 48 09 18 09 32 0A 28 09 06 0A 48 09 14 48 90 60 06 EA 04 EA 02 EA 08 EA 06 EA 0A EA 04 EA 02 EA 14 48 90 60 08 EA 06 EA 06 EA 02 EA 08 EA 06 EA 0A EA 0A EA 1A 48 90 60 14 09 32 0A 28 09 06 0A 48 09 04 EA 14 09 32 0A 28 09 06 0A 48 09 12 E0 0E 48 D8 09 E1 00 D8 0F E2 00 D8 09 E3 00 D8 0E 0A E0 0E 08 D8 08 E3 00 D8 0F ---- 8CD8: Area Data - East Hyrule (36E bytes) 1F Unique Areas 1C C0 C2 11 F5 32 F2 41 F6 32 F4 41 F2 32 F2 41 F8 41 F4 41 F2 32 F2 32 F1 41 F4 41 1A 44 C2 18 86 91 53 E4 62 E3 84 92 87 91 85 92 53 E4 81 90 85 91 63 E3 83 90 22 40 F3 60 00 3F 10 3F 20 33 28 35 32 33 06 3F 10 3F 22 35 2C 31 02 3F 10 3F 20 35 30 33 2A 35 32 33 22 40 B1 29 96 80 74 E2 52 E4 92 80 74 E2 94 80 92 80 74 E2 54 E4 92 80 92 91 92 82 74 E2 72 E2 92 91 2E D0 F2 31 80 29 70 23 76 01 71 01 71 01 85 02 82 00 82 01 81 01 D2 81 92 00 94 01 91 01 D1 82 82 01 84 00 82 00 82 29 73 00 73 23 61 02 20 E0 A0 39 60 E6 61 E6 61 E6 61 E6 71 43 76 45 78 4E 7F 48 7B 49 7C 43 64 E6 61 E6 61 E6 61 E6 15 60 C1 19 E1 00 DA 83 D6 85 D4 87 46 0F 0C D4 85 D2 83 D2 81 27 E0 C2 11 F8 32 F2 41 F8 41 88 2F 70 2B 60 29 52 27 40 23 30 23 7C 0F 0D 82 29 70 29 60 29 50 27 42 25 30 23 FE 41 1B E0 B1 29 98 80 93 81 8F 2F 70 2F 62 2D 50 2D 44 27 30 27 24 0F 12 9E 80 94 80 37 E0 1B 60 D4 0A D2 09 91 F1 D3 08 80 04 D6 09 90 F1 D2 0A D2 0C D2 0D D4 0C 93 F1 D1 0A D2 09 80 04 D2 08 A3 0F 0D D1 09 90 F1 D2 0A D2 0B 90 F1 D6 0A D6 0B D4 0C 34 E0 0E 08 D4 0B D4 09 A2 2B 90 2B 82 27 70 27 62 23 50 23 D8 0C D2 0E D4 0B D2 09 A0 23 90 23 82 21 70 21 D2 04 D2 06 DE 04 D2 02 02 31 10 31 D2 0B D4 0D 1C E0 87 08 D6 85 D2 83 D4 85 D2 87 D6 85 D2 83 DC 85 D2 87 D8 85 D4 83 D6 85 D4 87 18 E0 0E 08 D4 0B D4 09 D6 00 DA 08 D4 09 D2 0B D2 0D 64 39 DE 0C D6 0E 1E E0 80 08 A6 2F 92 23 98 25 A6 2F 90 21 94 21 94 23 96 21 A2 2F 92 27 9C 21 A2 23 90 21 0B E0 80 0E E3 00 A7 0F 0D D1 0F 4C E0 D2 08 00 CB 10 CB D6 80 F0 23 D4 82 D2 0D A0 27 90 27 D8 82 00 CB 10 CB 82 E1 D1 80 F0 22 D3 82 D2 80 F0 22 D3 83 01 CB 10 CB D2 80 F0 22 D3 82 D2 80 F0 22 D3 82 D2 0D A0 27 90 27 D8 82 00 CB 10 CB 82 E1 D1 80 F0 22 D3 82 1C E0 F7 39 D8 80 F0 21 D2 86 D6 85 D8 84 D8 83 D8 82 D3 80 F0 21 D2 82 D3 81 D8 80 1C 60 F0 31 D8 81 DA 82 52 F3 52 F3 52 F3 84 B7 74 00 56 F3 52 F3 52 F3 D4 81 DA 80 2E E0 06 49 00 35 D4 04 D2 0A 90 E3 91 E3 D1 0C D2 0D DC 80 D4 0D DA 00 D2 07 30 E1 31 E1 31 E1 31 E1 31 E1 31 E1 31 E1 31 E1 31 E1 31 E1 13 01 C2 11 96 90 98 90 92 90 98 90 98 90 92 90 94 0F 12 06 60 90 60 30 17 11 E0 B1 39 E1 00 80 2B 8C 2D 70 29 60 29 50 0F 0F 0B E0 80 0E E3 00 A5 0F 0D D3 0F 09 E0 80 0E E3 00 A4 0F 0D 0B E0 80 0E E3 00 A3 0F 0D D5 0F 34 40 D2 08 00 CF 10 CF D4 83 D4 84 D2 80 F0 21 D2 84 D4 80 00 CF 10 CF F0 21 D2 83 D8 80 F0 21 D2 84 D2 83 02 CF 10 CF D4 80 F0 21 D2 84 D4 80 F0 21 D2 84 0B E0 80 0E E3 00 A3 0F 0A D5 0F 0B 80 C2 11 E1 00 74 0F 0F 80 21 08 08 90 61 E1 00 64 E4 0D E0 0E 08 D8 08 E3 00 A6 0F 0D D2 0F 2D 00 D1 48 00 CF 10 CF E1 00 00 CF 10 CF 94 0F 0D 72 F2 72 F2 72 F2 72 F2 E2 00 00 CF 10 CF 72 F2 72 F2 72 F2 72 F2 E3 00 00 CF 10 CF ---- 9046: East Hyrule Overworld Map Data (31A bytes) ---- 9360: Table 3 for Area Objects Tile Mappings (B * 4 = 2C bytes) 84 84 86 86 North Castle Curtains - Top (C0) 84 85 86 87 North Castle Curtains - Bottom (C1) B3 B4 B5 B6 Cloud - Left Part (C2) B5 B6 B7 B8 Long Cloud Right Part (C3) B7 B8 F4 F4 Short Cloud Right Part (C4) AF B0 B1 B2 Gravestone (C5) AD AE F4 F4 Cross (C6) AB AC F4 F4 Slanted Cross (C7) FE FE FE FE ? (C8) 7E 7E 7E 7E North Castle Floor (C9) BA BB BC BD Breakable Block (CA) ---- 938C: 52 8F C9 Table for Collisions Limits (3 bytes) Tile Code >= Value -> Collision Tile Code < Value -> No Collision ---- Palisade (1x) 938F: A9 03 LDA #$03 ; A = 03 (length of Palisade in screens) 9391: 85 05 STA $05 9393: AD 3007 LDA $0730 ; Position of Object Placement 9396: 85 04 STA $04 9398: A2 0D LDX #$0D ; X = 0D (Tile Code index used for Palisade) 939A: 20 1D82 JSR $821D ; Object X high, 1 wide 939D: EE 3107 INC $0731 ; Level Object Type and Size 93A0: E6 04 INC $04 93A2: A5 04 LDA $04 93A4: 8D 3007 STA $0730 ; Position of Object Placement 93A7: 29 0F AND #$0F ; keep bits .... xxxx 93A9: D0 ED BNE $9398 93AB: A9 30 LDA #$30 ; A = 30 93AD: 85 04 STA $04 93AF: 8D 3007 STA $0730 ; Position of Object Placement 93B2: EE 1707 INC $0717 ; Screen Number for Objects (0-3) 93B5: C6 05 DEC $05 93B7: 10 DF BPL $9398 93B9: 60 RTS ---- 93BA: 0A ASL 93BB: A8 TAY 93BC: B9 0060 LDA $6000,Y 93BF: 85 0E STA $0E 93C1: B9 0160 LDA $6001,Y 93C4: 85 0F STA $0F 93C6: A0 00 LDY #$00 ; Y = 00 93C8: 60 RTS ---- 93C9: Unused Space (37 bytes) ---- 9400: Pointer table for Projectile Routines (C * 2 = 18 bytes) 2F96 -> 962F Link Doll (Pwahaha!) 3796 -> 9637 Raising Bubble (with no Y Velocity) 4A96 -> 964A Rock (moves horizontally) 2796 -> 9627 Flame 2F96 -> 962F Energy Ball (blue, not flashing, causes less damage) 2F96 -> 962F Energy Ball (Tektite) (06) 2F96 -> 962F Mace (causes lots of damage) 5B96 -> 965B Rock with gravity 0000 -> 0000 Invalid 0000 -> 0000 Invalid 0000 -> 0000 Invalid 0000 -> 0000 Invalid ---- 9418: 00 80 41 83 01 03 94 81 00 Table for ? (9 bytes) Has something to do with projectiles collision test and shield absorption ---- 9421: Enemy Hit Points (24 bytes) 00 00 00 03 04 04 30 08 00 00 08 02 02 0C 0C 08 08 0C 0C 00 18 10 10 08 30 20 30 20 38 01 00 00 00 00 00 00 ---- 9445: Enemy Init Routines (24 * 2 = 48 bytes) AD95 -> 95AD Fairy (00) 1096 -> 9610 Red Jar (01) AD95 -> 95AD Locked Door (02) AD95 -> 95AD Myu (03) AD95 -> 95AD Bot (04) AD95 -> 95AD Bit (05) AD95 -> 95AD Moa (06) AD95 -> 95AD Ache (07) AD95 -> 95AD ? (08) AD95 -> 95AD ? (09) AD95 -> 95AD Acheman (0A) 0A97 -> 970A Bubble Generator (0B) 0A97 -> 970A Rock Generator (0C) 1B96 -> 961B Red Deeler (0D) 1B96 -> 961B Blue Deeler (0E) 0A97 -> 970A Bago Bago Generator (0F) AD95 -> 95AD Bago Bago (10) AD95 -> 95AD Blue Octorok - Jumping (11) AD95 -> 95AD Blue Octorok - Moving (12) AD95 -> 95AD Elevator (13) AD95 -> 95AD Tektite (14) AD95 -> 95AD Girobokku (15) F397 -> 97F3 Leever (16) AD95 -> 95AD Boon (17) AD95 -> 95AD Zora (18) AD95 -> 95AD Aru Lowder (19) AD95 -> 95AD Lizalfos - Red (1A) AD95 -> 95AD Lizalfos - Orange (1B) AD95 -> 95AD Lizalfos - Blue (1C) AD95 -> 95AD Lizalfos - Rock Tossing (1D) AD95 -> 95AD ? (1E) AD95 -> 95AD ? (1F) 0000 -> 0000 ? (20) 0000 -> 0000 ? (21) 0000 -> 0000 ? (22) 0000 -> 0000 ? (23) ---- 948D: Enemy Routines (24 * 2 = 48 bytes) 1ED9 -> 1D91E Fairy (00) 59D9 -> 1D959 Red Jar (01) 91D9 -> 1D991 Locked Door (02) 47DA -> 1DA47 Myu (03) 0CDA -> 1DA0C Bot (04) 2BDA -> 1DA2B Bit (05) CFDA -> 1DACF Moa (06) 53DB -> 1DB53 Ache (07) 98AB -> AB98 ? (08) E9AB -> ABE9 ? (09) 53DB -> 1DB53 Acheman (0A) 15DC -> 1DC15 Bubble Generator (0B) 4FDC -> 1DC4F Rock Generator (0C) DFD6 -> 1D6DF Red Deeler (0D) DFD6 -> 1D6DF Blue Deeler (0E) 8FD7 -> 1D78F Bago Bago Generator (0F) E1D7 -> 1D7E1 Bago Bago (10) 42D8 -> 1D842 Blue Octorok - Jumping (11) 88D8 -> 1D888 Blue Octorok - Moving (12) C2D8 -> 1D8C2 Elevator (13) 0598 -> 9805 Tektite (14) BC98 -> 98BC Girobokku (15) 1099 -> 9910 Leever (16) 8999 -> 9989 Boon (17) 2A9A -> 9A2A Zora (18) AE9A -> 9AAE Aru Lowder (19) 909B -> 9B90 Lizalfos - Red (1A) 569B -> 9B56 Lizalfos - Orange (1B) 909B -> 9B90 Lizalfos - Blue (1C) 3097 -> 9730 Lizalfos - Rock Tossing (1D) 0000 -> 0000 ? (1E) 0000 -> 0000 ? (1F) 0000 -> 0000 ? (20) 0000 -> 0000 ? (21) 0000 -> 0000 ? (22) 0000 -> 0000 ? (23) ---- 94D5: Enemy Attributes (Palette, Experience Code, etc.) (24 bytes) xx.. .... Palette Code (0-3) ..x. .... No Damage from Sword (needs Fire) ...x .... Steals Experience Points .... xxxx Experience Code (0-F) 40 40 40 C3 C1 81 D7 C4 80 90 84 10 10 83 C4 10 93 C5 C5 40 E7 85 C4 C7 E7 CA 89 4A CB 87 00 00 00 00 00 00 ---- 94F9: Enemy Vulnerability/Damage Codes (24 bytes) xx.. .... Item Type (0 = gives no items, 1 = minor item, 2 = major item) ..x. .... Immune to Flying Blade and Fire ...x .... ? .... xxxx Damage Code 30 ..xx .... Fairy 30 ..xx .... Red Jar 30 ..xx .... Locked Door 41 .x.. ...x Myu 41 .x.. ...x Bot 40 .x.. .... Bit 43 .x.. ..xx Moa 42 .x.. ..x. Ache 31 ..xx ...x ? 31 ..xx ...x ? 42 .x.. ..x. Acheman 30 ..xx .... Bubble Generator 30 ..xx .... Rock Generator 42 .x.. ..x. Red Deeler 42 .x.. ..x. Blue Deeler 32 ..xx ..x. Bago Bago Generator 42 .x.. ..x. Bago Bago 41 .x.. ...x Blue Octorok - Jumping 41 .x.. ...x Blue Octorok - Moving 30 ..xx .... Elevator 82 x... ..x. Tektite 44 .x.. .x.. Girobokku 44 .x.. .x.. Leever 81 x... ...x Boon 83 x... ..xx Zora A4 x.x. .x.. Aru Lowder 34 ..xx .x.. Lizalfos - Red B3 x.xx ..xx Lizalfos - Orange 34 ..xx .x.. Lizalfos - Blue 22 ..x. ..x. Lizalfos - Rock Tossing 00 .... .... ? 00 .... .... ? 00 .... .... ? 00 .... .... ? 00 .... .... ? 00 .... .... ? ---- 951D: Enemy Size Codes (24 bytes) 0F 0F 04 02 01 01 01 01 01 01 80 01 01 01 01 01 01 01 01 03 81 01 01 01 81 89 80 80 80 80 00 00 00 00 00 00 ---- 9541: Other Enemy Attributes (24 bytes) (6E41 in RAM) x... .... Immune to Thunder Spell .x.. .... Regenerates ..x. .... ? ...x .... Not hittable with sword .... xxxx ? (used) 96 86 96 46 46 46 06 46 96 86 40 90 90 06 06 90 06 06 06 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ---- 9565: Enemy Routines for Display (24 * 2 = 48 bytes) At the beginning of these routines, the default values are : Y = Sprite Attributes Offset (in 2xx) $00 = Enemy Y Position $01 = Enemy X Position on Screen (from $CD) $02 = Enemy Facing Direction $03 = Enemy Palette Code (bits 6-7 of Enemy Attributes table) DDF0 -> 1F0DD Fairy (00) 12F1 -> 1F112 Red Jar (01) 3AF1 -> 1F13A Locked Door (02) C2EF -> 1EFC2 Myu (03) 91EF -> 1EF91 Bot (04) 91EF -> 1EF91 Bit (05) F2EF -> 1EFF2 Moa (06) 7EF1 -> 1F17E Ache (07) D2EF -> 1EFD2 ? (08) D2EF -> 1EFD2 ? (09) 7EF1 -> 1F17E Acheman (0A) 0000 -> ? Bubble Generator (0B) 0000 -> ? Rock Generator (0C) 27F0 -> 1F027 Red Deeler (0D) 27F0 -> 1F027 Blue Deeler (0E) AD95 -> 95AD Bago Bago Generator (0F) B9F0 -> 1F0B9 Bago Bago (10) A8F0 -> 1F0A8 Blue Octorok - Jumping (11) A8F0 -> 1F0A8 Blue Octorok - Moving (12) 47EF -> 1EF47 Elevator (13) AC9D -> 9DAC Tektite (14) DE9D -> 9DDE Girobokku (15) EB9D -> 9DEB Leever (16) 019E -> 9E01 Boon (17) 139E -> 9E13 Zora (18) 849E -> 9E84 Aru Lowder (19) E19E -> 9EE1 Lizalfos - Red (1A) E19E -> 9EE1 Lizalfos - Orange (1B) E19E -> 9EE1 Lizalfos - Blue (1C) 329D -> 9D32 Lizalfos - Rock Tossing (1D) 0000 -> ? ? (1E) 0000 -> ? ? (1F) 0000 -> ? ? (20) 0000 -> ? ? (21) 0000 -> ? ? (22) 0000 -> ? ? (23) ---- 95AD: 60 RTS ---- 95AE: A8 AA AE 84 CE CE 27 AE 00 Table for ? (9 bytes) ---- 95B7: 01 01 02 01 03 03 03 02 00 00 00 Table for ? (B bytes) ---- 95C2: Pointer Table for Projectiles Routines - Display (9 * 2 = 12 bytes) BF96 -> 96BF Link Doll (Pwahaha!) E196 -> 96E1 Raising Bubble (with no Y Velocity) D396 -> 96D3 Rock (moves horizontally) D396 -> 96D3 Flame BA96 -> 96BA Energy Ball (blue, not flashing, causes less damage) B396 -> 96B3 Energy Ball (Tektite) (06) F396 -> 96F3 Mace (causes lots of damage) D396 -> 96D3 Rock with gravity AD95 -> 95AD RTS ---- 95D4: Enemy Sprite Codes (3C bytes) D0 D2 D4 D6 D8 DA D4 D6 01 03 05 03 07 07 09 09 0B 0D 0B 0F DE E0 E2 E4 E6 E8 EA EC F0 F4 F6 F8 F5 F2 FC FE 11 13 15 17 11 13 19 1B 1D 13 1F 17 1D 13 21 1B 23 25 F5 27 2B F5 29 2B ---- Red Jar - Init (as static object only) 9610: A9 11 LDA #$11 ; A = 11 9612: 95 AF STA $AF,X 9614: B5 4E LDA $4E,X ; Enemy X position (low byte) 9616: 69 03 ADC #$03 9618: 95 4E STA $4E,X ; Enemy X position (low byte) 961A: 60 RTS ---- Deeler - Red/Blue - Init 961B: B5 2A LDA $2A,X ; Enemy Y Position 961D: 8D DD05 STA $05DD 9620: 18 CLC 9621: 69 60 ADC #$60 ; Go down rope this many pixels 9623: 8D DC05 STA $05DC 9626: 60 RTS ---- 9627: A5 ED LDA $ED ; Sound Effects Type 2 9629: 09 40 ORA #$40 ; set bits .x.. .... 962B: 85 ED STA $ED 962D: D0 00 BNE $962F Projectile Type 01 - Glitched Link Doll 962F: A9 00 LDA #$00 ; A = 00 9631: 9D 8405 STA $0584,X ; Projectile Y Velocity 9634: 4C 6596 JMP $9665 ---- Projectile Type 02 - Raising Bubble (with no Y Velocity) 9637: A0 04 LDY #$04 ; Y = 04 9639: FE 4C04 INC $044C,X 963C: BD 4C04 LDA $044C,X 963F: 29 10 AND #$10 ; keep bits ...x .... 9641: F0 02 BEQ $9645 9643: A0 FC LDY #$FC ; Y = FC 9645: 94 77 STY $77,X ; Projectile X Velocity 9647: 4C 6596 JMP $9665 ---- Projectile Type 03 - Rock (moves horizontally) 964A: A0 02 LDY #$02 ; Y = 02 964C: B5 77 LDA $77,X ; Projectile X Velocity 964E: 30 01 BMI $9651 9650: 88 DEY 9651: 98 TYA 9652: D5 66 CMP $66,X ; Projectile facing direction 9654: F0 D9 BEQ $962F 9656: FE 8405 INC $0584,X ; Projectile Y Velocity 9659: D0 07 BNE $9662 965B: 20 1CEA JSR $EA1C 965E: A9 F3 LDA #$F3 ; A = F3 9660: B0 0E BCS $9670 9662: FE 8405 INC $0584,X ; Projectile Y Velocity 9665: 20 D4DE JSR $DED4 9668: A5 CA LDA $CA 966A: 29 FC AND #$FC ; keep bits xxxx xx.. 966C: F0 05 BEQ $9673 966E: A9 00 LDA #$00 ; A = 00 9670: 95 87 STA $87,X ; Projectile Type 9672: 60 RTS ---- 9673: 20 7E96 JSR $967E 9676: 20 8AE4 JSR $E48A 9679: 4C B9E3 JMP $E3B9 ---- 967C: 40 00 Table for ? (2 bytes) ---- 967E: B5 87 LDA $87,X ; Projectile Type 9680: 48 PHA 9681: 0A ASL 9682: A8 TAY 9683: B9 C06E LDA $6EC0,Y 9686: 85 0E STA $0E 9688: B9 C16E LDA $6EC1,Y 968B: 85 0F STA $0F 968D: B4 97 LDY $97,X 968F: B5 30 LDA $30,X ; Projectile Y Position 9691: 99 0002 STA $0200,Y 9694: A5 CE LDA $CE 9696: 99 0302 STA $0203,Y 9699: 68 PLA 969A: A8 TAY 969B: B9 AD6E LDA $6EAD,Y 969E: 48 PHA 969F: B9 B66E LDA $6EB6,Y 96A2: B4 66 LDY $66,X ; Projectile facing direction 96A4: 19 7B96 ORA $967B,Y 96A7: B4 97 LDY $97,X 96A9: 99 0202 STA $0202,Y 96AC: 68 PLA 96AD: 99 0102 STA $0201,Y 96B0: 6C 0E00 JMP ($000E) ---- Projectile Type 06 - Energy Ball (Tektite) 96B3: A5 12 LDA $12 ; Permament Frame Counter 96B5: 29 03 AND #$03 ; keep bits .... ..xx 96B7: 99 0202 STA $0202,Y 96BA: 60 RTS ---- 96BB: 00 02 00 FE Table for ? (4 bytes) ---- Projectile Type 01 - Link Doll (Pwahaha!) 96BF: A5 12 LDA $12 ; Permament Frame Counter 96C1: 29 30 AND #$30 ; keep bits ..xx .... 96C3: 4A LSR 96C4: 4A LSR 96C5: 4A LSR 96C6: 4A LSR 96C7: AA TAX 96C8: B9 0002 LDA $0200,Y 96CB: 7D BB96 ADC $96BB,X 96CE: 99 0002 STA $0200,Y 96D1: A6 10 LDX $10 96D3: A5 12 LDA $12 ; Permament Frame Counter 96D5: 0A ASL 96D6: 0A ASL 96D7: 0A ASL 96D8: 0A ASL 96D9: 0A ASL 96DA: 29 80 AND #$80 ; keep bits x... .... 96DC: 19 0202 ORA $0202,Y 96DF: D0 0A BNE $96EB 96E1: A5 12 LDA $12 ; Permament Frame Counter 96E3: 0A ASL 96E4: 0A ASL 96E5: 0A ASL 96E6: 38 SEC 96E7: 2A ROL 96E8: 0A ASL 96E9: 29 43 AND #$43 ; keep bits .x.. ..xx 96EB: 99 0202 STA $0202,Y 96EE: 60 RTS ---- 96EF: 03 43 C3 83 Table for ? (4 bytes) ---- Projectile Type 07 - Mace (causes lots of damage) 96F3: A5 12 LDA $12 ; Permanent Frame Counter 96F5: 4A LSR 96F6: 4A LSR 96F7: 29 03 AND #$03 ; keep bits .... ..xx 96F9: B4 66 LDY $66,X ; Projectile facing direction 96FB: 88 DEY 96FC: D0 02 BNE $9700 96FE: 49 03 EOR #$03 ; flip bits .... ..xx 9700: A8 TAY 9701: B9 EF96 LDA $96EF,Y 9704: B4 97 LDY $97,X 9706: 99 0202 STA $0202,Y 9709: 60 RTS ---- Generators - Bubble, Rock, Bago Bago - Init 970A: A0 05 LDY #$05 ; Y = 05 970C: C4 10 CPY $10 970E: F0 0C BEQ $971C 9710: B9 B600 LDA $00B6,Y ; Generated Enemy Slot 9713: F0 07 BEQ $971C 9715: B9 A100 LDA $00A1,Y ; Enemy Code 9718: D5 A1 CMP $A1,X 971A: F0 04 BEQ $9720 971C: 88 DEY 971D: 10 ED BPL $970C 971F: 60 RTS ---- 9720: 98 TYA 9721: AA TAX 9722: 20 3DDD JSR $DD3D 9725: A6 10 LDX $10 9727: 60 RTS ---- 9728: Table for Tossed Rocks Y Velocity adjustment (8 bytes) DC E4 EC F4 F8 00 00 00 ---- Lizalfos - Rock Tossing 9730: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9733: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9735: F0 45 BEQ $977C 9737: BC 4404 LDY $0444,X ; Enemy Vulnerability 973A: D0 37 BNE $9773 973C: FE 8100 INC $0081,X ; Current Animation Frame for Enemy 973F: C9 02 CMP #$02 9741: F0 35 BEQ $9778 9743: A9 10 LDA #$10 ; A = 10 9745: 9D 4404 STA $0444,X 9748: 20 119A JSR $9A11 ; Spawn Rock with Gravity 974B: B0 2F BCS $977C 974D: A5 0F LDA $0F 974F: 10 02 BPL $9753 9751: 49 FF EOR #$FF ; flip all bits 9753: 4A LSR 9754: 4A LSR 9755: B6 66 LDX $66,Y ; Projectile facing direction 9757: CA DEX 9758: F0 02 BEQ $975C 975A: 49 FF EOR #$FF ; flip all bits 975C: 65 70 ADC $70 ; Link's X Velocity 975E: 99 7700 STA $0077,Y ; Projectile X Velocity 9761: A5 29 LDA $29 ; Link's Y position 9763: 4A LSR 9764: 4A LSR 9765: 4A LSR 9766: 4A LSR 9767: 4A LSR 9768: AA TAX 9769: BD 2897 LDA $9728,X 976C: 99 8405 STA $0584,Y ; Projectile Y Velocity 976F: A6 10 LDX $10 ; adjust initial Y Velocity to Link's X position 9771: 10 09 BPL $977C 9773: DE 4404 DEC $0444,X ; Enemy Vulnerability 9776: 10 04 BPL $977C 9778: A9 00 LDA #$00 ; A = 00 977A: 95 81 STA $81,X ; Current Animation Frame for Enemy 977C: 20 11EF JSR $EF11 ; Display 977F: B5 AF LDA $AF,X 9781: 29 03 AND #$03 ; keep bits .... ..xx 9783: 20 85D3 JSR $D385 ; Go to pointer A in following table ---- 9786: Pointer table for Rock Tossing Lizalfos routines (4 * 2 = 8 bytes) 8E97 -> 978E B797 -> 97B7 C897 -> 97C8 DA97 -> 97DA ---- 978E: BD 0405 LDA $0504,X ; Timer for Enemy AI 9791: D0 23 BNE $97B6 9793: BD 1B05 LDA $051B,X ; Randomizer 9796: 4A LSR 9797: 69 40 ADC #$40 9799: 65 70 ADC $70 ; Link's X Velocity 979B: 65 70 ADC $70 979D: 65 70 ADC $70 979F: 6D 2C07 ADC $072C ; Scrolling Offset Low Byte 97A2: 95 4E STA $4E,X ; Enemy X position (low byte) 97A4: 48 PHA 97A5: AD 2A07 LDA $072A ; Scrolling Offset High Byte 97A8: 69 00 ADC #$00 97AA: 95 3C STA $3C,X ; Enemy X position (high byte) 97AC: 68 PLA 97AD: 29 1F AND #$1F ; keep bits ...x xxxx 97AF: 69 24 ADC #$24 ; calculate delay before get out and throw 97B1: 9D 0405 STA $0504,X ; Timer for Enemy AI 97B4: F6 AF INC $AF,X 97B6: 60 RTS ---- 97B7: BD 0405 LDA $0504,X ; Timer for Enemy AI 97BA: F0 09 BEQ $97C5 97BC: B5 2A LDA $2A,X ; Enemy Y Position 97BE: C9 4C CMP #$4C 97C0: 90 02 BCC $97C4 97C2: D6 2A DEC $2A,X ; Enemy Y Position 97C4: 60 RTS ---- 97C5: F6 AF INC $AF,X 97C7: 60 RTS ---- 97C8: B5 2A LDA $2A,X ; Enemy Y Position 97CA: C9 45 CMP #$45 97CC: 90 03 BCC $97D1 97CE: D6 2A DEC $2A,X ; Enemy Y Position 97D0: 60 RTS ---- 97D1: BD 1B05 LDA $051B,X ; Randomizer 97D4: 4A LSR 97D5: 09 40 ORA #$40 ; set bits .x.. .... 97D7: 4C B197 JMP $97B1 ---- 97DA: BD 0405 LDA $0504,X ; Timer for Enemy AI 97DD: F0 F6 BEQ $97D5 97DF: C9 11 CMP #$11 97E1: 90 0D BCC $97F0 97E3: B5 81 LDA $81,X ; Current Animation Frame for Enemy 97E5: D0 08 BNE $97EF 97E7: FE 8100 INC $0081,X ; Current Animation Frame for Enemy 97EA: A9 10 LDA #$10 ; A = 10 97EC: 9D 4404 STA $0444,X ; Enemy Vulnerability 97EF: 60 RTS ---- 97F0: F6 2A INC $2A,X ; Enemy Y Position 97F2: 60 RTS ---- Leever - Init 97F3: BD 1B05 LDA $051B,X ; Randomizer 97F6: 9D 0405 STA $0504,X ; Timer for Enemy AI 97F9: B5 2A LDA $2A,X ; Enemy Y Position 97FB: 18 CLC 97FC: 69 1C ADC #$1C 97FE: 95 81 STA $81,X ; Current Animation Frame for Enemy 9800: 95 2A STA $2A,X ; Enemy Y Position 9802: 60 RTS ---- 9803: 10 F0 Table for Tektite Jumping X Velocities (2 bytes) 10 = Tektite Jumping X Velocity - Facing Right F0 = Tektite Jumping X Velocity - Facing Left ---- Tektite 9805: 20 02DA JSR $DA02 ; Enemy Stops when Hit 9808: 20 11EF JSR $EF11 ; Display *** bridge for attack at apex of jump *** *** not working perfectly *** 9808: 20 869F JSR $9F86 -- 9F86: 20 11EF JSR $EF11 ; Display 9F89: B5 AF LDA $AF,X 9F8B: 69 08 ADC #$08 9F8D: C9 10 CMP #$10 9F8F: D0 1A BNE $9FA3 9F91: B5 A8 LDA $A8,X ; Enemy Collision State 9F93: 29 04 AND #$04 ; keep bits .... .x.. (touching ground) 9F95: F0 14 BEQ $9FA3 9F97: 20 CEDB JSR $DBCE ; Spawn New Projectile 9F9A: B0 0D BCS $9F9B 9F9C: A9 08 LDA #$08 ; A = 08 9F9E: 99 8700 STA $0087,Y ; Projectile Type (08 = Gravity Rock) 9FA1: A9 E0 LDA #$E0 ; A = E0 9FA3: 99 8405 STA $0584,Y ; Projectile Y Velocity 9FA6: A9 00 LDA #$00 ; A = 00 9FA8: 99 7700 STA $0077,Y ; Projectile X Velocity 9FAB: 60 RTS *** 980B: BD 7E05 LDA $057E,X ; Enemy Y Velocity 980E: F0 04 BEQ $9814 9810: 29 02 AND #$02 ; keep bits .... ..x. 9812: F0 0C BEQ $9820 9814: F6 AF INC $AF,X 9816: B5 AF LDA $AF,X 9818: C9 11 CMP #$11 981A: D0 04 BNE $9820 981C: A9 F1 LDA #$F1 ; A = F1 981E: 95 AF STA $AF,X 9820: C9 F8 CMP #$F8 9822: D0 13 BNE $9837 9824: BD 1B05 LDA $051B,X ; Randomizer 9827: 4A LSR 9828: 90 0D BCC $9837 982A: B5 A8 LDA $A8,X ; Enemy Collision State 982C: 29 04 AND #$04 ; keep bits .... .x.. (touching ground) 982E: F0 07 BEQ $9837 9830: A9 C5 LDA #$C5 ; A = C5 (Tektite jumping Y velocity) 9832: 9D 7E05 STA $057E,X ; Enemy Y Velocity 9835: D6 2A DEC $2A,X ; Enemy Y Position 9837: 20 429B JSR $9B42 983A: B5 A8 LDA $A8,X ; Enemy Collision State 983C: 29 03 AND #$03 ; keep bits .... ..xx (blocked left and right) 983E: F0 03 BEQ $9843 9840: 20 EBE8 JSR $E8EB ; Reverse Enemy Facing Direction and X Velocity 9843: B4 60 LDY $60,X ; Enemy facing direction 9845: 88 DEY 9846: BD 7E05 LDA $057E,X ; Enemy Y Velocity 9849: D0 09 BNE $9854 984B: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 984E: B5 A8 LDA $A8,X ; Enemy State 9850: 29 04 AND #$04 ; keep bits .... .x.. (touching ground) 9852: D0 08 BNE $985C 9854: B9 0398 LDA $9803,Y 9857: 95 71 STA $71,X ; Enemy X Velocity 9859: 20 B8DE JSR $DEB8 ; Simple Horizontal Movement 985C: A5 12 LDA $12 ; Permament Frame Counter 985E: 29 3F AND #$3F ; keep bits ..xx xxxx (attack window) (C0-F0) 9860: D0 1D BNE $987F 9862: BD 1B05 LDA $051B,X ; Randomizer 9865: 29 01 AND #$01 ; keep bits .... ...x (probability 50%) 9867: D0 16 BNE $987F 9869: 20 CEDB JSR $DBCE ; Spawn New Projectile 986C: B0 11 BCS $987F 986E: A9 06 LDA #$06 ; A = 06 9870: 99 8700 STA $0087,Y ; Projectile Type (06 = Energy Ball) 9873: 84 00 STY $00 9875: B4 91 LDY $91,X 9877: B9 0002 LDA $0200,Y 987A: A4 00 LDY $00 987C: 99 3000 STA $0030,Y ; Projectile Y Position 987F: A0 80 LDY #$80 ; Y = 80 (Tile Mapping 1) 9881: B5 AF LDA $AF,X 9883: 69 08 ADC #$08 9885: C9 10 CMP #$10 9887: 90 02 BCC $988B 9889: A0 89 LDY #$89 ; Y = 89 (Tile Mapping 2) 988B: 8C 316E STY $6E31 988E: A0 01 LDY #$01 ; Y = 01 9890: E8 INX 9891: 20 7DF2 JSR $F27D 9894: A6 10 LDX $10 9896: B5 1A LDA $1A,X 9898: C9 02 CMP #$02 989A: 90 03 BCC $989F 989C: 4C 3DDD JMP $DD3D ---- 989F: A5 C9 LDA $C9 98A1: 29 FC AND #$FC ; keep bits xxxx xx.. 98A3: F0 09 BEQ $98AE 98A5: B5 A8 LDA $A8,X 98A7: 29 0F AND #$0F ; keep bits .... xxxx 98A9: 95 A8 STA $A8,X 98AB: 4C 6CDE JMP $DE6C ---- 98AE: 20 8BE4 JSR $E48B 98B1: 20 77E6 JSR $E677 ; Sword Hit Detection 98B4: 20 D9E4 JSR $E4D9 98B7: 4C C1D6 JMP $D6C1 ; Link Collision Detection ---- 98BA: 08 F8 Table for Girobokku X/Y Velocities (2 bytes) ---- Girobokku 98BC: 20 C1D6 JSR $D6C1 ; Link Collision Detection 98BF: BD 0405 LDA $0504,X ; Timer for Enemy AI 98C2: F0 03 BEQ $98C7 98C4: 4C 40DE JMP $DE40 ---- 98C7: B5 AF LDA $AF,X 98C9: 29 20 AND #$20 ; keep bits ..x. .... (delay before stopping) 98CB: F0 11 BEQ $98DE 98CD: B5 AF LDA $AF,X 98CF: 0A ASL 98D0: 0A ASL 98D1: A9 00 LDA #$00 ; A = 00 98D3: 2A ROL 98D4: A8 TAY 98D5: B9 BA98 LDA $98BA,Y 98D8: 9D 7E05 STA $057E,X ; Enemy Y Velocity 98DB: 20 C8DE JSR $DEC8 ; Simple Vertical Movement 98DE: F6 AF INC $AF,X 98E0: B5 AF LDA $AF,X 98E2: 29 3F AND #$3F ; keep bits ..xx xxxx 98E4: D0 03 BNE $98E9 ; 3F = delay before changing direction 98E6: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 98E9: B4 60 LDY $60,X 98EB: B9 B998 LDA $98B9,Y 98EE: 95 71 STA $71,X ; Enemy X Velocity 98F0: 20 B8DE JSR $DEB8 ; Simple Horizontal Movement 98F3: 20 11EF JSR $EF11 ; Display 98F6: A9 05 LDA #$05 ; A = 05 98F8: 9D 4404 STA $0444,X ; Enemy Vulnerability 98FB: 20 17E6 JSR $E617 98FE: 20 40DE JSR $DE40 9901: BD 1B05 LDA $051B,X ; Randomizer 9904: 29 1F AND #$1F ; keep bits ...x xxxx 9906: D0 05 BNE $990D ; 1F = probability of eye opening 9908: A9 3F LDA #$3F ; A = 3F (delay for eye stay open) 990A: 9D 0405 STA $0504,X ; Timer for Enemy AI 990D: 60 RTS ---- 990E: 10 F0 Table for Leever X Velocities (2 bytes) 10 = Leever X Velocity - Facing Right F0 = Leever X Velocity - Facing Left ---- Leever 9910: 20 02DA JSR $DA02 ; Enemy Stops when Hit 9913: 20 40DE JSR $DE40 9916: 20 C1D6 JSR $D6C1 ; Link Collision Detection 9919: B5 AF LDA $AF,X 991B: 29 03 AND #$03 ; keep bits .... ..xx 991D: 20 85D3 JSR $D385 ; Go to pointer A in following table ---- 9920: Pointer table for Leever routines (4 * 2 = 8 bytes) 2899 -> 9928 Lurking 5099 -> 9950 Emerging 6C99 -> 996C Moving 7C99 -> 997C Retreating ---- 9928: BD 0405 LDA $0504,X ; Timer for Enemy AI 992B: D0 22 BNE $994F 992D: A9 50 LDA #$50 ; A = 50 (delay for lurking before emerging) 992F: 9D 0405 STA $0504,X ; Timer for Enemy AI 9932: BD 1B05 LDA $051B,X ; Randomizer 9935: 6D 2C07 ADC $072C ; Scrolling Offset Low Byte 9938: 95 4E STA $4E,X ; Enemy X position (low byte) 993A: AD 2A07 LDA $072A ; Scrolling Offset High Byte 993D: 69 00 ADC #$00 993F: 95 3C STA $3C,X ; Enemy X position (high byte) 9941: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9944: B9 0E99 LDA $990E,Y *** bridge here for random speeds *** 9947: 95 71 STA $71,X ; Enemy X Velocity 9949: B5 81 LDA $81,X ; Current Animation Frame for Enemy 994B: 95 2A STA $2A,X ; Enemy Y Position 994D: F6 AF INC $AF,X 994F: 60 RTS ---- 9950: BD 0405 LDA $0504,X ; Timer for Enemy AI 9953: F0 0B BEQ $9960 9955: C9 1A CMP #$1A ; height at which Leever starts moving 9957: B0 06 BCS $995F 9959: 29 01 AND #$01 ; keep bits .... ...x 995B: D0 02 BNE $995F 995D: D6 2A DEC $2A,X ; Enemy Y Position 995F: 60 RTS ---- 9960: F6 AF INC $AF,X 9962: BD 1B05 LDA $051B,X ; Randomizer 9965: 4A LSR 9966: 09 30 ORA #$30 ; set bits ..xx .... 9968: 9D 0405 STA $0504,X ; delay for movement (between 30 and 7F) 996B: 60 RTS ---- 996C: 20 B8DE JSR $DEB8 ; Simple Horizontal Movement 996F: BD 0405 LDA $0504,X ; Timer for Enemy AI 9972: D0 07 BNE $997B 9974: F6 AF INC $AF,X 9976: A9 20 LDA #$20 ; A = 20 (delay for retreating to ground) 9978: 9D 0405 STA $0504,X 997B: 60 RTS ---- 997C: BD 0405 LDA $0504,X ; Timer for Enemy AI 997F: F0 DF BEQ $9960 9981: 4A LSR 9982: 90 02 BCC $9986 9984: F6 2A INC $2A,X ; Enemy Y Position 9986: 60 RTS ---- 9987: 20 E0 Table for Boon X/Y Velocities (2 bytes) ---- Boon 9989: B5 2A LDA $2A,X ; Enemy Y Position 998B: C9 70 CMP #$70 ; minimum height for dropping rocks 998D: B0 09 BCS $9998 998F: A5 12 LDA $12 ; Permament Frame Counter 9991: 29 1F AND #$1F ; keep bits ...x xxxx 9993: D0 03 BNE $9998 ; delay before dropping a rock 9995: 20 119A JSR $9A11 ; Spawn Rock with Gravity, with Zero Velocity 9998: A0 01 LDY #$01 ; Y = 01 999A: B5 71 LDA $71,X ; Enemy X Velocity 999C: 10 01 BPL $999F 999E: C8 INY 999F: 94 60 STY $60,X 99A1: 20 02DA JSR $DA02 ; Enemy Stops when Hit 99A4: 20 40DE JSR $DE40 99A7: 20 C1D6 JSR $D6C1 ; Link Collision Detection 99AA: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 99AD: B5 AF LDA $AF,X 99AF: D0 21 BNE $99D2 99B1: 95 81 STA $81,X ; Current Animation Frame for Enemy 99B3: A9 30 LDA #$30 ; A = 30 99B5: 95 2A STA $2A,X ; Enemy Y Position 99B7: A9 01 LDA #$01 ; A = 01 99B9: 95 1A STA $1A,X 99BB: BD 1B05 LDA $051B,X ; Randomizer 99BE: 6D 2C07 ADC $072C ; Scrolling Offset Low Byte 99C1: 95 4E STA $4E,X ; Enemy X position (low byte) 99C3: AD 2A07 LDA $072A ; Scrolling Offset High Byte 99C6: 69 00 ADC #$00 99C8: 95 3C STA $3C,X ; Enemy X position (high byte) 99CA: A9 20 LDA #$20 ; A = 20 99CC: 9D 0405 STA $0504,X ; Timer for Enemy AI 99CF: F6 AF INC $AF,X 99D1: 60 RTS ---- 99D2: A5 C9 LDA $C9 99D4: 29 CC AND #$CC ; keep bits xx.. xx.. 99D6: F0 02 BEQ $99DA 99D8: D6 AF DEC $AF,X 99DA: BD 0405 LDA $0504,X ; Timer for Enemy AI 99DD: D0 10 BNE $99EF 99DF: BD 1B05 LDA $051B,X ; Randomizer 99E2: 48 PHA 99E3: 29 0F AND #$0F ; keep bits .... xxxx 99E5: 09 08 ORA #$08 ; set bits .... x... 99E7: 9D 0405 STA $0504,X ; Timer for Enemy AI 99EA: 68 PLA ; delay before direction change (08-0F) 99EB: 29 03 AND #$03 ; keep bits .... ..xx 99ED: 95 81 STA $81,X ; Current Animation Frame for Enemy 99EF: B5 81 LDA $81,X 99F1: 20 85D3 JSR $D385 ; Go to pointer A in following table ---- 99F4: Pointer table for Boon routines (4 * 2 = 8 bytes) FC99 -> 99FC FC99 -> 99FC 079A -> 9A07 079A -> 9A07 ---- 99FC: B4 81 LDY $81,X ; Current Animation Frame for Enemy 99FE: B9 8799 LDA $9987,Y 9A01: 9D 7E05 STA $057E,X ; Enemy Y Velocity 9A04: 4C C8DE JMP $DEC8 ; Simple Vertical Movement ---- 9A07: B4 81 LDY $81,X ; Current Animation Frame for Enemy 9A09: B9 8599 LDA $9985,Y 9A0C: 95 71 STA $71,X ; Enemy X Velocity 9A0E: 4C B8DE JMP $DEB8 ; Simple Horizontal Movement ---- Spawn Rock with Gravity, with X/Y Velocity set to 0 9A11: 20 CEDB JSR $DBCE ; Spawn New Projectile 9A14: B0 0D BCS $9A23 9A16: A9 08 LDA #$08 ; A = 08 (08 = Rock with gravity) 9A18: 99 8700 STA $0087,Y ; Projectile Type 9A1B: A9 00 LDA #$00 ; A = 00 9A1D: 99 8405 STA $0584,Y ; Projectile Y Velocity 9A20: 99 7700 STA $0077,Y ; Projectile X Velocity **** modify X velocity of dropped rock *** 9A20: 20 E0AA JSR $AAE0 -- AAD0: E0 F0 00 00 00 00 10 20 Table of possible X velocities AAD0: 8A TXA AA00: 48 PHA AAE0: BD 1B05 LDA $051B,X ; Randomizer AAE3: 29 07 AND #$07 ; keep bits .... .xxx AAE5: AA TAX AAE6: BD D0AA LDA AAD0,X AAE9: 99 7700 STA $0077,Y ; Projectile X Velocity AA99: 68 PLA AAEC: AA TAX AAEE: 60 RTS **** 9A23: 60 RTS ---- 9A24: F8 08 0E F8 00 FF Variables for Zora/Aru Lowder (6 bytes) F8 = Velocity facing right, forward or backwards 08 = Velocity facing left, forward or backwards 0E = F8 = 00 = FF = ---- Zora 9A2A: A5 12 LDA $12 ; Permanent Frame Counter 9A2C: 29 3F AND #$3F ; keep bits ..xx xxxx 9A2E: D0 0A BNE $9A3A ; probability of shooting Energy Ball 9A30: BD 1B05 LDA $051B,X ; Randomizer 9A33: 4A LSR 9A34: 90 04 BCC $9A3A 9A36: A9 0A LDA #$0A ; A = 0A 9A38: 95 81 STA $81,X ; Current Animation Frame for Enemy 9A3A: 20 429B JSR $9B42 9A3D: A9 80 LDA #$80 ; A = 80 (vulnerability code standing up) 9A3F: BC 0405 LDY $0504,X ; Timer for Enemy AI 9A42: D0 02 BNE $9A46 9A44: A9 89 LDA #$89 ; A = 89 (vulnerability code on four legs) 9A46: 8D 356E STA $6E35 ; change Vulnerability Code 9A49: 20 40DE JSR $DE40 9A4C: 20 C1D6 JSR $D6C1 ; Link Collision Detection 9A4F: 20 249B JSR $9B24 9A52: A5 12 LDA $12 ; Permament Frame Counter 9A54: 29 3F AND #$3F ; keep bits ..xx xxxx 9A56: D0 03 BNE $9A5B 9A58: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9A5B: A9 00 LDA #$00 ; A = 00 9A5D: 95 71 STA $71,X ; Enemy X Velocity 9A5F: BD 0405 LDA $0504,X ; Timer for Enemy AI 9A62: D0 0C BNE $9A70 9A64: A5 12 LDA $12 ; Permament Frame Counter 9A66: D0 05 BNE $9A6D 9A68: A9 50 LDA #$50 ; A = 50 (delay for staying stand up) 9A6A: 9D 0405 STA $0504,X ; Timer for Enemy AI 9A6D: 20 099B JSR $9B09 9A70: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9A72: F0 39 BEQ $9AAD 9A74: D6 81 DEC $81,X ; Current Animation Frame for Enemy 9A76: D0 35 BNE $9AAD 9A78: 20 CEDB JSR $DBCE ; Spawn New Projectile 9A7B: B0 30 BCS $9AAD 9A7D: A9 06 LDA #$06 ; A = 06 9A7F: 99 8700 STA $0087,Y ; Projectile Type 9A82: B9 3000 LDA $0030,Y ; Projectile Y Position 9A85: 69 04 ADC #$04 9A87: 99 3000 STA $0030,Y ; Projectile Y Position 9A8A: BD 0405 LDA $0504,X ; Timer for Enemy AI 9A8D: D0 0A BNE $9A99 9A8F: B9 3000 LDA $0030,Y ; Projectile Y Position 9A92: 18 CLC 9A93: 69 0C ADC #$0C 9A95: 99 3000 STA $0030,Y ; Projectile Y Position 9A98: 60 RTS ---- 9A99: B6 66 LDX $66,Y ; Projectile facing direction 9A9B: B9 5400 LDA $0054,Y ; Projectile X Position (low byte) 9A9E: 7D 259A ADC $9A25,X 9AA1: 99 5400 STA $0054,Y 9AA4: B9 4200 LDA $0042,Y ; Projectile X Position (high byte) 9AA7: 7D 279A ADC $9A27,X 9AAA: 99 4200 STA $0042,Y 9AAD: 60 RTS ---- Aru Lowder 9AAE: 20 429B JSR $9B42 9AB1: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9AB3: D0 0E BNE $9AC3 9AB5: 20 11EF JSR $EF11 ; Display 9AB8: A9 03 LDA #$03 ; A = 03 9ABA: 9D 4404 STA $0444,X ; Enemy Vulnerability 9ABD: 20 17E6 JSR $E617 9AC0: 4C C59A JMP $9AC5 ---- 9AC3: D6 81 DEC $81,X ; Current Animation Frame for Enemy 9AC5: 20 40DE JSR $DE40 9AC8: 20 C1D6 JSR $D6C1 ; Link Collision Detection 9ACB: 20 249B JSR $9B24 9ACE: A5 12 LDA $12 ; Permament Frame Counter 9AD0: 29 3F AND #$3F ; keep bits ..xx xxxx 9AD2: D0 03 BNE $9AD7 ; delay before changing direction (towards Link) 9AD4: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9AD7: BD 1B05 LDA $051B,X ; Randomizer 9ADA: 49 FF EOR #$FF ; flip all bits 9ADC: 29 FC AND #$FC ; keep bits xxxx xx.. 9ADE: D0 04 BNE $9AE4 ; used to calculate delay for eye open 9AE0: A9 20 LDA #$20 ; A = 20 9AE2: 95 81 STA $81,X ; Current Animation Frame for Enemy 9AE4: BD 1C05 LDA $051C,X ; Alternate Randomizer ? 9AE7: 29 3F AND #$3F ; keep bits ..xx xxxx 9AE9: D0 05 BNE $9AF0 ; flame shooting frequency 9AEB: A9 10 LDA #$10 ; A = 10 (delay during which tail is pointed) 9AED: 9D 0405 STA $0504,X ; Timer for Enemy AI 9AF0: A9 00 LDA #$00 ; A = 00 9AF2: 95 71 STA $71,X ; Enemy X Velocity 9AF4: 20 099B JSR $9B09 9AF7: BD 0405 LDA $0504,X ; Timer for Enemy AI 9AFA: C9 08 CMP #$08 ; (when timer reaches 08, shoot flame) 9AFC: D0 0A BNE $9B08 9AFE: 20 CEDB JSR $DBCE ; Spawn New Projectile 9B01: B0 05 BCS $9B08 9B03: A9 04 LDA #$04 ; A = 04 9B05: 99 8700 STA $0087,Y ; Projectile Type (04 = Flame) 9B08: 60 RTS ---- 9B09: F6 AF INC $AF,X 9B0B: B4 60 LDY $60,X ; Enemy facing direction 9B0D: B5 AF LDA $AF,X 9B0F: 29 C0 AND #$C0 ; keep bits xx.. .... 9B11: D0 05 BNE $9B18 9B13: B9 239A LDA $9A23,Y 9B16: D0 09 BNE $9B21 9B18: 0A ASL 9B19: D0 08 BNE $9B23 9B1B: B9 239A LDA $9A23,Y 9B1E: 0A ASL 9B1F: 49 FF EOR #$FF ; flip all bits 9B21: 95 71 STA $71,X ; Enemy X Velocity 9B23: 60 RTS ---- 9B24: BD 3E04 LDA $043E,X 9B27: F0 10 BEQ $9B39 9B29: DE 3E04 DEC $043E,X 9B2C: 10 06 BPL $9B34 9B2E: FE 3E04 INC $043E,X 9B31: FE 3E04 INC $043E,X 9B34: 95 71 STA $71,X ; Enemy X Velocity 9B36: 20 32EA JSR $EA32 9B39: B5 A8 LDA $A8,X ; Enemy State ? 9B3B: 29 03 AND #$03 ; keep bits .... ..xx 9B3D: D0 E4 BNE $9B23 9B3F: 4C B8DE JMP $DEB8 ; Simple Horizontal Movement ---- 9B42: 20 32EA JSR $EA32 9B45: BD 7E05 LDA $057E,X ; Enemy Y Velocity 9B48: 30 09 BMI $9B53 9B4A: B5 A8 LDA $A8,X ; Enemy State ? 9B4C: 29 04 AND #$04 ; keep bits .... .x.. 9B4E: F0 03 BEQ $9B53 9B50: 4C C1DA JMP $DAC1 ; Floor Enemy Y Position ---- 9B53: 4C BEDE JMP $DEBE ; Gravity ---- Lizalfos - Orange 9B56: 20 11EF JSR $EF11 ; Display 9B59: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9B5B: F0 21 BEQ $9B7E 9B5D: C9 02 CMP #$02 9B5F: F0 04 BEQ $9B65 9B61: C9 05 CMP #$05 9B63: D0 03 BNE $9B68 9B65: 20 63E5 JSR $E563 9B68: BD 0405 LDA $0504,X ; Timer for Enemy AI 9B6B: D0 11 BNE $9B7E 9B6D: F6 81 INC $81,X ; Current Animation Frame for Enemy 9B6F: B5 81 LDA $81,X 9B71: C9 04 CMP #$04 9B73: F0 0C BEQ $9B81 9B75: C9 07 CMP #$07 9B77: B0 08 BCS $9B81 9B79: A9 0C LDA #$0C ; A = 0C (delay for attack Front Swing Frame 1) 9B7B: 9D 0405 STA $0504,X ; Timer for Enemy AI 9B7E: 4C 859B JMP $9B85 ---- 9B81: A9 00 LDA #$00 ; A = 00 9B83: 95 81 STA $81,X ; Current Animation Frame for Enemy 9B85: 4C 969B JMP $9B96 ---- 9B88: 3F 1F 3F 08 F8 18 18 40 Various Lizalfos variables (8 bytes) 3F = Delay between attacks - Red Lizalfos 1F = Delay between attacks - Orange Lizalfos 3F = Delay between attacks - Blue Lizalfos 08 = X Velocity for Approach - Facing Right - All Lizalfos F8 = X Velocity for Approach - Facing Left - All Lizalfos 18 = Distance kept from Link - Red Lizalfos 18 = Distance kept from Link - Orange Lizalfos 40 = Distance kept from Link - Blue Lizalfos ---- Lizalfos - Red/Blue 9B90: 20 11EF JSR $EF11 ; Display 9B93: 20 BE9C JSR $9CBE 9B96: B4 A1 LDY $A1,X ; Enemy Code 9B98: B9 739B LDA $9B73,Y ; Distance kept from Link 9B9B: 8D E405 STA $05E4 9B9E: 0A ASL 9B9F: 8D E505 STA $05E5 9BA2: A5 F5 LDA $F5 ; Controller 1 buttons pressed 9BA4: 29 40 AND #$40 ; keep bits .x.. .... (B button) 9BA6: F0 0C BEQ $9BB4 9BA8: BD 1B05 LDA $051B,X ; Randomizer 9BAB: 29 03 AND #$03 ; keep bits .... ..xx 9BAD: F0 05 BEQ $9BB4 1 chance out of 4 that the enemy will NOT move its shield according to Link's attack height Something like that... 9BAF: A5 17 LDA $17 ; Link's Shield Position (0 = Link ducked) 9BB1: 9D 4404 STA $0444,X ; Enemy Vulnerability 9BB4: 20 17E6 JSR $E617 9BB7: 20 32EA JSR $EA32 9BBA: A0 01 LDY #$01 ; Y = 01 9BBC: E8 INX 9BBD: 20 7DF2 JSR $F27D 9BC0: A6 10 LDX $10 9BC2: B5 1A LDA $1A,X 9BC4: C9 02 CMP #$02 9BC6: 90 03 BCC $9BCB 9BC8: 4C 3DDD JMP $DD3D ---- 9BCB: A5 C9 LDA $C9 9BCD: 29 FC AND #$FC ; keep bits xxxx xx.. 9BCF: F0 0C BEQ $9BDD 9BD1: B5 A8 LDA $A8,X 9BD3: 29 0F AND #$0F ; keep bits .... xxxx 9BD5: 95 A8 STA $A8,X 9BD7: 20 6CDE JSR $DE6C 9BDA: 4C E69B JMP $9BE6 ---- 9BDD: 20 8BE4 JSR $E48B 9BE0: 20 77E6 JSR $E677 ; Sword Hit Detection 9BE3: 20 D9E4 JSR $E4D9 9BE6: 20 C1D6 JSR $D6C1 ; Link Collision Detection 9BE9: 20 BEDE JSR $DEBE ; Gravity 9BEC: B5 A8 LDA $A8,X 9BEE: 29 04 AND #$04 ; keep bits .... .x.. 9BF0: F0 03 BEQ $9BF5 9BF2: 20 C1DA JSR $DAC1 ; Floor Enemy Y Position 9BF5: 20 139D JSR $9D13 9BF8: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9BFB: A5 0F LDA $0F 9BFD: 18 CLC 9BFE: 6D E405 ADC $05E4 9C01: CD E505 CMP $05E5 9C04: 90 16 BCC $9C1C 9C06: A5 0F LDA $0F 9C08: 18 CLC 9C09: 69 50 ADC #$50 9C0B: C9 A0 CMP #$A0 9C0D: B0 06 BCS $9C15 9C0F: 20 1C9C JSR $9C1C 9C12: 20 91DC JSR $DC91 ; Determine Enemy Facing Direction 9C15: B9 8B9B LDA $9B8B,Y 9C18: 0A ASL 9C19: 95 71 STA $71,X ; Enemy X Velocity 9C1B: 60 RTS ---- 9C1C: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9C1E: D0 46 BNE $9C66 9C20: AD 7904 LDA $0479 ; Link is in mid-air ? (1 = mid-air) 9C23: F0 0F BEQ $9C34 9C25: A0 01 LDY #$01 ; Y = 01 9C27: A5 29 LDA $29 ; Link's Y Position 9C29: 69 0A ADC #$0A 9C2B: D5 2A CMP $2A,X ; Enemy Y Position 9C2D: 90 01 BCC $9C30 If Link's Y Position + 0A is lower than Enemy's Y Position, the Enemy lowers its shield Something like that... 9C2F: 88 DEY ; Y-1 means lower shield 9C30: 98 TYA 9C31: 9D 4404 STA $0444,X ; Enemy Vulnerability 9C34: F6 AF INC $AF,X 9C36: B4 A1 LDY $A1,X ; Enemy Code 9C38: B9 6E9B LDA $9B6E,Y 9C3B: 35 AF AND $AF,X 9C3D: D0 27 BNE $9C66 9C3F: BD 1B05 LDA $051B,X ; Randomizer 9C42: 29 03 AND #$03 ; keep bits .... ..xx 9C44: D0 04 BNE $9C4A 9C46: A9 C0 LDA #$C0 ; A = C0 9C48: 95 AF STA $AF,X 9C4A: A0 01 LDY #$01 ; Y = 01 9C4C: B5 A1 LDA $A1,X ; Enemy Code 9C4E: C9 1B CMP #$1B ; 1B = Orange Lizalfos 9C50: D0 0D BNE $9C5F 9C52: BD 1B05 LDA $051B,X ; Randomizer 9C55: 4A LSR 9C56: B0 04 BCS $9C5C 9C58: A5 17 LDA $17 ; Link's Shield Position (0 = Link ducked) 9C5A: D0 03 BNE $9C5F 9C5C: C8 INY 9C5D: C8 INY 9C5E: C8 INY 9C5F: 94 81 STY $81,X ; Current Animation Frame for Enemy 9C61: A9 18 LDA #$18 ; A = 18 9C63: 9D 0405 STA $0504,X ; Timer for Enemy AI 9C66: A9 00 LDA #$00 ; A = 00 9C68: 95 71 STA $71,X ; Enemy X Velocity 9C6A: A5 A7 LDA $A7 ; Link's State 9C6C: 29 03 AND #$03 ; keep bits .... ..xx 9C6E: D0 19 BNE $9C89 9C70: AD 4207 LDA $0742 ; Left/Right buttons held 9C73: F0 04 BEQ $9C79 9C75: A5 70 LDA $70 ; Link's X Velocity 9C77: D0 0B BNE $9C84 9C79: A0 04 LDY #$04 ; Y = 04 9C7B: A5 12 LDA $12 ; Permament Frame Counter 9C7D: 29 40 AND #$40 ; keep bits .x.. .... 9C7F: D0 02 BNE $9C83 9C81: A0 FC LDY #$FC ; Y = FC 9C83: 98 TYA 9C84: 95 71 STA $71,X ; Enemy X Velocity 9C86: 0A ASL 9C87: 76 71 ROR $71,X 9C89: 60 RTS ---- 9C8A: B5 AF LDA $AF,X 9C8C: 4A LSR 9C8D: B0 14 BCS $9CA3 9C8F: BD 0405 LDA $0504,X ; Timer for Enemy AI 9C92: D0 07 BNE $9C9B 9C94: F6 AF INC $AF,X 9C96: A9 40 LDA #$40 ; A = 40 9C98: 9D 0405 STA $0504,X ; Timer for Enemy AI 9C9B: B4 60 LDY $60,X ; Enemy facing direction 9C9D: B9 8A9B LDA $9B8A,Y 9CA0: 95 71 STA $71,X ; Enemy X Velocity 9CA2: 60 RTS ---- 9CA3: A9 00 LDA #$00 ; A = 00 9CA5: 95 71 STA $71,X ; Enemy X Velocity 9CA7: BD 0405 LDA $0504,X ; Timer for Enemy AI 9CAA: D0 0D BNE $9CB9 9CAC: F6 AF INC $AF,X 9CAE: A9 80 LDA #$80 ; A = 80 9CB0: 9D 0405 STA $0504,X ; Timer for Enemy AI 9CB3: B5 60 LDA $60,X ; Enemy facing direction 9CB5: 49 03 EOR #$03 ; flip bits .... ..xx 9CB7: 95 60 STA $60,X 9CB9: 60 RTS ---- 9CBA: 10 F8 00 FF Table for Blue Lizalfos Mace (4 bytes) 10 = Mace Initial X Position, facing right (low byte) F8 = Mace Initial X Position, facing left (low byte) 00 = Mace Initial X Position, facing right (high byte) FF = Mace Initial X Position, facing left (high byte) ---- 9CBE: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9CC0: F0 45 BEQ $9D07 9CC2: BD 0405 LDA $0504,X ; Timer for Enemy AI 9CC5: D0 40 BNE $9D07 9CC7: F6 81 INC $81,X ; Current Animation Frame for Enemy 9CC9: B5 81 LDA $81,X 9CCB: C9 04 CMP #$04 9CCD: F0 39 BEQ $9D08 9CCF: C9 02 CMP #$02 9CD1: D0 2F BNE $9D02 9CD3: 20 11EF JSR $EF11 ; Display 9CD6: 20 58E5 JSR $E558 ; Related to shield protection 9CD9: B5 A1 LDA $A1,X ; Enemy Code 9CDB: C9 1C CMP #$1C ; 1C = Blue Lizalfos 9CDD: D0 23 BNE $9D02 9CDF: 20 CEDB JSR $DBCE ; Spawn New Projectile 9CE2: B0 1E BCS $9D02 9CE4: B6 66 LDX $66,Y ; Projectile facing direction 9CE6: B9 5400 LDA $0054,Y ; Projectile X Position (low byte) 9CE9: 7D B99C ADC $9CB9,X 9CEC: 99 5400 STA $0054,Y 9CEF: B9 4200 LDA $0042,Y ; Projectile X Position (high byte) 9CF2: 7D BB9C ADC $9CBB,X 9CF5: 99 4200 STA $0042,Y 9CF8: A9 07 LDA #$07 ; A = 07 9CFA: 99 8700 STA $0087,Y ; Projectile Type 9CFD: A6 10 LDX $10 9CFF: 4C 089D JMP $9D08 ---- 9D02: A9 05 LDA #$05 ; A = 05 9D04: 9D 0405 STA $0504,X ; Timer for Enemy AI 9D07: 60 RTS ---- 9D08: A9 00 LDA #$00 ; A = 00 9D0A: 95 81 STA $81,X ; Current Animation Frame for Enemy 9D0C: 60 RTS ---- 9D0D: 00 00 00 00 00 00 Table for ? (6 bytes) ---- 9D13: BD 3E04 LDA $043E,X 9D16: F0 0F BEQ $9D27 9D18: DE 3E04 DEC $043E,X 9D1B: 10 06 BPL $9D23 9D1D: FE 3E04 INC $043E,X 9D20: FE 3E04 INC $043E,X 9D23: 95 71 STA $71,X ; Enemy X Velocity 9D25: 68 PLA 9D26: 68 PLA 9D27: 4C 399B JMP $9B39 ---- 9D2A: 08 FC FC 08 F0 F3 FA 06 Tile Offsets for Rock Tossing Lizalfos (8 bytes) 08 = X Offset for arm back swing tile - Facing Left FC = X Offset for arm front swing tile - Facing Left FC = X Offset for arm back swing tile - Facing Right 08 = X Offset for arm front swing tile - Facing Right F0 = Y Offset for arm back swing tile F3 = Y Offset for arm front swing tile FA = X Offset for rock before throw - Facing Right 06 = X Offset for rock before throw - Facing Left ---- Lizalfos - Rock Tossing - Display 9D32: A5 03 LDA $03 9D34: 09 20 ORA #$20 ; set bits ..x. .... 9D36: 85 03 STA $03 9D38: A2 2C LDX #$2C ; X = 2C 9D3A: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9D3D: A5 C9 LDA $C9 9D3F: D0 68 BNE $9DA9 9D41: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9D43: F0 64 BEQ $9DA9 9D45: AA TAX 9D46: A9 23 LDA #$23 ; A = 23 9D48: 99 0102 STA $0201,Y 9D4B: A5 00 LDA $00 9D4D: 7D 2D9D ADC $9D2D,X 9D50: 99 0002 STA $0200,Y 9D53: B9 FA01 LDA $01FA,Y 9D56: E0 02 CPX #$02 9D58: D0 02 BNE $9D5C 9D5A: 49 C0 EOR #$C0 ; flip bits xx.. .... 9D5C: 99 0202 STA $0202,Y 9D5F: 99 0602 STA $0206,Y 9D62: A5 02 LDA $02 9D64: 4A LSR 9D65: D0 02 BNE $9D69 9D67: E8 INX 9D68: E8 INX 9D69: 86 0E STX $0E 9D6B: 84 0F STY $0F 9D6D: BD 299D LDA $9D29,X 9D70: E0 01 CPX #$01 9D72: F0 04 BEQ $9D78 9D74: E0 03 CPX #$03 9D76: D0 09 BNE $9D81 9D78: A6 10 LDX $10 9D7A: BC 4404 LDY $0444,X ; Enemy Vulnerability 9D7D: C0 07 CPY #$07 9D7F: B0 01 BCS $9D82 9D81: 0A ASL 9D82: 18 CLC 9D83: 65 01 ADC $01 9D85: A4 0F LDY $0F 9D87: 99 0302 STA $0203,Y 9D8A: A5 0E LDA $0E 9D8C: 29 01 AND #$01 ; keep bits .... ...x 9D8E: F0 19 BEQ $9DA9 9D90: A6 02 LDX $02 9D92: B9 0302 LDA $0203,Y 9D95: 18 CLC 9D96: 7D 2F9D ADC $9D2F,X 9D99: 99 0702 STA $0207,Y 9D9C: A9 AE LDA #$AE ; A = AE 9D9E: 99 0502 STA $0205,Y 9DA1: B9 0002 LDA $0200,Y 9DA4: E9 03 SBC #$03 9DA6: 99 0402 STA $0204,Y 9DA9: A6 10 LDX $10 9DAB: 60 RTS ---- Tektite - Display 9DAC: A2 00 LDX #$00 ; X = 00 9DAE: AD 316E LDA $6E31 9DB1: C9 89 CMP #$89 9DB3: D0 02 BNE $9DB7 9DB5: A2 04 LDX #$04 ; X = 04 9DB7: 20 F4F1 JSR $F1F4 ; Set Enemy Sprite Attributes 9DBA: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9DBD: B5 AF LDA $AF,X 9DBF: 10 02 BPL $9DC3 9DC1: 49 FF EOR #$FF ; flip all bits 9DC3: 85 00 STA $00 9DC5: B9 F001 LDA $01F0,Y 9DC8: C9 F0 CMP #$F0 9DCA: B0 05 BCS $9DD1 9DCC: 65 00 ADC $00 9DCE: 99 F001 STA $01F0,Y 9DD1: B9 F401 LDA $01F4,Y 9DD4: C9 F0 CMP #$F0 9DD6: B0 05 BCS $9DDD 9DD8: 65 00 ADC $00 9DDA: 99 F401 STA $01F4,Y 9DDD: 60 RTS ---- Girobokku - Display 9DDE: BD 0405 LDA $0504,X ; Timer for Enemy AI 9DE1: A2 0A LDX #$0A ; X = 0A (Code when eye is closed) 9DE3: 0A ASL 9DE4: F0 02 BEQ $9DE8 9DE6: A2 08 LDX #$08 ; X = 08 (Code when eye is open) 9DE8: 4C D7F0 JMP $F0D7 ; Set Enemy Sprite Attributes and Restore X ---- Leever - Display 9DEB: A2 02 LDX #$02 ; X = 02 (related to H mirroring) 9DED: 86 02 STX $02 9DEF: A9 23 LDA #$23 ; A = 23 (related to V mirroring and palette) 9DF1: 85 03 STA $03 9DF3: A9 0C LDA #$0C ; A = 0C 9DF5: 20 CCF0 JSR $F0CC 9DF8: B9 FE01 LDA $01FE,Y 9DFB: 09 40 ORA #$40 ; set bits .x.. .... 9DFD: 99 FE01 STA $01FE,Y 9E00: 60 RTS ---- Boon - Display 9E01: A2 10 LDX #$10 ; X = 10 9E03: A5 12 LDA $12 ; Permament Frame Counter 9E05: 4A LSR 9E06: 90 02 BCC $9E0A 9E08: E8 INX 9E09: E8 INX 9E0A: 4C D7F0 JMP $F0D7 ; Set Enemy Sprite Attributes and Restore X ---- 9E0D: 10 F8 FF 01 02 08 Tile Offsets for Zora and Aru Lowder (6 bytes) 10 = X Offset for Zora head - Facing Right F8 = X Offset for Zora head - Facing Left FF = X Offset for Zora head when attacking - Facing Right 01 = X Offset for Zora head when attacking - Facing Left 02 = ? 08 = ? ---- Zora - Display 9E13: A5 03 LDA $03 9E15: 0D 5307 ORA $0753 9E18: 85 03 STA $03 9E1A: BD 0405 LDA $0504,X ; Timer for Enemy AI 9E1D: D0 5D BNE $9E7C 9E1F: A5 00 LDA $00 9E21: 18 CLC 9E22: 69 10 ADC #$10 9E24: 85 00 STA $00 9E26: B5 71 LDA $71,X ; Enemy X Velocity 9E28: A2 14 LDX #$14 ; X = 14 9E2A: C9 00 CMP #$00 9E2C: F0 11 BEQ $9E3F 9E2E: 10 02 BPL $9E32 9E30: 49 FF EOR #$FF ; flip all bits 9E32: C9 09 CMP #$09 9E34: A9 04 LDA #$04 ; A = 04 9E36: B0 01 BCS $9E39 9E38: 0A ASL 9E39: 25 12 AND $12 ; Permament Frame Counter 9E3B: D0 02 BNE $9E3F 9E3D: A2 16 LDX #$16 ; X = 16 9E3F: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9E42: A6 02 LDX $02 9E44: A5 C9 LDA $C9 9E46: 3D 109E AND $9E10,X 9E49: D0 2E BNE $9E79 9E4B: A5 00 LDA $00 9E4D: 38 SEC 9E4E: E9 10 SBC #$10 9E50: 99 0002 STA $0200,Y 9E53: B9 FE01 LDA $01FE,Y 9E56: 99 0202 STA $0202,Y 9E59: A9 DC LDA #$DC ; A = DC 9E5B: 99 0102 STA $0201,Y 9E5E: A5 01 LDA $01 9E60: 18 CLC 9E61: 7D 0C9E ADC $9E0C,X 9E64: 99 0302 STA $0203,Y 9E67: A6 10 LDX $10 9E69: B5 81 LDA $81,X 9E6B: F0 0C BEQ $9E79 9E6D: A6 02 LDX $02 9E6F: B9 0302 LDA $0203,Y 9E72: 18 CLC 9E73: 7D 0E9E ADC $9E0E,X 9E76: 99 0302 STA $0203,Y 9E79: A6 10 LDX $10 9E7B: 60 RTS ---- 9E7C: A2 18 LDX #$18 ; X = 18 (18 = Zora Enemy Code) 9E7E: 20 F4F1 JSR $F1F4 ; Set Enemy Sprite Attributes 9E81: 4C D7F0 JMP $F0D7 ; Set Enemy Sprite Attributes and Restore X ---- Aru Lowder - Display 9E84: BD 0405 LDA $0504,X ; Timer for Enemy AI 9E87: A2 20 LDX #$20 ; X = 20 9E89: 0A ASL 9E8A: F0 02 BEQ $9E8E 9E8C: A2 22 LDX #$22 ; X = 22 9E8E: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9E91: B5 71 LDA $71,X ; Enemy X Velocity 9E93: A2 1C LDX #$1C ; X = 1C 9E95: 0A ASL 9E96: F0 08 BEQ $9EA0 9E98: A5 12 LDA $12 ; Permament Frame Counter 9E9A: 29 04 AND #$04 ; keep bits .... .x.. 9E9C: D0 02 BNE $9EA0 9E9E: A2 1E LDX #$1E ; X = 1E 9EA0: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9EA3: A6 02 LDX $02 9EA5: A5 C9 LDA $C9 9EA7: 3D 109E AND $9E10,X 9EAA: D0 26 BNE $9ED2 9EAC: A5 00 LDA $00 9EAE: 38 SEC 9EAF: E9 10 SBC #$10 9EB1: 99 0002 STA $0200,Y 9EB4: B9 FE01 LDA $01FE,Y 9EB7: 99 0202 STA $0202,Y 9EBA: A5 01 LDA $01 9EBC: 18 CLC 9EBD: 7D 0C9E ADC $9E0C,X 9EC0: 99 0302 STA $0203,Y 9EC3: A6 10 LDX $10 9EC5: B5 81 LDA $81,X 9EC7: A2 EE LDX #$EE ; X = EE 9EC9: 0A ASL 9ECA: F0 02 BEQ $9ECE 9ECC: A2 FA LDX #$FA ; X = FA 9ECE: 8A TXA 9ECF: 99 0102 STA $0201,Y 9ED2: A6 10 LDX $10 9ED4: 60 RTS ---- 9ED5: Table for Lizalfos Tile Offsets (C bytes) 08 = X Offset for Back Swing Tile, facing left (Red, Orange, Blue) FA = X Offset for Front Swing Frame 1, facing left (Red, Orange) FE = X Offset for Front Swing Frame 2, facing left (Red, Orange) F8 = X Offset for Back Swing Tile, facing right (Red, Orange, Blue) 06 = X Offset for Front Swing Frame 1, facing right (Red, Orange) 02 = X Offset for Front Swing Frame 2, facing right (Red, Orange) 34 = Tile Mapping for Back Swing, both directions (Red, Blue) 34 = Tile Mapping for Front Swing Frame 1, both directions (Red, Blue) 36 = Tile Mapping for Front Swing Frame 2, both directions (Red) 38 = Tile Mapping for Back Swing, both directions (Orange) 3A = Tile Mapping for Front Swing Frame 1, both directions (Orange) 3A = Tile Mapping for Front Swing Frame 2, both directions (Orange) ---- Lizalfos - Red, Orange, Blue - Display 9EE1: B5 A8 LDA $A8,X ; Enemy State ? 9EE3: 85 D9 STA $D9 9EE5: B5 71 LDA $71,X ; Enemy X Velocity 9EE7: 48 PHA 9EE8: BD 4404 LDA $0444,X ; Enemy Vulnerability 9EEB: A2 24 LDX #$24 ; X = 24 (time mapping code, shield up) 9EED: 0A ASL 9EEE: D0 02 BNE $9EF2 9EF0: A2 2C LDX #$2C ; X = 2C (time mapping code, shield down) 9EF2: 68 PLA 9EF3: F0 10 BEQ $9F05 9EF5: A5 D9 LDA $D9 9EF7: 29 04 AND #$04 ; keep bits .... .x.. 9EF9: F0 0A BEQ $9F05 9EFB: A5 12 LDA $12 ; Permanent Frame Counter 9EFD: 29 08 AND #$08 ; keep bits .... x... (footwork frequency) 9EFF: D0 04 BNE $9F05 9F01: E8 INX 9F02: E8 INX 9F03: E8 INX 9F04: E8 INX 9F05: 20 F4F1 JSR $F1F4 ; Set Enemy Sprite Attributes 9F08: 20 D7F0 JSR $F0D7 ; Set Enemy Sprite Attributes and Restore X 9F0B: A5 C9 LDA $C9 9F0D: 29 FC AND #$FC ; keep bits xxxx xx.. 9F0F: D0 73 BNE $9F84 9F11: B5 A1 LDA $A1,X ; Enemy Code 9F13: 85 D9 STA $D9 9F15: B5 2A LDA $2A,X ; Enemy Y Position 9F17: 85 00 STA $00 9F19: B5 81 LDA $81,X ; Current Animation Frame for Enemy 9F1B: F0 67 BEQ $9F84 9F1D: AA TAX 9F1E: E0 04 CPX #$04 9F20: 90 09 BCC $9F2B 9F22: CA DEX 9F23: CA DEX 9F24: CA DEX 9F25: A5 00 LDA $00 9F27: 69 08 ADC #$08 9F29: 85 00 STA $00 9F2B: 86 0F STX $0F 9F2D: A5 02 LDA $02 9F2F: 4A LSR 9F30: 90 03 BCC $9F35 9F32: E8 INX 9F33: E8 INX 9F34: E8 INX 9F35: BD D49E LDA $9ED4,X 9F38: 84 07 STY $07 9F3A: A6 10 LDX $10 9F3C: B4 A1 LDY $A1,X ; Enemy Code 9F3E: C0 1A CPY #$1A ; 1A = Red Lizalfos 9F40: F0 0B BEQ $9F4D 9F42: BC 0405 LDY $0504,X ; Timer for Enemy AI 9F45: C0 03 CPY #$03 9F47: 90 05 BCC $9F4E 9F49: C0 09 CPY #$09 9F4B: B0 01 BCS $9F4E 9F4D: 0A ASL 9F4E: 18 CLC 9F4F: 65 01 ADC $01 9F51: 85 01 STA $01 9F53: A4 07 LDY $07 9F55: A6 0F LDX $0F 9F57: A5 D9 LDA $D9 9F59: C9 1B CMP #$1B 9F5B: F0 1D BEQ $9F7A 9F5D: E0 03 CPX #$03 9F5F: D0 06 BNE $9F67 9F61: A5 00 LDA $00 9F63: 69 0D ADC #$0D 9F65: 85 00 STA $00 9F67: E0 02 CPX #$02 9F69: D0 12 BNE $9F7D 9F6B: A5 02 LDA $02 9F6D: 49 03 EOR #$03 ; flip bits .... ..xx 9F6F: 85 02 STA $02 9F71: A5 03 LDA $03 9F73: 09 80 ORA #$80 ; set bits x... .... 9F75: 85 03 STA $03 9F77: 4C 7D9F JMP $9F7D ---- 9F7A: E8 INX 9F7B: E8 INX 9F7C: E8 INX 9F7D: BD DA9E LDA $9EDA,X 9F80: AA TAX 9F81: 4C D7F0 JMP $F0D7 ; Set Enemy Sprite Attributes and Restore X ---- 9F84: 60 RTS ---- 9F85: Unused Space (7B bytes) ---- A000: Area Pointers - Maze Island (3F * 2 = 7E bytes) 6CA2 -> A26C (00) 3EA3 -> A33E 98A3 -> A398 DCA3 -> A3DC 1EA3 -> A31E B6A5 -> A5B6 62A3 -> A362 B8A3 -> A3B8 B6A5 -> A5B6 A4A4 -> A4A4 62A3 -> A362 C0A4 -> A4C0 3EA3 -> A33E 1EA3 -> A31E B8A3 -> A3B8 D4A4 -> A4D4 08A4 -> A408 (10) BC8C -> 8CBC BC8C -> 8CBC 32A4 -> A432 58A4 -> A458 ECA4 -> A4EC F6A5 -> A5F6 08A4 -> A408 08A4 -> A408 32A4 -> A432 9BA5 -> A59B 6CA2 -> A26C 6CA2 -> A26C 6EA2 -> A26E 6EA2 -> A26E 6EA2 -> A26E 6EA2 -> A26E (20) 6EA2 -> A26E 2BA5 -> A52B 2BA5 -> A52B 7EA5 -> A57E 5FA5 -> A55F 15A5 -> A515 98A2 -> A298 98A2 -> A298 98A2 -> A298 98A2 -> A298 98A2 -> A298 98A2 -> A298 98A2 -> A298 98A2 -> A298 15A5 -> A515 3BA5 -> A53B (30) 3BA5 -> A53B 3BA5 -> A53B 15A5 -> A515 DCA2 -> A2DC DCA2 -> A2DC DCA2 -> A2DC DCA2 -> A2DC DCA2 -> A2DC 05A5 -> A505 05A5 -> A505 BAA2 -> A2BA BAA2 -> A2BA BAA2 -> A2BA BAA2 -> A2BA ---- A07E: Enemy Pointers - Maze Island (3F * 2 = 7E bytes) Base Offset is 88A0 0072 -> 8AA0 0272 -> 8AA2 1372 -> 8AB3 2272 -> 8AC2 4072 -> 8AE0 4B72 -> 8AEB 5F72 -> 8AFF 7072 -> 8B10 8272 -> 8B22 9472 -> 8B34 A172 -> 8B41 B272 -> 8B52 BF72 -> 8B5F CE72 -> 8B6E 1773 -> 8BB7 EC72 -> 8B8C FC72 -> 8B9C DD72 -> 8B7D DD72 -> 8B7D 0B73 -> 8BAB 1473 -> 8BB4 F772 -> 8B97 4B72 -> 8AEB 5072 -> 8AF0 7972 -> 8B19 8772 -> 8B27 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 8C73 -> 8C2C 8C73 -> 8C2C 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 2073 -> 8BC0 2973 -> 8BC9 0072 -> 8AA0 7173 -> 8C11 3F73 -> 8BDF 7473 -> 8C14 7473 -> 8C14 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 4A73 -> 8BEA 5173 -> 8BF1 5673 -> 8BF6 5F73 -> 8BFF 6A73 -> 8C0A A473 -> 8C44 A473 -> 8C44 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 0072 -> 8AA0 ---- A0FC: Maze Island - Key Areas Y Location (3F bytes) A13B: Maze Island - Key Areas X Location (3F bytes) A17A: Maze Island - Key Areas Map Number (3F bytes) A1B9: Maze Island - Key Areas World Number (3F bytes) A1F8: Maze Island - Area Connectivity Data (1D * 4 = 74 bytes) ---- A26C: Area Data - Maze Island (3E0 bytes) 02 00 10 C0 C3 11 D4 02 DE 03 D4 04 D8 03 D2 02 DC 03 1A 44 C2 19 82 80 82 91 84 80 84 91 84 80 84 80 82 95 8C 80 83 92 87 91 82 80 22 48 1E 62 D2 0D D4 0C D2 0B D2 0C D2 0D D2 0E D2 0D D4 0E D4 0D D2 0E D2 0D D4 0C D2 0B D6 0C D4 0D 22 40 B1 21 96 80 74 E2 52 E4 92 80 74 E2 94 80 92 80 74 E2 54 E4 92 80 92 91 92 82 74 E2 72 E2 92 91 42 70 F0 31 A4 00 A2 00 A2 01 A2 00 A2 01 A1 01 D3 81 91 02 91 00 92 01 92 00 92 01 91 01 91 01 91 01 91 00 D4 82 82 00 82 00 82 01 D2 81 91 02 91 01 92 00 D4 80 A2 00 A2 00 A2 02 A2 00 A2 01 A1 01 20 E0 0D 48 D6 0C A2 2F D6 0B 92 27 D6 0A A2 2F 90 2F 80 2F D6 09 72 27 D6 08 D2 05 00 39 DC 06 24 E0 06 48 D8 05 02 35 D6 84 00 3F 12 3D D6 83 22 35 D6 0A A0 21 90 21 D2 0B A0 27 90 25 D8 0C A0 29 DC 0D 36 E0 03 48 00 33 10 33 20 33 30 33 E1 00 D0 02 81 E1 81 E1 82 E1 81 E1 82 E1 81 E1 D2 03 DC 02 81 E1 81 E1 82 E1 81 E1 82 E1 81 E1 D2 03 0C 33 10 33 20 33 30 33 20 E0 0E 48 D2 0B D5 00 D3 02 D2 03 D2 00 D8 09 D4 0B D6 09 D8 00 94 E2 91 E2 D5 09 D8 0B D4 0E 24 E0 05 48 DE 00 F0 21 D2 04 D5 00 F0 22 D3 04 D8 00 F0 22 D3 03 D7 05 D8 00 F0 22 D3 05 D3 00 F0 21 D2 06 2C E0 0E 48 D4 0B D4 00 D4 02 D2 04 D2 06 D6 04 D2 02 D2 00 D2 0A D2 0C D4 0A D2 00 D2 02 D2 04 D2 06 D6 04 D2 02 D2 00 D4 0B D4 0E 2A E0 06 48 00 3D DA 04 D2 02 D2 08 D6 0E E2 00 A5 E1 A1 E1 81 08 F0 50 81 08 A1 E1 A1 E1 D2 0C D2 08 D8 02 00 39 D2 04 D2 06 26 E0 0E 48 D4 09 D4 02 00 33 10 33 04 37 D8 08 D8 0C D9 0E 02 08 F0 50 B0 E1 01 08 B0 E1 D3 0C D5 09 D8 0C D4 0E 4C E0 06 48 D8 00 F0 21 D2 05 D2 00 F0 21 D2 05 D2 00 F0 21 D2 04 D2 00 F0 21 D2 04 D2 00 F0 21 D2 03 D2 00 F0 21 D2 03 D4 00 F0 21 D2 03 D2 00 F0 21 D2 04 D2 00 F0 21 D2 04 D2 00 F0 21 D2 05 D2 00 F0 21 D2 05 D2 00 F0 21 D2 06 1C E0 06 48 DA 04 D2 02 D2 00 66 51 64 51 64 51 66 51 64 51 64 51 D8 02 D2 04 D2 06 14 E0 0E 48 D4 09 D8 02 DE 04 D4 02 D4 09 DA 00 DA 09 D6 0E 18 60 0E 48 D4 08 94 F1 94 F1 94 F1 94 F1 94 F1 D4 0E D8 08 E3 00 DC 0E 19 60 0E 48 E2 00 D4 00 AC B7 51 F4 52 F4 52 F4 D3 01 D2 02 80 0F 06 D4 0F 10 01 C2 11 96 90 98 90 92 90 98 90 98 90 92 90 16 E0 F1 39 DC 83 D2 85 D2 83 D2 81 E2 00 DC 83 D4 81 D6 83 D2 81 10 E0 F0 39 D8 81 D8 82 DC 83 D8 84 DC 85 D8 86 24 E0 F1 39 D8 83 D2 85 D2 87 D2 85 D2 83 D2 81 DC 83 D4 81 D6 83 D2 85 D2 83 D2 81 D4 83 D2 85 D2 83 D2 81 1F E0 06 48 00 37 D4 84 D2 82 10 31 20 31 D2 0C D2 0E D8 0A D4 80 D4 0A E3 00 AC 0F 13 D2 0F 1D E0 06 48 00 37 D4 84 D2 82 10 31 20 31 D2 0C D2 0E D8 0A D4 80 D4 0A A2 0F 0E D2 0F 1B E0 06 48 00 37 D4 84 D2 82 10 31 20 31 D2 0C A0 2D 90 2D DE 80 A3 0F 0E D1 0F 40 E0 03 48 D4 00 80 4B F0 2B 06 3F 10 3F 24 3B 30 33 40 33 82 4F F0 2F 26 33 30 33 40 33 04 31 10 31 86 4F F0 2F 04 3B 10 3B 22 37 30 37 40 37 8A 4B F0 2B 04 37 10 37 22 33 30 33 40 33 D6 03 56 E0 03 48 D4 00 80 4B F0 2B 02 37 10 37 22 33 32 31 40 31 86 4D F0 2D 02 39 10 39 20 39 32 33 40 33 DA 03 D4 01 D2 0E A0 27 03 08 F0 50 A0 E2 01 08 A0 E2 D4 0B A0 E2 A1 E2 81 E4 81 E4 D1 00 80 4B F0 2B 00 33 10 33 20 31 30 31 08 37 10 37 22 35 30 35 D2 83 ---- A64C: Maze Island Overworld Map Data (2E7 bytes) ---- A933: Unused Space (163D bytes) ---- BF70: 78 SEI BF71: D8 CLD BF72: A2 00 LDX #$00 ; X = 00 BF74: 8E 0020 STX $2000 BF77: E8 INX BF78: AD 0220 LDA $2002 BF7B: 10 FB BPL $BF78 BF7D: CA DEX BF7E: F0 F8 BEQ $BF78 BF80: 9A TXS BF81: 8E 0080 STX $8000 BF84: 8E 00A0 STX $A000 BF87: 8E 00C0 STX $C000 BF8A: 8E 00E0 STX $E000 BF8D: A9 0F LDA #$0F ; A = 0F BF8F: 20 9DBF JSR $BF9D BF92: 20 B1BF JSR $BFB1 BF95: A9 07 LDA #$07 ; A = 07 BF97: 20 CCBF JSR $BFCC BF9A: 4C 00C0 JMP $C000 ---- BF9D: 8D 0080 STA $8000 BFA0: 4A LSR BFA1: 8D 0080 STA $8000 BFA4: 4A LSR BFA5: 8D 0080 STA $8000 BFA8: 4A LSR BFA9: 8D 0080 STA $8000 BFAC: 4A LSR BFAD: 8D 0080 STA $8000 BFB0: 60 RTS ---- BFB1: 8D 00A0 STA $A000 BFB4: 4A LSR BFB5: 8D 00A0 STA $A000 BFB8: 4A LSR BFB9: 8D 00A0 STA $A000 BFBC: 4A LSR BFBD: 8D 00A0 STA $A000 BFC0: 4A LSR BFC1: 8D 00A0 STA $A000 BFC4: 60 RTS ---- BFC5: A9 00 LDA #$00 ; A = 00 BFC7: F0 03 BEQ $BFCC BFC9: AD 6907 LDA $0769 BFCC: 8D 00E0 STA $E000 BFCF: 4A LSR BFD0: 8D 00E0 STA $E000 BFD3: 4A LSR BFD4: 8D 00E0 STA $E000 BFD7: 4A LSR BFD8: 8D 00E0 STA $E000 BFDB: 4A LSR BFDC: 8D 00E0 STA $E000 BFDF: 60 RTS ---- BFE0: Unused Space (1A bytes) ---- BFFA: NMI, Reset and Break Vectors 7BC0 -> 1C07B 70BF -> BF70 F0FF -> 1FFF0 ---- // End of Bank // --------