@includefrom superfx.asm !RAMDecomp = $2000 pushpc org $00A879 ;Fix Sprite's GFX LDA.w #(($B3F0)-$AD00)+!RAMDecomp org $00A87E ;Fix Sprite's GFX LDA.w #(($7000|(($B3)-$AD))+(!RAMDecomp/256)) org $00A8AE ;Fix Sprite's GFX LDA.w #(($B570)-$AD00)+!RAMDecomp org $048095 ;Fix Animations LDY.b #$70 org $04814F ;Fix Animations LDY.b #$70 org $048000 ;Fix Animations dw (($B480)-$AD00)+!RAMDecomp,(($B498)-$AD00)+!RAMDecomp,(($B4B0)-$AD00)+!RAMDecomp org $048006 ;Fix Animations dw (($B300)-$AD00)+!RAMDecomp,(($B318)-$AD00)+!RAMDecomp,(($B330)-$AD00)+!RAMDecomp,(($B348)-$AD00)+!RAMDecomp dw (($B360)-$AD00)+!RAMDecomp,(($B378)-$AD00)+!RAMDecomp,(($B390)-$AD00)+!RAMDecomp,(($B3A8)-$AD00)+!RAMDecomp dw (($B3C0)-$AD00)+!RAMDecomp,(($B3D8)-$AD00)+!RAMDecomp,(($B3F0)-$AD00)+!RAMDecomp,(($B408)-$AD00)+!RAMDecomp dw (($B420)-$AD00)+!RAMDecomp,(($B438)-$AD00)+!RAMDecomp,(($B450)-$AD00)+!RAMDecomp,(($B468)-$AD00)+!RAMDecomp dw (($B480)-$AD00)+!RAMDecomp,(($B498)-$AD00)+!RAMDecomp,(($B4B0)-$AD00)+!RAMDecomp,(($B4C8)-$AD00)+!RAMDecomp dw (($B4E0)-$AD00)+!RAMDecomp,(($B4F8)-$AD00)+!RAMDecomp,(($B510)-$AD00)+!RAMDecomp,(($B528)-$AD00)+!RAMDecomp dw (($B540)-$AD00)+!RAMDecomp,(($B558)-$AD00)+!RAMDecomp,(($B570)-$AD00)+!RAMDecomp,(($B588)-$AD00)+!RAMDecomp dw (($B5A0)-$AD00)+!RAMDecomp,(($B5B8)-$AD00)+!RAMDecomp,(($B5D0)-$AD00)+!RAMDecomp,(($B5E8)-$AD00)+!RAMDecomp dw (($B600)-$AD00)+!RAMDecomp,(($B618)-$AD00)+!RAMDecomp,(($B630)-$AD00)+!RAMDecomp,(($B648)-$AD00)+!RAMDecomp dw (($B660)-$AD00)+!RAMDecomp,(($B678)-$AD00)+!RAMDecomp,(($B690)-$AD00)+!RAMDecomp,(($B6A8)-$AD00)+!RAMDecomp dw (($B6C0)-$AD00)+!RAMDecomp,(($B6D8)-$AD00)+!RAMDecomp,(($B6F0)-$AD00)+!RAMDecomp,(($B708)-$AD00)+!RAMDecomp dw (($B720)-$AD00)+!RAMDecomp,(($B738)-$AD00)+!RAMDecomp,(($B750)-$AD00)+!RAMDecomp,(($B768)-$AD00)+!RAMDecomp dw (($B780)-$AD00)+!RAMDecomp,(($B798)-$AD00)+!RAMDecomp,(($B7B0)-$AD00)+!RAMDecomp,(($B7C8)-$AD00)+!RAMDecomp dw (($B7E0)-$AD00)+!RAMDecomp,(($B7F8)-$AD00)+!RAMDecomp,(($B810)-$AD00)+!RAMDecomp,(($B828)-$AD00)+!RAMDecomp dw (($B840)-$AD00)+!RAMDecomp,(($B858)-$AD00)+!RAMDecomp,(($B870)-$AD00)+!RAMDecomp,(($B888)-$AD00)+!RAMDecomp dw (($B8A0)-$AD00)+!RAMDecomp,(($B8B8)-$AD00)+!RAMDecomp,(($B8D0)-$AD00)+!RAMDecomp,(($B8E8)-$AD00)+!RAMDecomp org $00BA28 PHB ; preserve data bank ; Accum (8 bit) PHY ; preserve Y (ExGFX file number) PHK ; \ current bank PLB ; / -> data bank LDA.W $B992,Y ; \ STA $3012 ; | get address of LDA.W $B9C4,Y ; | ExGFX file from STA $3013 ; | pointer tables and LDA.W $B9F6,Y ; | store on GSU registers STA $3008 ; / + REP #$20 LDA #!RAMDecomp ;\ store destination for decompressed ExGFX file STA !R3 ;/ (GFX Buffer located at RAM $70:xxxx) STA $00 LDY #$70 ;\ Fix LC_LZ2 bank STY $02 ;/ LDY.b #LC_LZ2>>16 ;\ Load LC_LZ2 code to GSU LC_LZ2BAH: ; | LDA.w #LC_LZ2 ; | JSR $1E80 ;/ And execute it... PLY ; restore Y (ExGFX file number) PLB ; restore data bank RTL ; Return pullpc LC_LZ2: arch superfx base ((read1(LC_LZ2BAH+3)&0xFF00)|(read1(LC_LZ2BAH+2))) CACHE FROM R4 ROMB MOVE R14,R9 MOVE R9,R3 IWT R5,#$03FF IBT R6,#$1F IWT R7,#$00E0 IWT R8,#$00FF LINK #2 CACHE GETB LZ2DecompJump1: INC R14 BNE LZ2DecompJump2 SUB R8 ADD R8 INC R4 FROM R4 ROMB MOVE R14,R14 SUB R8 LZ2DecompJump2: BNE LZ2DecompJump3 ADD R8 STOP LZ2DecompJump3: TO R2 AND R7 SUB R7 BPL LZ2DecompJump4 ADD R7 AND R6 BRA LZ2DecompJump5 INC R0 LZ2DecompJump4: MOVE R1,R0 ADD R0 ADD R0 ADD R0 TO R2 AND R7 GETB INC R14 BNE LZ2DecompJump6 WITH R1 INC R4 FROM R4 ROMB MOVE R14,R14 WITH R1 LZ2DecompJump6: SWAP OR R1 AND R5 INC R0 LZ2DecompJump5: MOVE R12,R0 MOVES R0,R2 BEQ LZ2DecompJump7 SWAP BMI LZ2DecompJump8 ADD R0 BPL LZ2DecompJump9 ADD R0 BPL LZ2DecompJumpA GETB INC R14 BNE LZ2DecompJumpB NOP INC R4 FROM R4 ROMB MOVE R14,R14 LZ2DecompJumpB: MOVE R13,R15 STB (R3) INC R0 LOOP INC R3 JMP R11 GETB LZ2DecompJump7: MOVE R13,R15 GETB INC R14 BNE LZ2DecompJumpC NOP INC R4 FROM R4 ROMB MOVE R14,R14 LZ2DecompJumpC: STB (R3) LOOP INC R3 JMP R11 GETB LZ2DecompJump8: WITH R1 GETB INC R14 BNE LZ2DecompJumpD GETB INC R4 FROM R4 ROMB MOVE R14,R14 GETB LZ2DecompJumpD: INC R14 BNE LZ2DecompJumpE WITH R1 INC R4 FROM R4 ROMB MOVE R14,R14 WITH R1 LZ2DecompJumpE: SWAP TO R2 OR R1 WITH R2 ADD R9 MOVE R13,R15 LDW (R2) STB (R3) INC R2 LOOP INC R3 JMP R11 GETB LZ2DecompJump9: GETB INC R14 BNE LZ2DecompJumpF NOP INC R4 FROM R4 ROMB MOVE R14,R14 LZ2DecompJumpF: MOVE R13,R15 STB (R3) LOOP INC R3 JMP R11 LZ2DecompJumpA: GETB INC R14 BNE LZ2DecompJump10 WITH R1 INC R4 FROM R4 ROMB MOVE R14,R14 WITH R1 LZ2DecompJump10: GETB INC R14 BNE LZ2DecompJump11 NOP INC R4 FROM R4 ROMB MOVE R14,R14 LZ2DecompJump11: MOVE R13,R15 STB (R3) INC R3 DEC R12 BEQ LZ2DecompJump12 FROM R1 STB (R3) LOOP INC R3 LZ2DecompJump12: JMP R11 GETB base off arch 65816