I have some DMA code that appears to run correctly on a real SNES and the RetroDuo, but not the FC Twin.
I am using channel 1 (0-7) to do graphics updates during vblank. That part is working fine on all systems.
I am using channel 0 to do data transfer from ROM to WRAM, not necessarily in vblank. This is the part that doesn't work on the FC Twin. Putting WAI before the DMA code doesn't help, and neither does forcing vblank using $2100 before the DMA. My code seems pretty basic:
(16 bit X/Y, 8 bit A)
ldx destLo
stx $2181
lda #$00
sta $2183 ;;load the WRAM dest address
lda #$08
sta $4300 ;;no source increment
lda #$80
sta $4301 ;;dest = wram, $2180
lda sourcelow
sta $4302
lda sourcehigh
sta $4303
lda sourcebank
sta $4304
ldx sourceBytes16
stx $4305 ;;size in bytes
lda #$01
sta $420B ;Initiate transfer using channel 0
Any more ideas?
I am using channel 1 (0-7) to do graphics updates during vblank. That part is working fine on all systems.
I am using channel 0 to do data transfer from ROM to WRAM, not necessarily in vblank. This is the part that doesn't work on the FC Twin. Putting WAI before the DMA code doesn't help, and neither does forcing vblank using $2100 before the DMA. My code seems pretty basic:
Code:
(16 bit X/Y, 8 bit A)
ldx destLo
stx $2181
lda #$00
sta $2183 ;;load the WRAM dest address
lda #$08
sta $4300 ;;no source increment
lda #$80
sta $4301 ;;dest = wram, $2180
lda sourcelow
sta $4302
lda sourcehigh
sta $4303
lda sourcebank
sta $4304
ldx sourceBytes16
stx $4305 ;;size in bytes
lda #$01
sta $420B ;Initiate transfer using channel 0
Any more ideas?