$119b71: VWF table $17774a: Castle menu text ZST: 2bd60 58735 Bank 80h: 80:A3F4 - Menu's Loaded $7E8388: RAM where menu is decompressed $8780c6: WRAM where menu loaded 0x05859C: menu pointer trace: $C58729 $C780Df $C58280 $C5E1F0 $C5E200 $C5E25E $C587E1 $C78AB5 RAW menu loader: $879354 Loads the menu C7:8AB5 8B PHB C7:8AB6 08 PHP C7:8AB7 4B PHK C7:8AB8 AB PLB C7:8AB9 DA PHX C7:8ABA 5A PHY C7:8ABB AC 31 05 LDY $0531 C7:8ABE E2 20 SEP $20 C7:8AC0 AD 33 05 LDA $0533 C7:8AC3 48 PHA C7:8AC4 C2 20 REP $20 C7:8AC6 AB PLB C7:8AC7 B9 07 00 LDA $0007,Y C7:8ACA 85 28 STA $28 C7:8ACC B9 06 00 LDA $0006,Y C7:8ACF 85 27 STA $27 C7:8AD1 B9 00 00 LDA $0000,Y C7:8AD4 29 FF 00 AND #$00FF C7:8AD7 85 00 STA $00 C7:8AD9 B9 01 00 LDA $0001,Y C7:8ADC 29 FF 00 AND #$00FF C7:8ADF 85 02 STA $02 C7:8AE1 85 06 STA $06 C7:8AE3 8A TXA C7:8AE4 18 CLC C7:8AE5 79 02 00 ADC $0002,Y C7:8AE8 AA TAX C7:8AE9 E2 20 SEP $20 C7:8AEB B9 04 00 LDA $0004,Y C7:8AEE 48 PHA C7:8AEF C2 20 REP $20 C7:8AF1 AB PLB C7:8AF2 A0 00 00 LDY #$0000 C7:8AF5 86 08 STX $08 C7:8AF7 A5 00 LDA $00 C7:8AF9 85 04 STA $04 C7:8AFB B7 27 LDA [$27],Y C7:8AFD CD 3E 05 CMP $053E C7:8B00 F0 03 BEQ $8B05 C7:8B02 9D 00 00 STA $0000,X C7:8B05 C8 INY C7:8B06 C8 INY C7:8B07 E8 INX C7:8B08 E8 INX C7:8B09 C6 04 DEC $04 C7:8B0B D0 EE BNE $8AFB C7:8B0D A5 08 LDA $08 C7:8B0F 18 CLC C7:8B10 69 40 00 ADC #$0040 C7:8B13 85 08 STA $08 C7:8B15 AA TAX C7:8B16 C6 06 DEC $06 C7:8B18 D0 DD BNE $8AF7 C7:8B1A 7A PLY C7:8B1B FA PLX C7:8B1C 28 PLP C7:8B1D AB PLB C7:8B1E 6B RTL menu: 80A3D0 LDA $0347,y A:0004 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3D3 STA $4312 A:0008 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3D6 LDA $0348,y A:0008 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3D9 STA $4313 A:007D X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3DC LDA $0349,y A:007D X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3DF STA $4314 A:007E X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3E2 LDA $034A,y A:007E X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3E5 STA $4315 A:00C0 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3E8 LDA $034B,y A:00C0 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3EB STA $4316 A:0002 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3EE LDA $034C,y A:0002 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A3F1 STA $2115 A:0080 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3F4 LDA $034D,y A:0080 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3F7 STA $2116 A:00C0 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3FA LDA $034E,y A:00C0 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:A0 E- 80A3FD STA $2117 A:0054 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A400 LDA #$01 A:0054 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A402 STA $4310 A:0001 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A405 LDA #$18 A:0001 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A407 STA $4311 A:0018 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A40A LDA #$02 A:0018 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A40C STA $420B A:0002 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A40F REP #$20 A:0002 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:20 E- 80A411 TYA A:0002 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:00 E- 80A412 CLC A:0000 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:02 E- 80A413 ADC #$0009 A:0000 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:02 E- 80A416 TAY A:0009 X:0004 Y:0000 S:1FDE DB:80 D:0000 P:00 E- 80A417 JMP $80A36B A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A36B CPY #$0100 A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A36E BCC $A372 A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:80 E- 80A372 LDA $0346,y A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:80 E- 80A375 AND #$00FF A:0802 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A378 ASL A A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A379 TAX A:0004 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A37A JMP ($A37D,x) A:0004 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A3CE SEP #$20 A:0004 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A3D0 LDA $0347,y A:0004 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3D3 STA $4312 A:0008 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3D6 LDA $0348,y A:0008 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3D9 STA $4313 A:0085 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3DC LDA $0349,y A:0085 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3DF STA $4314 A:007E X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3E2 LDA $034A,y A:007E X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3E5 STA $4315 A:00C0 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3E8 LDA $034B,y A:00C0 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3EB STA $4316 A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3EE LDA $034C,y A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A3F1 STA $2115 A:0080 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3F4 LDA $034D,y A:0080 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3F7 STA $2116 A:00C0 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3FA LDA $034E,y A:00C0 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:A0 E- 80A3FD STA $2117 A:0058 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A400 LDA #$01 A:0058 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A402 STA $4310 A:0001 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A405 LDA #$18 A:0001 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A407 STA $4311 A:0018 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A40A LDA #$02 A:0018 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A40C STA $420B A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A40F REP #$20 A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:20 E- 80A411 TYA A:0002 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A412 CLC A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A413 ADC #$0009 A:0009 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A416 TAY A:0012 X:0004 Y:0009 S:1FDE DB:80 D:0000 P:00 E- 80A417 JMP $80A36B A:0012 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:00 E- 80A36B CPY #$0100 A:0012 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:00 E- 80A36E BCC $A372 A:0012 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:80 E- 80A372 LDA $0346,y A:0012 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:80 E- 80A375 AND #$00FF A:0000 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:02 E- 80A378 ASL A A:0000 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:02 E- 80A379 TAX A:0000 X:0004 Y:0012 S:1FDE DB:80 D:0000 P:02 E- 80A37A JMP ($A37D,x) A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:02 E- 80A387 SEP #$20 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:02 E- 80A389 STZ $0346 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:22 E- 80A38C PLP A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:22 E- 80A38D PLB A:0000 X:0000 Y:0012 S:1FDF DB:80 D:0000 P:03 E- 80A38E RTL A:0000 X:0000 Y:0012 S:1FE0 DB:80 D:0000 P:81 E- 80AE9C JSL $80A328 A:0000 X:0000 Y:0012 S:1FE3 DB:80 D:0000 P:81 E- 80A328 PHB A:0000 X:0000 Y:0012 S:1FE0 DB:80 D:0000 P:81 E- 80A329 PHP A:0000 X:0000 Y:0012 S:1FDF DB:80 D:0000 P:81 E- 80A32A PHK A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:81 E- 80A32B PLB A:0000 X:0000 Y:0012 S:1FDD DB:80 D:0000 P:81 E- 80A32C SEP #$20 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:81 E- 80A32E LDA $0341 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:A1 E- 80A331 STA $420B A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- 80A334 STZ $0341 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- 80A337 LDA $B6 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- 80A339 ORA $0342 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- 80A33C STA $B6 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- 80A33E JSL $82C198 A:0000 X:0000 Y:0012 S:1FDE DB:80 D:0000 P:23 E- Location: $85E113 The base 82h - 81h * 2h selects a base from $879471 The base is stored to $00 Then the A2h - 40h, taken the 13 MSB bits is multipled by 2 add with it's LSB 3bits (stored at $02). It's destination is added multiplied by 2 again, added with the base at $00, forms a index to pointer at $879471. algorithm: Taken the 2 bytes: 82 A2 bptr = 82h - 81h = 1h bptr = bptr * 2 = 2h base = [$879471 + bptr] = [$879473] = 0306h tmp = A2h - 40h = 62h $02 = 62h & 3h = 2h tmp = tmp & FFF8h = 60h tmp = tmp * 2 = C0h tmp = tmp + $02 = C2h tmp = tmp * 2 = 184h index = tmp + base = 184h + 0306h = 48Ah data at = [$879471 + index] = [$879471 + 48Ah] C7:93D2 38 SEC C7:93D3 E9 81 00 SBC #$0081 ; subtracting 81h C7:93D6 0A ASL ; multiply by 2 C7:93D7 AA TAX C7:93D8 BF 71 94 87 LDA $879471,X ; load base C7:93DC 85 00 STA $00 ; store it to $00 C7:93DE FA PLX C7:93DF DA PHX C7:93E0 5A PHY C7:93E1 BD 01 00 LDA $0001,X ; load second half C7:93E4 29 FF 00 AND #$00FF C7:93E7 38 SEC C7:93E8 E9 40 00 SBC #$0040 ; subtract 40h C7:93EB 48 PHA C7:93EC 29 07 00 AND #$0007 ; AND 3h (LSB 3 bits) C7:93EF 85 02 STA $02 ; store to $02 C7:93F1 68 PLA C7:93F2 29 F8 FF AND #$FFF8 ; AND FFF8h (MSB 13 bits) C7:93F5 0A ASL ; multiply by 2 C7:93F6 18 CLC C7:93F7 65 02 ADC $02 ; add with LSB 3 bits C7:93F9 0A ASL ; multiply by 2 C7:93FA 18 CLC C7:93FB 65 00 ADC $00 ; add with base C7:93FD AA TAX C7:93FE AF 3A 05 00 LDA $00053A C7:9402 18 CLC C7:9403 7F 71 94 87 ADC $879471,X ; data pulled C7:9407 97 33 STA [$33],Y ; stored to WRAM C7:9409 98 TYA C7:940A 18 CLC C7:940B 65 04 ADC $04 C7:940D A8 TAY C7:940E AF 3A 05 00 LDA $00053A C7:9412 18 CLC C7:9413 7F 81 94 87 ADC $879481,X C7:9417 97 33 STA [$33],Y C7:9419 7A PLY C7:941A FA PLX C7:941B 80 A0 BRA $93BD