shuffle screen upgrade and interrupt driven update loop
This commit is contained in:
parent
7b354ea651
commit
a68812698b
@ -554,19 +554,19 @@ db $36, $00, $00, $00, $00, $00
|
||||
db $ff,$06,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$3f
|
||||
db $ff,$3f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe
|
||||
db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$88,$88,$50,$50,$a0,$a0
|
||||
db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$a0,$a0,$50,$50,$a0,$a0
|
||||
db $e0,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $ff,$ff,$7f,$7f,$1f,$1f,$07,$07,$03,$03,$00,$00,$00,$00,$00,$00
|
||||
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f
|
||||
db $fe,$fe,$fd,$fd,$fa,$fa,$f5,$f5,$ea,$ea,$d5,$d5,$ea,$ea,$d5,$d5
|
||||
db $fe,$fe,$fd,$fd,$fa,$fa,$fd,$fd,$fa,$fa,$d5,$d5,$fa,$fa,$f5,$f5
|
||||
db $a0,$a0,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$00,$00,$00,$00
|
||||
db $1f,$1f,$1f,$1f,$0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01
|
||||
db $dc,$dc,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa,$54,$54,$aa,$aa
|
||||
db $fc,$fc,$aa,$aa,$f4,$f4,$aa,$aa,$f4,$f4,$ea,$ea,$74,$74,$aa,$aa
|
||||
db $01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $dc,$dc,$aa,$aa,$54,$54,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa
|
||||
db $fc,$fc,$aa,$aa,$74,$74,$aa,$aa,$f4,$f4,$ea,$ea,$f4,$f4,$aa,$aa
|
||||
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01
|
||||
db $ee,$ee,$d5,$d5,$ea,$ea,$f5,$f5,$ea,$ea,$f5,$f5,$fa,$fa,$fd,$fd
|
||||
db $ee,$ee,$f5,$f5,$fa,$fa,$f5,$f5,$fa,$fa,$fd,$fd,$fa,$fa,$fd,$fd
|
||||
db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$00,$00,$80,$80,$40,$40
|
||||
db $01,$01,$03,$03,$03,$03,$07,$07,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f
|
||||
db $ff,$ff,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
|
Binary file not shown.
@ -16,19 +16,19 @@ KeyArtTiles:
|
||||
db $ff,$06,$ff,$03,$ff,$03,$ff,$03,$ff,$03,$ff,$07,$ff,$0f,$ff,$3f
|
||||
db $ff,$3f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$fe
|
||||
db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$88,$88,$50,$50,$a0,$a0
|
||||
db $ff,$ff,$fe,$fe,$fd,$fd,$ea,$ea,$d4,$d4,$a0,$a0,$50,$50,$a0,$a0
|
||||
db $e0,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $07,$07,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $ff,$ff,$7f,$7f,$1f,$1f,$07,$07,$03,$03,$00,$00,$00,$00,$00,$00
|
||||
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$7f,$7f,$3f,$3f
|
||||
db $fe,$fe,$fd,$fd,$fa,$fa,$f5,$f5,$ea,$ea,$d5,$d5,$ea,$ea,$d5,$d5
|
||||
db $fe,$fe,$fd,$fd,$fa,$fa,$fd,$fd,$fa,$fa,$d5,$d5,$fa,$fa,$f5,$f5
|
||||
db $a0,$a0,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$00,$00,$00,$00
|
||||
db $1f,$1f,$1f,$1f,$0f,$0f,$07,$07,$07,$07,$03,$03,$03,$03,$01,$01
|
||||
db $dc,$dc,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa,$54,$54,$aa,$aa
|
||||
db $fc,$fc,$aa,$aa,$f4,$f4,$aa,$aa,$f4,$f4,$ea,$ea,$74,$74,$aa,$aa
|
||||
db $01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
|
||||
db $dc,$dc,$aa,$aa,$54,$54,$aa,$aa,$d4,$d4,$aa,$aa,$d4,$d4,$aa,$aa
|
||||
db $fc,$fc,$aa,$aa,$74,$74,$aa,$aa,$f4,$f4,$ea,$ea,$f4,$f4,$aa,$aa
|
||||
db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01
|
||||
db $ee,$ee,$d5,$d5,$ea,$ea,$f5,$f5,$ea,$ea,$f5,$f5,$fa,$fa,$fd,$fd
|
||||
db $ee,$ee,$f5,$f5,$fa,$fa,$f5,$f5,$fa,$fa,$fd,$fd,$fa,$fa,$fd,$fd
|
||||
db $00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$00,$00,$80,$80,$40,$40
|
||||
db $01,$01,$03,$03,$03,$03,$07,$07,$07,$07,$0f,$0f,$1f,$1f,$1f,$1f
|
||||
db $ff,$ff,$fe,$fe,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
|
@ -808,8 +808,7 @@ DrawTile: ; b: y. c: x. a: part id. hl: location of sprite in OAM
|
||||
ld a, d
|
||||
add a, e
|
||||
ld [hl+], a
|
||||
ld a, 0
|
||||
ld [hl+], a
|
||||
inc hl
|
||||
ret
|
||||
|
||||
.skipThisTile
|
||||
|
@ -2,11 +2,26 @@
|
||||
;DEF vPreviousCardIndex EQU VARIABLES_START
|
||||
;def vBlocked equ vPreviousCardIndex + 1
|
||||
def vAnimationFrame EQU SCREEN_VARS_START
|
||||
def vAnimationState EQU vAnimationFrame+1
|
||||
def vCurrentAnimation EQU vAnimationState+1 ; 2 bytes
|
||||
def vState EQU vAnimationFrame+1
|
||||
println "vState is ", vState
|
||||
def vCurrentAnimation EQU vState+1 ; 2 bytes
|
||||
def vShuffleIndex equ vCurrentAnimation+2
|
||||
def vShuffleTime equ vShuffleIndex+1 ; 2 bytes
|
||||
|
||||
def S_Center = 0
|
||||
def S_RightOut = 1
|
||||
def S_Right = 2
|
||||
def S_RightIn = 3
|
||||
def S_LeftOut = 4
|
||||
def S_Left = 5
|
||||
def S_LeftIn = 6
|
||||
def S_UpOut = 7
|
||||
def S_Up = 8
|
||||
def S_UpIn = 9
|
||||
def S_DownOut = 10
|
||||
def S_Down = 11
|
||||
def S_DownIn = 12
|
||||
|
||||
ScreenShuffle:
|
||||
dw ShuffleSetup
|
||||
dw ShuffleUpdate
|
||||
@ -21,40 +36,33 @@ ShuffleSetup:
|
||||
|
||||
ld a, 0
|
||||
ld [vAnimationFrame], a
|
||||
ld [vAnimationState], a
|
||||
|
||||
ld hl, .asyncTask
|
||||
call Async_Spawn_HL
|
||||
ret
|
||||
.asyncTask
|
||||
ld a, S_Center
|
||||
ld [vState], a
|
||||
|
||||
ld a, LOW(ShuffleAnimationRight)
|
||||
ld [vCurrentAnimation], a
|
||||
ld a, HIGH(ShuffleAnimationRight)
|
||||
ld [vCurrentAnimation+1], a
|
||||
|
||||
ld hl, .asyncTask
|
||||
call Async_Spawn_HL
|
||||
|
||||
ld hl, ZEROES
|
||||
ld de, MY_OAM
|
||||
ld bc, $100
|
||||
call CopyRangeUnsafe
|
||||
|
||||
ld de, SAFE_DMA_LOCATION
|
||||
ld a, HIGH(ZEROES)
|
||||
call RunDMA
|
||||
|
||||
ld hl, Shuffle.UITilemap ; origin
|
||||
ld de, $9800 ; destination
|
||||
call CopyRange
|
||||
ret
|
||||
.asyncTask
|
||||
ld hl, ONES ; origin
|
||||
ld de, _SCRN0 ; destination
|
||||
ld b, 18 ; height
|
||||
ld c, 20 ; width
|
||||
call CopyTilesToMapUnsafe
|
||||
|
||||
ld hl, Shuffle.UITileData
|
||||
ld de, $9000 + VARIABLE_TILES_START*16
|
||||
ld bc, Shuffle.UITileDataEnd - Shuffle.UITileData
|
||||
call CopyRangeUnsafe
|
||||
call CopyTilesToMap
|
||||
|
||||
|
||||
; manually drawing the Big Card
|
||||
ld hl, $9800 + $20*5 + 7
|
||||
; manually drawing the Big Card
|
||||
.drawBigCard
|
||||
ld hl, _SCRN0 + 32*5 + 8
|
||||
ld a, VARIABLE_TILES_START
|
||||
ld [hl+], a
|
||||
inc a
|
||||
@ -127,41 +135,30 @@ ShuffleSetup:
|
||||
ld [hl+], a
|
||||
inc a
|
||||
ld [hl+], a
|
||||
|
||||
ld hl, Shuffle.UITileData
|
||||
ld de, $9000 + VARIABLE_TILES_START*16
|
||||
ld bc, Shuffle.UITileDataEnd - Shuffle.UITileData
|
||||
call CopyRange
|
||||
|
||||
ret
|
||||
|
||||
ShuffleUpdate:
|
||||
; incrrement vShuffleTime so we can use it for seeding RNG
|
||||
ld hl, vShuffleTime
|
||||
ld a, [rDELTAT]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
add a, b
|
||||
ld [hl+], a ; inc hl to get high byte
|
||||
ld a, [hl]
|
||||
adc a, 0
|
||||
ld [hl], a ; this is addinig rDELTAT to vShuffleTime so we can use it for
|
||||
; seeding the rng
|
||||
|
||||
call IncrementTimer
|
||||
|
||||
ld hl, vTime
|
||||
ld a, [rDELTAT]
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
add a, b
|
||||
ld [hl+], a ; inc hl to get high byte
|
||||
ld a, [hl]
|
||||
adc a, 0
|
||||
ld [hl], a ; increment time. when the 16bit time register is greater
|
||||
; than 4096 ($10_00) then one second has passed. so that's satisfied when
|
||||
; vTime+1 is equal to or greater than $10
|
||||
call IncrementTimer
|
||||
|
||||
ld a, [hl]
|
||||
ld a, [vTime+1]
|
||||
cp a, $01
|
||||
jp c, .doneTimer ; if the timer is less than $0100, skip to end
|
||||
|
||||
;otherwise reset the timer
|
||||
ld a, 0
|
||||
ld [hl-], a
|
||||
ld [hl], a
|
||||
ld [vTime], a
|
||||
ld [vTime+1], a
|
||||
|
||||
ld hl, SquaresTiles
|
||||
ld a, [vFrameCountSquares]
|
||||
@ -171,78 +168,184 @@ ShuffleUpdate:
|
||||
|
||||
.doneTimer
|
||||
|
||||
ld hl, rMYBTNP
|
||||
|
||||
ld a, 0
|
||||
cp a, [hl]
|
||||
jr z, .noButtons
|
||||
ld a, [rMYBTNP]
|
||||
cp a, 0
|
||||
jr z, .doneWithButtons
|
||||
ld a, [rLFSR]
|
||||
ld [rLFSR+1], a ; lfsr = (lfsr << 8) + (vShuffleTime & $ff)
|
||||
ld a, [vShuffleTime]
|
||||
ld [rLFSR], a
|
||||
|
||||
.noButtons
|
||||
|
||||
; check for B button press and change scene
|
||||
ld hl, rMYBTNP
|
||||
bit 4, [hl]
|
||||
jp z, .doneWithB
|
||||
ld hl, ScreenMainMenu
|
||||
call ChangeScene
|
||||
ret
|
||||
.doneWithB
|
||||
bit 0, [hl]
|
||||
jp z, .doneWithRight
|
||||
|
||||
ld a, 1
|
||||
ld [vAnimationState], a
|
||||
ld a, 0
|
||||
ld [vAnimationFrame], a
|
||||
|
||||
ld a, LOW(ShuffleAnimationRight)
|
||||
ld [vCurrentAnimation], a
|
||||
ld a, HIGH(ShuffleAnimationRight)
|
||||
ld [vCurrentAnimation+1], a
|
||||
|
||||
call DoSomeShuffling
|
||||
.doneWithRight
|
||||
bit 1, [hl]
|
||||
jp z, .doneWithLeft
|
||||
|
||||
ld a, 1
|
||||
ld [vAnimationState], a
|
||||
ld a, 0
|
||||
ld [vAnimationFrame], a
|
||||
|
||||
ld a, LOW(ShuffleAnimationRightReturn)
|
||||
ld [vCurrentAnimation], a
|
||||
ld a, HIGH(ShuffleAnimationRightReturn)
|
||||
ld [vCurrentAnimation+1], a
|
||||
.doneWithLeft
|
||||
call ShuffleButtonHandler
|
||||
.doneWithButtons
|
||||
|
||||
;animation logic!
|
||||
ld a, [vCurrentAnimation]
|
||||
ld l, a
|
||||
ld a, [vCurrentAnimation+1]
|
||||
ld h, a ; fetch current animation
|
||||
|
||||
ld a, [vAnimationState]
|
||||
or a, a
|
||||
jp z, .doneWithAnimation
|
||||
call ShufflePickAnimation
|
||||
|
||||
ld a, [vAnimationFrame]
|
||||
inc a
|
||||
cp a, [hl]
|
||||
jp nz, .animNotDone
|
||||
dec a
|
||||
ld [vAnimationFrame], a
|
||||
ld a, 0
|
||||
ld [vAnimationState], a
|
||||
cp a, [hl]
|
||||
call z, ShuffleAdvanceState
|
||||
|
||||
call ShufflePickAnimation
|
||||
ld a, [vAnimationFrame]
|
||||
.animNotDone
|
||||
call ArrayClampLooping
|
||||
call ArrayClamp
|
||||
ld [vAnimationFrame], a
|
||||
|
||||
.doneWithAnimation
|
||||
inc hl
|
||||
call ShufflePickAnimation
|
||||
|
||||
call ShuffleAnimate
|
||||
|
||||
ret
|
||||
|
||||
ShuffleButtonHandler:
|
||||
ld a, [vState]
|
||||
cp a, S_Center
|
||||
jp z, CenterButtonHandler
|
||||
|
||||
ld a, [vState]
|
||||
cp a, S_Right
|
||||
jp z, RightButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_RightOut
|
||||
jp z, RightButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_RightIn
|
||||
jp z, CenterButtonHandler
|
||||
|
||||
ld a, [vState]
|
||||
cp a, S_Left
|
||||
jp z, LeftButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_LeftOut
|
||||
jp z, LeftButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_LeftIn
|
||||
jp z, CenterButtonHandler
|
||||
|
||||
ld a, [vState]
|
||||
cp a, S_Up
|
||||
jp z, UpButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_UpOut
|
||||
jp z, UpButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_UpIn
|
||||
jp z, CenterButtonHandler
|
||||
|
||||
ld a, [vState]
|
||||
cp a, S_Down
|
||||
jp z, DownButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_DownOut
|
||||
jp z, DownButtonHandler
|
||||
ld a, [vState]
|
||||
cp a, S_DownIn
|
||||
jp z, CenterButtonHandler
|
||||
|
||||
ret
|
||||
|
||||
CenterButtonHandler:
|
||||
call DoSomeShuffling
|
||||
|
||||
ld hl, rMYBTNP
|
||||
: bit 0, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_RightOut
|
||||
ld [vState], a
|
||||
: bit 1, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_LeftOut
|
||||
ld [vState], a
|
||||
: bit 2, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_UpOut
|
||||
ld [vState], a
|
||||
: bit 3, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_DownOut
|
||||
ld [vState], a
|
||||
: ret
|
||||
|
||||
RightButtonHandler:
|
||||
ld hl, rMYBTNP
|
||||
: bit 1, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_RightIn
|
||||
ld [vState], a
|
||||
: ret
|
||||
|
||||
LeftButtonHandler:
|
||||
ld hl, rMYBTNP
|
||||
: bit 0, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_LeftIn
|
||||
ld [vState], a
|
||||
: ret
|
||||
|
||||
UpButtonHandler:
|
||||
ld hl, rMYBTNP
|
||||
: bit 3, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_UpIn
|
||||
ld [vState], a
|
||||
: ret
|
||||
|
||||
DownButtonHandler:
|
||||
ld hl, rMYBTNP
|
||||
: bit 2, [hl]
|
||||
jp z, :+
|
||||
|
||||
ld a, S_DownIn
|
||||
ld [vState], a
|
||||
: ret
|
||||
|
||||
|
||||
|
||||
ShuffleAdvanceState:
|
||||
ld a, [vState]
|
||||
ld hl, ShuffleNextStates + 1
|
||||
ld b, 0
|
||||
ld c, a
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
ld [vState], a
|
||||
ld a, 0
|
||||
ld [vAnimationFrame], a
|
||||
ret
|
||||
ShufflePickAnimation:
|
||||
ld a, [vState]
|
||||
ld b, 0
|
||||
ld c, a
|
||||
ld hl, ShuffleAnimations + 1
|
||||
add hl, bc
|
||||
add hl, bc
|
||||
ld c, [hl]
|
||||
inc hl
|
||||
ld b, [hl]
|
||||
ld h, b
|
||||
ld l, c
|
||||
ret
|
||||
|
||||
ShuffleAnimate:
|
||||
; hl has to hold the address of the animation
|
||||
|
||||
inc hl
|
||||
ld b, 0
|
||||
ld a, [vAnimationFrame]
|
||||
ld c, a
|
||||
@ -250,27 +353,82 @@ ShuffleUpdate:
|
||||
add hl, bc ; two bytes per entry
|
||||
|
||||
; hl points to xy offsets
|
||||
ld a, 40+16
|
||||
add a, [hl]
|
||||
ld b, a
|
||||
ld b, [hl]
|
||||
inc hl
|
||||
ld a, 64+8
|
||||
add a, [hl]
|
||||
ld c, a
|
||||
ld c, [hl]
|
||||
ld a, 32
|
||||
ld e, a
|
||||
ld hl, $c000
|
||||
ld hl, MY_OAM
|
||||
call DrawWholeCard ; hl memory location, b y, c x, e width, d wiggle
|
||||
|
||||
ld a, [vState]
|
||||
cp a, S_RightIn
|
||||
jp z, HideSprites
|
||||
cp a, S_LeftIn
|
||||
jp z, HideSprites
|
||||
cp a, S_UpIn
|
||||
jp z, HideSprites
|
||||
cp a, S_DownIn
|
||||
jp z, HideSprites
|
||||
|
||||
call ShowSprites
|
||||
ret
|
||||
|
||||
HideSprites:
|
||||
ld hl, MY_OAM
|
||||
.testTile
|
||||
ld a, [hl]
|
||||
cp a, (2+4)*8 ; y < 5*8 => skip
|
||||
jp c, .goToNextTile
|
||||
cp a, (2+5+8)*8 ; y > (5+8)*8 => skip
|
||||
jp nc, .goToNextTile
|
||||
|
||||
inc hl
|
||||
ld a, [hl] ; x value
|
||||
dec hl
|
||||
cp a, (1+7)*8 ; x < 7*8 => skip
|
||||
jp c, .goToNextTile
|
||||
cp a, (1+12)*8 ; x > 12*8 => skip
|
||||
jp nc, .goToNextTile
|
||||
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
set OAMB_PRI, [hl]
|
||||
dec hl
|
||||
dec hl
|
||||
dec hl
|
||||
|
||||
.goToNextTile
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
ld a, $A0
|
||||
cp a, l
|
||||
jp nz, .testTile
|
||||
|
||||
ret
|
||||
|
||||
ShowSprites:
|
||||
ld hl, MY_OAM
|
||||
.loop
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
res OAMB_PRI, [hl]
|
||||
inc hl
|
||||
ld a, $A0
|
||||
cp a, l
|
||||
jp nz, .loop
|
||||
|
||||
ret
|
||||
|
||||
ShuffleDraw:
|
||||
ld de, SAFE_DMA_LOCATION ; safe bytes in hram for dma code to live at
|
||||
ld de, SAFE_DMA_LOCATION
|
||||
ld a, HIGH(MY_OAM)
|
||||
call RunDMA
|
||||
|
||||
; the card data is loaded asynchronously, initiated in CardReadUpdate
|
||||
|
||||
ld hl, SquaresTiles
|
||||
inc hl
|
||||
ld b, 0
|
||||
@ -283,10 +441,9 @@ ShuffleDraw:
|
||||
ld b, [hl]
|
||||
ld h, b
|
||||
ld l, c
|
||||
ld de, $8000+$100*16 + 1*16 ; tile number $101 is the sliding background
|
||||
ld de, _VRAM+$100*16 + 1*16 ; tile number $101 is the sliding background
|
||||
ld bc, (SquaresTileset8 - SquaresTileset7) / 8
|
||||
call CopyRangeUnsafeBy8s
|
||||
|
||||
|
||||
ret
|
||||
|
||||
@ -329,32 +486,63 @@ OneSwap: ; shuffles once and decrements vshuffleindex
|
||||
ret
|
||||
|
||||
|
||||
ShuffleAnimationRight:
|
||||
db 15, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15
|
||||
ShuffleAnimationRightReturn:
|
||||
db 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1
|
||||
|
||||
Shuffle.UITilemap:
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
db $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
|
||||
Shuffle.UITilemapEnd:
|
||||
ShuffleNextStates:
|
||||
db 13,
|
||||
db S_Center
|
||||
db S_Right ;def S_RightOut = 1
|
||||
db S_Right ; def S_Right = 2
|
||||
db S_Center ;def S_RightIn = 3
|
||||
db S_Left ;def S_LeftOut = 4
|
||||
db S_Left ;def S_Left = 5
|
||||
db S_Center ;def S_LeftIn = 6
|
||||
db S_Up ;def S_UpOut = 7
|
||||
db S_Up ;def S_Up = 8
|
||||
db S_Center ;def S_UpIn = 9
|
||||
db S_Down ;def S_DownOut = 10
|
||||
db S_Down ;def S_Down = 11
|
||||
db S_Center ;def S_DownIn = 12
|
||||
ShuffleAnimations:
|
||||
db 13,
|
||||
dw ShuffleAnimationNone ; def S_Center = 0
|
||||
dw ShuffleAnimationRightOut ;def S_RightOut = 1
|
||||
dw ShuffleAnimationRight ; def S_Right = 2
|
||||
dw ShuffleAnimationRightIn ;def S_RightIn = 3
|
||||
dw ShuffleAnimationLeftOut ;def S_LeftOut = 4
|
||||
dw ShuffleAnimationLeft ;def S_Left = 5
|
||||
dw ShuffleAnimationLeftIn ;def S_LeftIn = 6
|
||||
dw ShuffleAnimationUpOut ;def S_UpOut = 7
|
||||
dw ShuffleAnimationUp ;def S_Up = 8
|
||||
dw ShuffleAnimationUpIn ;def S_UpIn = 9
|
||||
dw ShuffleAnimationDownOut ;def S_DownOut = 10
|
||||
dw ShuffleAnimationDown ;def S_Down = 11
|
||||
dw ShuffleAnimationDownIn ;def S_DownIn = 12
|
||||
|
||||
ShuffleAnimationNone:
|
||||
db 1, 56, 72
|
||||
ShuffleAnimationRight:
|
||||
db 1, 56, 115
|
||||
ShuffleAnimationRightOut:
|
||||
db 9, 56, 72, 56, 80, 56, 88, 56, 96, 56, 103, 56, 108, 56, 112, 56, 114, 56, 115,
|
||||
ShuffleAnimationRightIn:
|
||||
db 8, 56, 115, 56, 104, 56, 96, 56, 88, 56, 80, 56, 76, 56, 73, 56, 72,
|
||||
ShuffleAnimationLeft:
|
||||
db 1, 56, 32
|
||||
ShuffleAnimationLeftOut:
|
||||
db 9, 56, 72, 56, 64, 56, 56, 56, 49, 56, 42, 56, 36, 56, 35, 56, 33, 56, 32,
|
||||
ShuffleAnimationLeftIn:
|
||||
db 8, 56, 32, 56, 40, 56, 49, 56, 57, 56, 62, 56, 67, 56, 71, 56, 72,
|
||||
ShuffleAnimationUp:
|
||||
db 1, -24, 72
|
||||
ShuffleAnimationUpOut:
|
||||
db 13, 56, 72, 48, 72, 40, 72, 32, 72, 24, 72, 16, 72, 8, 72, 0, 72, -7, 72, -14, 72, -18, 72, -23, 72, -24, 72
|
||||
ShuffleAnimationUpIn:
|
||||
db 10, 1, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 46, 72, 52, 72, 55, 72, 56, 72,
|
||||
ShuffleAnimationDown:
|
||||
db 1, 136, 72
|
||||
ShuffleAnimationDownOut:
|
||||
db 13, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 105, 72, 112, 72, 119, 72, 125, 72, 129, 72, 134, 72, 136, 72,
|
||||
ShuffleAnimationDownIn:
|
||||
db 12, 136, 72, 128, 72, 120, 72, 112, 72, 104, 72, 96, 72, 88, 72, 80, 72, 68, 72, 61, 72, 58, 72, 56, 72,
|
||||
Shuffle.UITileData:
|
||||
db $00,$ff,$7f,$ff,$7f,$ff,$60,$ff,$6f,$ff,$6d,$fa,$6a,$fd,$6d,$fa ; top-left
|
||||
db $00,$ff,$ff,$ff,$ff,$ff,$00,$ff,$ff,$ff,$55,$aa,$aa,$55,$55,$aa ; top-middle
|
||||
|
17
main.asm
17
main.asm
@ -267,12 +267,13 @@ Loop:
|
||||
ld a, b ; select buttons which were pressed this frame
|
||||
ld [rMYBTN], a ; save that as btn state
|
||||
|
||||
call SoundUpdate
|
||||
println "scene update is ", SCENE_UPDATE - 1
|
||||
call SCENE_UPDATE - 1 ; hope this takes not too many scanlines!
|
||||
|
||||
ld b, 144
|
||||
call AwaitLine
|
||||
|
||||
|
||||
println "scene draw is ", SCENE_DRAW - 1
|
||||
call SCENE_DRAW - 1 ; hope this takes fewer than 9 scanlines!
|
||||
println "scenee draw call is at ", @
|
||||
@ -283,6 +284,8 @@ println "scene draw is ", SCENE_DRAW - 1
|
||||
call AwaitLine
|
||||
|
||||
jp Loop
|
||||
|
||||
SoundUpdate:
|
||||
|
||||
ChangeScene: ; hl should be a pointer to, in sequence, setup update draw teardown
|
||||
;call SCENE_TEARDOWN - 1
|
||||
@ -336,6 +339,18 @@ ArrayClampLooping: ; loops a to be in the array, assuming hl points to the lengt
|
||||
dec a ; then set it to length-1
|
||||
:
|
||||
ret ; a is return value
|
||||
ArrayClamp:
|
||||
cp a, $FF
|
||||
jp nz, :+
|
||||
ld a, 0
|
||||
ret
|
||||
: cp a, [hl]
|
||||
ret c
|
||||
: ld a, [hl]
|
||||
dec a
|
||||
ret
|
||||
:
|
||||
|
||||
|
||||
PassList: ; hl has the address of a list. step past it.
|
||||
ld b, 0
|
||||
|
BIN
source.zip
BIN
source.zip
Binary file not shown.
Loading…
Reference in New Issue
Block a user