Skip to content
This repository was archived by the owner on Sep 21, 2025. It is now read-only.

Commit de22bc8

Browse files
committed
GBCompo demo v1.3
1 parent 6e1813a commit de22bc8

4 files changed

Lines changed: 299 additions & 73 deletions

File tree

Engine/Player.asm

Lines changed: 291 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ Player_AnimPointer:: dw ; pointer to current animation sequence
1919
Player_AnimTimer:: db ; time until next animation frame is displayed (if -1, frame will be displayed indefinitely)
2020
Player_CurrentFrame:: db ; current animation frame being displayed
2121

22+
StageClear_Offset1:: db
23+
StageClear_Offset2:: db
24+
StageClear_Offset3:: db
25+
StageClear_Offset4:: db
26+
StageClear_Offset5:: db
27+
StageClear_Delay2:: db
28+
StageClear_Delay3:: db
29+
StageClear_Delay4:: db
30+
StageClear_Delay5:: db
31+
2232
PlayerRAM_End:
2333
; the following are part of the player RAM but are not to be cleared after each level
2434
Player_CoinCount:: dw
@@ -363,9 +373,9 @@ ProcessPlayer:
363373
jp c,.xMoveDone
364374
or b
365375
ld [Engine_CurrentScreen],a
366-
jr .xMoveDone
376+
jp .xMoveDone
367377
:
368-
jr nc,.xMoveDone
378+
jp nc,.xMoveDone
369379
; Right edge crosses, increment current screen
370380
ld a,[Engine_CurrentScreen]
371381
and $30
@@ -384,17 +394,283 @@ ProcessPlayer:
384394
ld e,a
385395
pop af
386396
ld a,e
387-
jr nz,.notvictory
397+
jp nz,.notvictory
388398
ld hl,Player_MovementFlags
389399
set bPlayerVictory,[hl]
390400
ld a,1
391401
ld [Engine_LockCamera],a
392402
ld a,MUS_STAGE_CLEAR
393403
farcall DS_Init
404+
call EndSprites
405+
406+
ldfar hl,StageClearTiles
407+
ld a,$20
394408
ld b,0
395-
: halt
409+
call LoadSpriteTiles
410+
xor a
411+
ld [StageClear_Offset1],a
412+
ld [StageClear_Offset2],a
413+
ld [StageClear_Offset3],a
414+
ld [StageClear_Offset4],a
415+
ld [StageClear_Offset5],a
416+
ld b,a
417+
ld a,6
418+
ld [StageClear_Delay2],a
419+
add 6
420+
ld [StageClear_Delay3],a
421+
add 6
422+
ld [StageClear_Delay4],a
423+
add 6
424+
ld [StageClear_Delay5],a
425+
.stageclearloop
426+
halt
427+
push bc
428+
429+
; process "STAGE CLEAR" card
430+
call BeginSprites
431+
432+
433+
ld a,[sys_CurrentFrame]
434+
call .getYSine
435+
ldfar hl,StageClear_Scroll1
436+
ld b,$20 ; S
437+
ld c,%00001000
438+
ld a,[StageClear_Offset1]
439+
add l
440+
ld l,a
441+
ld a,[hl]
442+
ld e,a
443+
call AddSprite
444+
445+
446+
ld a,[sys_CurrentFrame]
447+
add 8
448+
call .getYSine
449+
ld hl,StageClear_Scroll2
450+
ld b,$22 ; T
451+
ld c,%00001000
452+
ld a,[StageClear_Offset2]
453+
add l
454+
ld l,a
455+
ld a,[hl]
456+
ld e,a
457+
call AddSprite
458+
459+
ld a,[sys_CurrentFrame]
460+
add 16
461+
call .getYSine
462+
ld hl,StageClear_Scroll3
463+
ld b,$24 ; A
464+
ld c,%00001000
465+
ld a,[StageClear_Offset3]
466+
add l
467+
ld l,a
468+
ld a,[hl]
469+
ld e,a
470+
call AddSprite
471+
472+
ld a,[sys_CurrentFrame]
473+
add 24
474+
call .getYSine
475+
ld hl,StageClear_Scroll4
476+
ld b,$26 ; G
477+
ld c,%00001000
478+
ld a,[StageClear_Offset4]
479+
add l
480+
ld l,a
481+
jr nc,:+
482+
inc h
483+
: ld a,[hl]
484+
ld e,a
485+
call AddSprite
486+
487+
ld a,[sys_CurrentFrame]
488+
add 32
489+
call .getYSine
490+
ld hl,StageClear_Scroll5
491+
ld b,$28 ; E
492+
ld c,%00001000
493+
ld a,[StageClear_Offset5]
494+
add l
495+
ld l,a
496+
ld a,[hl]
497+
ld e,a
498+
call AddSprite
499+
500+
ld a,[sys_CurrentFrame]
501+
add 32
502+
call .getYSine2
503+
ldfar hl,StageClear_Scroll1
504+
ld b,$2e ; R
505+
ld c,%00001000
506+
ld a,[StageClear_Offset1]
507+
add l
508+
ld l,a
509+
ld a,[hl]
510+
ld e,a
511+
ld a,SCRN_X+6
512+
sub e
513+
ld e,a
514+
call AddSprite
515+
516+
517+
ld a,[sys_CurrentFrame]
518+
add 24
519+
call .getYSine2
520+
ld hl,StageClear_Scroll2
521+
ld b,$24 ; A
522+
ld c,%00001000
523+
ld a,[StageClear_Offset2]
524+
add l
525+
ld l,a
526+
ld a,[hl]
527+
ld e,a
528+
ld a,SCRN_X+6
529+
sub e
530+
ld e,a
531+
call AddSprite
532+
533+
ld a,[sys_CurrentFrame]
534+
add 16
535+
call .getYSine2
536+
ld hl,StageClear_Scroll3
537+
ld b,$28 ; E
538+
ld c,%00001000
539+
ld a,[StageClear_Offset3]
540+
add l
541+
ld l,a
542+
ld a,[hl]
543+
ld e,a
544+
ld a,SCRN_X+6
545+
sub e
546+
ld e,a
547+
call AddSprite
548+
549+
ld a,[sys_CurrentFrame]
550+
add 8
551+
call .getYSine2
552+
ld hl,StageClear_Scroll4
553+
ld b,$2c ; L
554+
ld c,%00001000
555+
ld a,[StageClear_Offset4]
556+
add l
557+
ld l,a
558+
jr nc,:+
559+
inc h
560+
: ld a,[hl]
561+
ld e,a
562+
ld a,SCRN_X+6
563+
sub e
564+
ld e,a
565+
call AddSprite
566+
567+
ld a,[sys_CurrentFrame]
568+
call .getYSine2
569+
ld hl,StageClear_Scroll5
570+
ld b,$2a ; C
571+
ld c,%00001000
572+
ld a,[StageClear_Offset5]
573+
add l
574+
ld l,a
575+
ld a,[hl]
576+
ld e,a
577+
ld a,SCRN_X+6
578+
sub e
579+
ld e,a
580+
call AddSprite
581+
jr :+
582+
583+
.getYSine:
584+
add a
585+
add a
586+
call GetSine
587+
resbank
588+
ld a,d
589+
sra a ; /2
590+
sra a ; /4
591+
sra a ; /8
592+
sra a ; /16
593+
sra a ; /32
594+
sra a ; /64
595+
add 56+16
596+
ld d,a
597+
ret
598+
599+
.getYSine2:
600+
add a
601+
add a
602+
call GetSine
603+
resbank
604+
ld a,e
605+
sra a ; /2
606+
sra a ; /4
607+
sra a ; /8
608+
sra a ; /16
609+
sra a ; /32
610+
sra a ; /64
611+
add 72+16
612+
ld d,a
613+
ret
614+
615+
; ========
616+
617+
; update offsets + delays
618+
:
619+
ld a,[StageClear_Offset1]
620+
inc a
621+
cp 64
622+
jr nc,:+
623+
ld [StageClear_Offset1],a
624+
:
625+
ld a,[StageClear_Delay2]
626+
dec a
627+
jr nz,:+
628+
ld [StageClear_Delay2],a
629+
ld a,[StageClear_Offset2]
630+
inc a
631+
cp 64
632+
jr nc,:+
633+
ld [StageClear_Offset2],a
634+
ld a,1
635+
: ld [StageClear_Delay2],a
636+
ld a,[StageClear_Delay3]
637+
dec a
638+
jr nz,:+
639+
ld [StageClear_Delay3],a
640+
ld a,[StageClear_Offset3]
641+
inc a
642+
cp 64
643+
jr nc,:+
644+
ld [StageClear_Offset3],a
645+
ld a,1
646+
: ld [StageClear_Delay3],a
647+
ld a,[StageClear_Delay4]
648+
dec a
649+
jr nz,:+
650+
ld [StageClear_Delay4],a
651+
ld a,[StageClear_Offset4]
652+
inc a
653+
cp 64
654+
jr nc,:+
655+
ld [StageClear_Offset4],a
656+
ld a,1
657+
: ld [StageClear_Delay4],a
658+
ld a,[StageClear_Delay5]
659+
dec a
660+
jr nz,:+
661+
ld [StageClear_Delay5],a
662+
ld a,[StageClear_Offset5]
663+
inc a
664+
cp 64
665+
jr nc,:+
666+
ld [StageClear_Offset5],a
667+
ld a,1
668+
: ld [StageClear_Delay5],a
669+
670+
pop bc
671+
396672
dec b
397-
jr nz,:-
673+
jp nz,.stageclearloop
398674
call PalFadeOutWhite
399675
; wait for fade to finish
400676
: halt
@@ -404,6 +680,7 @@ ProcessPlayer:
404680
405681
xor a
406682
ldh [rLCDC],a
683+
call ClearScreen
407684
ld a,[Engine_LevelID]
408685
inc a
409686
cp NUM_LEVELS
@@ -1465,3 +1742,12 @@ AnimatePlayer:
14651742
section "Player tiles",romx,align[8]
14661743
PlayerTiles:
14671744
incbin "GFX/PlayerTiles.2bpp"
1745+
1746+
; ================================
1747+
1748+
section "Stage clear sequence - Scroll data",romx,align[6]
1749+
StageClear_Scroll1: db 0,1,3,5,6,8,9,11,13,14,16,18,19,21,22,24,26,27,29,30,32,33,34,36,37,39,40,41,43,44,45,46,48,49,50,51,52,53,54,55,56,57,58,59,59,60,61,62,62,63,64,64,65,65,65,66,66,66,67,67,67,67,67,67,68
1750+
StageClear_Scroll2: db 0,1,3,5,7,9,11,12,14,16,18,20,22,23,25,27,29,30,32,34,35,37,39,40,42,43,45,46,48,49,51,52,53,55,56,57,58,59,61,62,63,64,65,66,67,67,68,69,70,70,71,72,72,73,73,74,74,74,75,75,75,75,75,75,76
1751+
StageClear_Scroll3: db 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,35,37,39,41,43,44,46,48,50,51,53,54,56,57,59,60,62,63,64,66,67,68,69,70,72,73,74,75,75,76,77,78,79,79,80,80,81,81,82,82,83,83,83,83,83,83,84
1752+
StageClear_Scroll4: db 0,2,4,6,9,11,13,15,17,20,22,24,26,28,30,33,35,37,39,41,43,45,47,49,51,52,54,56,58,60,61,63,65,66,68,69,71,72,73,75,76,77,78,80,81,82,83,84,84,85,86,87,88,88,89,89,90,90,91,91,91,91,91,91,92
1753+
StageClear_Scroll5: db 0,2,4,7,9,12,14,17,19,21,24,26,29,31,33,35,38,40,42,44,47,49,51,53,55,57,59,61,63,65,67,68,70,72,74,75,77,78,80,81,83,84,85,87,88,89,90,91,92,93,94,94,95,96,97,97,98,98,98,99,99,99,99,99,100

GFX/Sprites/StageClear.2bpp

256 Bytes
Binary file not shown.

GFX/Sprites/StageClear.inc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
; Rebound GB
2+
; Stage clear card sprite definitions
3+
4+
section "Sprite GFX - Stage clear card",romx
5+
StageClearTiles: incbin "GFX/Sprites/StageClear.2bpp"
6+
.end

0 commit comments

Comments
 (0)