Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vwait:
- ld a, (am_scrolling)
- cp 1
- jr nz, .noscroll
- call scrollScreenRight
- .noscroll:
- IRQBuffer: ds 5
- scroll_progress: ds 2, 0
- scroll_drawtarget: ds 2, 0
- scroll_inc: ds 1, 1
- am_scrolling: ds 1, 0
- rowbuffer: ds 22, 0
- newscreen_ofs: ds 1, 0
- checkEdgeOfScreen:
- ld a, (SPRITE_OAM+1)
- cp 250
- ret c
- ld a, 3
- ld (P_MOVESTATE), a ; 3 = 'pause'
- ld a, 1
- ld (am_scrolling), a ; 1 = true, so do nothing except call scroll_screen
- ld hl, $1800
- ld (scroll_drawtarget), hl
- inc hl
- ld (scroll_progress), hl ; 1801
- scrollScreenRight:
- di
- ld hl, rowbuffer
- .loop:
- push hl ; rowbuffer to stack
- xor a ; not above 2k! :)
- out ($99), a ; bits 14-16
- ld a, 14+128 ; to r#14
- out ($99), a
- ld hl, (scroll_progress)
- ld a, l
- out ($99), a ; low byte
- ld a, h ; 1801
- out ($99), a ; bits 8-13, read
- in a, ($98)
- pop bc ; rowbuffer to bc
- push hl ; progress to stack
- push bc ; rowbuffer to stack
- pop hl ; rowbuffer to hl
- ld (hl), a ; first tile done: to rowbuffer
- pop hl ; progress to hl
- push bc ; rowbuffer to stack
- ld bc, $20
- add hl, bc
- ld a, h
- cp $1b
- jr z, .done
- ld (scroll_progress), hl
- pop hl
- inc hl
- jp .loop
- .done:
- ld (scroll_progress), hl ; 1b01
- ld hl, rowbuffer
- .loop2:
- ld de, (scroll_drawtarget) ; 1800
- xor a
- out ($99), a
- ld a, 14+128
- out ($99),a
- ld a, e
- out ($99), a
- ld a, d
- or %01000000
- out ($99), a
- ld a, (hl)
- out ($98), a
- inc hl
- push hl
- ld hl, $20
- add hl, de
- ld (scroll_drawtarget), hl
- ld a, h
- cp $1b
- jr z, .done2
- pop hl
- jp .loop2
- .done2:
- ld a, (scroll_inc)
- cp 32
- jr z, .shiftdone
- ld hl, $1800
- ld bc, (scroll_inc)
- add hl, bc
- ld (scroll_drawtarget), hl
- inc c
- ld a, c
- ld (scroll_inc), a
- inc hl
- ld (scroll_progress), hl
- jp scrollScreenRight
- .shiftdone:
- ld de, rowbuffer
- ld hl, screen2
- ld bc, (newscreen_ofs)
- push bc ; ---------------------------------v
- add hl, bc
- ld bc, 22
- .ldnewloop:
- push bc
- ld a, (hl)
- ld (de), a
- ld bc, $20
- add hl, bc
- inc de
- pop bc
- dec bc
- jr z, .ldnewloop
- pop hl ; ---------------------------------^
- inc hl
- ld (newscreen_ofs), hl
- ld de, rowbuffer
- ld h, $18 + $40
- ld l, $31
- .newrowdrawloop:
- push hl
- xor a
- out ($99), a
- ld a, 128+14
- out ($99), a
- ld a, l
- out ($99), a
- ld a, h
- out ($99), a
- push de
- pop hl
- ld a, (hl)
- out ($98), a
- ld bc, $20
- pop hl
- inc de
- ld a, h
- cp $5b
- jr nz, .newrowdrawloop
- ei
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement