;VERSION 1.03
;idée de T&J/GPA : Connaître les lignes terminées
;Objectifs : obtenir les totaux par lignes et par colonnes
;Fano, ne prends pas peur en voyant mon code ;-)
tableau EQU &9F00
resultatsrow EQU &8F00
resultatscol EQU &8F10
ORG #8F30
;TOTAUX PAR LIGNES (partie propre par Fano)
ld HL,tableau
ld DE,resultatsrow
ld C,15
loop:
xor A
ld B,15
loop2:
add A,(HL)
inc HL
djnz loop2 ;djnz = dec B + jr nz,.loop2
ld (DE),A
inc DE
dec C
jr nz,loop
;TOTAUX PAR COLONNES (partie codé avec les pieds, Kukulcan)
ld HL,tableau
ld (debut+1),HL
ld DE,resultatscol
ld C,15
loop3:
xor A
ld B,15
debut: ld HL,tableau
loop4:
add A,(HL)
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
inc HL
djnz loop4 ;djnz = dec B + jr nz,.loop4
ld (DE),A ;ecrire les stats de la colonne
inc DE ;colonne suivante
ld a,(debut+1) ;faut bien retomber au bon endroit
inc a
ld (debut+1),a
dec C ;une colonne en moins
jr nz,loop3
ret
NOTICE TEXTE n° 2 (93.76 Ko)
;VERSION 1.00
pix_silver equ &00
pix_white equ &F0
pix_black equ &0F
memoire_cheat equ &A2E0
mem_crayon_x equ 5 ;//5 colonnes
mem_crayon_y equ 14 ;//14 lignes
org #7000
;APPELS DES ROUTINES
call main_menu
ret
;//call &7004 => afficher la page des crédits + bouton exit
call main_credits
ret
;CALL &7008,FN pix(x,y):'affiche crayon
;en basic récupérer l'adresse derrière le call
LD l,(IX+00) ;//call &7008,adr_ecran
LD h,(IX+01)
call affiche_crayon
ret
;CALL &7012,FN pix(x1,y1):'sauve decor
;en basic récupérer l'adresse derrière le call
LD l,(IX+00) ;//call &7012,adr_ecran
LD h,(IX+01)
call sauve_decor_crayon
ret
;CALL &701C,FN pix(x,y):'affiche decor
;en basic récupérer l'adresse derrière le call
LD l,(IX+00) ;//call &701C,adr_ecran
LD h,(IX+01)
call aff_decor_crayon
ret
; CALL &7026
;//statistiques quinze lignes/colonnes
call statistiquesquinzerowcol
ret
; CALL &702A
;//cls special
call clsspecial
ret
; CALL &702E
call clean_aff_stat_game
ret
; CALL &7032
call bouton_exit_editeur
ret
;CALL &7036
call choix_niveau
ret
;CALL &703A
call design_game
ret
;CALL &703E
call magrillegame
ret
;CALL &7042
call magrilleediteur
ret
;CALL &7046,adresse:'affichage grille
;en basic récupérer l'adresse derrière le call
LD l,(IX+00)
LD h,(IX+01)
call readgrille
ret
;CALL &7050
;vider la mémoire de &9600 a &9600+2025
call clean_pack
ret
;CALL &7054,adresse
;vider la mémoire pour un niveau d'un pack
LD l,(IX+00)
LD h,(IX+01)
call clean_level
ret
;CALL &705E (Utilisation de la routine de FANO pour l'affichage des miniatures dans l'éditeur)
call affminiatureByFano
ret
;CALL &7062
call main_instructions
ret
;CALL &7066
call entourezonediteur
ret
;CALL &706A
call designediteur
ret
;CALL &706E,adresse
;afficher choix du niveau / fini non fini
LD l,(IX+00)
LD h,(IX+01)
call casespagelevel
ret
;CALL &7078
call vidertv
ret
;CALL &707C,adresse
;copier niveau d'un pack dans la zone memoire courante
LD l,(IX+00)
LD h,(IX+01)
call copie_pack_to_zone_courante
ret
;RESULTAT PEEK(&7086)
resultat_cpt_maxi : db #00
;CALL &7087
CALL calcul_maxi
ret
;CALL &708B
CALL msg_perdu
ret
;CALL &708F
CALL msg_gagne
ret
;CALL &7093
CALL msg_hiscore
ret
;CALL &7097
CALL game_cls_grille
ret
;********************
;*** CLS SPECIAL ***
;********************
clsspecial:
ld hl,#C000
ld bc,#4000
clsloop2:
ld (HL),0
ld de,#0059
add hl,de
jr nc,clsloop1
ld de,#C000
add hl,de
clsloop1:
dec bc
ld a,b
or c
jr nz,clsloop2
ret
;**********************************************
;*** STATISTIQUES - 15 lignes - 15 colonnes ***
;**********************************************
statistiquesquinzerowcol:
ld a, 2
call #BB90 ;pen 2
call statsquinzerows
call statsquinzecols
ret
;**************************************************************************
;*** STATS POUR LES 15 LIGNES ***
;********************************
statsquinzerows:
ld a,10
ld hl,#9F00
loopquinzeligne:
;information pour la colonne
ld (startrow+1),a
inc a
ld (cptstatscourant),a
ld (startreadrow+1),hl
push hl
call affichagestatsuneligne
pop hl
ld bc,15
ADD hl,bc
ld a,(cptstatscourant)
cp 25
jr nz,loopquinzeligne
ret
affichagestatsuneligne:
call fillzerosareastats
;stats pour la ligne
ld hl,resultat ;stats
startreadrow:
ld de,&9F00 ;mon tableau de jeu
ld b,15
ld c,0
statslooprow:
ld a,(de) ;lire valeur
or a ;equivalent a cp 0
jr z,statssuivantrow
inc (hl)
jr statsfinrow
statssuivantrow:
ld a,(hl)
or a
jr z,statsfinrow
inc hl
inc c ;total case lue
statsfinrow:
inc de
djnz statslooprow ;djnz = dec B + jr nz,.loop
;probleme au niveau du nombre de ligne lu si on fini par une case a 1
dec de
ld a,(de)
cp 1
jp nz,suiterow
inc c
;gérer l'affichage ici
suiterow:
ld b,c ;passer c en b pour le décompte d'affichage
;probleme si total ligne vide, passer le compteur a 1
ld a,0
cp c ;comparer a et b
jp c,biggerrow ;si c>a aller a bigger
ld c,1 ;plus de soucis, si ligne vide mais décallage a l'écran
ld b,1 ;plus de soucis, si ligne vide mais décallage a l'écran
biggerrow:
ld a,24 ;colonne a droite
SUB c ;-nombre de totaux
ld h,a ;pour le locate
;locate (AF et HL sont modifé)
startrow:
ld l,10
CALL #BB75
ld hl, resultat
loopstatslignerow:
ld a,(hl)
ADD a,240
CALL #BB5A
inc hl
dec b ;decrementer mon compteur
ld a,b ;passer la valeur de b dans a
cp 0 ;comparer si a = 0
jr nz,loopstatslignerow
ret
;**************************************************************************
;*** STATS POUR LES 15 COLONNES ***
;**********************************
statsquinzecols:
ld a,25 ;colonne de depart
ld hl,#9F00
loopquinzecolonne:
;information pour la colonne
ld (startcol+1),a
inc a
ld (cptstatscourant),a
ld (startread+1),hl
push hl
call affichagestatsunecolonne
pop hl
inc hl
;ld bc,15
;ADD hl,bc
ld a,(cptstatscourant)
cp 40
jr nz,loopquinzecolonne
ret
affichagestatsunecolonne:
call fillzerosareastats
;stats pour une colonne
ld hl,resultat ;stats
startread:
ld de,&9F00 ;mon tableau de jeu
ld b,15
ld c,0
statsloopcol:
ld a,(de) ;lire valeur
or a ;equivalent a cp 0
jr z,statssuivantcol
inc (hl)
jr statsfincol
statssuivantcol:
ld a,(hl)
or a
jr z,statsfincol
inc hl
inc c ;total case lue
statsfincol:
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
inc de
djnz statsloopcol ;djnz = dec B + jr nz,.loop
;probleme au niveau du nombre de ligne lu si on fini par une case a 1
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
dec de
ld a,(de)
cp 1
jp nz,suitecol
inc c
;gérer l'affichage ici
suitecol:
ld b,c ;passer c en b pour le décompte d'affichage
;probleme si total colonne vide, passer le compteur a 1
ld a,0
cp c ;comparer a et b
jp c,biggercol ;si c>a aller a bigger
ld c,1 ;plus de soucis, si ligne vide mais décallage a l'écran
ld b,1 ;plus de soucis, si ligne vide mais décallage a l'écran
biggercol:
ld a,9 ;ligne la plus basse
SUB c ;-nombre de totaux
ld l,a ;pour le locate
;locate (AF et HL sont modifé)
startcol:
ld h,24
CALL #BB75
ld hl, resultat
loopstatscolonne:
ld a,(hl)
ADD a,240
CALL #BB5A ;afficher la bonne valeur
ld a,8 ;decalage a gauche
CALL #BB5A
ld a,10 ;decalage en bas (on est positionné en dessous du précédent)
CALL #BB5A
inc hl
dec b ;decrementer mon compteur
ld a,b ;passer la valeur de b dans a
cp 0 ;comparer si a = 0
jr nz,loopstatscolonne
ret
;**************************************************************************
;*** STATS POUR LES 15 LIGNES/COLONNES - donnees communes ***
;************************************************************
;mise a zéro de la zone des resultats
fillzerosareastats:
ld hl,resultat
push hl ;sauver hl
pop de
inc de
ld bc,7
ld (hl),0
ldir
ret
cptstatscourant:
db #00
db #FF
resultat:
db 00,00,00,00,00,00,00,00
db 00 ;servira a rien sauf si nous avons une ligne qui utilise 8 valeurs différentes
db #FF
;*******************************************************************************
;*** UTILISATION x9 de la ROUTINE DE FANO ***
;********************************************
affminiatureByFano:
xor a
ld (cptminiature),a
;valeurs de depart
ld hl,#C1A6
ld (#A4A3),hl ;destination
ld hl,#9600
ld (#A4A6),hl ;source
boucleminiature: CALL #A4A0 ;utilisation de la routine de fano
;position suivant
ld hl,(#A4A3)
ld bc, 6
ADD hl,bc
ld (#A4A3),hl ;destination
ld hl,(#A4A6)
ld bc, 225
ADD hl,bc
ld (#A4A6),hl ;source
;est-ce qu'on affiche la miniature ?
ld a,(cptminiature)
inc a
ld (cptminiature),a
cp 9
jr nz,boucleminiature
ret
cptminiature: db #00
;*******************************************************************************
;*** ZONE MEMOIRE COURANTE - TOTAL MAXI ***
;*******************************************
calcul_maxi:
xor a ;a=0
ld (resultat_cpt_maxi),a ;mise a zéro du total final
ld hl,#9F00 ;adresse de debut
ld b,225 ;lire 15x15 valeurs
boucle_maxi: ADD a,(hl) ;Additionner dans le registre A la valeur lu dans HL
inc hl ;adresse suivante
dec b ;reduire d'une valeur
jp nz,boucle_maxi
ld (resultat_cpt_maxi),a ;ecrire le total final pour le BASIC
ret
;*******************************************************************************
;*** COPIER UN LEVEL D'UN PACK VERS ZONE MEMOIRE COURANTE ***
;************************************************************
copie_pack_to_zone_courante:
ld de,#9F00
ld bc,#E1
ldir
ret
;*******************************************************************************
;*** remplir la ZONE de zero ***
;*******************************
clean_pack:
ld hl,#9600
ld de,#9601
ld bc,(15*15*9)-1
ld (hl),0
ldir
ret
clean_level:
push hl ;sauver hl
pop de ;recupérer hl dans de
inc de ;vu que ça doit être hl +1
ld bc,(15*15)-1
ld (hl),0
ldir
ret
main_menu:
;call #BB4E ;Initialisation du mode texte
;call #BB6C ;CLS
call clsspecial
;*******************************************************************************
;*** MAIN MENU ***
;*****************
call routinemur
call routinemaison
ld a, 2
call #BB90 ;pen 2
;cartouche PLAY
ld a,pix_white
ld h,#9 ;colonne debut
ld d,#1c ;colonne fin
ld l,#1 ;ligne debut
ld e,#3 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#9+1
ld d,#1c+1
ld l,#3+1
ld e,#3+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#1c+1
ld d,#1c+1
ld l,#1+1
ld e,#3+1
call #bc44 ;colonne noire
ld h,#9 ;colonne
ld l,#3 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_menu1
call boucle_texte
;cartouche INSTRUCTIONS
ld a,pix_white
ld h,#9
ld d,#1c
ld l,#7
ld e,#9
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#9+1
ld d,#1c+1
ld l,#9+1
ld e,#9+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#1c+1
ld d,#1c+1
ld l,#7+1
ld e,#9+1
call #bc44 ;colonne noire
ld h,#9 ;colonne
ld l,#9 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_menu2
call boucle_texte
;cartouche CREDITS
ld a,pix_white
ld h,#9
ld d,#1c
ld l,#D
ld e,#F
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#9+1
ld d,#1c+1
ld l,#F+1
ld e,#F+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#1c+1
ld d,#1c+1
ld l,#D+1
ld e,#F+1
call #bc44 ;colonne noire
ld h,#9 ;colonne
ld l,#F ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_menu3
call boucle_texte
;cartouche EDITOR
ld a,pix_white
ld h,#9
ld d,#1c
ld l,#13
ld e,#15
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#9+1
ld d,#1c+1
ld l,#15+1
ld e,#15+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#1c+1
ld d,#1c+1
ld l,#13+1
ld e,#15+1
call #bc44 ;colonne noire
ld h,#9 ;colonne
ld l,#15 ;ligne
call #BB75 ;equivalent au locate x,y
;si cheat=1 afficher text_menu5 sinon text_menu4
ld a,(memoire_cheat)
ld b, 1 ;faut bien comparer avec quelque chose
cp b
jp c,menu5_bigger ;B>A => ????
jp z,menu5_egal ;B=A => LEVELS EDITORS
ld a, 1
call #BB90 ;pen 1
ret
menu5_bigger:
ld hl,text_menu4
call boucle_texte
ret
menu5_egal:
ld hl,text_menu5
call boucle_texte
ret
;*******************************************************************************
;*** SELECT LEVEL ***
;********************
choix_niveau:
;CLS
;call #BB6C
call clsspecial
;Affichage mur (sol)
call routinemur
call immeuble4
;Utilisation de la zone graphique comme d'un FILL
;Remplir la zone gauche de l'immeuble en blanc
;bord gauche et droit
ld de,44
ld hl,118
call #BBCF
;bord haut et bas
ld de,340
ld hl,20
call #BBD2
;couleur du paper
ld a,1
call #BBE4
;cls fenetre graphique
call #BBDB
;Remplir la zone droite de l'immeuble en blanc
;bord gauche et droit
ld de,126
ld hl,428
call #BBCF
;cls fenetre graphique
call #BBDB
;remplir le panneau PACK en blanc
;bord gauche et droit
ld de,40
ld hl,118
call #BBCF
;bord haut et bas
ld de,390
ld hl,362
call #BBD2
;cls fenetre graphique
call #BBDB
;remplir le panneau CHOOSE LEVEL en blanc
;bord gauche et droit
ld de,168
ld hl,384
call #BBCF
;cls fenetre graphique
call #BBDB
;parametre par defaut pour la zone graphique
;bord gauche et droit
ld de,0
ld hl,640
call #BBCF
;bord haut et bas
ld de,0
ld hl,400
call #BBD2
;Plot pour l'immeuble
ld a,2
call #BBDE
;plot
ld de,40 ;x
ld hl,20 ;y
call #BBEA
;draw
ld de,40
ld hl,344
call #BBF6
;draw
ld de,432
ld hl,344
call #BBF6
;draw
ld de,432
ld hl,20
call #BBF6
;draw
ld de,430
ld hl,20
call #BBF6
;draw
ld de,430
ld hl,342
call #BBF6
;draw
ld de,122
ld hl,342
call #BBF6
;draw
ld de,122
ld hl,20
call #BBF6
;draw
ld de,120
ld hl,20
call #BBF6
;draw
ld de,120
ld hl,342
call #BBF6
;draw
ld de,42
ld hl,342
call #BBF6
;draw
ld de,42
ld hl,20
call #BBF6
;panneau PACK
;plot
ld de,32 ;x
ld hl,368 ;y
call #BBEA
;draw
ld de,32
ld hl,384
call #BBF6
;draw
ld de,40
ld hl,392
call #BBF6
;draw
ld de,120
ld hl,392
call #BBF6
;draw
ld de,128
ld hl,384
call #BBF6
;draw
ld de,128
ld hl,368
call #BBF6
;draw
ld de,120
ld hl,360
call #BBF6
;draw
ld de,40
ld hl,360
call #BBF6
;draw
ld de,32
ld hl,368
call #BBF6
;pieds du panneau PACK
;plot
ld de,78 ;x
ld hl,360 ;y
call #BBEA
;draw
ld de,78
ld hl,344
call #BBF6
;plot
ld de,82 ;x
ld hl,360 ;y
call #BBEA
;draw
ld de,82
ld hl,344
call #BBF6
;panneau CHOOSE LEVEL
;plot
ld de,160 ;x
ld hl,368 ;y
call #BBEA
;draw
ld de,160
ld hl,384
call #BBF6
;draw
ld de,168
ld hl,392
call #BBF6
;draw
ld de,392
ld hl,392
call #BBF6
;draw
ld de,400
ld hl,384
call #BBF6
;draw
ld de,400
ld hl,368
call #BBF6
;draw
ld de,392
ld hl,360
call #BBF6
;draw
ld de,168
ld hl,360
call #BBF6
;draw
ld de,160
ld hl,368
call #BBF6
;pieds du panneau CHOOSE LEVEL
;plot
ld de,282 ;x
ld hl,360 ;y
call #BBEA
;draw
ld de,282
ld hl,344
call #BBF6
;plot
ld de,286 ;x
ld hl,360 ;y
call #BBEA
;draw
ld de,286
ld hl,344
call #BBF6
;pen 1 (blanc)
ld a,1
call #BBDE
;remplir en blanc les bords du panneau pack
;plot
ld de,34 ;x
ld hl,368 ;y
call #BBEA
;draw
ld de,34
ld hl,384
call #BBF6
;plot
ld de,36 ;x
ld hl,366 ;y
call #BBEA
;draw
ld de,36
ld hl,386
call #BBF6
;plot
ld de,38 ;x
ld hl,364 ;y
call #BBEA
;draw
ld de,38
ld hl,388
call #BBF6
;plot
ld de,120 ;x
ld hl,390 ;y
call #BBEA
;draw
ld de,120
ld hl,362
call #BBF6
;plot
ld de,122 ;x
ld hl,388 ;y
call #BBEA
;draw
ld de,122
ld hl,364
call #BBF6
;plot
ld de,124 ;x
ld hl,386 ;y
call #BBEA
;draw
ld de,124
ld hl,366
call #BBF6
;plot
ld de,126 ;x
ld hl,384 ;y
call #BBEA
;draw
ld de,126
ld hl,368
call #BBF6
;remplir en blanc les bords du panneau pack
;plot
ld de,162 ;x
ld hl,368 ;y
call #BBEA
;draw
ld de,162
ld hl,384
call #BBF6
;plot
ld de,164 ;x
ld hl,366 ;y
call #BBEA
;draw
ld de,164
ld hl,386
call #BBF6
;plot
ld de,166 ;x
ld hl,364 ;y
call #BBEA
;draw
ld de,166
ld hl,388
call #BBF6
;plot
ld de,392 ;x
ld hl,390 ;y
call #BBEA
;draw
ld de,392
ld hl,362
call #BBF6
;plot
ld de,394 ;x
ld hl,388 ;y
call #BBEA
;draw
ld de,394
ld hl,364
call #BBF6
;plot
ld de,396 ;x
ld hl,386 ;y
call #BBEA
;draw
ld de,396
ld hl,366
call #BBF6
;plot
ld de,398 ;x
ld hl,384 ;y
call #BBEA
;draw
ld de,398
ld hl,368
call #BBF6
;affichage du texte
ld hl,texte_choix_niveau
call boucle_texte
call bouton_exit_select_level
ret
;en BASIC (lent)
;FOR j=0 TO 9:FOR i=0 TO 8:LOCATE 10+(i*2),5+(j*2)
;a=PEEK(&A000+(page*90)+i+(j*2)):PRINT CHR$(230+a):NEXT i:NEXT j
;en ASM (surement programmé comme un cochon mais bon, ça fonctionne)
;CALL &706E,&A000+(page*90)
casespagelevel:
;valeur de départ pour le locate
ld d,10
ld e,5
loopcaselevel:
push hl ;sauver hl
xor c ;compteur a zéro
;locate
ld h,d
ld l,e
call #BB75 ;AF et HL sont modifié
pop hl ;récupérer hl
ld a,(hl) ;lire la valeur (0 ou 1)
ld b,230 ;chr$ (case vide)
ADD a,b ;ajouter au chr$ la valeur lue
CALL #BB5A ;afficher le chr$
inc hl ;adresse suivante
;locate : colonne suivante
inc d
inc d
inc c ;compteur
ld a,c ;a=c
cp 8 ;test si a=8
jp z,caselevelnextline
cp 8+(9*1) ;test fin ligne 2
jp z,caselevelnextline
cp 8+(9*2) ;test fin ligne 3
jp z,caselevelnextline
cp 8+(9*3) ;test fin ligne 4
jp z,caselevelnextline
cp 8+(9*4) ;test fin ligne 5
jp z,caselevelnextline
cp 8+(9*5) ;test fin ligne 6
jp z,caselevelnextline
cp 8+(9*6) ;test fin ligne 7
jp z,caselevelnextline
cp 8+(9*7) ;test fin ligne 8
jp z,caselevelnextline
cp 8+(9*8) ;test fin ligne 9
jp z,caselevelnextline
cp 8+(9*9) ;test fin ligne 10
ret z ;oui alors fin
jp nz,loopcaselevel
caselevelnextline:
;debut de colonne
ld d,10
;next line
inc e
inc e
jp loopcaselevel
;*******************************************************************************
;*** DESIGN GAME ***
;*******************
design_game:
;pack - level
ld a,pix_black
ld h,0 ;colonne debut
ld d,13 ;colonne fin
ld l,1 ;ligne debut
ld e,2 ;ligne fin
call #bc44 ;rectangle
;pen 2 (noir)
ld a,2
call #BBDE
;plot
ld de,0 ;x
ld hl,384 ;y
call #BBEA
;draw
ld de,224
ld hl,384
call #BBF6
;draw
ld de,224
ld hl,350
call #BBF6
;draw
ld de,0 ;x
ld hl,350 ;y
call #BBF6
;score
ld a,pix_black
ld h,0 ;colonne debut
ld d,13 ;colonne fin
ld l,4 ;ligne debut
ld e,4 ;ligne fin
call #bc44 ;rectangle
;plot
ld de,0 ;x
ld hl,336 ;y
call #BBEA
;draw
ld de,224
ld hl,336
call #BBF6
;draw
ld de,224
ld hl,318
call #BBF6
;draw
ld de,0 ;x
ld hl,318 ;y
call #BBF6
;record-maximum
ld a,pix_black
ld h,0 ;colonne debut
ld d,13 ;colonne fin
ld l,6 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle
;plot
ld de,0 ;x
ld hl,304 ;y
call #BBEA
;draw
ld de,224
ld hl,304
call #BBF6
;draw
ld de,224
ld hl,270
call #BBF6
;draw
ld de,0 ;x
ld hl,270 ;y
call #BBF6
;play-win-lost-perfect
ld a,pix_black
ld h,0 ;colonne debut
ld d,13 ;colonne fin
ld l,9 ;ligne debut
ld e,12 ;ligne fin
call #bc44 ;rectangle
;plot
ld de,0 ;x
ld hl,256 ;y
call #BBEA
;draw
ld de,224
ld hl,256
call #BBF6
;draw
ld de,224
ld hl,190
call #BBF6
;draw
ld de,0 ;x
ld hl,190 ;y
call #BBF6
;hall of fame
ld a,pix_black
ld h,0 ;colonne debut
ld d,13 ;colonne fin
ld l,16 ;ligne debut
ld e,16 ;ligne fin
call #bc44 ;rectangle
;plot
ld de,0 ;x
ld hl,144 ;y
call #BBEA
;draw
ld de,224
ld hl,144
call #BBF6
;draw
ld de,224
ld hl,94
call #BBF6
;draw
ld de,0
ld hl,94
call #BBF6
;draw
ld de,0
ld hl,144
call #BBF6
;bouton LEVEL MENU
ld a,pix_white
ld h,0 ;colonne debut
ld d,11 ;colonne fin
ld l,20 ;ligne debut
ld e,22 ;ligne fin
call #bc44 ;rectangle
ld a,pix_black
ld h,1 ;colonne debut
ld d,12 ;colonne fin
ld l,23 ;ligne debut
ld e,23 ;ligne fin
call #bc44 ;rectangle
ld a,pix_black
ld h,12 ;colonne debut
ld d,12 ;colonne fin
ld l,21 ;ligne debut
ld e,22 ;ligne fin
call #bc44 ;rectangle
;bouton EXIT
ld a,pix_white
ld h,16 ;colonne debut
ld d,21 ;colonne fin
ld l,1 ;ligne debut
ld e,3 ;ligne fin
call #bc44 ;rectangle
ld a,pix_black
ld h,17 ;colonne debut
ld d,22 ;colonne fin
ld l,4 ;ligne debut
ld e,4 ;ligne fin
call #bc44 ;rectangle
ld a,pix_black
ld h,22 ;colonne debut
ld d,22 ;colonne fin
ld l,2 ;ligne debut
ld e,3 ;ligne fin
call #bc44 ;rectangle
ld hl,text_game_design
call boucle_texte
call aff_sprite_map_femme
call clean_aff_stat_game
call entourezonejeu
call design_tv
ret
aff_sprite_map_femme:
ld hl,#E41A
ld de,data_spr_map_femme
ld a,19
ld (sprite_nb_row +1),a
ld a,8
ld (sprite_nb_col +1),a
call aff_sprite
ret
data_spr_map_femme:
db #07,#0F,#0F,#0F,#0F,#0C,#00,#00
db #34,#F0,#F0,#F0,#F0,#84,#00,#00
db #34,#3C,#3C,#4B,#2D,#0F,#00,#00
db #25,#0F,#69,#0F,#4B,#0F,#08,#00
db #25,#1E,#C3,#0F,#87,#EF,#0C,#00
db #25,#3C,#C3,#0F,#97,#FF,#0C,#00
db #34,#3C,#96,#87,#97,#5F,#0C,#00
db #34,#78,#0F,#D2,#97,#FF,#0C,#00
db #34,#B4,#0F,#F0,#97,#BF,#08,#00
db #34,#3C,#96,#E1,#4B,#EF,#08,#00
db #34,#78,#B4,#C3,#4B,#0F,#08,#00
db #34,#F0,#F0,#C3,#87,#EF,#0C,#00
db #34,#F0,#F0,#F0,#97,#FF,#0C,#00
db #07,#0F,#0F,#0F,#5B,#FF,#4A,#00
db #00,#00,#00,#00,#69,#4F,#C2,#00
db #00,#00,#00,#01,#AD,#0F,#A7,#00
db #00,#00,#00,#01,#BC,#1E,#A7,#00
db #03,#0E,#0F,#1B,#9E,#F0,#3F,#08
db #12,#C2,#78,#1B,#09,#E1,#13,#08
clean_aff_stat_game:
;15 lignes
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,9 ;ligne debut
ld e,9 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,10 ;ligne debut
ld e,10 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,11 ;ligne debut
ld e,11 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,12 ;ligne debut
ld e,12 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,13 ;ligne debut
ld e,13 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,14 ;ligne debut
ld e,14 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,15 ;ligne debut
ld e,15 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,16 ;ligne debut
ld e,16 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,17 ;ligne debut
ld e,17 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,18 ;ligne debut
ld e,18 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,19 ;ligne debut
ld e,19 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,20 ;ligne debut
ld e,20 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,21 ;ligne debut
ld e,21 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,22 ;ligne debut
ld e,22 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,15 ;colonne debut
ld d,22 ;colonne fin
ld l,23 ;ligne debut
ld e,23 ;ligne fin
call #bc44 ;rectangle blanc
;15 colonnes
ld a,pix_white
ld h,24 ;colonne debut
ld d,24 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,25 ;colonne debut
ld d,25 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,26 ;colonne debut
ld d,26 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,27 ;colonne debut
ld d,27 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,28 ;colonne debut
ld d,28 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,29 ;colonne debut
ld d,29 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,30 ;colonne debut
ld d,30 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,31 ;colonne debut
ld d,31 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,32 ;colonne debut
ld d,32 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,33 ;colonne debut
ld d,33 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,34 ;colonne debut
ld d,34 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,35 ;colonne debut
ld d,35 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,36 ;colonne debut
ld d,36 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_silver
ld h,37 ;colonne debut
ld d,37 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_white
ld h,38 ;colonne debut
ld d,38 ;colonne fin
ld l,0 ;ligne debut
ld e,7 ;ligne fin
call #bc44 ;rectangle blanc
ret
design_tv:
;Utilisation de la zone graphique comme d'un FILL
;bord gauche et droit
ld de,280
ld hl,338
call #BBCF
;bord haut et bas
ld de,308
ld hl,268
call #BBD2
;couleur du paper (noir)
ld a,2
call #BBE4
;cls fenetre graphique
call #BBDB
;bord gauche et droit
ld de,328
ld hl,334
call #BBCF
;bord haut et bas
ld de,300
ld hl,292
call #BBD2
;couleur du paper (rouge)
ld a,3
call #BBE4
;cls fenetre graphique
call #BBDB
;bord gauche et droit
ld de,328
ld hl,334
call #BBCF
;bord haut et bas
ld de,284
ld hl,276
call #BBD2
;couleur du paper (rouge)
ld a,3
call #BBE4
;cls fenetre graphique
call #BBDB
;parametre par defaut pour la zone graphique
;bord gauche et droit
ld de,0
ld hl,640
call #BBCF
;bord haut et bas
ld de,0
ld hl,400
call #BBD2
;PIED de la TV pen 2 (noir)
ld a,2
call #BBDE
;plot
ld de,294 ;x
ld hl,266 ;y
call #BBEA
;draw
ld de,294
ld hl,256
call #BBF6
;plot
ld de,322 ;x
ld hl,266 ;y
call #BBEA
;draw
ld de,322
ld hl,256
call #BBF6
call vidertv
ret
vidertv:
ld hl,text_vidertv
call boucle_texte
ret
;*******************************************************************************
;*** IMMEUBLE CREDIT / INSTRUCTIONS ***
;**************************************
;immeuble 3 (petit a droite)
immeuble3:
ld hl,#E30F-2
call afftoit
ld hl,#F53F-2
call affmaison
ld hl,#F58F-2
call affmaison
ld hl,#F5DF-2
call affmaison
ld hl,#F62F-2
call affmaison
ld hl,#F67F-2
call affmaison
ld hl,#F6CF-2
call affmaison
ld hl,#F71F-2
call affmaison
ret
;*******************************************************************************
;*** IMMEUBLE SELECT LEVEL ***
;*****************************
;immeuble 4 (petit a droite)
immeuble4:
ld hl,#E3AF-2
call afftoit
;ld hl,#F53F-2
;call affmaison
;ld hl,#F58F-2
;call affmaison
ld hl,#F5DF-2
call affmaison
ld hl,#F62F-2
call affmaison
ld hl,#F67F-2
call affmaison
ld hl,#F6CF-2
call affmaison
ld hl,#F71F-2
call affmaison
ret
;*******************************************************************************
;*** CREDITS ***
;***************
main_credits:
;call #BB6C ;CLS
call clsspecial
call routinemur
call immeuble3
ld a,pix_white
ld h,#1
ld d,#16
ld l,#1
ld e,#15
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#1+1
ld d,#16+1
ld l,#15+1
ld e,#15+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#16+1
ld d,#16+1
ld l,#1+1
ld e,#15+1
call #bc44 ;colonne noire
ld h,#1
ld d,#16
ld l,#1
ld e,#15
call #BB66 ;equivalent window
;ld h,#0 ;colonne
;ld l,#0 ;ligne
;call #BB75 ;equivalent au locate x,y
;call aff_spr_cameraman
ld hl,text_credits
call boucle_texte
call reset_windows
call bouton_exit
ld a, 1
call #BB90 ;pen 1
ret
;aff_spr_cameraman:
; ld hl,#C310
; ld de,data_spr_cameraman
; ld a,21
; ld (sprite_nb_row +1),a
; ld a,6
; ld (sprite_nb_col +1),a
; call aff_sprite
; ret
;data_spr_cameraman:
;db #00,#00,#00,#00,#00,#00
;db #00,#00,#00,#0F,#08,#00
;db #00,#00,#01,#0F,#0C,#00
;db #00,#00,#03,#0F,#0E,#00
;db #00,#00,#03,#0F,#0E,#00
;db #00,#00,#07,#1E,#0E,#00
;db #00,#00,#07,#78,#86,#00
;db #00,#00,#3F,#8F,#86,#00
;db #00,#03,#1F,#3C,#C2,#00
;db #00,#0F,#6F,#78,#84,#00
;db #01,#C3,#0F,#78,#0C,#00
;db #12,#1E,#96,#1E,#08,#00
;db #03,#0F,#C3,#78,#0F,#00
;db #03,#CF,#C3,#0F,#3C,#08
;db #13,#2F,#E1,#0F,#78,#08
;db #13,#2F,#78,#3C,#B4,#08
;db #03,#CF,#3C,#96,#A5,#08
;db #01,#1E,#96,#D2,#87,#08
;db #00,#78,#0F,#D2,#0F,#08
;db #00,#69,#0F,#0F,#0F,#00
;db #00,#07,#07,#0F,#0F,#00
;*******************************************************************************
;*** INSTRUCTIONS ***
;********************
main_instructions:
;call #BB6C ;CLS
call clsspecial
call routinemur
call immeuble3
ld a,pix_white
ld h,#1
ld d,#16
ld l,#1
ld e,#15
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#1+1
ld d,#16+1
ld l,#15+1
ld e,#15+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#16+1
ld d,#16+1
ld l,#1+1
ld e,#15+1
call #bc44 ;colonne noire
ld h,#1
ld d,#16
ld l,#1
ld e,#15
call #BB66 ;equivalent window
;ld h,#0 ;colonne
;ld l,#0 ;ligne
;call #BB75 ;equivalent au locate x,y
;call aff_spr_sherlock
ld hl,text_instructions
call boucle_texte
call reset_windows
call bouton_exit
ld a, 1
call #BB90 ;pen 1
ret
;aff_spr_sherlock:
; ld hl,#C30E
; ld de,data_spr_sherlock
; ld a,29
; ld (sprite_nb_row +1),a
; ld a,9
; ld (sprite_nb_col +1),a
; call aff_sprite
; ret
;
;data_spr_sherlock:
;db #00,#00,#00,#00,#00,#00,#00,#00,#00
;db #00,#00,#00,#00,#00,#03,#0F,#00,#00
;db #00,#00,#00,#00,#00,#3F,#BF,#08,#00
;db #00,#00,#00,#00,#01,#7F,#DF,#8E,#00
;db #00,#00,#00,#00,#03,#FF,#EF,#CF,#00
;db #00,#03,#0F,#00,#17,#FF,#EF,#CF,#00
;db #00,#16,#E1,#0C,#07,#0F,#6F,#CF,#00
;db #00,#3C,#F0,#86,#3F,#FF,#0F,#CF,#00
;db #00,#78,#F0,#C3,#FF,#FF,#EF,#0F,#00
;db #01,#78,#F0,#D3,#FF,#FF,#CF,#EF,#00
;db #01,#F0,#F0,#87,#0F,#0F,#0F,#7F,#08
;db #01,#F0,#F0,#0C,#0F,#0F,#0F,#B7,#08
;db #01,#3C,#E1,#08,#1E,#87,#D2,#97,#08
;db #00,#07,#E1,#00,#1E,#F0,#F0,#97,#08
;db #00,#01,#78,#08,#34,#F0,#F0,#0F,#08
;db #00,#00,#1E,#84,#07,#78,#E1,#0C,#00
;db #00,#00,#03,#84,#07,#F0,#E1,#0E,#00
;db #00,#00,#01,#4A,#03,#1E,#C3,#2D,#00
;db #00,#00,#00,#4B,#16,#78,#87,#5A,#08
;db #00,#00,#00,#25,#2D,#69,#3C,#5A,#84
;db #00,#00,#00,#0F,#4B,#87,#2D,#96,#84
;db #00,#00,#03,#0F,#1E,#C3,#96,#3C,#84
;db #00,#00,#12,#0F,#5A,#A5,#2D,#78,#84
;db #00,#00,#12,#87,#D2,#96,#2D,#F0,#08
;db #00,#00,#12,#F0,#D2,#87,#A5,#F0,#08
;db #00,#00,#01,#F0,#D2,#87,#5A,#F0,#08
;db #00,#00,#00,#78,#B4,#0F,#2D,#F0,#08
;db #00,#00,#00,#78,#A5,#0F,#1E,#78,#08
;db #00,#00,#00,#07,#0F,#0F,#0F,#0F,#00
;*******************************************************************************
;*** GRILLE 15x15 vide ***
;*************************
magrilleediteur:
ld h,17 ;gauche
ld d,31 ;droite
call lagrille
ret
magrillegame:
ld h,24 ;gauche
ld d,38 ;droite
call lagrille
ret
lagrille:
ld l,9 ;haut
ld e,24 ;bas
call #BB66 ;equivalent window
ld a, 1
call #BB90 ;pen 1
ld b, 225 ;//afficher 225 fois le symbol
.bouclegrille
ld a,237 ;'symbol pour la grille
call #BB5A
dec b ;decrementer mon compteur
ld a,b ;passer la valeur de b dans a
cp 0 ;comparer si a = 0
jr nz,bouclegrille
call reset_windows
ld a, 1
call #BB90 ;pen 1
ret
;*******************************************************************************
;*** GRILLE 15x15 existante ***
;******************************
readgrille:
push hl ;sauver hl
ld h,17 ;gauche
ld d,31 ;droite
ld l,9 ;haut
ld e,24 ;bas
call #BB66 ;equivalent window
pop hl ;recupérer hl
ld b, 225 ;//lire 225 valeur
.bouclereadgrille
ld a,(hl) ;lire la valeur de la case 0 (vide) ou 1 (pleine)
inc a ;+1 pour transformer la valeur de la case en encre : 1 = blanc (vide) ; 2 = noir (plein)
inc hl ;case suivante
push hl ; sauver hl car le call qui suit modifie hl
call #BB90 ;pen 1
pop hl ; on récupére hl
ld a,237 ;'symbol pour la grille
call #BB5A
dec b ;decrementer mon compteur
ld a,b ;passer la valeur de b dans a
cp 0 ;comparer si a = 0
jr nz,bouclereadgrille
call reset_windows
ld a, 1
call #BB90 ;pen 1
ret
;*******************************************************************************
;*** CRAYON ***
;**************
; afficher le decor
aff_decor_crayon:
LD DE,stock_decor ;adresse de sauvegarde en mémoire
LD B,mem_crayon_y ;//nb de ligne
loop_crayon9: PUSH BC
PUSH HL
LD B,mem_crayon_x ;//largeur du sprite
loop_crayon8: LD A,(DE)
LD (HL),A
INC HL
INC DE
DJNZ loop_crayon8
POP HL
CALL loop_crayon4
POP BC
DJNZ loop_crayon9
RET
; sauver le decor
sauve_decor_crayon:
LD DE,stock_decor ;adresse de sauvegarde en mémoire
LD B,mem_crayon_y ;//nb de ligne
loop_crayon6: PUSH BC
PUSH HL
LD B,mem_crayon_x ;//largeur du sprite
loop_crayon7: LD A,(HL)
LD (DE),A
INC DE
INC HL
DJNZ loop_crayon7
POP HL
CALL loop_crayon4
POP BC
DJNZ loop_crayon6
RET
;afficher le crayon transparent
affiche_crayon:
LD de,memoire_crayon
LD B,mem_crayon_y ;//nb de ligne
;CALL &BD19
DI
loop_crayon3: PUSH BC
PUSH HL
LD B,mem_crayon_x ;//largeur du sprite
loop_crayon5: ld a,(de)
or (hl)
LD (HL),A
INC HL
INC DE
DJNZ loop_crayon5
POP HL
CALL loop_crayon4
POP BC
DJNZ loop_crayon3
EI
RET
loop_crayon4:
LD A,H
ADD A,#08
LD H,A
RET NC
LD BC,#C050 ;//ligne suivante
ADD HL,BC
RET
memoire_crayon:
db #00, #00, #01, #00, #00
db #00, #00, #03, #08, #00
db #00, #00, #25, #0C, #00
db #00, #00, #5A, #0E, #00
db #00, #01, #A5, #87, #00
db #00, #12, #5A, #4A, #00
db #00, #03, #A5, #84, #00
db #00, #25, #5A, #08, #00
db #00, #34, #2D, #00, #00
db #00, #78, #86, #00, #00
db #01, #69, #08, #00, #00
db #01, #8E, #00, #00, #00
db #01, #0C, #00, #00, #00
db #00, #00, #00, #00, #00
;*******************************************************************************
;*** DIVERS ***
;**************
reset_windows: ld h,#0
ld d,#27
ld l,#0
ld e,#18
call #BB66 ;window = tout l'écran
ret
;sprite mur
routinemur: ld hl,#F730
ld a,10
ld (sprite_nb_row +1),a
ld a,4
ld (sprite_nb_col +1),a
xor a
ld (murcpt),a
loopaffmur: push hl
ld de,spritemur
call aff_sprite
pop hl
;inc hl
;inc hl
;inc hl
;inc hl
ld bc,#0004
ADD hl,bc
ld a,(murcpt)
inc a
ld (murcpt),a
cp 20 ;//nombre de fois qu'on affichera le mur
jr nz,loopaffmur
ret
murcpt : db #00
spritemur:
db #0F, #0F, #0F, #0F
db #0F, #0F, #0F, #0F
db #3C, #F0, #C0, #03
db #3C, #F0, #C0, #03
db #3C, #80, #00, #03
db #3C, #80, #00, #03
db #0C, #00, #00, #03
db #0C, #00, #00, #03
db #0F, #0F, #0F, #0F
db #0F, #0F, #0F, #0F
;sprite maison
routinemaison:
;immeuble 1(petit)
ld hl,#E1E2
call afftoit
ld hl,#F412
call affmaison
ld hl,#F462
call affmaison
ld hl,#F4B2
call affmaison
ld hl,#F502
call affmaison
ld hl,#F552
call affmaison
ld hl,#F5A2
call affmaison
ld hl,#F5f2
call affmaison
ld hl,#F642
call affmaison
ld hl,#F692
call affmaison
ld hl,#F6e2
call affmaison
;immeuble 2 (grand)
ld hl,#E08F
call afftoit
ld hl,#F2BF
call affmaison
ld hl,#F30F
call affmaison
ld hl,#F35F
call affmaison
ld hl,#F3AF
call affmaison
ld hl,#F3FF
call affmaison
ld hl,#F44F
call affmaison
ld hl,#F49F
call affmaison
ld hl,#F4EF
call affmaison
ld hl,#F53F
call affmaison
ld hl,#F58F
call affmaison
ld hl,#F5DF
call affmaison
ld hl,#F62F
call affmaison
ld hl,#F67F
call affmaison
ld hl,#F6CF
call affmaison
ld hl,#F71F
call affmaison
;afficher panneau 2014
ld hl,#D147
call affpan
ret
affmaison:
ld de,spritemaison
ld a,8
ld (sprite_nb_row +1),a
ld a,15
ld (sprite_nb_col +1),a
call aff_sprite
ret
spritemaison:
db #3C, #F0, #F0, #C3, #C3, #0F, #C3, #0F, #C3, #0F, #F0, #3C, #F0, #3C, #0C
db #3C, #F0, #F0, #C3, #C3, #0F, #C3, #0F, #C3, #0F, #F0, #3C, #F0, #3C, #0C
db #3C, #0F, #F0, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #F0, #3C, #F0, #3C, #0C
db #3C, #0F, #F0, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #F0, #3C, #F0, #3C, #0C
db #3C, #3C, #3C, #C3, #C3, #0F, #C3, #0F, #C3, #0F, #F0, #3C, #F0, #3C, #0C
db #3C, #3C, #3C, #C3, #C3, #0F, #C3, #0F, #C3, #0F, #F0, #3C, #F0, #3C, #0C
db #3C, #C3, #3C, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
db #3C, #F0, #F0, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
affpan:
ld de,spritepanneau
ld a,18
ld (sprite_nb_row +1),a
ld a,5
ld (sprite_nb_col +1),a
call aff_sprite
ret
spritepanneau :
db #00, #01, #00, #00, #00
db #00, #02, #08, #00, #00
db #0F, #0F, #0F, #0F, #00
db #78, #F0, #F0, #F0, #08
db #4B, #87, #D2, #A5, #84
db #69, #A5, #96, #A5, #C2
db #4B, #A5, #D2, #A5, #E1
db #5A, #A5, #D2, #87, #C2
db #4B, #87, #87, #E1, #84
db #78, #F0, #F0, #F0, #08
db #0F, #0F, #0F, #0F, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
db #00, #02, #08, #00, #00
afftoit:
ld de,spritetoit
ld a,58
ld (sprite_nb_row +1),a
ld a,15
ld (sprite_nb_col +1),a
call aff_sprite
ret
spritetoit:
db #00, #00, #00, #00, #00, #00, #03, #0E, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #03, #0E, #00, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #3C, #EF, #08, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #00, #3C, #EF, #08, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #03, #F3, #FF, #8E, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #03, #F3, #FF, #8E, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #03, #F3, #FF, #8E, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #03, #F3, #FF, #8E, #00, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #3C, #FF, #FF, #EF, #08, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #3C, #FF, #FF, #EF, #08, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #3C, #FF, #FF, #EF, #08, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #00, #3C, #FF, #FF, #EF, #08, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #03, #F3, #FF, #FF, #FF, #8E, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #03, #F3, #FF, #FF, #FF, #8E, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #03, #F3, #FF, #FF, #FF, #8E, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #03, #F3, #FF, #FF, #FF, #8E, #00, #00, #00, #00, #00
db #00, #00, #00, #00, #3F, #FF, #FF, #FF, #FF, #EF, #0C, #00, #00, #00, #00
db #00, #00, #00, #00, #3F, #FF, #FF, #FF, #FF, #EF, #0C, #00, #00, #00, #00
db #00, #00, #00, #00, #3F, #FF, #FF, #FF, #FF, #EF, #0C, #00, #00, #00, #00
db #00, #00, #00, #00, #3F, #FF, #FF, #FF, #FF, #EF, #0C, #00, #00, #00, #00
db #00, #00, #00, #03, #F0, #F3, #FF, #FF, #FF, #FC, #C3, #00, #00, #00, #00
db #00, #00, #00, #03, #F0, #F3, #FF, #FF, #FF, #FC, #C3, #00, #00, #00, #00
db #00, #00, #00, #03, #F0, #F0, #F3, #FF, #FC, #F0, #C3, #00, #00, #00, #00
db #00, #00, #00, #03, #F0, #F0, #F3, #FF, #FC, #F0, #C3, #00, #00, #00, #00
db #00, #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00, #00, #00
db #00, #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00, #00, #00
db #00, #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00, #00, #00
db #00, #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00, #00, #00
db #00, #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00, #00, #00
db #00, #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00, #00, #00
db #00, #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00, #00, #00
db #00, #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00, #00, #00
db #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00, #00
db #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00, #00
db #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00, #00
db #00, #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00, #00
db #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00, #00
db #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00, #00
db #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00, #00
db #00, #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #0C, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #0C, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00
db #00, #3C, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #00
db #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00
db #03, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #C3, #00
db #03, #0F, #F0, #F0, #F0, #F0, #0F, #0F, #0F, #F0, #F0, #F0, #F0, #0F, #00
db #03, #0F, #F0, #F0, #F0, #F0, #0F, #0F, #0F, #F0, #F0, #F0, #F0, #0F, #00
db #3C, #F0, #0F, #F0, #C3, #0F, #F0, #F0, #F0, #0F, #3C, #F0, #0F, #3C, #0C
db #3C, #F0, #0F, #F0, #C3, #0F, #F0, #F0, #F0, #0F, #3C, #F0, #0F, #3C, #0C
db #3C, #0F, #F0, #3C, #3C, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #F0, #3C, #0C
db #3C, #0F, #F0, #3C, #3C, #F0, #F0, #F0, #F0, #F0, #C3, #C3, #F0, #3C, #0C
db #3C, #3C, #3C, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
db #3C, #3C, #3C, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
db #3C, #C3, #3C, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
db #3C, #C3, #3C, #C3, #F0, #F0, #F0, #F0, #F0, #F0, #F0, #3C, #F0, #3C, #0C
;*******************************************************************************
;*** Afficher sprite opaque ***
;******************************
aff_sprite:
sprite_nb_row: ld b,#3B ;nb de ligne
aff_spr_loop1: push bc
push hl
sprite_nb_col: ld b,#20 ;nb de colonne
aff_spr_loop2: ld a,(de)
ld (hl),a
inc de
inc hl
djnz aff_spr_loop2
pop hl
call #BC26
pop bc
djnz aff_spr_loop1
ret
;*******************************************************************************
;*** DESSINS ***
;***************
designediteur:
;cls
;call #BB6C
call clsspecial
;texte
ld hl,text_editeur
call boucle_texte
;plots
call plotediteur
;boutons
call btn_clearpack
call btn_savepack
call btn_clearlevel
call bouton_exit_editeur
ret
entourezonediteur:
;encre pour le dessin
ld a,2
call #BBDE
;plot
ld de,270 ;x
ld hl,256 ;y
call #BBEA
;draw
ld de,512
ld hl,256
call #BBF6
;draw
ld de,512
ld hl,14
call #BBF6
;draw
ld de,270
ld hl,14
call #BBF6
;draw
ld de,270
ld hl,256
call #BBF6
;encre pour le dessin
ld a,1
call #BBDE
;plot
ld de,514 ;x
ld hl,256 ;y
call #BBEA
;draw
ld de,514
ld hl,12
call #BBF6
;draw
ld de,270
ld hl,12
call #BBF6
ret
entourezonejeu:
;encre pour le dessin
ld a,2
call #BBDE
;plot
ld de,270+(7*16) ;x
ld hl,256 ;y
call #BBEA
;draw
ld de,512+(7*16)
ld hl,256
call #BBF6
;draw
ld de,512+(7*16)
ld hl,14
call #BBF6
;draw
ld de,270+(7*16)
ld hl,14
call #BBF6
;draw
ld de,270+(7*16)
ld hl,256
call #BBF6
;encre pour le dessin
ld a,1
call #BBDE
;plot
ld de,514+(7*16) ;x
ld hl,256 ;y
call #BBEA
;draw
ld de,514+(7*16)
ld hl,12
call #BBF6
;draw
ld de,270+(7*16)
ld hl,12
call #BBF6
ret
plotediteur:
;encre pour le dessin PACK
ld a,2
call #BBDE
;plot
ld de,32 ;x
ld hl,268 ;y
call #BBEA
;draw
ld de,32
ld hl,372
call #BBF6
;draw
ld de,120
ld hl,372
call #BBF6
;draw
ld de,120
ld hl,268
call #BBF6
;draw
ld de,32
ld hl,268
call #BBF6
;encre pour le dessin PACK
ld a,1
call #BBDE
;plot
ld de,34 ;x
ld hl,270 ;y
call #BBEA
;draw
ld de,34
ld hl,370
call #BBF6
;draw
ld de,118
ld hl,370
call #BBF6
;draw
ld de,118
ld hl,270
call #BBF6
;draw
ld de,34
ld hl,270
call #BBF6
;soulignement dessin PACK
ld a,2
call #BBDE
;plot
ld de,42 ;x
ld hl,348 ;y
call #BBEA
;draw
ld de,110
ld hl,348
call #BBF6
;plot
ld de,42 ;x
ld hl,344 ;y
call #BBEA
;draw
ld de,110
ld hl,344
call #BBF6
;plot
ld de,42 ;x
ld hl,340 ;y
call #BBEA
;draw
ld de,110
ld hl,340
call #BBF6
;encre pour le dessin SELECT LEVEL
ld a,2
call #BBDE
;plot
ld de,158 ;x
ld hl,268 ;y
call #BBEA
;draw
ld de,158
ld hl,328
call #BBF6
;draw
ld de,270
ld hl,328
call #BBF6
;draw
ld de,270
ld hl,358
call #BBF6
;draw
ld de,494
ld hl,358
call #BBF6
;draw
ld de,494
ld hl,328
call #BBF6
;draw
ld de,616
ld hl,328
call #BBF6
;draw
ld de,616
ld hl,268
call #BBF6
;draw
ld de,158
ld hl,268
call #BBF6
;encre pour le dessin SELECT LEVEL
ld a,1
call #BBDE
;plot
ld de,160 ;x
ld hl,270 ;y
call #BBEA
;draw
ld de,160
ld hl,326
call #BBF6
;draw
ld de,272
ld hl,326
call #BBF6
;draw
ld de,272
ld hl,356
call #BBF6
;draw
ld de,492
ld hl,356
call #BBF6
;draw
ld de,492
ld hl,326
call #BBF6
;draw
ld de,614
ld hl,326
call #BBF6
;draw
ld de,614
ld hl,270
call #BBF6
;draw
ld de,160
ld hl,270
call #BBF6
;soulignement dessin SELECT LEVEL
ld a,2
call #BBDE
;plot
ld de,280 ;x
ld hl,332 ;y
call #BBEA
;draw
ld de,484
ld hl,332
call #BBF6
;plot
ld de,280 ;x
ld hl,328 ;y
call #BBEA
;draw
ld de,484
ld hl,328
call #BBF6
;plot
ld de,280 ;x
ld hl,324 ;y
call #BBEA
;draw
ld de,484
ld hl,324
call #BBF6
;soulignement texte TITRE Gauche
ld a,2
call #BBDE
;plot
ld de,0 ;x
ld hl,394 ;y
call #BBEA
;draw
ld de,100
ld hl,394
call #BBF6
;plot
ld de,24 ;x
ld hl,390 ;y
call #BBEA
;draw
ld de,100
ld hl,390
call #BBF6
;plot
ld de,48 ;x
ld hl,386 ;y
call #BBEA
;draw
ld de,100
ld hl,386
call #BBF6
;soulignement texte TITRE milieu
ld a,2
call #BBDE
;plot
ld de,296 ;x
ld hl,394 ;y
call #BBEA
;draw
ld de,342
ld hl,394
call #BBF6
;plot
ld de,296 ;x
ld hl,390 ;y
call #BBEA
;draw
ld de,342
ld hl,390
call #BBF6
;plot
ld de,296 ;x
ld hl,386 ;y
call #BBEA
;draw
ld de,342
ld hl,386
call #BBF6
;soulignement texte TITRE Droite
ld a,2
call #BBDE
;plot
ld de,640 ;x
ld hl,394 ;y
call #BBEA
;draw
ld de,540
ld hl,394
call #BBF6
;plot
ld de,640-24 ;x
ld hl,390 ;y
call #BBEA
;draw
ld de,540
ld hl,390
call #BBF6
;plot
ld de,640-48 ;x
ld hl,386 ;y
call #BBEA
;draw
ld de,540
ld hl,386
call #BBF6
ret
;*******************************************************************************
;*** MES BOUTONS ***
;*******************
;pour INSTRUCTIONS et CREDITS
bouton_exit: ld a,pix_white
ld h,#1F ;colonne debut
ld d,#24 ;colonne fin
ld l,#13-16 ;ligne debut
ld e,#15-16 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#1F+1
ld d,#24+1
ld l,#15+1-16
ld e,#15+1-16
call #bc44 ;ligne noire
ld a,pix_black
ld h,#24+1
ld d,#24+1
ld l,#13+1-16
ld e,#15+1-16
call #bc44 ;colonne noire
ld h,#20 ;colonne
ld l,#15-16 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_exit
call boucle_texte
ret
bouton_exit_select_level:
ld a,pix_white
ld h,#1F ;colonne debut
ld d,#24 ;colonne fin
ld l,#13-15 ;ligne debut
ld e,#15-15 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#1F+1
ld d,#24+1
ld l,#15+1-15
ld e,#15+1-15
call #bc44 ;ligne noire
ld a,pix_black
ld h,#24+1
ld d,#24+1
ld l,#13+1-15
ld e,#15+1-15
call #bc44 ;colonne noire
ld h,#20 ;colonne
ld l,#15-15 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_exit
call boucle_texte
ret
;bouton_exit: ld a,pix_white
; ld h,#1F ;colonne debut
; ld d,#24 ;colonne fin
; ld l,#13 ;ligne debut
; ld e,#15 ;ligne fin
; call #bc44 ;rectangle blanc
; ld a,pix_black
; ld h,#1F+1
; ld d,#24+1
; ld l,#15+1
; ld e,#15+1
; call #bc44 ;ligne noire
; ld a,pix_black
; ld h,#24+1
; ld d,#24+1
; ld l,#13+1
; ld e,#15+1
; call #bc44 ;colonne noire
; ld h,#20 ;colonne
; ld l,#15 ;ligne
; call #BB75 ;equivalent au locate x,y
; ld hl,text_exit
; call boucle_texte
; ret
bouton_exit_editeur:
ld a,pix_white
ld h,#21 ;colonne debut
ld d,#26 ;colonne fin
ld l,#13 ;ligne debut
ld e,#15 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,#21+1
ld d,#26+1
ld l,#15+1
ld e,#15+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,#26+1
ld d,#26+1
ld l,#13+1
ld e,#15+1
call #bc44 ;colonne noire
ld h,#22 ;colonne
ld l,#15 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_exit
call boucle_texte
ret
btn_clearpack: ld a,pix_white
ld h,0 ;colonne debut
ld d,12 ;colonne fin
ld l,21 ;ligne debut
ld e,23 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,0+1
ld d,12+1
ld l,23+1
ld e,23+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,12+1
ld d,12+1
ld l,21+1
ld e,23+1
call #bc44 ;colonne noire
ld h,1 ;colonne
ld l,23 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_clearpack
call boucle_texte
ret
btn_savepack: ld a,pix_white
ld h,0 ;colonne debut
ld d,12 ;colonne fin
ld l,9 ;ligne debut
ld e,11 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,0+1
ld d,12+1
ld l,11+1
ld e,11+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,12+1
ld d,12+1
ld l,9+1
ld e,11+1
call #bc44 ;colonne noire
ld h,1 ;colonne
ld l,11 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_savepack
call boucle_texte
ret
btn_clearlevel: ld a,pix_white
ld h,0 ;colonne debut
ld d,12 ;colonne fin
ld l,15 ;ligne debut
ld e,17 ;ligne fin
call #bc44 ;rectangle blanc
ld a,pix_black
ld h,0+1
ld d,12+1
ld l,17+1
ld e,17+1
call #bc44 ;ligne noire
ld a,pix_black
ld h,12+1
ld d,12+1
ld l,15+1
ld e,17+1
call #bc44 ;colonne noire
ld h,1 ;colonne
ld l,17 ;ligne
call #BB75 ;equivalent au locate x,y
ld hl,text_clearlevel
call boucle_texte
ret
;*******************************************************************************
;*** AFFICHAGE TEXTE ***
;***********************
boucle_texte:
ld a,(hl)
cp #FF ;si #FF fin de l'affichage
ret z
call #BB5A
inc hl
jr boucle_texte
ret
;******************
;*** MES TEXTES ***
;******************
text_savepack:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " SAVE PACK "
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//ascii = pen 1
db #FF
text_clearpack:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " CLEAR PACK "
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//ascii = pen 1
db #FF
text_clearlevel:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " CLEAR LEVEL "
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//ascii = pen 1
db #FF
text_menu1:
db 22,1 ;//ascii = affichage transparent
defm " PLAY "
db 22,0 ;//ascii = affichage opaque
db #FF
text_menu2:
db 22,1 ;//ascii = affichage transparent
defm " INSTRUCTIONS "
db 22,0 ;//ascii = affichage opaque
db #FF
text_menu3:
db 22,1 ;//ascii = affichage transparent
defm " CREDITS "
db 22,0 ;//ascii = affichage opaque
db #FF
text_menu4:
db 22,1 ;//ascii = affichage transparent
defm " ???? "
db 22,0 ;//ascii = affichage opaque
db #FF
text_menu5:
db 22,1 ;//ascii = affichage transparent
defm " LEVELS EDITOR "
db 22,0 ;//ascii = affichage opaque
db #FF
text_editeur:
db 15,1 ;//ascii = pen 1
db 31,8,1 ;//locate 8,1
defm "L E V E L S E D I T O R"
db 15,2 ;//ascii = pen 2
db 31,4,3 ;//locate 4,3
defm "PACK"
;++
db 15,1 ;//ascii = pen 1
db 31,5,5 ;//locate 5,5
db 237,237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,8,232,232
db 22,0 ;//ascii = affichage opaque
;--
db 15,1 ;//ascii = pen 1
db 31,5,7 ;//locate 5,7
db 237,237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,8,233,233
db 22,0 ;//ascii = affichage opaque
db 15,2 ;//ascii = pen 2
db 31,19,4 ;//locate 19,4
defm "SELECT LEVEL"
db #FF
texte_choix_niveau:
db 15,2 ;//ascii = pen 2
db 31,4,2 ;//locate 4,2
db 22,1 ;//ascii = affichage transparent
defm "PACK"
db 31,12,2 ;//locate 12,2
defm "CHOOSE LEVEL"
db 31,32,2 ;//locate 32,2
db 22,0 ;//ascii = affichage opaque
defm "COMPLETE"
db 31,36,3 ;//locate 36,3
defm "/720"
;-
db 15,1 ;//ascii = pen 1
db 31,32,10 ;//locate 32,10
db 237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,233
db 22,0 ;//ascii = affichage opaque
db 31,33,10 ;//locate 33,10
defm "PAGE"
;+
db 15,1 ;//ascii = pen 1
db 31,37,10 ;//locate 37,10
db 237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,232
db 22,0 ;//ascii = affichage opaque
db 31,35,11 ;//locate 33,11
defm "/8"
db #FF
text_instructions:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " "
defm " TARGET : "
db 15,0 ;//ascii = pen 0
defm " YOU HAVE A GRID "
defm " 15 * 15 AND YOU USE "
defm " THE CLUES TO UNCOVER "
defm " THE IMAGE. THERE ARE "
defm " NUMBER HORIZONTALLY "
defm " AND VERTICALLY, AND "
defm " THESE TELL YOU HOW "
defm " MANY BLOCKS TO FILL "
defm " IN. "
defm " "
db 15,2 ;//ascii = pen 2
defm " "
defm " CONTROLS : "
db 15,0 ;//ascii = pen 0
defm " MOVE WITH JOYSTICK "
defm " OR CURSORS KEYS. "
defm " "
db 15,2 ;//ascii = pen 2
defm " ???? : "
db 15,0 ;//ascii = pen 0
defm " COMPLETE 100 LEVELS "
defm " FOR UNLOCK. "
defm " "
db 22,0 ;//ascii = affichage opaque
db #FF
text_credits:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " "
defm " IDEA : "
db 15,0 ;//ascii = pen 0
defm "EGOTRIP "
defm " "
defm " "
db 15,2 ;//ascii = pen 2
defm " CODE : "
db 15,0 ;//ascii = pen 0
defm "KUKULCAN "
defm " FANO "
defm " "
defm " "
db 15,2 ;//ascii = pen 2
defm " SOUNDS : "
db 15,0 ;//ascii = pen 0
defm "T&J/GPA "
defm " "
defm " "
db 15,2 ;//ascii = pen 2
defm " LEVELS : "
db 15,0 ;//ascii = pen 0
defm "KUKULCAN "
defm " "
defm " "
db 15,2 ;//ascii = pen 2
defm " TESTERS : "
db 15,0 ;//ascii = pen 0
defm "FANO "
defm " MAXIT "
defm " T&J/GPA "
defm " MEGACHUR "
defm " BRICE RIVE "
db 22,0 ;//ascii = affichage opaque
db #FF
text_game_design:
db 22,1 ;//ascii = affichage transparent
db 15,1 ;//ascii = pen 1
db 31,2,2 ;//ascii = locate
defm "PACK....:"
db 31,2,3 ;//ascii = locate
defm "LEVEL...:"
db 31,2,5 ;//ascii = locate
defm "SCORE...:"
db 31,2,7 ;//ascii = locate
defm "RECORD..:"
db 31,2,8 ;//ascii = locate
defm "MAXIMUM.:"
db 31,2,10 ;//ascii = locate
defm "PLAY....:"
db 31,2,11 ;//ascii = locate
defm "WIN.....:"
db 31,2,12 ;//ascii = locate
defm "LOST....:"
db 31,2,13 ;//ascii = locate
defm "PERFECT.:"
db 31,2,17 ;//ascii = locate
defm "HALL OF FAME"
db 15,2 ;//ascii = pen 2
db 31,2,18 ;//ascii = locate
;defm "-1-" en "1st-"
db 241,226,46
db 31,2,19 ;//ascii = locate
;defm "-2-" en "2nd-"
db 242,227,46
db 31,2,22 ;//ascii = locate
defm "LEVEL MENU"
db 31,18,3 ;//ascii = locate
defm "EXIT"
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//ascii = pen 1
db 31,24,10 ;//ascii = locate
db 239
db 31,24,11 ;//ascii = locate
db 239
db 31,24,12 ;//ascii = locate
db 239
db 31,24,13 ;//ascii = locate
db 239
db 31,24,14 ;//ascii = locate
db 239
db 31,24,15 ;//ascii = locate
db 239
db 31,24,16 ;//ascii = locate
db 239
db 31,24,17 ;//ascii = locate
db 239
db 31,24,18 ;//ascii = locate
db 239
db 31,24,19 ;//ascii = locate
db 239
db 31,24,20 ;//ascii = locate
db 239
db 31,24,21 ;//ascii = locate
db 239
db 31,24,22 ;//ascii = locate
db 239
db 31,24,23 ;//ascii = locate
db 239
db 31,24,24 ;//ascii = locate
db 239
db 31,25,9 ;//ascii = locate
db 238,238,238,238,238,238,238,238
db 238,238,238,238,238,238,238
db #FF
text_vidertv:
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db 31,19,7 ;//locate
db 24,32,24 ;//inverse video + espace + inverse video
db 22,1 ;//ascii = affichage transparent
db 235
db 31,19,8 ;locate
db 234,237
db #FF
text_exit:
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
defm " EXIT "
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//ascii = pen 1
db #FF
db #EE,#EE,#EE ;sert a rien
stock_decor: ;5 * 14 -> le decor de fond sera sauvé ici
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
db #EE,#EE,#EE ;sert a rien
game_cls_grille:
ld h,24 ;gauche
ld d,38 ;droite
ld l,9 ;haut
ld e,23 ;bas
call #BB66 ;equivalent window
call #BB6C ;cls fenetre texte
call reset_windows
ret
msg_perdu:
ld a, 1
call #BB90 ;pen 1
call game_cls_grille
ld hl,text_msg_perdu
call boucle_texte
ret
text_msg_perdu:
db 22,0 ;//ascii = affichage opaque
db 15,3 ;//pen 3
db 31,28,12 ;//locate
defm "YOU LOOSE"
db 31,28,13 ;//locate
db 236,236,236,32,236,236,236,236,236
db 15,1 ;//pen 1
db 31,28,19 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,28,20 ;//locate
db 32,32,32,32,32,32,32,32
db 31,28,21 ;//locate
db 32,32,32,32,32,32,32,32
db 24 ;//inverse video fin
db 15,2 ;//pen 2
db 31,29,22 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,36,20 ;//locate
db 32
db 31,36,21 ;//locate
db 32
db 24 ;//inverse video fin
db 22,1 ;//ascii = affichage transparent
db 31,29,20 ;//locate
defm "REPLAY"
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db #FF
msg_gagne:
ld a, 1
call #BB90 ;pen 1
ld h,24 ;gauche
ld d,38 ;droite
ld l,9 ;haut
ld e,23 ;bas
call #BB66 ;equivalent window
call #BB6C ;cls fenetre texte
call reset_windows
ld hl,text_msg_gagne
call boucle_texte
ret
text_msg_gagne:
db 22,0 ;//ascii = affichage opaque
db 15,3 ;//pen 3
db 31,28,12 ;//locate
defm "WELL DONE"
db 31,28,13 ;//locate
db 236,236,236,236,32,236,236,236,236
db 15,1 ;//pen 1
db 31,28,19 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,28,20 ;//locate
db 32,32,32,32,32,32,32,32
db 31,28,21 ;//locate
db 32,32,32,32,32,32,32,32
db 24 ;//inverse video fin
db 15,2 ;//pen 2
db 31,29,22 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,36,20 ;//locate
db 32
db 31,36,21 ;//locate
db 32
db 24 ;//inverse video fin
db 22,1 ;//ascii = affichage transparent
db 31,30,20 ;//locate
defm "NEXT"
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db #FF
msg_hiscore:
ld a, 1
call #BB90 ;pen 1
ld h,24 ;gauche
ld d,38 ;droite
ld l,9 ;haut
ld e,23 ;bas
call #BB66 ;equivalent window
call #BB6C ;cls fenetre texte
call reset_windows
ld hl,text_msg_hiscore
call boucle_texte
ret
text_msg_hiscore:
db 22,0 ;//ascii = affichage opaque
db 15,3 ;//pen 3
db 31,28,11 ;//locate
defm "WELL DONE"
db 31,28,12 ;//locate
db 236,236,236,236,32,236,236,236,236
;+
db 15,1 ;//ascii = pen 1
db 31,31,16 ;//locate 31,16
db 237,237,237,237,237,237,237,237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,8,8,8,8,8,8,8,232,232,232,232,232,232,232,232
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db 31,26,17 ;//locate
defm "NAME:AAAAAAAA"
;-
db 15,1 ;//ascii = pen 1
db 31,31,18 ;//locate 31,18
db 237,237,237,237,237,237,237,237
db 22,1 ;//ascii = affichage transparent
db 15,2 ;//ascii = pen 2
db 8,8,8,8,8,8,8,8,233,233,233,233,233,233,233,233
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db 31,28,20 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,28,21 ;//locate
db 32,32,32,32,32,32,32,32
db 31,28,22 ;//locate
db 32,32,32,32,32,32,32,32
db 24 ;//inverse video fin
db 15,2 ;//pen 2
db 31,29,23 ;//locate
db 24 ;//inverse video debut
db 32,32,32,32,32,32,32,32
db 31,36,21 ;//locate
db 32
db 31,36,22 ;//locate
db 32
db 24 ;//inverse video fin
db 22,1 ;//ascii = affichage transparent
db 31,30,21 ;//locate
defm "NEXT"
db 22,0 ;//ascii = affichage opaque
db 15,1 ;//pen 1
db #FF
NOTICE TEXTE n° 3 (1.84 Ko)
;VERSION 1.00
org #A4A0
scr_addr EQU #C000
dat_addr EQU #9600
;pen 1 = %10000000 (blanc)
;pen 2 = %00001000 (noir)
;pen 3 = %10001000 (rouge)
pix_color EQU %10001000
pix_mask EQU %00001000
image_larg EQU 15
image_haut EQU 15
.draw_dat
ld B,image_haut
ld HL,scr_addr
ld DE,dat_addr
.draw_dat_loopY
ld HX,pix_color
ld LX,pix_mask
push BC
push HL
ld BC,image_larg*256 ;C = compteur de pixels , au bout de 4 pixels traites
;on change d'octet
ld (HL),%11110000
.draw_dat_loopX
;ld A,(HL) ;prend l'octet en cours a l'ecran
;and LX ;efface le pixel
;ld (HL),A
ld A,(DE) ;case en cours
inc DE ;prochaine addresse
or A ;case vide ?
jr z,draw_dat_skip ;si oui , on ne dessine pas le pixel
ld A,(HL) ;va cherche l'octet
and LX
or HX ;ajoute la couleur du pixel
ld (HL),A ;et on l'ecrit
.draw_dat_skip
ld A,HX ;fait tourner d'un bit vers la droite pour decaler
RRCA ;d'un pixel , couleur et masque (HX LX)
ld HX,A
ld A,LX ;idem avec LX , la methode est certe un peu lente
RRCA ;mais c'est la premiere qui m'est venue a l'esprit
ld LX,A ;vu qu'on ne peut pas utiliser les registres
;alternatifs en basic
inc C ;pixel suivant
ld A,C ;faut bien passer dans A pour tester pfff
and 3 ;modulo 4
jr nz,next_byte_skip ;octet suivant ?
inc HL ;octet suivant a l'ecran
;remet masque et couleur a leur etat d'origine
ld HX,pix_color
ld LX,pix_mask
;idem pour le compteur de pixel
ld C,0
.next_byte_skip
djnz draw_dat_loopX
;ld (HL),#FF ;test
;ligne suivante
pop HL ;recupere l'adresse ecran
ld A,H
and %00111000 ;derniere ligne du char ?
cp %00111000
jr z,next_char
ld A,H
add 8
ld H,A
jr next_line_job_done
.next_char
ld A,H
and %11000111
ld H,A
ld BC,80
add HL,BC
.next_line_job_done
pop BC
djnz draw_dat_loopY
ret