I'm currently trying to convert my hack to sa-1. I got most of it to work but i have a problem with one hdma code i'm using in uberasm.
So this piece of code below adds some hdma-effect to the bg-color (which works fine) and adds some parallax scrolling to layer 3.
The parallax-effect works kinda but layer 3 flickers all the time.
I also have a layer 2 parallax scrolling in another level in my hack and that works just fine. It did work without SA-1. Is SA-1 not compatible with layer 3 parallax?
So this piece of code below adds some hdma-effect to the bg-color (which works fine) and adds some parallax scrolling to layer 3.
The parallax-effect works kinda but layer 3 flickers all the time.
I also have a layer 2 parallax scrolling in another level in my hack and that works just fine. It did work without SA-1. Is SA-1 not compatible with layer 3 parallax?
Code
init: ;\ This section is to be used in the INIT code of levelASM REP #$20 ; | LDA #$1142 ; | Use indeirect and mode 2 on register 2111 STA $4350 ; | 4350 = Mode, 4351 = Register LDA #ParallaxTable_214208723 ; | Address of HDMA table, get high and low byte STA $4352 ; | 4352 = Low-Byte of table, 4353 = High-Byte of table SEP #$20 ; | LDA.b #ParallaxTable_214208723>>16 ; | Address of HDMA table, get bank byte STA $4354 ; | 4354 = Bank-Byte of table LDA #$7F ; | Address of indirect table in RAM bank byte STA $4357 ; | 4354 = Bank-Byte of indirect table LDA #$20 ; | TSB $6D9F ; | Enable HDMA channel 5 RTL ;/ Return ;The Table takes up 6 bytes of the free RAM ;It ranges from $7F9E00 - $7F9E05 (both addresses included) main: ;\ This section is to be used in the MAIN code of levelASM REP #$20 ;/ 16 bit action starts here. (To load the x position of the BG) LDA $22 ;\ Load BG x Position LSR #3 ; | Multiplied by 0,125 STA $7F9E00 ;/ Store to FreeRAM for indirect HDMA LDA $22 ;\ Load BG x Position LSR #2 ; | Multiplied by 0,25 STA $7F9E02 ;/ Store to FreeRAM for indirect HDMA LDA $22 ;\ Load BG x Position LSR #1 ; | Multiplied by 0,5 STA $7F9E04 ;/ Store to FreeRAM for indirect HDMA LDA $22 ;\ Load BG x Position ASL #0 ; | Multiplied by 1 STA $7F9E06 ;/ Store to FreeRAM for indirect HDMA LDA $22 ;\ Load BG x Position STA $7F9E08 ;/ Store to FreeRAM for indirect HDMA SEP #$20 REP #$20 LDA #$3200 STA $4330 LDA #GreenTable STA $4332 LDY.b #GreenTable>>16 STY $4334 LDA #$3200 STA $4340 LDA #BlueTable STA $4342 LDY.b #BlueTable>>16 STY $4344 SEP #$20 LDA #$18 TSB $6D9F RTL ; Return GreenTable: ; db $08 : db $4C ; db $0B : db $4D ; db $0D : db $4E ; db $0C : db $4F ; db $0B : db $50 ; db $0D : db $51 ; db $0C : db $52 ; db $0D : db $53 ; db $0B : db $54 ; db $0C : db $55 ; db $0C : db $56 ; db $0D : db $57 ; db $0B : db $58 ; db $0C : db $59 ; db $0D : db $5A ; db $0C : db $5B ; db $0C : db $5C ; db $0B : db $5D ; db $0C : db $5E ; db $00 ; BlueTable: ; db $80 : db $9F ; db $60 : db $9F ; db $00 ; ParallaxTable_214208723: ;\ db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E00 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E02 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E04 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $01 : dw $9E06 ; | db $00 ;/