;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;HDMA Multiple Background Scroll ;by Ice Man ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; lorom ;\ ROM is LoRom header ;| and has a header org $228000 ;/ Address to insert code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;RATS Tag Macro ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; macro RATS_start(id) db "STAR" dw RATS_Endcode-RATS_Startcode dw RATS_Endcode-RATS_Startcode^#$FFFF RATS_Startcode: endmacro macro RATS_end(id) RATS_Endcode: endmacro ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;HDMA Channel Settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; %RATS_start(0) REP #$20 ;\ Set processor 16 bit LDA #$0F02 ;| $4330 = $210F STA $4330 ;| $4331 = Mode 02 LDA #$9B00 ;| STA $4332 ;| Destination: $7F9B00 LDY #$7F ;| (low and high byte) STY $4334 ;| SEP #$20 ;/ Set processor 8 bit LDA #$08 ;\ Enable HDMA TSB $0D9F ;/ on channel 3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;HDMA Main Code ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LDX #$0C ;| Data size ($0C bytes) Loop: LDA Scroll_Table,X ;\ STA $7F9B00,X ;| Load scoll range DEX ;| table config BPL Loop ;/ Start: REP #$20 ;\ Set processor 16 bit LDA $1466 ;| Scroll 1st row STA $7F9B01 ;| at normal speed LSR A ;| Scroll 2nd row STA $7F9B04 ;| slower than 1st LSR A ;| Scroll 3rd row STA $7F9B07 ;| slower than 2nd LSR A ;| Scroll 4th row STA $7F9B0A ;| slower than 3rd LSR A ;| Scroll 5th row STA $7F9B0D ;| slower than 4th LSR A ;| Scroll 6th row STA $7F9B10 ;| slower than 5th LSR A ;| Scroll 7th row STA $7F9B13 ;| slower than 6th LSR A ;| Scroll 8th row STA $7F9B16 ;| slower than 7th LSR A ;| Scroll 9th row STA $7F9B19 ;| slower than 8th LSR A ;| Scroll 10th row STA $7F9B1C ;| slower than 9th LSR A ;| Scroll 11th row STA $7F9B1F ;| slower than 10th LSR A ;| Scroll 12th row STA $7F9B22 ;/ slower than 11th LSR A ;\ Scroll 13th row STA $7F9B03 ;| slower than 1st LSR A ;| Scroll 14th row STA $7F9B06 ;| slower than 2nd LSR A ;| Scroll 15th row STA $7F9B09 ;| slower than 3rd LSR A ;| Scroll 16th row STA $7F9B0C ;| slower than 4th SEP #$20 ;| Set processor 8 bit RTL ;/ Return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Table Settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Scroll_Table: db $20,$00,$00 ;\Cloud BG db $10,$00,$00 ;| db $0E,$00,$00 ;| db $12,$00,$00 ;| db $0E,$00,$00 ;| db $0E,$00,$00 ;| db $0A,$00,$00 ;| db $09,$00,$00 ;| db $09,$00,$00 ;| db $08,$00,$00 ;| db $06,$00,$00 ;| db $1C,$00,$00 ;/ db $0D,$00,$00 ;\Desert BG db $0B,$00,$00 ;| db $11,$00,$00 ;| db $24,$00,$00 ;/ %RATS_end(0)