Jonny
Well-known member
I'm having a bit of trouble with sprites loading. The first CHR-RAM loads corrupted/garbage graphics but the other two load as they should. Does anyone have any ideas what this could be caused by?
This is the code I am using. Apart from omitting all the layouts I'm not using and picking a different layout for the bank switching I can't see that I've done anything different...
This is the code I am using. Apart from omitting all the layouts I'm not using and picking a different layout for the bank switching I can't see that I've done anything different...
Code:
doLoadScreen16:
SwitchCHRBank #$00
JSR doWaitFrame
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; DOUBLE MAIN WITH HUD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LDA tileLayout
CMP #%00000000
BEQ Load_MM
JMP Load_MMSS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Load_MM: ;; MAIN 1 ;;
LDA backgroundTilesToLoad
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad
AND #%00001111
STA tempB
LoadChrData tempA, #$10, #$00, #$60, BckCHRAddLo, BckCHRAddHi, tempB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LDA backgroundTilesToLoad+1 ;; MAIN 2 ;;
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad+1
AND #%00001111
STA tempB
LoadChrData tempA, #$16, #$00, #$60, BckCHRAddLo, BckCHRAddHi, tempB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HUD ;;
LoadChrData #$1E, #$1C, #$00, #$40, OtherChrTiles_Lo, OtherChrTiles_Hi, #$00
JMP doneLoadingChrs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; DOUBLE MAIN / 2 SCREEN SPECIFIC ;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Load_MMSS: ;; MAIN 1 ;;
;;
LDA #$00
STA tempj
MSSS_CHR_LOAD_LOOP:
;;
LDA backgroundTilesToLoad
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad
AND #%00001111
STA tempB
LoadChrData tempA, #$10, #$00, #$60, BckCHRAddLo, BckCHRAddHi, tempB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LDA backgroundTilesToLoad+1 ;; MAIN 2 ;;
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad+1
AND #%00001111
STA tempB
LoadChrData tempA, #$16, #$00, #$60, BckCHRAddLo, BckCHRAddHi, tempB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JSR doWaitFrame ;; SCREEN 1 ;;
LDA backgroundTilesToLoad+2
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad+2
AND #%00001111
STA tempB
LoadChrData tempA, #$1C, #$00, #$20, BckSSChrAddLo, BckSSChrAddHi, tempB
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JSR doWaitFrame ;; SCREEN 2 ;;
LDA backgroundTilesToLoad+3
LSR
LSR
LSR
LSR
CLC
ADC #$0F
STA tempA
LDA backgroundTilesToLoad+3
AND #%00001111
STA tempB
LoadChrData tempA, #$1E, #$00, #$20, BckSSChrAddLo, BckSSChrAddHi, tempB
;;
LDA userScreenByte7
BEQ +noAnimatedTiles
INC tempj
LDA tempj
CMP #$03
BEQ +noAnimatedTiles
SwitchCHRBank tempj
JMP MSSS_CHR_LOAD_LOOP
+noAnimatedTiles
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
doneLoadingChrs:
;;
SwitchCHRBank #$00
LDA #$00
STA tempj
Load_Sprite_CHR_Loop:
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; LOAD GAME OBJECT CHR AND SET MONSTER BANK ;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LoadChrData #$15, #$00, #$00, #$80, GameObjectCHRAddLo, GameObjectCHRAddHi, #$00
LDA monsterTableOffset
CMP #$08
BCC inMonsterBank0
LDA #$14
JMP gotMonsterBank
inMonsterBank0:
LDA #$13
gotMonsterBank:
STA temp
LoadChrData temp, #$08, #$00, #$80, MonsterAddressLo, MonsterAddressHi, monsterTableOffset
JSR doWaitFrame
;;
LDA userScreenByte7
BNE +hasAnimatedTiles
JMP +noAnimatedTiles
+hasAnimatedTiles
INC tempj
LDA tempj
CMP #$03
BEQ +loadAnimatedTiles
SwitchCHRBank tempj
JMP Load_Sprite_CHR_Loop
+loadAnimatedTiles
;;
SwitchCHRBank #$01
LoadChrData #$17, #$10, #$00, #$20, AnimTiles_Lo, AnimTiles_Hi, userScreenByte7
JSR doWaitFrame
INC userScreenByte7
SwitchCHRBank #$02
LoadChrData #$17, #$10, #$00, #$20, AnimTiles_Lo, AnimTiles_Hi, userScreenByte7
JSR doWaitFrame
;;
+noAnimatedTiles
SwitchCHRBank #$00
;;
RTS