Equipment screen tilemap is in ROM at 1B6800 (B6:E800) Equipment screen tile pallete is in ROM at 1B0000 (B6:8000) RAM tilemap starts at 7E:3800 7E:0755: 0 = tanks, 1 = weapons, 2 = suit/misc, 3 = boots BF02 - BF0F : Tilemap for RESERVE TANK 803C813C823C833C843C853C863C BF10 - BF19 : Tilemap for oCHARGE FF08D008D108D208D308 BF1A - BF23 : Tilemap for oICE FF08500951090F090F09 BF24 - BF2D : Tilemap for oWAVE FF08F908FA08FB080F09 BF2E - BF37 : Tilemap for oSPAZER FF08D408D508D608D708 BF38 - BF41 : Tilemap for oPLASMA FF08D808D908DA08DB08 BF42 - BF4B : Tilemap for oHEAT S. FF086709680969096A09 BF4C - BF55 : Tilemap for o4-WAY FF08180919091A091B09 BF56 - BF5F : Tilemap for oHYPER FF08DC0CDD0CDE0CDF0C BF60 - BF71 : Tilemap for oVARIA SUIT FF0CE00CE10CE20CE30CE40CE50C0F0D0F0D BF72 - BF83 : Tilemap for oGRAVITY SUIT FF0CE60CE70CE80CE90CE30CE40CE50C0F0D BF84 - BF95 : Tilemap for oMORPHING BALL FF0846094709480949094A094D094E094F09 BF96 - BFA7 : Tilemap for oBOMBS FF083709380939090F0D0F0D0F0D0F0D0F0D BFA8 - BFB9 : Tilemap for oSPRING BALL FF0810091109120913091409150916090F0D BFBA - BFCB : Tilemap for oSCREW ATTACK FF08E008E108E208E308E408E508E6080F0D BFCC - BFDD : Tilemap for oAM SINK FF08560D570D580D590D5A0D0F0D0F0D0F0D BFDE - BFEF : Tilemap for oSPEED MORPH FF08100D110D120D630D640D650D660D0F0D BFF0 - C001 : Tilemap for oUNKNOWN FF08270D280D290D2A0D2B0D0F0D0F0D0F0D C002 - C013 : Tilemap for oHI-JUMP BOOTS FF0C300D310D320D330D340D350D360D0F0D C014 - C025 : Tilemap for oSPACE JUMP FF0CEA0CEB0CEC0CED0CEE0CEF0C0F0D0F0D C026 - C037 : Tilemap for oSPEED BOOSTER FF0C100D110D120D130D140D150D160D170D C038 - C049 : Tilemap for oSPARK BOUNCE FF0C100D200D210D220D230D240D250D260D C04A - C05B : 0000's for clearing tiles 000000000000000000000000000000000000 C05C - C083 : Bit checklist: 7 beams, 9 suits/misc, 4 boots 0010020001000400080000200040 010020000400001002000800100000048000 0001000200204000 C084 - C0AB : RAM offsets for specific tilemaps - C02C - C033 : Pointers to start of RAM offsets for specific tilemaps: (this,list_index),item_index = RAM offset - C034 - C03B : Pointers to bit checklists: (this,list_index),item_index = bit to check - C03C - C043 : RAM offset to check against bit checklist: this,list_index = RAM offset - C044 - C04B : Indirect pointers to tilemaps for enabled (?) items: (this,list_index),item_index = Tilemap pointer - C088 - C08B : Pointers to tilemaps for MODE[MANUAL] and RESERVE TANK - C08C - C0AB : Pointers to tilemaps for enabled items - C0AC - C0AD : Pointer to tilemap for oHYPER - C0AE - C0B1 : Pointers to empty tilemaps actually, scrap all that, let's make something that's more logical (bank 82): B6:F240 - B6:F249 : Tilemap for oHYPER FF08DC08DD08DE08DF08 B6:F232 - B6:F23F : Tilemap for RESERVE TANK 803C813C823C833C843C853C863C Electromorph update: ;BF02 - BF2B : Offsets for tilemap (Start of tilemap + this = offset for tilemap to replace and usually load) ;023B423B823BC23B023C0C3B4C3B6A3AAA3AAA3BEA3B2A3C6A3CAA3CEA3C2A3D6A3DC23C023D423D823D ;BF30 - BF59 : Bit checklist mirror ;001002000100040008000020004001002000040000100200080010000004000880000001000200204000 ;BF60 - BF67 : Pointers to X/Y of selection sprites: 68BF6CBF88BFB0BF ;BF68 - BFBB : X/Y positions of sprites ;13003C001800640018006C001800740018007C00180084004000640040006C00CC004C00CC005400CC007400CC007C00CC008400CC008C00CC009400CC009C00CC00A400CC00AC002C009C002C00A4002C00AC002C00B400 ;B6:F200 - B6:F229 : Bit checklist: 8 beams, A suits/misc, 4 boots ;001002000100040008000020004001002000040000100200080010000004000880000001000200204000 TCharge update: BF02 - BF2D : Offsets for tilemap (Start of tilemap + this = offset for tilemap to replace and usually load) 023B423B823BC23B023C0C3B4C3B8C3B6A3AAA3AAA3BEA3B2A3C6A3CAA3CEA3C2A3D6A3DC23C023D423D823D BF30 - BF5B : Bit checklist mirror (BF30, BF40, BF54) 0010020001000400080000800020004001002000040000100200080010000004000880000001000200204000 BF60 - BF67 : Pointers to X/Y of selection sprites: 68BF6CBF8CBFB4BF BF68 - BFBD : X/Y positions of sprites 13003C001800640018006C001800740018007C00180084004000640040006C0040007400CC004C00CC005400CC007400CC007C00CC008400CC008C00CC009400CC009C00CC00A400CC00AC002C009C002C00A4002C00AC002C00B400 B6:F200 - B6:F22B : Bit checklist: 8 beams, A suits/misc, 4 boots (F200, F210, F224) 0010020001000400080000800020004001002000040000100200080010000004000880000001000200204000 Offsets (+3800 = RAM, +E800 = ROM in bank B6) 01C6: RESERVE TANK 0302: oCHARGE 0342: oICE 0382: oWAVE 03C2: oSPAZER 0402: oPLASMA 030C: oHEAT SNK 034C: oT.CHARGE 038C: o4-WAY 04C2: oHI-JUMP BOOTS 0502: oSPACE JUMP 0542: oSPEED BOOSTER 0582: oSPARK BOUNCE 01EC: Hours 01F2: Minutes 01F8: Seconds 026A: oVARIA SUIT 02AA: oGRAVITY SUIT 03AA: oMORPHING BALL 03EA: oBOMB 042A: oSPRING BALL 046A: oSCREW ATTACK 04AA: oA.M. SINK 04EA: oSPEED MORPH 052A: oELECTROMORPH 056A: oUNKNOWN Changes from original code: DRAW_TILES (82:A27E) stays the same X = pointer to tilemap in ROM, [$00] = RAM tilemap offset, $16 = 2x number of tiles ;Numbers Fix 82:8FBA 12397E 82:8FC5 10397E 82:8FCF 0E397E ;RESERVES_INITIALIZATION 82:AB47 PHP REP #$30 LDA $B1 STA $BD LDA $B3 STA $BF STZ $B1 STZ $B3 ;Dunno what this stuff is for STZ $0741 ;Selection Animation index LDA #$000F STA $072D ;Selection Animation timer STZ $0743 ;Reserve tank Animation index LDA #$000F STA $072F ;Reserve tank Animation timer LDA $09D4 ;Reserve tank check BEQ BRANCH_DELTA STZ $0755 ;If you have them, start at #$0000 STZ $09C0 BRA BRANCH_EPSILON BRANCH_DELTA: LDA $0A76 ;Check hyper beam BNE BRANCH_THETA ;Skip beams if on LDA $09A8 ;Load collected beams LDX #$0000 BRANCH_KAPPA: BIT $BF30, X ;Check if this beam is collected BNE BRANCH_IOTA INX INX CPX #$0010 ;Check 8 beams BMI BRANCH_KAPPA ;Exit loop if checked 8 beams alredy BRA BRANCH_THETA ;Else loop BRANCH_IOTA: TXA LSR A XBA ORA #$0001 STA $0755 ;Place cursor on this beam BRA BRANCH_EPSILON BRANCH_THETA: LDA $09A4 ;Load collected equipment LDX #$0000 BRANCH_MU: BIT $BF40, X ;Check if this item is collected BNE BRANCH_LAMBDA INX INX CPX #$0014 ;Check 10 items BMI BRANCH_MU BRA BRANCH_NU BRANCH_LAMBDA: TXA LSR A XBA ORA #$0002 STA $0755 BRA BRANCH_EPSILON BRANCH_NU: LDX #$0000 BRANCH_XI: BIT $BF54, X ;Check if this boot is collected BNE Boot INX INX CPX #$0008 ;Check 4 boots BMI BRANCH_XI BRA BRANCH_EPSILON Boot: TXA LSR A XBA ORA #$0003 STA $0755 BRANCH_EPSILON: LDA $09D6 ;Check current reserves BEQ BRANCH_ZETA JSR $B2A2 ; Tweak fix JSR $B1E0 ; Update BG1 BRANCH_ZETA: PLP RTS 08C230A5B185BDA5B385BF64B164B39C4107A90F008D2D079C4307A90F008D2F07ADD409F0059C5507805DAD760AD01FADA809A200003C30BFD009E8E8E0100030F4800B8A4AEB0901008D55078039ADA409A200003C40BFD009E8E8E0140030F4800B8A4AEB0902008D5507801AA200003C54BFD009E8E8E0080030F480098A4AEB0903008D5507ADD609F00620A2B220E0B12860 ;INITIALIZATION ;82:A12B PHB REP #$30 PEA $B600 PLB PLB STZ $0D42 LDA $09D4 ; Max Reserves BEQ + LDA #$39C6 STA $00 LDX #$F232 LDA #$000E STA $16 JSR $A27E ; Draw Tiles (Copy B6:E9C6, E bytes, to 7E:39C6) + LDA #$0C00 ; Disabled pallete STA $12 LDY #$0000 LDA #$BF02 STA $03 LDA #$0082 STA $05 ;Setup Beam pointers LDA [$03], Y STA $00 CLC ADC #$8000 TAX LDA $0A76 ;Hyper Beam check BNE +++ ;Seperate stuff - LDA #$000A ; 5 tiles STA $16 LDA $F200, Y ; Load beam bit BIT $09A8 ; Check to see if collected BNE ++ LDX #$E800 ; Pointer to a bunch of 0000's JSR $A27E ; Clear beam item BRA + ++ BIT $09A6 BNE + JSR $A29D ; Set pallete to disabled + INY INY LDA [$03], Y STA $00 CLC ADC #$8000 TAX CPY #$0010 BMI - BRA + +++ LDX #$E800 ; Blank tiles - LDA #$000A ; 5 tiles STA $16 JSR $A27E ; Clear beams INY INY LDA [$03], Y STA $00 CPY #$0010 BMI - LDY #$0004 LDA [$03], Y STA $00 LDX #$F240 LDA #$000A ; 5 tiles STA $16 JSR $A27E ; Draw Hyper Beam + LDY #$0000 LDA #$BF12 STA $03 LDA #$0082 STA $05 ;Setup Equipment pointers - LDA [$03], Y STA $00 CLC ADC #$8000 TAX LDA #$0012 ; 9 tiles STA $16 LDA $F210, Y ; Equipment bit checklist BIT $09A4 BNE + LDX #$E800 ; Pointer to a bunch of 0000's (9 tiles worth) JSR $A27E ; Clear tiles BRA ++ + BIT $09A2 ; Check if currently equipped BNE ++ JSR $A29D ; Set pallete to disabled ++ INY INY CPY #$001C ; Handles everything BMI - PLB LDA $09DC STA $4204 SEP #$10 LDY #$0A STY $4206 LDA $09DE CMP ($00,S),Y CMP ($00,S),Y STA $4204 LDA $4216 LDX $4214 STY $4206 CLC ADC #$2804 STA $7E39FA TXA ADC #$2804 STA $7E39F8 LDA $09E0 STA $4204 LDA $4216 LDX $4214 STY $4206 ADC #$2804 STA $7E39F4 TXA ADC #$2804 STA $7E39F2 LDA $4216 ADC #$2804 STA $7E39EE LDA $4214 BEQ + ADC #$0003 + ADC #$2801 STA $7E39EC RTS ;8BC230F400B6ABABADD409F010A9C6398500A232F2A90E008516207EA2A9000C8512A00000A902BF8503A982008505B703850018690080AAAD760AD02FA90A008516B900F22CA809D008A200E8207EA280082CA609D003209DA2C8C8B703850018690080AAC0100030D38028A200E8A90A008516207EA2C8C8B7038500C00E0030EDA00400B7038500A240F2A90A008516207EA2A00000A910BF8503A982008505B703850018690080AAA912008516B90EF22CA409D008A200E8207EA280082CA209D003209DA2C8C8C01C0030D3ABADDC098D0442E210A00A8C0642ADDE09D300D3008D0442AD1642AE14428C0642186904288FFA397E8A6904288FF8397EADE0098D0442AD1642AE14428C06426904288FF4397E8A6904288FF2397EAD16426904288FEE397EAD1442F0036903006901288FEC397E60 ;8BC230F400B6ABABADD409F010A9C6398500A232F2A90E008516207EA2A9000C8512A00000A902BF8503A982008505B703850018690080AAAD760AD02FA90A008516B900F22CA809D008A200E8207EA280082CA609D003209DA2C8C8B703850018690080AAC0100030D38028A200E8A90A008516207EA2C8C8B7038500C0100030EDA00400B7038500A240F2A90A008516207EA2A00000A912BF8503A982008505B703850018690080AAA912008516B910F22CA409D008A200E8207EA280082CA209D003209DA2C8C8C01C0030D3ABADDC098D0442E210A00A8C0642ADDE09D300D3008D0442AD1642AE14428C0642186904288FFA397E8A6904288FF8397EADE0098D0442AD1642AE14428C06426904288FF4397E8A6904288FF2397EAD16426904288FEE397EAD1442F0036903006901288FEC397E60 ;Updated by TCharge ;Updated again for a grapple fix. Compile in xkas. ;MAIN is fine ;MAIN --> TANKS ;82:AC70 PHP JSR $AD90 ; Button responce JSR $AC8B ; D-pad responce PLP RTS 082090AD208BAC2860 ;MAIN --> TANKS --> DPAD ;82:AC8B LDA $8F BIT #$0100 BEQ BRANCH_ALPHA BIT #$0400 BNE BRANCH_BETA LDX #$0000 JSR $B4B7 ; Move to Varia, or lower on Suits/Misc. RTS BRANCH_BETA: LDX #$0004 JSR $B4B7 ; Move to Morphing Ball or lower BRANCH_GAMMA: RTS BRANCH_ALPHA: BIT #$0400 BEQ BRANCH_GAMMA LDX #$0000 JSR $B456 ; Move to Beams CMP #$FFFF BNE BRANCH_ZETA LDX #$0000 JSR $B511 ; Move to High Jump or lower on boots BRANCH_ZETA: RTS A58F890001F013890004D007A2000020B7B460A2040020B7B460890004F0FAA200002056B4C9FFFFD006A200002011B560 ;MAIN --> TANKS --> GLOWARROW is just going to be skipped ;MAIN --> TANKS --> GLOWARROW --> MODE is skipped ;MAIN --> TANKS --> GLOWARROW --> TRIGGER is skipped ;MAIN --> TANKS --> GLOWARROW --> MOVED_OFF_TANKS is skipped ;MAIN --> TANKS --> GLOWARROW --> SETPALLETE_ON is skipped ;MAIN --> TANKS --> GLOWARROW --> SETPALLETE_OFF is skipped ;MAIN --> TANKS --> MODE_BUTTONS is skipped ;MAIN --> TANKS --> MODE_BUTTONS --> SET_AUTO_STATUSBAR is skipped ;MAIN --> TANKS --> MODE_BUTTONS --> CLEAR_AUTO_STATUSBAR is skipped ;Since all that's being skipped, let's put some new routines in their place ;MAIN --> BEAMS --> MOVE --> MOVE_RIGHT ;82:AD0A BRANCH_CANCERA: LDA $09A8 ; Collected Beams BIT $BF30, X ;Beam Checklist? BNE BRANCH_AQUARIUSA INX INX CPX #$0010 BMI BRANCH_CANCERA LDA #$FFFF RTS BRANCH_AQUARIUSA: TXA LSR A XBA AND #$FF00 ORA #$0001 STA $0755 LDA #$0037 JSL $809049 ; Sound RTS ADA8093C30BFD00BE8E8E0100030F1A9FFFF608A4AEB2900FF0901008D5507A937002249908060 ;Updated by TCharge ;MAIN --> DRAW RESERVE TANKS --> GET X POSITION ;82:AD31 ASL ASL CLC ADC #$0010 TAX RTS 0A0A18691000AA60 ;MAIN --> TANKS --> ACTIVATE_BUTTONS org $82AD90 LDA $8F BEQ + STZ $0757 + LDA $0757 ; Reserve tank timer BNE Reserves_Continue LDA $8F BIT #$0080 ; Button A BNE +++ BIT #$2000 ; Select BEQ ++ LDX $09C0 - INX INX CPX #$0008 BMI + LDX #$0000 + TXA ASL TAY LDA $09C4,Y BEQ - STX $09C0 LDA #$2C0F STA $7EC69A STA $7EC6A2 STA $7EC6A8 STA $7EC6AE LDX.w StatusBarAddresses,Y BEQ ++ LDA #$AC11 STA $7E0000,X LDX.w StatusBarAddresses+2,Y STA $7E0000,X ++ RTS +++ LDA #$FFF8 STA $0757 Reserves_Continue: DEC A STA $0757 AND #$0007 CMP #$0007 BNE + LDA #$002D JSL $80914D ; Sound + LDA $09C0 TAY ASL TAX LDA $09C2,X CMP $09C4,X BCS + LDA $09D6 SBC ReserveRequirements,Y BCC + STA $09D6 INC $09C2,X RTS + STZ $0757 RTS StatusBarAddresses: DW $0000,$0000,$C69A,$C6A2,$C6A2,$C6A8,$C6A8,$C6AE ReserveRequirements: DW $0000,$0003,$0027,$0027 FixReserves: STZ $09C0 LDA #$2C0F STA $7EC69A STA $7EC6A2 STA $7EC6A8 STA $7EC6AE LDA $0998 ;New addition: Prevent Log Book + Unpause from double-incing and causing problems. Not adding yet incase Log Book + Unpause results in Fast Unpause. CMP #$000F BEQ + DEC $0998 + LDA #$0038 RTS ;Pause screen Exit fixups org $82A5C2 JSR FixReserves ;A58FF0039C5707AD5707D014A58F898000F043ADD6091869070029F8FF8D57073A8D5707290700C90700D007A92D00224D9180ADC609CDC80910181A8DC609ADD60938E904008DD609F0081009CEC6099CD6099C570760 ;Updated for multi-purpose reserve tanks. Use xkas to assemble. ;MAIN --> WEAPONS ;82:AFBE LDA $09A6 ; Equipped beams STA $24 LDA $09A8 ; Collected beams BEQ BRANCH_UPSILON LDA #$000A ; Tiles to load STA $18 JSR $B568 ; Button response JSR $B068 ; Plasma + Spazer check JSR $AFDB ; D-pad response BRANCH_UPSILON: RTS ADA6098524ADA809F00EA90A0085182068B52068B020DBAF60 ;MAIN --> WEAPONS --> MOVE_BUTTONS ;82:AFDB LDA $8F BIT #$0100 ; Right BEQ BRANCH_PHI BIT #$0800 ; Up BNE BRANCH_CHI LDA $0755 CMP #$0500 BPL MOVE_TO_MORPH LDX #$000A JSR $AD0A ; Move right in Beams CMP #$FFFF BNE BRANCH_PSI MOVE_TO_MORPH: LDX #$0004 JMP $B4B7 ; Move to Morphball, or lower on Suits/Misc BRANCH_CHI: LDX #$0000 JMP $B4B7 ; Move to Varia, or lower on Suits/Misc BRANCH_PHI: BIT #$0200 ; Left BEQ Down LDA #$0755 CMP #$0500 BMI BRANCH_PSI LDX #$0000 JMP $B456 Down: BIT #$0400 ; Down BNE BRANCH_OMEGA BIT #$0800 ; Up BEQ BRANCH_PSI LDA $0756 AND #$00FF BEQ BRANCH_ALTIMA DEC ASL A TAX JSR $B489 ; Move up in Beams CMP #$FFFF BNE BRANCH_PSI BRANCH_ALTIMA: LDX #$0000 JMP $B43F ; Move to Reserve Tanks BRANCH_OMEGA: LDA $0756 AND #$00FF CMP #$0007 BEQ MOVE_TO_BOOTS INC ASL A TAX JSR $B456 ; Move down in Beams CMP #$FFFF BNE BRANCH_PSI MOVE_TO_BOOTS: LDX #$0000 JSR $B511 ; Move to High Jump or lower on boots BRANCH_PSI: RTS ;A58F890001F02B890008D01EAD560729FF00C90500100BA20A00200AADC9FFFFD051A2040020B7B48049A2000020B7B48041890004D020890008F037AD560729FF00F00B3A0AAA2089B4C9FFFFD024A20000203FB4801CAD560729FF00C90600F00B1A0AAA2056B4C9FFFFD006A200002011B560 A58F890001F024890008D019AD5507C90005100BA20A00200AADC9FFFFD05EA204004CB7B4A200004CB7B4890002F00EA95507C900053045A200004C56B4890004D01E890008F035AD560729FF00F00B3A0AAA2089B4C9FFFFD022A200004C3FB4AD560729FF00C90700F00B1A0AAA2056B4C9FFFFD006A200002011B560 ;Updated by T.Charge ;MAIN --> BEAMS --> PLAS/SPAZER ;82:B068 PHP REP #$30 LDA $24 EOR #$FFFF AND $09A6 BIT #$0004 BNE BRANCH_ULTIMA BIT #$0008 BEQ BRANCH_OPTIMUS LDA $24 BIT #$0008 BNE BRANCH_OPTIMUS LDA $09A6 BIT #$0004 BEQ BRANCH_OPTIMUS AND #$FFFB STA $09A6 LDA #$3BC2 STA $00 BRA BRANCH_ALIF BRANCH_ULTIMA: LDA $24 BIT #$0004 BNE BRANCH_OPTIMUS LDA $09A6 BIT #$0008 BEQ BRANCH_OPTIMUS AND #$FFF7 STA $09A6 LDA #$3C02 STA $00 BRANCH_ALIF: LDA #$0C00 STA $12 LDA #$000A STA $16 JSR $A29D ; Greys out name of selected item. BRANCH_OPTIMUS: PLP RTS 08C230A52449FFFF2DA609890400D021890800F043A524890800D03CADA609890400F03429FBFF8DA609A9C23B8500801AA524890400D020ADA609890800F01829F7FF8DA609A9023C8500A9000C8512A90A008516209DA22860 ;MAIN --> MISC ;82:B0C2 LDA #$0012 STA $18 JSR $B568 ; Button response JSR $B0D2 ; DPad response RTS A9120085182068B520D2B060 ;MAIN --> MISC --> MOVE_RESPONSE ;82:B0D2 LDA $8F BIT #$0200 ; Left BEQ BRANCH_BET BIT #$0400 ; Down BNE BRANCH_DEL LDX #$0000 JSR $B43F ; Move to Reserve Tanks CMP #$0000 BNE BRANCH_THEL LDX #$0000 JSR $B456 ; Move to Beams CMP #$FFFF BNE BRANCH_THEL BRANCH_DEL: LDX #$0000 JSR $B511 ; Move to High Jump or lower in boots RTS BRANCH_BET: BIT #$0800 ; Up BNE BRANCH_SIN BIT #$0400 ; Down BEQ BRANCH_THEL LDA $0756 AND #$00FF CMP #$0009 BEQ BRANCH_SHIN INC ASL A TAX JSR $B4B7 ; Move to a spot in Suits/Misc RTS BRANCH_SIN: LDA $0756 AND #$00FF BEQ BRANCH_THEL DEC ASL A TAX JSR $B4E6 ; Move up in Misc./Suits BRANCH_THEL: RTS A58F890002F022890004D016A20000203FB4C90000D03CA200002056B4C9FFFFD031A200002011B560890008D017890004F020AD560729FF00C90900F0151A0AAA20B7B460AD560729FF00F0063A0AAA20E6B460 ;MAIN --> BOOTS ;82:B150 LDA #$0012 STA $18 JSR $B568 ; Button response (toggles item if A is pressed) JSR $B160 ; Move response for d-pad RTS A9120085182068B52060B160 ;MAIN --> BOOTS --> MOVE_RESPONSE ;82:B160 LDA $8F BIT #$0100 ; Right BEQ BRANCH_SOD BIT #$0800 ; Up BNE BRANCH_DOD LDX #$0012 JSR $B4E6 ; Move to Unknown or higher on Suits/Misc RTS BRANCH_DOD: LDX #$0000 JSR $B4B7 ; Move to Varia, or lower on Suits/Misc RTS BRANCH_SOD: BIT #$0400 ; Down BNE BRANCH_ZOD BIT #$0800 ; Up BEQ BRANCH_TOD LDA $0756 AND #$00FF BEQ BRANCH_FATHA DEC ASL A TAX JSR $B53F ; Move up in boots CMP #$FFFF BNE BRANCH_TOD BRANCH_FATHA: LDX #$000E JSR $B489 ; Move up in Beams CMP #$FFFF BNE BRANCH_TOD JSR $B43F ; Move to Reserve Tanks RTS BRANCH_ZOD: LDA $0756 AND #$00FF CMP #$0003 BEQ BRANCH_TOD INC ASL A TAX JSR $B511 ; Move down in boots BRANCH_TOD: RTS A58F890001F013890008D007A2120020E6B460A2000020B7B460890004D027890008F033AD560729FF00F00B3A0AAA203FB5C9FFFFD020A20E002089B4C9FFFFD015203FB460AD560729FF00C90300F0061A0AAA2011B560 ;Updated by T.Charge ;MAIN --> UPDATE_BG1 is fine as is ;MAIN --> UPDATE_BG1 --> SAMUS_MODEL is fine as is ;MAIN --> DISPLAY_SELECTION ;82:B267 PHP LDA $09A8 ORA $09A4 ORA $09D4 BEQ BRANCH_RAH ; If no items, leave LDA $0755 AND #$00FF ASL A TAX LDA $BF60, X ; List Base pointer STA $12 LDA $0756 AND #$00FF ASL A ASL A CLC ADC $12 TAY LDA $0000, Y ; Specific Item X position TAX DEX INY INY LDA $0000, Y ; Specific Item Y position TAY LDA #$0003 JSR $A881 ; This must actually display the sprite... BRANCH_RAH: PLP RTS 08ADA8090DA4090DD409F02AAD550729FF000AAABD60BF8512AD560729FF000A0A186512A8B90000AACAC8C8B90000A8A903002081A82860 ;MAIN --> DISPLAY_RESERVES (no more middle routine) ;82:B2A2 PHP STZ $03 JSR $B3F9 ; Pallete setup STZ $34 LDA $09D4 BNE BRANCH_ZAH PLP RTS BRANCH_ZAH: STA $4204 SEP #$20 LDA #$64 STA $4206 REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA $4214 STA $2C LDA $09D6 STA $4204 SEP #$20 LDA #$64 STA $4206 REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA $4216 ; Percent of last box to fill STA $32 LDA $4214 ; Boxes to fill STA $2A STA $30 STA $2E BEQ BRANCH_YEH LDY #$0000 BRANCH_HEH: PHY TYA JSR $AD31 LDY #$003F ; Y position of boxes LDA #$001B JSL $81891F ; Draw sprite? PLY INY INY DEC $2E BNE BRANCH_HEH STY $34 BRANCH_YEH: LDA $4216 BEQ BRANCH_JIIM STA $4204 SEP #$20 LDA #$0E STA $4206 REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA $4214 ASL A TAX CMP #$0007 BPL BRANCH_HAMZA LDA $4216 BEQ BRANCH_HAMZA LDA $05B5 BIT #$0004 BNE BRANCH_HAMZA INX INX BRANCH_HAMZA: LDA $09D6 CMP #$0064 BMI BRANCH_ARIES TXA CLC ADC #$0010 TAX BRANCH_ARIES: LDA $B3D9, X PHA LDA $34 JSR $AD31 LDY #$003F ; Y position of boxes PLA JSL $81891F ; Draw sprite? INC $30 INC $34 INC $34 BRANCH_JIIM: LDX $34 LDA $30 CMP $2C BPL BRANCH_LEO TXA JSR $AD31 LDY #$003F ; Y position of boxes LDA #$0020 JSL $81891F ; Draw sprite? INC $34 INC $34 INC $30 BRA BRANCH_JIIM BRANCH_LEO: LDA $34 JSR $AD31 LDY #$003F ; Y position of boxes LDA #$001F JSL $81891F ; Draw sprite? SEP #$20 LDA $32 STA $4204 LDA $33 STA $4205 LDA #$0A STA $4206 REP #$20 NOP NOP NOP NOP NOP NOP NOP LDA $4216 CLC ADC #$0804 STA $7E3A12 LDA $4214 CLC ADC #$0804 STA $7E3A10 LDA $2A CLC ADC #$0804 STA $7E3A0E PLP RTS 08640320F9B36434ADD409D00228608D0442E220A9648D0642C220EAEAEAEAEAEAEAAD1442852CADD6098D0442E220A9648D0642C220EAEAEAEAEAEAEAAD16428532AD1442852A8530852EF01BA000005A982031ADA03F00A91B00221F89817AC8C8C62ED0EA8434AD1642F0518D0442E220A90E8D0642C220EAEAEAEAEAEAEAAD14420AAAC90700100FAD1642F00AADB505890400D002E8E8ADD609C9640030068A18691000AABDD9B348A5342031ADA03F0068221F8981E630E634E634A634A530C52C10168A2031ADA03F00A92000221F8981E634E634E63080E2A5342031ADA03F00A91F00221F8981E220A5328D0442A5338D0542A90A8D0642C220EAEAEAEAEAEAEAAD1642186904088F123A7EAD1442186904088F103A7EA52A186904088F0E3A7E2860 ;MAIN --> DISPLAY_RESERVES --> SET_PALLETES is fine ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETOTANKS is fine ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETOBEAMS ;82:B456 LDA $0A76 ; Hyper beam BNE BRANCH_SCOPRIO BRANCH_CANCER: LDA $09A8 ; Collected Beams BIT $BF30, X ;Beam Checklist? BNE BRANCH_AQUARIU INX INX CPX #$0010 BMI BRANCH_CANCER BRANCH_SCOPRIO: LDA #$FFFF RTS BRANCH_AQUARIU: TXA LSR A XBA AND #$FF00 ORA #$0001 STA $0755 LDA #$0037 JSL $809049 ; Sound RTS AD760AD00FADA8093C30BFD00BE8E8E0100030F1A9FFFF608A4AEB2900FF0901008D5507A937002249908060 ;Updated by T.Charge ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETOPLASMA ;82:B489 LDA $0A76 BNE BRANCH_PISCES BRANCH_SEPHIROTH: LDA $09A8 BIT $BF30, X BNE BRANCH_CLOUD DEX DEX BPL BRANCH_SEPHIROTH BRANCH_PISCES: LDA #$FFFF RTS BRANCH_CLOUD: LDA #$0037 JSL $809049 ; Sound TXA LSR A XBA AND #$FF00 ORA #$0001 STA $0755 RTS AD760AD00CADA8093C30BFD008CACA10F4A9FFFF60A93700224990808A4AEB2900FF0901008D550760 ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETO_SUITS/MISC_X_DOWN ;82:B4B7 BRANCH_BETAA: LDA $09A4 BIT $BF40, X BNE BRANCH_ALPHAA INX INX CPX #$0014 BMI BRANCH_BETAA LDA #$FFFF RTS BRANCH_ALPHAA: LDA #$0037 JSL $809049 ; Sound TXA LSR A XBA AND #$FF00 ORA #$0002 STA $0755 LDA #$0000 RTS ADA4093C40BFD00BE8E8E0140030F1A9FFFF60A93700224990808A4AEB2900FF0902008D5507A9000060 ;Updated by T.Charge ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETO_SUITS/MISC_X_UP ;82:B4E6 BRANCH_VENUS: LDA $09A4 BIT $BF40, X BNE BRANCH_MERCURY DEX DEX BPL BRANCH_VENUS LDA #$FFFF RTS BRANCH_MERCURY: LDA #$0037 JSL $809049 ; Sound TXA LSR A XBA AND #$FF00 ORA #$0002 STA $0755 RTS ADA4093C40BFD008CACA10F4A9FFFF60A93700224990808A4AEB2900FF0902008D550760 ;Updated by T.Charge ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETOBOOTS_X_DOWN ;82:B511 BRANCH_JUPITER: LDA $09A4 BIT $BF54, X BNE BRANCH_MARS INX INX CPX #$0008 BMI BRANCH_JUPITER LDA #$FFFF RTS BRANCH_MARS: LDA #$0037 JSL $809049 ; Sound TXA LSR A XBA AND #$FF00 ORA #$0003 STA $0755 RTS ADA4093C52BFD00BE8E8E0080030F1A9FFFF60A93700224990808A4AEB2900FF0903008D550760 ;Updated by T.Charge ;MAIN --> SPECIFIC_LIST --> MOVE_RESPONSES --> MOVETOBOOTS_X_UP ;82:B53F BRANCH_NEPTUNE: LDA $09A4 BIT $BF54, X BNE BRANCH_URANUS DEX DEX BPL BRANCH_NEPTUNE LDA #$FFFF RTS BRANCH_URANUS: LDA #$0037 JSL $809049 ; Sound TXA LSR A XBA AND #$FF00 ORA #$0003 STA $0755 RTS ADA4093C52BFD008CACA10F4A9FFFF60A93700224990808A4AEB2900FF0903008D550760 ;Updated by T.Charge ;MAIN --> SPECIFIC_LIST (but not TANKS) --> BUTTON_RESPONSE ;82:B568 LDA $8F BIT #$0080 ; Button A BNE BRANCH_MICKEY RTS BRANCH_MICKEY: LDA #$0038 JSL $809049 ; Sound LDA $18 STA $16 ; Number of tiles LDA #$0010 STA $12 ; Suit / Misc initialization. Changed if not Suit or Misc LDA $0755 AND #$00FF DEC BEQ BEAMS DEC BEQ SUITMISC BOOTS: LDA #$0024 STA $12 SUITMISC: LDY #$09A2 BRA ALL BEAMS: STZ $0CD0 LDA $0617 AND #$FFFD STA $0617 STZ $12 LDY #$09A6 ALL: LDA $0756 AND #$00FF ASL CLC ADC $12 TAX LDA $0000,Y EOR $BF30,X STA $0000,Y BIT $BF30,X BEQ DISABLE ENABLE: LDA #$0800 BRA PALLETE DISABLE: LDA #$0C00 PALLETE: STA $12 LDA $BF02,X STA $00 JSR $A29D RTS A58F898000D00160A9380022499080A5188516A910008512AD550729FF003AF00D3AF005A924008512A0A20980119CD00CAD170629FDFF8D17066412A0A609AD560729FF000A186512AAB900005D30BF9900003C30BFF005A900088003A9000C8512BD02BF8500209DA260 ;Updated by T.Charge Needed so far: Misc.: AM Sink, Speed Morph, Unknown, Boots: Spark Bounce, Beams: Heat Sink, 4 way shot Reserve Tanks New Tilemap (B6:E800): 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000280028002800280028002800280028002800280028002800280028002800280028002800280008 000000000000000000000000000000000000BE28BE28BD6801283A293B293C293D293E293F290128BD28BE28BE28000000000000000000000000000000000000 0000413942394339070D080D090D0A0D437942394179000000000000000000000000000000000000000041394239433993289428A42843794239423941790000 000040390128012801280128012801280128012840790000000000000000B325B3650000000000000000403900000000A32800000000A3280000000040790000 00004039FC1CFC1CFC1CFC1CFC1CFE3C0128012840790000BC25BD25BE25C325C365BE65BD65BC6541392F3942394339F628F728F82843794239423944790000 000041B942B942B942B942B942B942B942B942B941F90000CC25CD25CE25D325D365CE65CD65CC654039FF08E008E108E208E308E408E5080F090F0940790000 000000000000000000000000000000000000000000000000DC25DD25EC25ED257C257D257E257F255479FF08E608E708E808E908E308E408E5080F0940790000 0BA942394339F40DF50DF60DF70DF80D4379423942394179F025F125FC25FD25FD65FC65F165F06541B942B942B942B942B942B942B942B942B942B941F90000 0000FF08D008D108D208D308FF086709680969096A09407970257125722573257425726571657065000000000000000000000000000000000000000000000000 0000FF08500951090F090F09FF085C095D095E095F094079802581259425832584257825862587254139423942394339B029B129B22943794239423941790000 0000FF08F908FA08FB080F09FF08180919091A091B0954B990259125A425A525A5658825962597255479FF0846094709480949094A094D094E094F0940790008 0000FF08D408D508D608D708603942B942B942B942B941F9A025A125B425B525B565B465A625A7254039FF083709380939090F090F090F090F090F0940790008 0000FF08D808D908DA08DB084079000000000000000000000000C925C425C525C565C465000000004039FF08F008F108F208F308F408F508FD080F0940790008 0B2942B942B942B942B942B941F90000000000000000000000000000D425D525D565D465000000004039FF0800090109020903090409050906090F0940790008 0BA9423942394339A02CA12CA22C4379423942394179000000000000B625B725B765B665000000004039FF0856095709580959095A090F090F090F0940790008 0000FF0830093109320933093409350936090F094079000000000000C625C725C765C665000000004039FF0810091109120963096409650966090F0940790000 0000FF08EA08EB08EC08ED08EE08EF080F090F094079000000000000D625D705D745D665000000004039FF08B809B909BA09BB09630964096509660940790000 0000FF081009110912091309140915091609170954B95BA555B900008F25000000008F65000000004039FF082709280929092A092B090F090F090F0940790000 0000FF0810092009210922092309240925092609407900009D65EE659F25000000009F659E658E6541B942B942B942B942B942B942B942B942B942B941F90000 0B2942B942B942B942B942B942B942B942B942B941F90000AD25FE65AF2500000000AF65AE65AD65000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 No Varia, No Boots (82:D521) 000000000000B325B365000000000000 BC25BD25BE25C325C365BE65BD65BC65 CC25CD25CE25D325D365CE65CD65CC65 DC25DD25EC25ED257C257D257E257F25 F025F125FC25FD25FD65FC65F165F065 70257125722573257425726571657065 80258125942583258425782586258725 90259125A425A525A565882596259725 A025A125B425B525B565B465A625A725 0000C925C425C525C565C46500000000 00000000D425D525D565D46500000000 00000000B625B725B765B66500000000 00000000C625C725C765C66500000000 00000000D625D705D745D66500000000 55B900008F25000000008F6500000000 9D65EE659F25000000009F659E658E65 AD25FE65AF2500000000AF65AE65AD65 000000000000B325B365000000000000BC25BD25BE25C325C365BE65BD65BC65CC25CD25CE25D325D365CE65CD65CC65DC25DD25EC25ED257C257D257E257F25F025F125FC25FD25FD65FC65F165F065702571257225732574257265716570658025812594258325842578258625872590259125A425A525A565882596259725A025A125B425B525B565B465A625A7250000C925C425C525C565C4650000000000000000D425D525D565D4650000000000000000B625B725B765B6650000000000000000C625C725C765C6650000000000000000D625D705D745D6650000000055B900008F25000000008F65000000009D65EE659F25000000009F659E658E65AD25FE65AF2500000000AF65AE65AD65 High Jump Boots (82:D631) 000000000000B325B365000000000000 BC25BD25BE25C325C365BE65BD65BC65 CC25CD25CE25D325D365CE65CD65CC65 DC25DD25EC25ED257C257D257E257F25 F025F125FC25FD25FD65FC65F165F065 70257125722573257425726571657065 80258125942583258425782586258725 90259125A425A525A565882596259725 A025A125B425B525B565B465A625A725 0000C925C425C525C565C46500000000 00000000D425D525D565D46500000000 00000000B625B725B765B66500000000 00000000C625C725C765C66500000000 000079058C25D705D7458C6579450000 55B989058A25000000008A6589450000 9D659C659A259B059B459A6599659865 A825AC65AA2500000000AA65A965A865 000000000000B325B365000000000000BC25BD25BE25C325C365BE65BD65BC65CC25CD25CE25D325D365CE65CD65CC65DC25DD25EC25ED257C257D257E257F25F025F125FC25FD25FD65FC65F165F065702571257225732574257265716570658025812594258325842578258625872590259125A425A525A565882596259725A025A125B425B525B565B465A625A7250000C925C425C525C565C4650000000000000000D425D525D565D4650000000000000000B625B725B765B6650000000000000000C625C725C765C66500000000000079058C25D705D7458C657945000055B989058A25000000008A65894500009D659C659A259B059B459A6599659865A825AC65AA2500000000AA65A965A865 Varia Suit (82:D741) 000000000000B325B365000000000000 C025C125C225C325C365C265C165C065 D025D125D225D325D365D265D165D065 E025E125E225E325E425E525E625E725 F025F125F225F325F365F265F165F065 70257125722573257425726571657065 80258125822583258425852586258725 90259125922593259365952596259725 A025A125A225A325A365A265A625A725 0000C925CA25CB25CB65CA6500000000 00000000DA25DB25DB65DA6500000000 0000E905EA25EB25EB45EA65E9650000 0000F905FA25FB25FB45FA65F9650000 000000007B25D705D7457B6500000000 55B900008B25000000008B6500000000 9D65EE659F25000000009F659E658E65 AD25FE65AF2500000000AF65AE65AD65 000000000000B325B365000000000000C025C125C225C325C365C265C165C065D025D125D225D325D365D265D165D065E025E125E225E325E425E525E625E725F025F125F225F325F365F265F165F065702571257225732574257265716570658025812582258325842585258625872590259125922593259365952596259725A025A125A225A325A365A265A625A7250000C925CA25CB25CB65CA650000000000000000DA25DB25DB65DA65000000000000E905EA25EB25EB45EA65E96500000000F905FA25FB25FB45FA65F9650000000000007B25D705D7457B650000000055B900008B25000000008B65000000009D65EE659F25000000009F659E658E65AD25FE65AF2500000000AF65AE65AD65 Both (82:D851) 000000000000B325B365000000000000 C025C125C225C325C365C265C165C065 D025D125D225D325D365D265D165D065 E025E125E225E325E425E525E625E725 F025F125F225F325F365F265F165F065 70257125722573257425726571657065 80258125822583258425852586258725 90259125922593259365952596259725 A025A125A225A325A365A265A625A725 0000C925CA25CB25CB65CA6500000000 00000000DA25DB25DB65DA6500000000 0000E925EA25EB25EB65EA65E9650000 0000F925FA25FB25FB65FA65F9650000 000079257A25D705D7457A6579650000 55B989058A25000000008A6589450000 9D659C659A259B059B459A6599659865 A825AC65AA2500000000AA65A965A865 000000000000B325B365000000000000C025C125C225C325C365C265C165C065D025D125D225D325D365D265D165D065E025E125E225E325E425E525E625E725F025F125F225F325F365F265F165F065702571257225732574257265716570658025812582258325842585258625872590259125922593259365952596259725A025A125A225A325A365A265A625A7250000C925CA25CB25CB65CA650000000000000000DA25DB25DB65DA65000000000000E925EA25EB25EB65EA65E96500000000F925FA25FB25FB65FA65F9650000000079257A25D705D7457A657965000055B989058A25000000008A65894500009D659C659A259B059B459A6599659865A825AC65AA2500000000AA65A965A865