mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-29 00:31:52 +00:00
262 lines
4.2 KiB
ArmAsm
262 lines
4.2 KiB
ArmAsm
; Display the TFV title screen
|
|
;
|
|
; this is the opener, title screen, new game creation, and load game code
|
|
|
|
.include "zp.inc"
|
|
.include "hardware.inc"
|
|
.include "common_defines.inc"
|
|
|
|
;================================
|
|
; Clear screen and setup graphics
|
|
;================================
|
|
|
|
jsr HOME
|
|
bit PAGE0 ; set page 0
|
|
bit LORES ; Lo-res graphics
|
|
bit TEXTGR ; mixed gr/text mode
|
|
bit SET_GR ; set graphics
|
|
|
|
lda #0
|
|
sta DISP_PAGE
|
|
lda #4
|
|
sta DRAW_PAGE
|
|
|
|
;===================================
|
|
; Clear top/bottom of page 0 and 1
|
|
;===================================
|
|
|
|
jsr clear_screens
|
|
|
|
;==========================
|
|
; Do Opening
|
|
;==========================
|
|
|
|
jsr opening
|
|
|
|
;======================
|
|
; show the title screen
|
|
;======================
|
|
|
|
; Title Screen
|
|
|
|
title_screen:
|
|
|
|
;===========================
|
|
; Clear both bottoms
|
|
|
|
jsr clear_bottoms
|
|
|
|
;=============================
|
|
; Load title
|
|
|
|
lda #<(title_lzsa)
|
|
sta getsrc_smc+1
|
|
lda #>(title_lzsa)
|
|
sta getsrc_smc+2
|
|
|
|
lda #$0c
|
|
|
|
jsr decompress_lzsa2_fast
|
|
|
|
;=================================
|
|
; copy to both pages
|
|
|
|
jsr gr_copy_to_current
|
|
jsr page_flip
|
|
jsr gr_copy_to_current
|
|
|
|
lda #20
|
|
sta YPOS
|
|
lda #20
|
|
sta XPOS
|
|
|
|
|
|
;=================================
|
|
; title menu loop
|
|
;=================================
|
|
|
|
lda #0
|
|
sta menu_offset
|
|
lda #2
|
|
sta menu_max
|
|
title_menu_loop:
|
|
lda #<title_menu
|
|
sta OUTL
|
|
lda #>title_menu
|
|
sta OUTH
|
|
|
|
jsr draw_menu
|
|
|
|
jsr page_flip
|
|
|
|
jsr increment_frame
|
|
|
|
lda MENU_RESULT
|
|
bmi title_menu_loop
|
|
|
|
; space was pressed!
|
|
|
|
beq title_new_game
|
|
cmp #1
|
|
beq title_load_game
|
|
bne title_load_credits
|
|
|
|
|
|
;=================================
|
|
; new game started!
|
|
;=================================
|
|
title_new_game:
|
|
|
|
;=================================
|
|
; enter name
|
|
|
|
jsr enter_name
|
|
|
|
|
|
;=================================
|
|
; display story
|
|
|
|
lda #<(tfv_story_lzsa)
|
|
sta getsrc_smc+1
|
|
lda #>(tfv_story_lzsa)
|
|
sta getsrc_smc+2
|
|
|
|
lda #$20
|
|
|
|
jsr decompress_lzsa2_fast
|
|
|
|
bit SET_GR
|
|
bit HIRES
|
|
lda #0
|
|
sta DRAW_PAGE
|
|
bit PAGE0
|
|
|
|
jsr clear_bottom
|
|
|
|
; continue the bottom of the "T"
|
|
|
|
lda #' '
|
|
sta $651 ; 20,1
|
|
|
|
lda #<story_string1
|
|
sta OUTL
|
|
lda #>story_string1
|
|
sta OUTH
|
|
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
|
|
; wait a bit before continuing
|
|
ldx #50
|
|
jsr long_wait
|
|
bit KEYRESET
|
|
|
|
jsr wait_until_keypressed
|
|
|
|
|
|
jsr move_and_print
|
|
jsr move_and_print
|
|
|
|
|
|
; wait a bit before continuing
|
|
ldx #50
|
|
jsr long_wait
|
|
bit KEYRESET
|
|
|
|
jsr wait_until_keypressed
|
|
|
|
|
|
|
|
; Initial starting values
|
|
lda #$1
|
|
sta HERO_LEVEL
|
|
|
|
lda #$01
|
|
sta HERO_HP_HI
|
|
lda #$00
|
|
sta HERO_HP_LO
|
|
|
|
lda #$20
|
|
sta HERO_MP
|
|
sta HERO_MP_MAX
|
|
|
|
lda #LOAD_FLYING
|
|
sta WHICH_LOAD
|
|
|
|
rts
|
|
|
|
;=================================
|
|
; load game! for now, debugging
|
|
;=================================
|
|
title_load_game:
|
|
|
|
jsr load_game
|
|
|
|
rts
|
|
|
|
;=================================
|
|
; load credits!
|
|
;=================================
|
|
title_load_credits:
|
|
lda #LOAD_CREDITS
|
|
sta WHICH_LOAD
|
|
|
|
rts
|
|
|
|
|
|
|
|
;===============================
|
|
; increment frame
|
|
;===============================
|
|
increment_frame:
|
|
inc FRAMEL
|
|
bne done_increment_frame
|
|
inc FRAMEH
|
|
done_increment_frame:
|
|
rts
|
|
|
|
;===============================================
|
|
; External modules
|
|
;===============================================
|
|
|
|
.include "tfv_opener.s"
|
|
|
|
.include "gr_pageflip.s"
|
|
.include "text_print.s"
|
|
.include "gr_fast_clear.s"
|
|
.include "gr_vlin.s"
|
|
.include "gr_copy.s"
|
|
.include "decompress_fast_v2.s"
|
|
.include "gr_offsets.s"
|
|
.include "wait_keypressed.s"
|
|
.include "tfv_textentry.s"
|
|
.include "long_wait.s"
|
|
|
|
.include "keyboard.s"
|
|
.include "joystick.s"
|
|
.include "draw_menu.s"
|
|
.include "load_game.s"
|
|
|
|
;===============================================
|
|
; Data
|
|
;===============================================
|
|
|
|
story_string1: ; 0123456789012345678901234567890123456789
|
|
.byte 2,20, "HE STORY SO FAR...",0
|
|
.byte 1,22,"THE EVIL DR. ROBO-KNEE HAS KIDNAPPED",0
|
|
.byte 1,23,"YOUR GUINEA PIG COMPANION.",0
|
|
|
|
story_string2: ; 0123456789012345678901234567890123456789
|
|
.byte 1,22,"YOU'VE TRACKED THEM TO THIS LARGE ",0
|
|
.byte 1,23,"BLUE PLANET. ",0
|
|
|
|
|
|
title_menu:
|
|
.byte 16,21,"NEW GAME",0
|
|
.byte 16,22,"LOAD GAME",0
|
|
.byte 16,23,"CREDITS",0
|
|
.byte 255
|
|
|
|
.include "graphics_title/tfv_title.inc"
|