org $828063 ;MainHUDRoutine When game is loading JSL $809A79 org $828BA0 ;MainHUDRoutine When game is running JSL $809B44 org $8290F6 ;MainHUDRoutine When game is paused JSL $809B44 $809A79 - $809B43 1A79 - 1B43 HUD routine when game is loading $80/9A79 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A7A 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A7B 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A7C AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A7D C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A7F A9 00 58 LDA #$5800 the following lines set up a DMA transfer for the HUD $80/9A82 8D 16 21 STA $2116 [$88:2116] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A85 A9 80 00 LDA #$0080 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A88 8D 15 21 STA $2115 [$88:2115] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A8B 22 A9 91 80 JSL $8091A9[$80:91A9] A:0010 X:0012 Y:00A8 P:envmxdizC ;values used by previous JSL 01 01 18 8B 98 80 ;location of initial HUD tilemap 40 00 $80/9A97 E2 20 SEP #$20 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A99 A9 02 LDA #$02 A:0010 X:0012 Y:00A8 P:envMxdizC $80/9A9B 8D 0B 42 STA $420B [$88:420B] enables DMA channel 2 transfer (runs immediately) $80/9A9E C2 20 REP #$20 end DMA transfer $80/9AA0 A2 00 00 LDX #$0000 following section writes HUD tilemap to it's location in RAM $80/9AA3 BD CB 98 LDA $98CB,x[$88:98DD] location of initial HUD tilemap $80/9AA6 9F 08 C6 7E STA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AAA E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AAB E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AAC E0 C0 00 CPX #$00C0 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AAF D0 F2 BNE $F2 [$9AA3] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AB1 AD A2 09 LDA $09A2 [$88:09A2] 7E:09A2 - 7E:09A3 Equipped items $80/9AB4 89 00 80 BIT #$8000 x-ray $80/9AB7 F0 04 BEQ $04 [$9ABD] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AB9 22 3E 9A 80 JSL $809A3E[$80:9A3E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9ABD AD A2 09 LDA $09A2 [$88:09A2] 7E:09A2 - 7E:09A3 Equipped items $80/9AC0 89 00 40 BIT #$4000 grapple $80/9AC3 F0 04 BEQ $04 [$9AC9] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AC5 22 2E 9A 80 JSL $809A2E[$80:9A2E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AC9 AD C8 09 LDA $09C8 [$88:09C8] 7E:09C8 - 7E:09C9 Samus's max missiles $80/9ACC F0 04 BEQ $04 [$9AD2] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9ACE 22 CF 99 80 JSL $8099CF[$80:99CF] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AD2 AD CC 09 LDA $09CC [$88:09CC] 7E:09CC - 7E:09CD Samus's max super missiles $80/9AD5 F0 04 BEQ $04 [$9ADB] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AD7 22 0E 9A 80 JSL $809A0E[$80:9A0E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9ADB AD D0 09 LDA $09D0 [$88:09D0] 7E:09D0 - 7E:09D1 Samus's max power bombs $80/9ADE F0 04 BEQ $04 [$9AE4] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AE0 22 1E 9A 80 JSL $809A1E[$80:9A1E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AE4 9C 06 0A STZ $0A06 [$88:0A06] 7E:0A06 - 7E:0A07 Mirror's Samus's health. Used to check to update health display $80/9AE7 9C 08 0A STZ $0A08 [$88:0A08] 7E:0A08 - 7E:0A09 Mirror's Samus's missiles. Used to check to update missile count $80/9AEA 9C 0A 0A STZ $0A0A [$88:0A0A] 7E:0A0A - 7E:0A0B Mirror's Samus's supers. Used to check to update super count $80/9AED 9C 0C 0A STZ $0A0C [$88:0A0C] 7E:0A0C - 7E:0A0D Mirror's Samus's power bombs. Used to check to update power bomb count $80/9AF0 9C 0E 0A STZ $0A0E [$88:0A0E] 7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display $80/9AF3 22 EF A8 90 JSL $90A8EF[$90:A8EF] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AF7 A9 D3 9D LDA #$9DD3 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AFA 85 00 STA $00 [$00:0000] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AFC A9 80 00 LDA #$0080 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9AFF 85 02 STA $02 [$00:0002] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B01 AD C8 09 LDA $09C8 [$88:09C8] 7E:09C8 - 7E:09C9 Samus's max missiles $80/9B04 F0 09 BEQ $09 [$9B0F] $80/9B06 AD C6 09 LDA $09C6 [$88:09C6] 7E:09C6 - 7E:09C7 Samus's missiles $80/9B09 A2 94 00 LDX #$0094 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B0C 20 78 9D JSR $9D78 [$88:9D78] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B0F AD CC 09 LDA $09CC [$88:09CC] 7E:09CC - 7E:09CD Samus's max super missiles $80/9B12 F0 09 BEQ $09 [$9B1D] $80/9B14 A2 9C 00 LDX #$009C A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B17 AD CA 09 LDA $09CA [$88:09CA] 7E:09CA - 7E:09CB Samus's super missiles $80/9B1A 20 98 9D JSR $9D98 [$88:9D98] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B1D AD D0 09 LDA $09D0 [$88:09D0] 7E:09D0 - 7E:09D1 Samus's max power bombs $80/9B20 F0 09 BEQ $09 [$9B2B] $80/9B22 AD CE 09 LDA $09CE [$88:09CE] 7E:09CE - 7E:09CF Samus's power bombs $80/9B25 A2 A2 00 LDX #$00A2 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B28 20 98 9D JSR $9D98 [$88:9D98] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B2B AD D2 09 LDA $09D2 [$88:09D2] 7E:09D2 - 7E:09D3 Currently selected status bar item $80/9B2E A2 00 10 LDX #$1000 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B31 20 EA 9C JSR $9CEA [$88:9CEA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B34 AD 0E 0A LDA $0A0E [$88:0A0E] 7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display $80/9B37 A2 00 14 LDX #$1400 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B3A 20 EA 9C JSR $9CEA [$88:9CEA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B3D 22 44 9B 80 JSL $809B44[$80:9B44] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B41 AB PLB $80/9B42 28 PLP $80/9B43 6B RTL $809B44 - $809CCD 1B44 - 1CCD HUD routine when game is paused/running $80/9B44 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B45 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B46 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B47 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B48 E2 20 SEP #$20 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B4A 64 02 STZ $02 [$00:0002] A:0010 X:0012 Y:00A8 P:envMxdizC $80/9B4C C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envMxdizC below section draws auto reserve icons $80/9B4E AD C0 09 LDA $09C0 [$88:09C0] 7E:09C0 - 7E:09C1 1 = Auto Reserve tanks, 2 = manual $80/9B51 C9 01 00 CMP #$0001 reserve on auto? $80/9B54 D0 35 BNE $35 [$9B8B] if not, branch to draw e-tanks $80/9B56 A0 8B 99 LDY #$998B if so, load location in $80 to Y $80/9B59 AD D6 09 LDA $09D6 [$88:09D6] 7E:09D6 - 7E:09D7 Samus's reserve tanks $80/9B5C D0 03 BNE $03 [$9B61] if no reserves, branch $80/9B5E A0 97 99 LDY #$9997 if so, load different location $80/9B61 B9 00 00 LDA $0000,y[$88:00A8] grabs tile data and stores to HUD $80/9B64 8F 18 C6 7E STA $7EC618[$7E:C618] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B68 B9 02 00 LDA $0002,y[$88:00AA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B6B 8F 1A C6 7E STA $7EC61A[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B6F B9 04 00 LDA $0004,y[$88:00AC] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B72 8F 58 C6 7E STA $7EC658[$7E:C658] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B76 B9 06 00 LDA $0006,y[$88:00AE] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B79 8F 5A C6 7E STA $7EC65A[$7E:C65A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B7D B9 08 00 LDA $0008,y[$88:00B0] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B80 8F 98 C6 7E STA $7EC698[$7E:C698] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B84 B9 0A 00 LDA $000A,y[$88:00B2] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9B87 8F 9A C6 7E STA $7EC69A[$7E:C69A] A:0010 X:0012 Y:00A8 P:envmxdizC below section draws energy tanks $80/9B8B AD C2 09 LDA $09C2 [$88:09C2] 7E:09C2 - 7E:09C3 Samus's health $80/9B8E CD 06 0A CMP $0A06 [$88:0A06] 7E:0A06 - 7E:0A07 Mirror's Samus's health. Used to check to update health display $80/9B91 F0 68 BEQ $68 [$9BFB] $80/9B93 8D 06 0A STA $0A06 [$88:0A06] 7E:0A06 - 7E:0A07 Mirror's Samus's health. Used to check to update health display $80/9B96 AD C2 09 LDA $09C2 [$88:09C2] 7E:09C2 - 7E:09C3 Samus's health $80/9B99 8D 04 42 STA $4204 [$88:4204] Dividend C $80/9B9C E2 20 SEP #$20 $80/9B9E A9 64 LDA #$64 health per e-tank $80/9BA0 8D 06 42 STA $4206 [$88:4206] Divisor B $80/9BA3 48 PHA wasting cycles to wait for quotient $80/9BA4 68 PLA $80/9BA5 48 PHA $80/9BA6 68 PLA $80/9BA7 C2 20 REP #$20 $80/9BA9 AD 14 42 LDA $4214 [$88:4214] Quotient of Divide Result $80/9BAC 85 14 STA $14 [$00:0014] $80/9BAE AD 16 42 LDA $4216 [$88:4216] Divide Remainder $80/9BB1 85 12 STA $12 [$00:0012] $80/9BB3 AD C4 09 LDA $09C4 [$88:09C4] 7E:09C4 - 7E:09C5 Samus's max health $80/9BB6 8D 04 42 STA $4204 [$88:4204] Dividend C $80/9BB9 E2 20 SEP #$20 $80/9BBB A9 64 LDA #$64 health per e-tank $80/9BBD 8D 06 42 STA $4206 [$88:4206] Divisor B $80/9BC0 48 PHA wasting cycles to wait for quotient $80/9BC1 68 PLA $80/9BC2 48 PHA $80/9BC3 68 PLA $80/9BC4 C2 30 REP #$30 $80/9BC6 A0 00 00 LDY #$0000 $80/9BC9 AD 14 42 LDA $4214 [$88:4214] Quotient of Divide Result $80/9BCC 1A INC A $80/9BCD 85 16 STA $16 [$00:0016] $80/9BCF C6 16 DEC $16 [$00:0016] starting here is drawing of e-tanks in HUD, $14=health $16=max $80/9BD1 F0 1B BEQ $1B [$9BEE] $80/9BD3 A2 30 34 LDX #$3430 $80/9BD6 A5 14 LDA $14 [$00:0014] $80/9BD8 F0 05 BEQ $05 [$9BDF] $80/9BDA C6 14 DEC $14 [$00:0014] $80/9BDC A2 31 28 LDX #$2831 $80/9BDF 8A TXA $80/9BE0 BE CE 9C LDX $9CCE,y[$88:9D76] table location $80/9BE3 9F 08 C6 7E STA $7EC608,x[$7E:C61A] $80/9BE7 C8 INY $80/9BE8 C8 INY $80/9BE9 C0 1C 00 CPY #$001C 14 e-tanks (word/tank) $80/9BEC 30 E1 BMI $E1 [$9BCF] branch to draw next tank $80/9BEE A9 BF 9D LDA #$9DBF $80/9BF1 85 00 STA $00 [$00:0000] $80/9BF3 A2 8C 00 LDX #$008C probably sets palette color $80/9BF6 A5 12 LDA $12 [$00:0012] $80/9BF8 20 98 9D JSR $9D98 [$88:9D98] draws energy numbers $80/9BFB A9 D3 9D LDA #$9DD3 $80/9BFE 85 00 STA $00 [$00:0000] $80/9C00 AD C8 09 LDA $09C8 [$88:09C8] 7E:09C8 - 7E:09C9 Samus's max missiles $80/9C03 F0 11 BEQ $11 [$9C16] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C05 AD C6 09 LDA $09C6 [$88:09C6] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C08 CD 08 0A CMP $0A08 [$88:0A08] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C0B F0 09 BEQ $09 [$9C16] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C0D 8D 08 0A STA $0A08 [$88:0A08] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C10 A2 94 00 LDX #$0094 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C13 20 78 9D JSR $9D78 [$88:9D78] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C16 AD CC 09 LDA $09CC [$88:09CC] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C19 F0 24 BEQ $24 [$9C3F] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C1B AD CA 09 LDA $09CA [$88:09CA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C1E CD 0A 0A CMP $0A0A [$88:0A0A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C21 F0 1C BEQ $1C [$9C3F] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C23 8D 0A 0A STA $0A0A [$88:0A0A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C26 A2 9C 00 LDX #$009C A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C29 AD CF 05 LDA $05CF [$88:05CF] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C2C 89 40 1F BIT #$1F40 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C2F D0 08 BNE $08 [$9C39] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C31 AD 0A 0A LDA $0A0A [$88:0A0A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C34 20 98 9D JSR $9D98 [$88:9D98] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C37 80 06 BRA $06 [$9C3F] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C39 AD 0A 0A LDA $0A0A [$88:0A0A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C3C 20 78 9D JSR $9D78 [$88:9D78] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C3F AD D0 09 LDA $09D0 [$88:09D0] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C42 F0 11 BEQ $11 [$9C55] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C44 AD CE 09 LDA $09CE [$88:09CE] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C47 CD 0C 0A CMP $0A0C [$88:0A0C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C4A F0 09 BEQ $09 [$9C55] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C4C 8D 0C 0A STA $0A0C [$88:0A0C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C4F A2 A2 00 LDX #$00A2 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C52 20 98 9D JSR $9D98 [$88:9D98] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9C55 AD D2 09 LDA $09D2 [$88:09D2] 7E:09D2 - 7E:09D3 Currently selected status bar item $80/9C58 CD 0E 0A CMP $0A0E [$88:0A0E] 7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display $80/9C5B F0 39 BEQ $39 [$9C96] if mirror is up to date (no new input) branch $80/9C5D A2 00 10 LDX #$1000 $80/9C60 20 EA 9C JSR $9CEA [$88:9CEA] unknown $80/9C63 AD 0E 0A LDA $0A0E [$88:0A0E] 7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display $80/9C66 A2 00 14 LDX #$1400 $80/9C69 20 EA 9C JSR $9CEA [$88:9CEA] unknown $80/9C6C AD D2 09 LDA $09D2 [$88:09D2] 7E:09D2 - 7E:09D3 Currently selected status bar item $80/9C6F 8D 0E 0A STA $0A0E [$88:0A0E] 7E:0A0E - 7E:0A0F Mirror's 09D2. Used to check to update select display $80/9C72 AD 1F 0A LDA $0A1F [$88:0A1F] 7E:0A1F Samus's movement type $80/9C75 29 FF 00 AND #$00FF $80/9C78 C9 03 00 CMP #$0003 cmp to move type #$03 $80/9C7B F0 19 BEQ $19 [$9C96] if so, branch $80/9C7D C9 14 00 CMP #$0014 cmp to move type #$14 $80/9C80 F0 14 BEQ $14 [$9C96] if so, branch $80/9C82 AD 32 0D LDA $0D32 [$88:0D32] 7E:0D32 - 7E:0D33 Pointer to code for grapple beam. Usually C4F0 (start beam, not active), C703 is firing beam (not hitting anything), C856 is force-cancel beam? $80/9C85 C9 F0 C4 CMP #$C4F0 $80/9C88 D0 0C BNE $0C [$9C96] if grapple not active, branch $80/9C8A AD 78 0A LDA $0A78 [$88:0A78] 7E:0A78 - 7E:0A79 Pause time, ala energy tank and x-ray scope. $80/9C8D D0 07 BNE $07 [$9C96] if time not paused, branch $80/9C8F A9 39 00 LDA #$0039 $80/9C92 22 49 90 80 JSL $809049[$80:9049] unknown $80/9C96 A2 00 14 LDX #$1400 $80/9C99 AD B5 05 LDA $05B5 [$88:05B5] 7E:05B5 Something for animating minimap cursor (used as a general purpose... animation index, I guess) $80/9C9C 89 10 00 BIT #$0010 $80/9C9F F0 03 BEQ $03 [$9CA4] $80/9CA1 A2 00 10 LDX #$1000 $80/9CA4 AD 04 0A LDA $0A04 [$88:0A04] 7E:0A04 - 7E:0A05 Item selected for auto-cancel $80/9CA7 20 EA 9C JSR $9CEA [$88:9CEA] unknown $80/9CAA AE 30 03 LDX $0330 [$88:0330] 7E:0330 - 7E:0331 'Stack' pointer for 00D0 table $80/9CAD A9 C0 00 LDA #$00C0 $80/9CB0 95 D0 STA $D0,x [$00:00E2] 7E:00D0 - 7E:02AF Table of entries to update graphics, 7 bytes: Size (2 bytes), source address (3 bytes), VRAM target (2 bytes) (Unsure of size) $80/9CB2 E8 INX $80/9CB3 E8 INX $80/9CB4 A9 08 C6 LDA #$C608 $80/9CB7 95 D0 STA $D0,x [$00:00E2] $80/9CB9 E8 INX $80/9CBA E8 INX $80/9CBB A9 7E 00 LDA #$007E $80/9CBE 95 D0 STA $D0,x [$00:00E2] $80/9CC0 E8 INX $80/9CC1 A9 20 58 LDA #$5820 $80/9CC4 95 D0 STA $D0,x [$00:00E2] above stores to $D0 looks like it's backing up the HUD to VRAM $80/9CC6 E8 INX $80/9CC7 E8 INX $80/9CC8 8E 30 03 STX $0330 [$88:0330] $80/9CCB AB PLB $80/9CCC 28 PLP $80/9CCD 6B RTL Misc routines called by main routines $80/9A8B 22 A9 91 80 JSL $8091A9[$80:91A9] run during hardware based DMA graphics transfer for HUD (routine version of DMA transfer (using the table @ $D0 does same, but during VBlank)) $80/9AB9 22 3E 9A 80 JSL $809A3E[$80:9A3E] probably draws x-ray icon in HUD $80/9AC5 22 2E 9A 80 JSL $809A2E[$80:9A2E] probably draws grapple icon in HUD $80/9ACE 22 CF 99 80 JSL $8099CF[$80:99CF] probably draws missile icon in HUD $80/9AD7 22 0E 9A 80 JSL $809A0E[$80:9A0E] probably draws super missile icon in HUD $80/9AE0 22 1E 9A 80 JSL $809A1E[$80:9A1E] probably draws powerbomb icon in HUD $80/9AF3 22 EF A8 90 JSL $90A8EF[$90:A8EF] updates minimap during HUD loading $80/9B0C 20 78 9D JSR $9D78 [$88:9D78] probably draws 3 numbers (for missiles) $80/9B1A 20 98 9D JSR $9D98 [$88:9D98] probably draws 2 numbers (for supers/pbs/energy) $80/9B3A 20 EA 9C JSR $9CEA [$88:9CEA] probably changes palette color for HUD selection $80/9B3D 22 44 9B 80 JSL $809B44[$80:9B44] main HUD running/paused routine $80/9C92 22 49 90 80 JSL $809049[$80:9049] play a sound library 1 $80988B HUD tilemap 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 1D 2C 1D 2C 1D 2C 1D 2C 1D 2C 1C 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 12 2C 12 2C 23 2C 12 2C 12 2C 1E 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 22 28 22 28 23 28 13 28 14 2C 1E 2C 0F 2C 0B 2C 0C 2C 0D 2C 32 2C 0F 2C 09 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 0F 2C 12 2C 12 2C 24 A8 15 28 16 2C 1E 2C -----$80/9A8B 22 A9 91 80 JSL $8091A9[$80:91A9] run during hardware based DMA graphics transfer for HUD (routine version of DMA transfer (using the table @ $D0 does same, but during VBlank)) $80/91A9 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/91AA 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/91AB C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/91AD A3 04 LDA $04,s [$00:1FF8] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91AF 48 PHA A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B0 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B1 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B2 A3 03 LDA $03,s [$00:1FF7] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B4 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B5 B9 01 00 LDA $0001,y[$88:00A9] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91B8 29 FF 00 AND #$00FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/91BB AA TAX A:0010 X:0012 Y:00A8 P:envmxdizC $80/91BC BF E6 91 80 LDA $8091E6,x[$80:91F8] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91C0 29 FF 00 AND #$00FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/91C3 AA TAX A:0010 X:0012 Y:00A8 P:envmxdizC $80/91C4 B9 02 00 LDA $0002,y[$88:00AA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91C7 9D 00 43 STA $4300,x[$88:4312] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91CA B9 04 00 LDA $0004,y[$88:00AC] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91CD 9D 02 43 STA $4302,x[$88:4314] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91D0 B9 06 00 LDA $0006,y[$88:00AE] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91D3 9D 04 43 STA $4304,x[$88:4316] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91D6 B9 07 00 LDA $0007,y[$88:00AF] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91D9 9D 05 43 STA $4305,x[$88:4317] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91DC 98 TYA A:0010 X:0012 Y:00A8 P:envmxdizC $80/91DD 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $80/91DE 69 08 00 ADC #$0008 A:0010 X:0012 Y:00A8 P:envmxdizC $80/91E1 83 03 STA $03,s [$00:1FF7] A:0010 X:0012 Y:00A8 P:envmxdizC $80/91E3 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/91E4 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $80/91E5 6B RTL A:0010 X:0012 Y:00A8 P:envmxdizC ;values used in this routine by $0000,y 01 ;picks channel to use from table @ $8091E6 01 ;DMA control, 1 register write once 18 ;DMA Destination Register, $2118 8B ;DMA source low byte 98 ;DMA source high byte 80 ;DMA source bank byte 40 00 ;DMA size $80/91E6 00 10 20 30 40 50 60 70 -----$80/9ACE 22 CF 99 80 JSL $8099CF[$80:99CF] probably draws missile icon in HUD $80/99CF 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D0 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D1 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D2 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D3 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D5 AF 1C C6 7E LDA $7EC61C[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99D9 29 FF 03 AND #$03FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/99DC C9 0F 00 CMP #$000F A:0010 X:0012 Y:00A8 P:envmxdizC $80/99DF D0 2A BNE $2A [$9A0B] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99E1 AD A3 99 LDA $99A3 [$88:99A3] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99E4 8F 1C C6 7E STA $7EC61C[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99E8 AD A5 99 LDA $99A5 [$88:99A5] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99EB 8F 1E C6 7E STA $7EC61E[$7E:C61E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99EF AD A7 99 LDA $99A7 [$88:99A7] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99F2 8F 20 C6 7E STA $7EC620[$7E:C620] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99F6 AD A9 99 LDA $99A9 [$88:99A9] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99F9 8F 5C C6 7E STA $7EC65C[$7E:C65C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/99FD AD AB 99 LDA $99AB [$88:99AB] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A00 8F 5E C6 7E STA $7EC65E[$7E:C65E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A04 AD AD 99 LDA $99AD [$88:99AD] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A07 8F 60 C6 7E STA $7EC660[$7E:C660] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A0B AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A0C 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A0D 6B RTL A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9AD7 22 0E 9A 80 JSL $809A0E[$80:9A0E] probably draws super missile icon in HUD $80/9A0E 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A0F DA PHX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A10 5A PHY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A11 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A12 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A13 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A14 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A16 A0 AF 99 LDY #$99AF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A19 A2 1C 00 LDX #$001C A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A1C 80 2E BRA $2E [$9A4C] A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9AE0 22 1E 9A 80 JSL $809A1E[$80:9A1E] probably draws powerbomb icon in HUD $80/9A1E 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A1F DA PHX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A20 5A PHY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A21 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A22 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A23 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A24 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A26 A0 B7 99 LDY #$99B7 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A29 A2 22 00 LDX #$0022 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A2C 80 1E BRA $1E [$9A4C] A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9AC5 22 2E 9A 80 JSL $809A2E[$80:9A2E] probably draws grapple icon in HUD $80/9A2E 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A2F DA PHX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A30 5A PHY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A31 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A32 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A33 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A34 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A36 A0 BF 99 LDY #$99BF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A39 A2 28 00 LDX #$0028 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A3C 80 0E BRA $0E [$9A4C] A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9AB9 22 3E 9A 80 JSL $809A3E[$80:9A3E] probably draws x-ray icon in HUD $80/9A3E 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A3F DA PHX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A40 5A PHY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A41 8B PHB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A42 4B PHK A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A43 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A44 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A46 A0 C7 99 LDY #$99C7 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A49 A2 2E 00 LDX #$002E A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A4C BF 08 C6 7E LDA $7EC608,x[$7E:C61A] ;status bar tilemap $80/9A50 29 FF 03 AND #$03FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A53 C9 0F 00 CMP #$000F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A56 D0 1C BNE $1C [$9A74] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A58 B9 00 00 LDA $0000,y[$88:00A8] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A5B 9F 08 C6 7E STA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A5F B9 02 00 LDA $0002,y[$88:00AA] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A62 9F 0A C6 7E STA $7EC60A,x[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A66 B9 04 00 LDA $0004,y[$88:00AC] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A69 9F 48 C6 7E STA $7EC648,x[$7E:C65A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A6D B9 06 00 LDA $0006,y[$88:00AE] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A70 9F 4A C6 7E STA $7EC64A,x[$7E:C65C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A74 AB PLB A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A75 7A PLY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A76 FA PLX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A77 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A78 6B RTL A:0010 X:0012 Y:00A8 P:envmxdizC $80/9A79 - $80/9CCD (HUD main routines) $80/9CCE 42 00 44 00 46 00 48 00 4A 00 4C 00 4E 00 02 00 04 00 06 00 08 00 0A 00 0C 00 0E 00 -----$80/9B3A 20 EA 9C JSR $9CEA [$88:9CEA] probably changes palette color for HUD selection $80/9CEA 8E 7C 07 STX $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CED 3A DEC A A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CEE 30 7D BMI $7D [$9D6D] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CF0 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CF1 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CF2 BE 6E 9D LDX $9D6E,y[$88:9E16] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CF5 BF 08 C6 7E LDA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CF9 C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CFC F0 0A BEQ $0A [$9D08] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9CFE 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D01 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D04 9F 08 C6 7E STA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D08 BF 0A C6 7E LDA $7EC60A,x[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D0C C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D0F F0 0A BEQ $0A [$9D1B] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D11 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D14 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D17 9F 0A C6 7E STA $7EC60A,x[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D1B BF 48 C6 7E LDA $7EC648,x[$7E:C65A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D1F C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D22 F0 0A BEQ $0A [$9D2E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D24 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D27 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D2A 9F 48 C6 7E STA $7EC648,x[$7E:C65A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D2E BF 4A C6 7E LDA $7EC64A,x[$7E:C65C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D32 C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D35 F0 0A BEQ $0A [$9D41] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D37 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D3A 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D3D 9F 4A C6 7E STA $7EC64A,x[$7E:C65C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D41 C0 00 00 CPY #$0000 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D44 F0 01 BEQ $01 [$9D47] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D46 60 RTS A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D47 BF 0C C6 7E LDA $7EC60C,x[$7E:C61E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D4B C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D4E F0 0A BEQ $0A [$9D5A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D50 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D53 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D56 9F 0C C6 7E STA $7EC60C,x[$7E:C61E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D5A BF 4C C6 7E LDA $7EC64C,x[$7E:C65E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D5E C9 0F 2C CMP #$2C0F A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D61 F0 0A BEQ $0A [$9D6D] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D63 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D66 0D 7C 07 ORA $077C [$88:077C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D69 9F 4C C6 7E STA $7EC64C,x[$7E:C65E] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D6D 60 RTS A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D6E 14 00 1C 00 22 00 28 00 2E 00 -----$80/9B0C 20 78 9D JSR $9D78 [$88:9D78] probably draws 3 numbers (for missiles) $80/9D78 8D 04 42 STA $4204 [$88:4204] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D7B E2 20 SEP #$20 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D7D A9 64 LDA #$64 A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D7F 8D 06 42 STA $4206 [$88:4206] A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D82 48 PHA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D83 68 PLA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D84 48 PHA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D85 68 PLA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D86 C2 20 REP #$20 A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D88 AD 14 42 LDA $4214 [$88:4214] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D8B 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D8C A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D8D B7 00 LDA [$00],y[$88:AE44] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D8F 9F 08 C6 7E STA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D93 E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D94 E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D95 AD 16 42 LDA $4216 [$88:4216] A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9B1A 20 98 9D JSR $9D98 [$88:9D98] probably draws 2 numbers (for supers/pbs/energy) $80/9D98 8D 04 42 STA $4204 [$88:4204] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D9B E2 20 SEP #$20 A:0010 X:0012 Y:00A8 P:envmxdizC $80/9D9D A9 0A LDA #$0A A:0010 X:0012 Y:00A8 P:envMxdizC $80/9D9F 8D 06 42 STA $4206 [$88:4206] A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA2 48 PHA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA3 68 PLA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA4 48 PHA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA5 68 PLA A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA6 C2 20 REP #$20 A:0010 X:0012 Y:00A8 P:envMxdizC $80/9DA8 AD 14 42 LDA $4214 [$88:4214] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DAB 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DAC A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DAD B7 00 LDA [$00],y[$88:AE44] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DAF 9F 08 C6 7E STA $7EC608,x[$7E:C61A] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DB3 AD 16 42 LDA $4216 [$88:4216] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DB6 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DB7 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DB8 B7 00 LDA [$00],y[$88:AE44] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DBA 9F 0A C6 7E STA $7EC60A,x[$7E:C61C] A:0010 X:0012 Y:00A8 P:envmxdizC $80/9DBE 60 RTS A:0010 X:0012 Y:00A8 P:envmxdizC -----$80/9AF3 22 EF A8 90 JSL $90A8EF[$90:A8EF] updates minimap during HUD loading $90/A8EF 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8F0 C2 30 REP #$30 A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8F2 AD F6 0A LDA $0AF6 [$88:0AF6] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8F5 29 00 FF AND #$FF00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8F8 EB XBA A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8F9 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8FA 6D A1 07 ADC $07A1 [$88:07A1] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8FD AA TAX A:0010 X:0012 Y:00A8 P:envmxdizC $90/A8FE 85 12 STA $12 [$00:0012] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A900 29 07 00 AND #$0007 A:0010 X:0012 Y:00A8 P:envmxdizC $90/A903 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $90/A904 8A TXA A:0010 X:0012 Y:00A8 P:envmxdizC $90/A905 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/A906 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/A907 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/A908 85 14 STA $14 [$00:0014] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A90A AD FA 0A LDA $0AFA [$88:0AFA] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A90D 29 00 FF AND #$FF00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/A910 EB XBA A:0010 X:0012 Y:00A8 P:envmxdizC $90/A911 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/A912 6D A3 07 ADC $07A3 [$88:07A3] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A915 1A INC A A:0010 X:0012 Y:00A8 P:envmxdizC $90/A916 85 16 STA $16 [$00:0016] A:0010 X:0012 Y:00A8 P:envmxdizC $90/A918 4C 43 AA JMP $AA43 [$88:AA43] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA43 A5 16 LDA $16 [$00:0016] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA45 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA46 65 22 ADC $22 [$00:0022] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA48 EB XBA A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA49 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA4A 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA4B 4A LSR A A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA4C 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA4D 65 12 ADC $12 [$00:0012] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA4F 8D 0B 06 STA $060B [$88:060B] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA52 A5 22 LDA $22 [$00:0022] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA54 F0 14 BEQ $14 [$AA6A] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA56 AD 0B 06 LDA $060B [$88:060B] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA59 29 1F 00 AND #$001F A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA5C C9 02 00 CMP #$0002 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA5F 10 09 BPL $09 [$AA6A] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA61 AD 0B 06 LDA $060B [$88:060B] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA64 38 SEC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA65 E9 02 04 SBC #$0402 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA68 80 07 BRA $07 [$AA71] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA6A AD 0B 06 LDA $060B [$88:060B] A:04A8 X:0012 Y:00A0 P:envmxdizC $90/AA6D 38 SEC A:04A8 X:0012 Y:00A0 P:envmxdizC $90/AA6E E9 22 00 SBC #$0022 A:04A8 X:0012 Y:00A0 P:envmxdizC $90/AA71 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA72 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA73 AD 9F 07 LDA $079F [$88:079F] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA76 0A ASL A A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA77 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA78 6D 9F 07 ADC $079F [$88:079F] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA7B AA TAX A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA7C BF 4C 96 82 LDA $82964C,x[$82:965E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA80 85 02 STA $02 [$00:0002] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA82 85 05 STA $05 [$00:0005] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA84 85 08 STA $08 [$00:0008] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA86 BF 4A 96 82 LDA $82964A,x[$82:965C] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA8A 85 00 STA $00 [$00:0000] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA8C 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA8D 69 40 00 ADC #$0040 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA90 85 03 STA $03 [$00:0003] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA92 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA93 69 40 00 ADC #$0040 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA96 85 06 STA $06 [$00:0006] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA98 A9 05 00 LDA #$0005 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA9B 85 12 STA $12 [$00:0012] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AA9D A2 00 00 LDX #$0000 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAA0 AD 89 07 LDA $0789 [$88:0789] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAA3 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAA4 06 26 ASL $26 [$00:0026] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAA6 90 06 BCC $06 [$AAAE] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAA8 B7 00 LDA [$00],y[$88:AE44] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAAA 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAAB 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAAC D0 03 BNE $03 [$AAB1] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAAE A9 1F 00 LDA #$001F A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAB1 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAB4 09 00 2C ORA #$2C00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAB7 9F 3C C6 7E STA $7EC63C,x[$7E:C64E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AABB 06 18 ASL $18 [$00:0018] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AABD 90 0C BCC $0C [$AACB] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AABF B7 00 LDA [$00],y[$88:AE44] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAC1 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAC4 09 00 28 ORA #$2800 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAC7 9F 3C C6 7E STA $7EC63C,x[$7E:C64E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AACB 06 28 ASL $28 [$00:0028] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AACD 90 06 BCC $06 [$AAD5] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AACF B7 03 LDA [$03],y[$B5:90A8] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAD1 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAD2 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAD3 D0 03 BNE $03 [$AAD8] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAD5 A9 1F 00 LDA #$001F A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAD8 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AADB 09 00 2C ORA #$2C00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AADE 9F 7C C6 7E STA $7EC67C,x[$7E:C68E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAE2 06 1A ASL $1A [$00:001A] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAE4 90 22 BCC $22 [$AB08] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAE6 B7 03 LDA [$03],y[$B5:90A8] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAE8 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAEB 09 00 28 ORA #$2800 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAEE 9F 7C C6 7E STA $7EC67C,x[$7E:C68E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAF2 A5 12 LDA $12 [$00:0012] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAF4 C9 03 00 CMP #$0003 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAF7 D0 0F BNE $0F [$AB08] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAF9 BF 7C C6 7E LDA $7EC67C,x[$7E:C68E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AAFD 29 FF 01 AND #$01FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB00 C9 28 00 CMP #$0028 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB03 D0 03 BNE $03 [$AB08] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB05 20 5F AB JSR $AB5F [$88:AB5F] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB08 06 2A ASL $2A [$00:002A] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB0A 90 06 BCC $06 [$AB12] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB0C B7 06 LDA [$06],y[$B5:9128] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB0E 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB0F 08 PHP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB10 D0 03 BNE $03 [$AB15] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB12 A9 1F 00 LDA #$001F A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB15 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB18 09 00 2C ORA #$2C00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB1B 9F BC C6 7E STA $7EC6BC,x[$7E:C6CE] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB1F 06 1C ASL $1C [$00:001C] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB21 90 0C BCC $0C [$AB2F] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB23 B7 06 LDA [$06],y[$B5:9128] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB25 29 FF E3 AND #$E3FF A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB28 09 00 28 ORA #$2800 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB2B 9F BC C6 7E STA $7EC6BC,x[$7E:C6CE] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB2F E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB30 E8 INX A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB31 C8 INY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB32 C8 INY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB33 98 TYA A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB34 29 3F 00 AND #$003F A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB37 C9 00 00 CMP #$0000 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB3A D0 06 BNE $06 [$AB42] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB3C 98 TYA A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB3D 18 CLC A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB3E 69 C0 07 ADC #$07C0 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB41 A8 TAY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB42 C6 12 DEC $12 [$00:0012] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB44 F0 03 BEQ $03 [$AB49] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB46 4C A4 AA JMP $AAA4 [$88:AAA4] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB49 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB4A AD B5 05 LDA $05B5 [$88:05B5] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB4D 29 08 00 AND #$0008 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB50 D0 0B BNE $0B [$AB5D] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB52 AF 80 C6 7E LDA $7EC680[$7E:C680] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB56 09 00 1C ORA #$1C00 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB59 8F 80 C6 7E STA $7EC680[$7E:C680] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB5D 28 PLP A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB5E 6B RTL A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB5F DA PHX A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB60 5A PHY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB61 A6 1E LDX $1E [$00:001E] A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB63 E2 20 SEP #$20 A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB65 A4 20 LDY $20 [$00:0020] A:0010 X:0012 Y:00A8 P:envMxdizC $90/AB67 BD F3 07 LDA $07F3,x[$88:0805] A:0010 X:0012 Y:00A8 P:envMxdizC $90/AB6A 19 04 AC ORA $AC04,y[$88:ACAC] A:0010 X:0012 Y:00A8 P:envMxdizC $90/AB6D 9D F3 07 STA $07F3,x[$88:0805] A:0010 X:0012 Y:00A8 P:envMxdizC $90/AB70 C2 20 REP #$20 A:0010 X:0012 Y:00A8 P:envMxdizC $90/AB72 7A PLY A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB73 FA PLX A:0010 X:0012 Y:00A8 P:envmxdizC $90/AB74 60 RTS A:0010 X:0012 Y:00A8 P:envmxdizC ;====================================================== ;== HUD ICON SELECTION DISASSEMBLY BY KEJARDON ======== ;====================================================== 90C4B8: LDA $09D2 ;load item slot STA $12 ;store here LDA $8F ;buttons newly pressed every frame BIT $09B8 ;item cancel BEQ ONE STZ $0A04 ;we're here, because item cancel was just pressed, so BRA TWO ;disable the selected item ONE: LDA $8B ;controller input, buttons held BIT $09B8 ;again, item cancel BNE THREE STZ $16 ;auto cancel is not active BRA HERE THREE: LDA #$0001 ;turn auto cancel on STA $16 ;temp flag HERE: LDA $8F ;buttons newly pressed this frame BIT $09BA ;item cancel BEQ FOUR LDA $09D2 INC a CMP #$0006 ;check if selected item number exceeds the limit of 5 BMI FIVE ;Branch if minus, ie we are below the limit TWO: LDA #$0000 ;store zero to the selected item, when item cancel was just pressed/item limit exceeded FIVE: STA $09D2 ;Store to 'current item selected' SEVEN: ASL a TAX JSR ($C539,x) ;executes code - this handles the skip, sets carry if there's either no ammo, no grapple/xray, or simply no item has been selected BCC SIX LDA $09D2 INC a STA $09D2 ;count up one slot (= skip item when ammo is empty/item is not selected) CMP #$0006 ;but keep within 5 items, else quit! BMI SEVEN LDA #$0000 STA $09D2 ;if you run out of bounds, disable items BRA SEVEN SIX: LDA $16 ;0 if auto cancel off, 1 if on BEQ NINE ;check if auto cancel is on? LDA $09D2 ;puts selected item into the auto cancel array STA $0A04 BRA FOUR NINE: STZ $0A04 ;disable auto cancel FOUR: LDA $09D2 ;dunno how arm cannon opening is handled atm CMP $12 ;probably somewhere else BNE TEN ;only thing that I can tell is that this routine LDA $0AAA ;stores the flags needed to 'open' the arm cannon INC a CMP #$0003 ;branch if arm cannon sprite is fully opened (frame 3) BMI ELEVEN LDA #$0002 ELEVEN: STA $0AAA ;part of arm cannon opening animation (frame 2) BRA TWELVE TEN: LDA #$0001 ;same here (frame 1) STA $0AAA TWELVE: PLP RTS 90C539: C545 ;no item - stores zero to various offsets, resets samus's palette, CLC and RTS C551 ;missile - if missiles are empty, do the same as above, else SEC and RTS C564 ;super missile - same with supers C577 ;powerbomb - same with Powers C58A ;grapple - if grapple hasn't been collected SEC RTS else CLC RTS C5AE ;xray - same with xray