;Makes fadeouts/fadeins custom by using windowing HDMA ;Version 1.1 !base1 = $0000 !base2 = $0000 if read1($00ffd5) == $23 sa1rom !base1 = $3000 !base2 = $6000 endif !FreeRAM = $13C0 ;must be abs ORG $00C9EB ;NEW: Fix overworld mosaic screwup after you finish bonus level 000/100 BRA + NOP #3 + ORG $00A0A3 BRA + NOP #3 + ORG $009F37 autoclean JML MainFades HijackReturn: RTS freedata ; this one doesn't change the data bank register, so it uses the RAM mirrors from another bank, so I might as well toss it into banks 40+ MainFades: LDA #$0F STA $0DAE|!base2 INC !FreeRAM|!base2 LDA #$22 STA $41 STA $42 STA $43 ;setup HDMA properties LDA #$20 TSB $44 LDA #$10 TRB $44 LDA !FreeRAM|!base2 ;following wall of code sets up animated HDMA table algorithm-wise LDY $0DAF|!base2 BNE + EOR #$FF + ASL A ASL A ASL A LDX #$0E - STZ $04A0|!base2,x STZ $04C0|!base2,x STZ $04E0|!base2,x STZ $0500|!base2,x STZ $0520|!base2,x STZ $0540|!base2,x STZ $0560|!base2,x STZ $0580|!base2,x STZ $05A0|!base2,x STZ $05C0|!base2,x STZ $05E0|!base2,x STZ $0600|!base2,x STZ $0620|!base2,x STZ $0640|!base2,x INC A CPX #$07 BCS + DEC A DEC A + STA $04A1|!base2,x STA $04C1|!base2,x STA $04E1|!base2,x STA $0501|!base2,x STA $0521|!base2,x STA $0541|!base2,x STA $0561|!base2,x STA $0581|!base2,x STA $05A1|!base2,x STA $05C1|!base2,x STA $05E1|!base2,x STA $0601|!base2,x STA $0621|!base2,x STA $0641|!base2,x REP 2 : DEX BPL - EOR #$FF LDX #$0E - DEC A CPX #$07 BCS + INC A INC A + STA $04B0|!base2,x STA $04D0|!base2,x STA $04F0|!base2,x STA $0510|!base2,x STA $0530|!base2,x STA $0550|!base2,x STA $0570|!base2,x STA $0590|!base2,x STA $05B0|!base2,x STA $05D0|!base2,x STA $05F0|!base2,x STA $0610|!base2,x STA $0630|!base2,x STA $0650|!base2,x PHA LDA #$FF STA $04B1|!base2,x STA $04D1|!base2,x STA $04F1|!base2,x STA $0511|!base2,x STA $0531|!base2,x STA $0551|!base2,x STA $0571|!base2,x STA $0591|!base2,x STA $05B1|!base2,x STA $05D1|!base2,x STA $05F1|!base2,x STA $0611|!base2,x STA $0631|!base2,x STA $0651|!base2,x PLA REP 2 : DEX BPL - ;end of HDMA table setup code LDA #$41 ;\ STA $4370 ; | LDA #$26 ; | STA $4371 ; |Enable HDMA LDA.b #IndirectPtrs ; | STA $4372 ; | LDA.b #IndirectPtrs>>8 ; | STA $4373 ; | LDA.b #IndirectPtrs>>16 ; | STA $4374 ; | STZ $4377 ; | LDA #$80 ; |HDMA enable TSB $0D9F|!base2 ;/ LDA !FreeRAM|!base2 CMP #31 BNE + LDA $0DAF|!base2 BNE ++ REP #$10 LDX #$01BE LDA #$FF - STA $04A0|!base2,x ;clear HDMA table when done STZ $04A1|!base2,x DEX DEX BPL - SEP #$10 ++ STZ !FreeRAM|!base2 STZ $41 STZ $42 ;sets HDMA properties back to normal STZ $43 LDA #$02 STA $44 LDA $0DAF|!base2 ;Fading direction. $00 = Fadein, $01 = Fadeout EOR #$01 ;reverse fading direction. STA $0DAF|!base2 INC $0100|!base2 ;Gamemode++; LDA #$80 ;HDMA clear TRB $0D9F|!base2 + JML HijackReturn incsrc "windowingfade_table.asm"