-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathstartScreen.asm
79 lines (58 loc) · 2.43 KB
/
startScreen.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
;
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; *
; * a tela de abertura do jogo
; *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;
startScreen:
proc
local drawScreen
local waitPressFire
local changeToNextLine
local screenData
call birdOff ; removo o pássaro da tela
ld bc,160 ; a imagem com o logotipo do jogo
ld de,6144+4*32 ; na 4ª linha da tela
ld hl,screenData
call LDIRVM ; copio para a VRAM
ld a,166 ; insiro o "for MSX"
ld hl,6144+9*32+18 ; posição na VRAM
drawScreen:
call WRTVRM
inc a ; incremento A
inc hl ; incremento a posição
cp 173 ; é 173?
call z,changeToNextLine ; mudo de linha
cp 177 ; é 177?
jr nz,drawScreen ; se não for volto ao laço
ld bc,64 ; o texto "PRESS SPACE TO START"
ld de,6144+11*32 ; na 11ª linha da tela
ld hl,screenData+160
call LDIRVM ; copio para a VRAM
ld bc,128 ; o texto "ORIGINAL ... WORKS"
ld de,6144+15*32 ; na 15ª linha da tela
ld hl,screenData+160+64
call LDIRVM ; copio para a VRAM
call KILBUF ; limpo o buffer do teclado
waitPressFire:
ld hl,JIFFY
ld (hl),0 ; zero o temporizador
ld hl,vdpCycle1
ld b,(hl)
call waitASec ; aguardo 1/10s
xor a
call GTTRIG ; lê a barra de espaços
ld h,a ; salva o valor em H
ld a,1
call GTTRIG ; lê o botão 1 do joystick 0
or h ; junta as duas leituras
cp 255 ; ainda é 255?
ret z ; sai da laço
jr waitPressFire
changeToNextLine:
ld hl,6144+10*32+21
ret
screenData:
include "gfx/screen.asm"
endp