mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-19 10:29:28 +00:00
tfv: work on name entry
This commit is contained in:
parent
9ccb26e740
commit
b44775d3eb
|
@ -108,5 +108,5 @@ music/battle_music.inc:
|
||||||
clean:
|
clean:
|
||||||
rm -f *~ TITLE.GR *.o *.lst TFV_CREDITS TFV_TITLE TFV_FLYING TFV_WORLD HELLO LOADER
|
rm -f *~ TITLE.GR *.o *.lst TFV_CREDITS TFV_TITLE TFV_FLYING TFV_WORLD HELLO LOADER
|
||||||
cd graphics_battle && make clean
|
cd graphics_battle && make clean
|
||||||
cd graphics_credits && ake clean
|
cd graphics_credits && make clean
|
||||||
cd music && make clean
|
cd music && make clean
|
||||||
|
|
|
@ -6,17 +6,46 @@
|
||||||
; also provide multiple load games
|
; also provide multiple load games
|
||||||
load_game:
|
load_game:
|
||||||
|
|
||||||
|
|
||||||
lda #$03
|
|
||||||
sta HERO_LEVEL
|
|
||||||
|
|
||||||
lda #$02
|
|
||||||
sta HERO_HP_HI
|
|
||||||
lda #$90
|
|
||||||
sta HERO_HP_LO
|
|
||||||
sta HERO_MP
|
|
||||||
sta HERO_MP_MAX
|
|
||||||
lda #LOAD_FLYING
|
lda #LOAD_FLYING
|
||||||
sta WHICH_LOAD
|
sta WHICH_LOAD
|
||||||
|
lda #$90
|
||||||
|
sta HERO_HP_LO
|
||||||
|
lda #$02
|
||||||
|
sta HERO_HP_HI
|
||||||
|
lda #$20
|
||||||
|
sta HERO_MP
|
||||||
|
sta HERO_MP_MAX
|
||||||
|
lda #3
|
||||||
|
sta HERO_LIMIT
|
||||||
|
lda #$03
|
||||||
|
sta HERO_LEVEL
|
||||||
|
lda #$50
|
||||||
|
sta HERO_XP
|
||||||
|
lda #$25
|
||||||
|
sta HERO_MONEY
|
||||||
|
lda #$00
|
||||||
|
sta HERO_INVENTORY
|
||||||
|
lda #'D'
|
||||||
|
sta HERO_NAME
|
||||||
|
lda #'E'
|
||||||
|
sta HERO_NAME1
|
||||||
|
lda #'A'
|
||||||
|
sta HERO_NAME2
|
||||||
|
lda #'T'
|
||||||
|
sta HERO_NAME3
|
||||||
|
lda #'E'
|
||||||
|
sta HERO_NAME4
|
||||||
|
lda #'R'
|
||||||
|
sta HERO_NAME5
|
||||||
|
lda #0
|
||||||
|
sta HERO_NAME6
|
||||||
|
lda #0
|
||||||
|
sta HERO_STATE
|
||||||
|
lda #25
|
||||||
|
sta HERO_STEPS
|
||||||
|
lda #00
|
||||||
|
sta TFV_X
|
||||||
|
sta TFV_Y
|
||||||
|
sta MAP_X
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -64,12 +64,14 @@ init_enemy:
|
||||||
sta ENEMY_X
|
sta ENEMY_X
|
||||||
sta ENEMY_DEAD
|
sta ENEMY_DEAD
|
||||||
|
|
||||||
lda #$50 ; BCD
|
; FIXME: lower
|
||||||
sta ENEMY_HP_LO
|
|
||||||
lda #$00 ; BCD
|
lda #$00 ; BCD
|
||||||
|
sta ENEMY_HP_LO
|
||||||
|
lda #$03 ; BCD
|
||||||
sta ENEMY_HP_HI
|
sta ENEMY_HP_HI
|
||||||
|
|
||||||
lda #$1 ; max HP is 100
|
lda #$3 ; max HP is 100
|
||||||
sta ENEMY_LEVEL
|
sta ENEMY_LEVEL
|
||||||
|
|
||||||
lda #30
|
lda #30
|
||||||
|
|
|
@ -1,84 +1,198 @@
|
||||||
enter_name:
|
enter_name:
|
||||||
|
|
||||||
jsr TEXT
|
jsr TEXT
|
||||||
jsr HOME
|
|
||||||
|
; zero out name
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
lda #0
|
||||||
|
zero_name_loop:
|
||||||
|
sta HERO_NAME,X
|
||||||
|
inx
|
||||||
|
cpx #8
|
||||||
|
bne zero_name_loop
|
||||||
|
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta NAMEX
|
||||||
|
sta XX
|
||||||
|
sta YY
|
||||||
|
|
||||||
|
name_loop:
|
||||||
|
; clear screen
|
||||||
|
lda #$A0
|
||||||
|
jsr clear_top_a
|
||||||
|
jsr clear_bottom
|
||||||
|
|
||||||
|
; print entry string at top
|
||||||
|
|
||||||
lda #>(enter_name_string)
|
lda #>(enter_name_string)
|
||||||
sta OUTH
|
sta OUTH
|
||||||
lda #<(enter_name_string)
|
lda #<(enter_name_string)
|
||||||
sta OUTL
|
sta OUTL
|
||||||
|
jsr move_and_print
|
||||||
|
|
||||||
jsr print_string
|
|
||||||
|
|
||||||
; zero out name
|
|
||||||
|
;=============================
|
||||||
|
; print current name + cursor
|
||||||
|
; on screen at 11,2?
|
||||||
|
|
||||||
|
; get pointer to line 2
|
||||||
|
lda gr_offsets+(2*2)
|
||||||
|
sta OUTL
|
||||||
|
lda gr_offsets+(2*2)+1
|
||||||
|
clc
|
||||||
|
adc DRAW_PAGE
|
||||||
|
sta OUTH
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
lda #0
|
ldy #11
|
||||||
zero_name_loop:
|
print_name_loop:
|
||||||
sta name,X
|
|
||||||
inx
|
|
||||||
cpx #8
|
|
||||||
bne zero_name_loop
|
|
||||||
|
|
||||||
name_loop:
|
|
||||||
|
|
||||||
jsr NORMAL
|
|
||||||
|
|
||||||
lda #11
|
|
||||||
sta CH ; HTAB 12
|
|
||||||
|
|
||||||
lda #2
|
|
||||||
jsr TABV ; VTAB 3
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
sty NAMEX
|
|
||||||
|
|
||||||
name_line:
|
|
||||||
cpy NAMEX
|
cpy NAMEX
|
||||||
bne name_notx
|
bne print_name_name
|
||||||
|
print_name_cursor:
|
||||||
lda #'+'
|
lda #'+'
|
||||||
jmp name_next
|
bne print_name_put_char ; bra
|
||||||
|
|
||||||
name_notx:
|
print_name_name:
|
||||||
lda NAMEL,Y
|
lda HERO_NAME,X
|
||||||
beq name_zero
|
bne print_name_char
|
||||||
|
print_name_zero:
|
||||||
|
lda #'_'+$80
|
||||||
|
bne print_name_put_char ; bra
|
||||||
|
|
||||||
|
print_name_char:
|
||||||
ora #$80
|
ora #$80
|
||||||
bne name_next
|
|
||||||
|
|
||||||
name_zero:
|
print_name_put_char:
|
||||||
lda #('_'+$80)
|
sta (OUTL),Y
|
||||||
name_next:
|
|
||||||
jsr COUT
|
done_print_name_loop:
|
||||||
lda #(' '+$80)
|
|
||||||
jsr COUT
|
inx
|
||||||
iny
|
iny
|
||||||
cpy #8
|
|
||||||
bne name_line
|
|
||||||
|
|
||||||
lda #7
|
|
||||||
sta CV
|
|
||||||
|
|
||||||
lda #('@'+$80)
|
|
||||||
sta CHAR
|
|
||||||
|
|
||||||
print_letters_loop:
|
|
||||||
lda #11
|
|
||||||
sta CH ; HTAB 12
|
|
||||||
jsr VTAB
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
print_letters_inner_loop:
|
|
||||||
lda CHAR
|
|
||||||
jsr COUT
|
|
||||||
inc CHAR
|
|
||||||
lda #(' '+$80)
|
|
||||||
jsr COUT
|
|
||||||
iny
|
iny
|
||||||
|
cpy #25
|
||||||
|
bne print_name_loop
|
||||||
|
|
||||||
cpy #$8
|
.if 0
|
||||||
bne print_letters_inner_loop
|
|
||||||
|
|
||||||
jsr wait_until_keypressed
|
for(yy=0;yy<8;yy++) {
|
||||||
|
basic_htab(12);
|
||||||
|
basic_vtab(yy*2+6);
|
||||||
|
for(xx=0;xx<8;xx++) {
|
||||||
|
if (yy<4) sprintf(tempst,"%c ",(yy*8)+xx+64);
|
||||||
|
else sprintf(tempst,"%c ",(yy*8)+xx);
|
||||||
|
|
||||||
|
if ((xx==cursor_x) && (yy==cursor_y)) basic_inverse();
|
||||||
|
else basic_normal();
|
||||||
|
|
||||||
|
basic_print(tempst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
basic_htab(12);
|
||||||
|
basic_vtab(22);
|
||||||
|
basic_normal();
|
||||||
|
|
||||||
|
if ((cursor_y==8) && (cursor_x<4)) basic_inverse();
|
||||||
|
basic_print(" DONE ");
|
||||||
|
basic_normal();
|
||||||
|
basic_print(" ");
|
||||||
|
if ((cursor_y==8) && (cursor_x>=4)) basic_inverse();
|
||||||
|
basic_print(" BACK ");
|
||||||
|
.endif
|
||||||
|
|
||||||
|
jsr get_keypress
|
||||||
|
bne done_enter_name
|
||||||
|
|
||||||
|
.if 0
|
||||||
|
while(1) {
|
||||||
|
ch=grsim_input();
|
||||||
|
|
||||||
|
if (ch==APPLE_UP) { // up
|
||||||
|
cursor_y--;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (ch==APPLE_DOWN) { // down
|
||||||
|
cursor_y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (ch==APPLE_LEFT) { // left
|
||||||
|
if (cursor_y==8) cursor_x-=4;
|
||||||
|
else cursor_x--;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (ch==APPLE_RIGHT) { // right
|
||||||
|
if (cursor_y==8) cursor_x+=4;
|
||||||
|
cursor_x++;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (ch==13) {
|
||||||
|
if (cursor_y==8) {
|
||||||
|
if (cursor_x<4) {
|
||||||
|
ch=27;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nameo[name_x]=0;
|
||||||
|
name_x--;
|
||||||
|
if (name_x<0) name_x=0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cursor_y<4) nameo[name_x]=(cursor_y*8)+
|
||||||
|
cursor_x+64;
|
||||||
|
else nameo[name_x]=(cursor_y*8)+cursor_x;
|
||||||
|
name_x++;
|
||||||
|
}
|
||||||
|
else if ((ch>32) && (ch<128)) {
|
||||||
|
nameo[name_x]=ch;
|
||||||
|
name_x++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name_x>7) name_x=7;
|
||||||
|
|
||||||
|
if (cursor_x<0) {
|
||||||
|
cursor_x=7;
|
||||||
|
cursor_y--;
|
||||||
|
}
|
||||||
|
if (cursor_x>7) {
|
||||||
|
cursor_x=0;
|
||||||
|
cursor_y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cursor_y<0) cursor_y=8;
|
||||||
|
if (cursor_y>8) cursor_y=0;
|
||||||
|
|
||||||
|
if ((cursor_y==8) && (cursor_x<4)) cursor_x=0;
|
||||||
|
else if ((cursor_y==8) && (cursor_x>=4)) cursor_x=4;
|
||||||
|
|
||||||
|
|
||||||
|
if (ch!=0) break;
|
||||||
|
|
||||||
|
grsim_update();
|
||||||
|
|
||||||
|
usleep(10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ch==27) break;
|
||||||
|
|
||||||
|
.endif
|
||||||
|
|
||||||
|
jsr page_flip
|
||||||
|
|
||||||
|
jmp name_loop
|
||||||
|
|
||||||
|
done_enter_name:
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
enter_name_string:
|
||||||
|
.byte 0,0,"PLEASE ENTER A NAME:",0
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,18 @@ title_new_game:
|
||||||
|
|
||||||
jsr enter_name
|
jsr enter_name
|
||||||
|
|
||||||
; TODO: all rest
|
; 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
|
lda #LOAD_FLYING
|
||||||
sta WHICH_LOAD
|
sta WHICH_LOAD
|
||||||
|
@ -124,19 +135,7 @@ title_new_game:
|
||||||
;=================================
|
;=================================
|
||||||
title_load_game:
|
title_load_game:
|
||||||
|
|
||||||
; this should go in new game, not load
|
jsr load_game
|
||||||
lda #$02
|
|
||||||
sta HERO_LEVEL
|
|
||||||
|
|
||||||
lda #$01
|
|
||||||
sta HERO_HP_HI
|
|
||||||
lda #$50
|
|
||||||
sta HERO_HP_LO
|
|
||||||
sta HERO_MP
|
|
||||||
sta HERO_MP_MAX
|
|
||||||
|
|
||||||
lda #LOAD_FLYING
|
|
||||||
sta WHICH_LOAD
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -180,6 +179,7 @@ done_increment_frame:
|
||||||
.include "keyboard.s"
|
.include "keyboard.s"
|
||||||
.include "joystick.s"
|
.include "joystick.s"
|
||||||
.include "draw_menu.s"
|
.include "draw_menu.s"
|
||||||
|
.include "load_game.s"
|
||||||
|
|
||||||
;===============================================
|
;===============================================
|
||||||
; Data
|
; Data
|
||||||
|
@ -191,10 +191,4 @@ title_menu:
|
||||||
.byte 16,23,"CREDITS",0
|
.byte 16,23,"CREDITS",0
|
||||||
.byte 255
|
.byte 255
|
||||||
|
|
||||||
enter_name_string:
|
|
||||||
.asciiz "PLEASE ENTER A NAME:"
|
|
||||||
|
|
||||||
name:
|
|
||||||
.byte $0,$0,$0,$0,$0,$0,$0,$0
|
|
||||||
|
|
||||||
.include "graphics_title/tfv_title.inc"
|
.include "graphics_title/tfv_title.inc"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user