A rather simple step, remember the story page? Now the next chapter text has been put in place, as well as a cool off text after beating the first boss.
Analog to the ShowChapter routine we add a ShowChapterEnd routine.
!zone ShowChapterEnd
ShowChapterEnd
;clear screen
lda #32
ldy #1
jsr ClearScreen
jsr ResetObjects
ldy CHAPTER
lda CHAPTER_END_PAGES_LO,y
sta ZEROPAGE_POINTER_1
lda CHAPTER_END_PAGES_HI,y
sta ZEROPAGE_POINTER_1 + 1
lda #0
sta VIC_SPRITE_ENABLE
sta VIC_SPRITE_X_EXTEND
sta SPRITE_POS_X_EXTEND
lda #1
sta PARAM1
lda #1
sta PARAM2
jsr DisplayText
jmp StoryLoop
The StoryLoop routine is a part of the original ShowChapter routine doing the car movement and wait for button part. We simply reuse the code.
At the .GotoNextLevel label we add this to actually call the new code.
lda LEVEL_NR
cmp #10
beq .ShowStory
cmp #21
beq .ShowStory
jmp .NoStory
.ShowStory
jsr ShowChapterEnd
inc CHAPTER
jsr ShowChapter
pla
pla
lda #$0b
sta VIC_CONTROL_MODE
jsr StartLevel
inc LEVEL_NR
jsr BuildScreen
jsr CopyLevelToBackBuffer
jsr DisplayGetReady
lda #$1b
sta VIC_CONTROL_MODE
jmp DisplayScoreDisplay
.NoStory
Have fun!