Fixed issue with Aga transition not restoring vanilla gfx
This commit is contained in:
@@ -198,10 +198,12 @@ DecompressAllItemGraphics:
|
|||||||
|
|
||||||
STA.l $4200 ; already 0 from the LDA above
|
STA.l $4200 ; already 0 from the LDA above
|
||||||
|
|
||||||
LDX.b #$5D+$73 : JSR FastSpriteDecomp
|
LDX.b #$5D+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
LDX.b #$5C+$73 : JSR FastSpriteDecomp
|
LDX.b #$5C+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
LDX.b #$5B+$73 : JSR FastSpriteDecomp
|
LDX.b #$5B+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
LDX.b #$5A+$73 : JSR FastSpriteDecomp
|
LDX.b #$5A+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
|
LDX.b #$06+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
|
LDX.b #$07+$73 : JSR AddGfxSheetToBigBuffer
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
PLX
|
PLX
|
||||||
@@ -219,6 +221,21 @@ DecompressAllItemGraphics:
|
|||||||
|
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
AddGfxSheetToBigBuffer:
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
LDA.l GFXSheetPointers_background_bank,X : PHA : PLB
|
||||||
|
LDA.l GFXSheetPointers_background_high,X : XBA
|
||||||
|
LDA.l GFXSheetPointers_background_low,X
|
||||||
|
|
||||||
|
CPX.b #$73 : !BLT FastSpriteDecomp
|
||||||
|
CPX.b #$73+$0C : !BGE FastSpriteDecomp
|
||||||
|
|
||||||
|
.uncompressed
|
||||||
|
JMP Direct3BPPConvert
|
||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
; I normally hate macros like this... but I don't feel like constantly rewriting this
|
; I normally hate macros like this... but I don't feel like constantly rewriting this
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
@@ -246,12 +263,6 @@ endmacro
|
|||||||
; so might as well rewrite it to be fast
|
; so might as well rewrite it to be fast
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
FastSpriteDecomp:
|
FastSpriteDecomp:
|
||||||
SEP #$30
|
|
||||||
|
|
||||||
LDA.l GFXSheetPointers_background_bank,X : PHA : PLB
|
|
||||||
LDA.l GFXSheetPointers_background_high,X : XBA
|
|
||||||
LDA.l GFXSheetPointers_background_low,X
|
|
||||||
|
|
||||||
REP #$10
|
REP #$10
|
||||||
|
|
||||||
TAY
|
TAY
|
||||||
@@ -492,6 +503,70 @@ endmacro
|
|||||||
|
|
||||||
;===================================================================================================
|
;===================================================================================================
|
||||||
|
|
||||||
|
macro DoIndirectPlanesA(offset)
|
||||||
|
LDA.b Scrap00 : ADC.w #<offset>+<offset> : STA.b Scrap02
|
||||||
|
LDA.b (Scrap02),Y
|
||||||
|
STA.l BigDecompressionBuffer+<offset>+<offset>,X
|
||||||
|
|
||||||
|
DEC.b Scrap02
|
||||||
|
ORA.b (Scrap02),Y
|
||||||
|
AND.w #$FF00
|
||||||
|
STA.b Decomp3BPPScratch
|
||||||
|
|
||||||
|
LDA.b Scrap00 : ADC.w #$10+<offset> : STA.b Scrap02
|
||||||
|
LDA.b (Scrap02),Y
|
||||||
|
AND.w #$00FF
|
||||||
|
TSB.b Decomp3BPPScratch
|
||||||
|
|
||||||
|
XBA
|
||||||
|
ORA.b Decomp3BPPScratch
|
||||||
|
STA.l BigDecompressionBuffer+$10+<offset>+<offset>,X
|
||||||
|
|
||||||
|
endmacro
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
Direct3BPPConvert:
|
||||||
|
REP #$31
|
||||||
|
STA.b Scrap00
|
||||||
|
|
||||||
|
LDY.w #$0000
|
||||||
|
LDX.b DecompBufferOffset
|
||||||
|
|
||||||
|
.next_3bpp_tile
|
||||||
|
%DoIndirectPlanesA(0) ; 8 times
|
||||||
|
%DoIndirectPlanesA(1)
|
||||||
|
%DoIndirectPlanesA(2)
|
||||||
|
%DoIndirectPlanesA(3)
|
||||||
|
%DoIndirectPlanesA(4)
|
||||||
|
%DoIndirectPlanesA(5)
|
||||||
|
%DoIndirectPlanesA(6)
|
||||||
|
%DoIndirectPlanesA(7)
|
||||||
|
|
||||||
|
; carry will always be clear
|
||||||
|
; don't worry
|
||||||
|
TXA
|
||||||
|
ADC.w #32
|
||||||
|
TAX
|
||||||
|
|
||||||
|
; just trust me
|
||||||
|
TYA
|
||||||
|
ADC.w #24
|
||||||
|
TAY
|
||||||
|
|
||||||
|
CMP.w #24*64
|
||||||
|
BCS .done
|
||||||
|
|
||||||
|
JMP .next_3bpp_tile
|
||||||
|
|
||||||
|
.done
|
||||||
|
STX.b DecompBufferOffset
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
Unrolled3BPPConvert:
|
Unrolled3BPPConvert:
|
||||||
LDA.b #$7F
|
LDA.b #$7F
|
||||||
PHA
|
PHA
|
||||||
|
|||||||
@@ -12,8 +12,6 @@
|
|||||||
!DMA0_SIZE_LOW_REG = $4305 ; DMA Size Registers (Low)
|
!DMA0_SIZE_LOW_REG = $4305 ; DMA Size Registers (Low)
|
||||||
!DMA0_SIZE_HIGH_REG = $4306 ; DMA Size Registers (Low)
|
!DMA0_SIZE_HIGH_REG = $4306 ; DMA Size Registers (Low)
|
||||||
|
|
||||||
!DMA_ENABLE_REG = $420B ; DMA Enable Register
|
|
||||||
|
|
||||||
macro DMA_VRAM(VRAM_HIGH,VRAM_LOW,SRC_BANK,SRC_HIGH,SRC_LOW,LENGTH_HIGH,LENGTH_LOW)
|
macro DMA_VRAM(VRAM_HIGH,VRAM_LOW,SRC_BANK,SRC_HIGH,SRC_LOW,LENGTH_HIGH,LENGTH_LOW)
|
||||||
PHA
|
PHA
|
||||||
; --- preserve DMA registers ----------------------------------------------------
|
; --- preserve DMA registers ----------------------------------------------------
|
||||||
@@ -57,7 +55,7 @@ macro DMA_VRAM(VRAM_HIGH,VRAM_LOW,SRC_BANK,SRC_HIGH,SRC_LOW,LENGTH_HIGH,LENGTH_L
|
|||||||
|
|
||||||
; start DMA on channel 0
|
; start DMA on channel 0
|
||||||
LDA.b #$01 ; channel select bitmask
|
LDA.b #$01 ; channel select bitmask
|
||||||
STA.w !DMA_ENABLE_REG
|
STA.w DMAENABLE
|
||||||
|
|
||||||
; --- restore DMA registers -----------------------------------------------------
|
; --- restore DMA registers -----------------------------------------------------
|
||||||
PLA : STA.w !DMA0_SIZE_HIGH_REG
|
PLA : STA.w !DMA0_SIZE_HIGH_REG
|
||||||
|
|||||||
@@ -357,6 +357,32 @@ PrepItemAnimation:
|
|||||||
LDA.b FrameCounter : AND.b #$30 : LSR #4 : STA.w SpriteDirectionTable, X
|
LDA.b FrameCounter : AND.b #$30 : LSR #4 : STA.w SpriteDirectionTable, X
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
WaitForNewVBlank:
|
||||||
|
LDA.b #$00 : STA.w NMITIMEN ; Disable interrupts
|
||||||
|
- LDA.w RDNMI : BMI - ; Wait until v-blank is over
|
||||||
|
- LDA.w RDNMI : BPL - ; Wait until v-blank starts
|
||||||
|
LDA.b #$80 : STA.w NMITIMEN
|
||||||
|
RTL
|
||||||
|
|
||||||
|
TransferCommonToVRAM:
|
||||||
|
PHP
|
||||||
|
REP #$21
|
||||||
|
SEP #$10
|
||||||
|
|
||||||
|
LDA.w #BigDecompressionBuffer+$2000
|
||||||
|
LDX.b #BigDecompressionBuffer>>16
|
||||||
|
STA.w $4302
|
||||||
|
STX.w $4304
|
||||||
|
|
||||||
|
LDX.b #$80 : STX.w $2115
|
||||||
|
LDA.w #$1801 : STA.w $4300
|
||||||
|
LDA.w #$1000 : STA.w $4305
|
||||||
|
LDA.w #$4800 : STA.w $2116
|
||||||
|
LDX.b #$01 : STX.w DMAENABLE
|
||||||
|
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
|
|
||||||
pushpc
|
pushpc
|
||||||
; fix Arghuss/Zora splash graphics
|
; fix Arghuss/Zora splash graphics
|
||||||
org $868595
|
org $868595
|
||||||
|
|||||||
@@ -833,7 +833,8 @@ RTL
|
|||||||
SetTheSceneFix:
|
SetTheSceneFix:
|
||||||
STZ.b $6C
|
STZ.b $6C
|
||||||
JSL InitializeMirrorHDMA
|
JSL InitializeMirrorHDMA
|
||||||
JSL LoadCommonSprites_long
|
JSL WaitForNewVBlank
|
||||||
|
JSL TransferCommonToVRAM
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
pushpc
|
pushpc
|
||||||
|
|||||||
Reference in New Issue
Block a user