;14*7 ;SameGame for TI89 V1.0 by CandyMan (Gervaise Philippe) ;E-Mail : CandyMan@I-France.com include "..\doorsos.h" include "..\graphlib.h" include "..\userlib.h" include "..\filelib.h" xdef _main xdef _comment xdef _ti89 writestr MACRO move.w \4,-(a7) ;int x, int y, char *str, int mode move.l \3,-(a7) ;int x move.w \2,-(a7) ;int y move.w \1,-(a7) ; jsr doorsos::DrawStrXY ; lea 10(a7),a7 ;Remet la pile comme avant ENDM wait MACRO move.l d1,-(a7) move.l \1,d1 \waitloop nop nop nop nop nop nop dbra d1,\waitloop move.l (a7)+,d1 ENDM _main: jsr graphlib::clr_scr start_menu: move.l #title,a0 move.w #1,d0 move.w #0,d1 move.b #%11111111,d3 jsr graphlib::put_sprite_mask writestr #20,#20,#autor,#4 writestr #40,#30,#nick,#4 writestr #7,#50,#mode_str,#4 ;ecrit "Game mode : < >" writestr #48,#70,#hi_str,#0 writestr #4,#80,#score_a,#4 writestr #4,#90,#score_p,#4 tst.w game_mode bne puzzle_mode writestr #91,#50,#action_str,#0 bra menu_query puzzle_mode: writestr #91,#50,#puzzle_str,#0 menu_query: jsr userlib::idle_loop cmp.w #13,d0 beq start_game cmp.w #338,d0 beq change_mode cmp.w #344,d0 beq change_mode cmp.w #264,d0 bne no_quit rts no_quit: bra menu_query change_mode: move.w #1,d0 sub.w game_mode,d0 move.w d0,game_mode bra start_menu start_game: bsr change_int jsr graphlib::gray4 move.w #1,graphlib::choosescreen move.l graphlib::plane1,a1 jsr graphlib::clr_scr move.l graphlib::plane0,a1 jsr graphlib::clr_scr move.w #4,blockx move.w #3,blocky move.w #0,score move.w #0,timer move.w #0,nsec move.w #100,speed move.w #450,speed_step move.l #0,key_timer move.l #score_str,a0 add.l #8,a0 move.b #32,(a0)+ move.b #32,(a0)+ move.b #32,(a0)+ move.b #32,(a0)+ move.b #32,(a0)+ move.l #111,d1 move.l #arena,a0 fill_loop: move.b #4,d0 jsr userlib::random addq #1,d0 cmp.w #41,d1 ble noput_block mulu game_mode,d0 noput_block: move.b d0,(a0)+ dbra d1,fill_loop bsr draw_screen move.w #0,d0 move.w #159,d2 move.w #80,d1 ; jsr graphlib::horiz move.w #0,-(a7) ;on ecrit des infos sur la ligne d'etat jsr doorsos::ST_busy ; pea info(pc) ; jsr doorsos::ST_showHelp ; lea 6(a7),a7 ; move.w #1,-(a7) ;on choisit la fonte (Normale) jsr doorsos::FontSetSys ; lea 2(a7),a7 ;on restore la pile writestr #0,#92,#score_str,#4 ;ecrit "Score : " en (0,84) move.w #0,d0 move.w #159,d2 move.w #93,d1 ; jsr graphlib::horiz ; bsr change_int bra main_loop put_block move.w #0,timer move.l #arena,a0 add.l #98,a0 moveq #8,d7 \loopy moveq #0,d6 \loopx tst.b (a0)+ beq found add.w #1,d6 cmp.w #14,d6 bne \loopx sub.l #28,a0 sub.w #1,d7 tst.w d7 bne \loopy bra end_game found: moveq #4,d0 jsr userlib::random addq #1,d0 move.b d0,-(a0) move.b d0,d2 move.w d6,d0 add.w #1,d0 move.w d7,d1 bsr draw_block bsr get_address move.w blockx,d0 move.w blocky,d1 move.b (a2),d2 bsr draw_neg_block bra main_loop main_loop: tst.w game_mode bne no_change_speed move.w timer,d0 cmp.w speed,d0 bge put_block move.w current_t,d0 cmp.w speed_step,d0 blt no_change_speed move.w #0,current_t cmp.w #5,speed ble no_change_speed sub.w #1,speed no_change_speed: move.w key_timer,d0 cmp.w #35,d0 bls main_loop moveq #0,d0 move.b #%11111110,d0 ;pour les touches de directions bsr getkey btst #1,d0 ;touche direction gauche beq m_left btst #3,d0 ;touche direction droite beq m_right btst #0,d0 beq m_top btst #2,d0 beq m_bottom btst #4,d0 beq kill moveq #0,d0 move.b #%10111111,d0 ;pour la touche Esc bsr getkey btst #0,d0 beq end_game bra main_loop win_game: end_game: wait #35000 clr.w graphlib::choosescreen jsr graphlib::gray2 bsr restore_int jsr graphlib::clr_scr tst.w game_mode bne puzzle_score action_score: move.w score,d0 cmp.w score_a_nb,d0 ble no_score bra end_score puzzle_score: move.w score,d0 cmp.w score_p_nb,d0 ble no_score end_score: writestr #33,#0,#new,#4 writestr #0,#20,#enter,#4 bsr getstr tst.w game_mode beq action_hs move.w score,score_p_nb move.l #score_p,a0 bra score_save action_hs: move.w score,score_a_nb move.l #score_a,a0 score_save: add.l #9,a0 move.l #name_empty,a2 moveq #7,d0 \loop move.b (a2)+,(a0)+ dbra d0,\loop add.l #7,a0 move.w score,d0 bsr writed0 no_score: bra _main ;=============================================================================== ;=============================================================================== ;=============================================================================== getstr: move.l #name_empty,a2 ;rempli la chaine d espaces moveq #7,d7 \loopstr move.b #32,(a2)+ dbra d7,\loopstr move.l #name_empty,a2 moveq #0,d7 ;d7 -> position dans la chaine get_new_car: writestr #84,#20,#name_empty,#0 jsr userlib::idle_loop cmp.w #13,d0 ;validation de l entree beq end_getstr cmp.w #257,d0 ;backspace beq del_car bra add_car del_car tst d7 beq get_new_car sub.l #1,a2 move.b #32,(a2) sub.b #1,d7 bra get_new_car add_car cmp.b #8,d7 beq get_new_car add.b #1,d7 move.b d0,(a2)+ bra get_new_car end_getstr: rts ;=============================================================================== ;Elimine toutes les colonnes ne contenant aucun symbole ;=============================================================================== check_column: move.l #arena,a0 add.l #111,a0 ;on se positionne a la fin du tableau, en (14,8) moveq #12,d0 next_column: sub.l #1,a0 tst.b (a0) bne column_there move.l a0,a2 ;a2 -> colonne vide move.l a2,a3 ;a3 -> colonne suivant la colonne vide add.l #1,a3 moveq #12,d2 sub.w d0,d2 \move_next_column moveq #7,d1 \move_column: move.b (a3),(a2) move.b #0,(a3) sub.l #14,a3 sub.l #14,a2 dbra d1,\move_column add.l #113,a2 ;colonne suivante add.l #113,a3 ;colonne suivante dbra d2,\move_next_column column_there: dbra d0,next_column rts ;=============================================================================== ;=============================================================================== ;=============================================================================== get_address: move.l #arena,a2 moveq #0,d0 move.w blocky,d0 sub.w #1,d0 mulu #14,d0 add.w blockx,d0 sub.w #1,d0 add.w d0,a2 rts kill_block: move.w #0,ncase sub.w #1,blockx tst.w blockx beq no_lvalue bsr get_address move.b (a2),d0 cmp.b d7,d0 bne no_lvalue move.b #0,(a2) add.w #1,ncase add.w #1,nbcase move.w ncase,-(a7) move.w blocky,-(a7) move.w blockx,-(a7) bsr kill_block move.w (a7)+,blockx move.w (a7)+,blocky move.w (a7)+,ncase no_lvalue: add.w #1,blockx sub.w #1,blocky tst.w blocky beq no_tvalue bsr get_address move.b (a2),d0 cmp.b d7,d0 bne no_tvalue move.b #0,(a2) add.w #1,ncase add.w #1,nbcase move.w ncase,-(a7) move.w blocky,-(a7) move.w blockx,-(a7) bsr kill_block move.w (a7)+,blockx move.w (a7)+,blocky move.w (a7)+,ncase no_tvalue: add.w #1,blocky add.w #1,blockx move.w blockx,d0 cmp.w #15,d0 beq no_rvalue bsr get_address move.b (a2),d0 cmp.b d7,d0 bne no_rvalue move.b #0,(a2) add.w #1,ncase add.w #1,nbcase move.w ncase,-(a7) move.w blocky,-(a7) move.w blockx,-(a7) bsr kill_block move.w (a7)+,blockx move.w (a7)+,blocky move.w (a7)+,ncase no_rvalue: sub.w #1,blockx add.w #1,blocky move.w blocky,d0 cmp.w #9,d0 beq no_bvalue bsr get_address move.b (a2),d0 cmp.b d7,d0 bne no_bvalue move.b #0,(a2) add.w #1,ncase add.w #1,nbcase move.w ncase,-(a7) move.w blocky,-(a7) move.w blockx,-(a7) bsr kill_block move.w (a7)+,blockx move.w (a7)+,blocky move.w (a7)+,ncase no_bvalue: rts kill: move.w #0,nbcase bsr get_address move.b (a2),d7 tst.b d7 ;y a-t-il un bloc ? beq no_kill move.b #0,(a2) move.w #0,ncase move.w blocky,-(a7) move.w blockx,-(a7) bsr kill_block move.w (a7)+,blockx move.w (a7)+,blocky tst ncase ;y a-t-il des case autour ? bne all_good bsr get_address move.b d7,(a2) bra main_loop all_good: bsr drop_block bsr check_column ;regarde s'il y a une colonne vide move.l #arena,a0 add.l #98,a0 tst.b (a0) ;la case (1,8) est vide ? beq win_game bsr draw_screen bsr prepare_block bsr draw_neg_block move.l #score_str,a0 ;on va mettre le score dans score_str add.l #8,a0 move.b #32,(a0)+ ;efface l'ancien score avec des espaces move.b #32,(a0)+ ; move.b #32,(a0)+ ; move.b #32,(a0)+ ; move.b #32,(a0) ; moveq #0,d0 move.w nbcase,d0 mulu d0,d0 add.w score,d0 move.w d0,score bsr writed0 writestr #0,#92,#score_str,#4 move.l #0,key_timer no_kill: bra main_loop ;=============================================================================== ;=============================================================================== ;=============================================================================== m_left: bsr prepare_block bsr draw_block sub.w #1,blockx tst.w blockx bne no_lwarp move.w #14,blockx no_lwarp: bsr prepare_block bsr draw_neg_block move.l #0,key_timer bra main_loop m_right: bsr prepare_block bsr draw_block add.w #1,blockx move.w blockx,d0 cmp.w #15,blockx bne no_rwarp move.w #1,blockx no_rwarp: bsr prepare_block bsr draw_neg_block move.l #0,key_timer bra main_loop m_top bsr prepare_block bsr draw_block sub.w #1,blocky tst.w blocky bne no_twarp move.w #8,blocky no_twarp: bsr prepare_block bsr draw_neg_block move.l #0,key_timer bra main_loop m_bottom: bsr prepare_block bsr draw_block add.w #1,blocky move.w blocky,d0 cmp.w #9,d0 bne no_bwarp move.w #1,blocky no_bwarp: bsr prepare_block bsr draw_neg_block move.l #0,key_timer bra main_loop prepare_block: move.l #arena,a2 ;On va afficher le curseur moveq #0,d0 move.w blocky,d0 sub.w #1,d0 mulu #14,d0 add.w blockx,d0 sub.w #1,d0 add.w d0,a2 move.w blockx,d0 move.w blocky,d1 move.b (a2),d2 rts ;=============================================================================== ;Ote tous les trous dans le jeu (fait "tomber" les blocs) ;=============================================================================== drop_block: move.l #arena,a0 move.w #0,d0 continue: tst.b (a0) beq no_block move.l a0,a2 add.l #14,a2 tst.b (a2) bne no_block moveq #0,d2 move.w d0,d2 divu #14,d2 sub.w #1,d2 move.l a0,a3 move.w d0,d2 move_loop: move.b (a3),d1 move.b #0,(a3) move.b d1,(a2) cmp.w #13,d2 bls move_end sub.l #14,a2 sub.l #14,a3 sub.w #14,d2 bra move_loop move_end: no_block: add.l #1,a0 add.w #1,d0 cmp.w #98,d0 blt continue rts ;=============================================================================== ;Affichage d'un bloc sur l'ecran ;=============================================================================== ;d0.w Position X (1-20) ;d1.w Position Y (1-10) ;d2.b Type du bloc (0-4) ;=============================================================================== draw_block: move.l a2,-(a7) movem d0-d3/a0,-(a7) move.l #block_data,a0 moveq #0,d3 move.b d2,d3 mulu #26,d3 add.l d3,a0 sub.w #1,d0 mulu #11,d0 sub.w #1,d1 mulu #11,d1 move.l #mask,a2 move.l graphlib::plane0,a1 jsr graphlib::put_sprite2 add.l #130,a0 move.l #mask,a2 move.l graphlib::plane1,a1 jsr graphlib::put_sprite2 move.l graphlib::plane0,a1 movem (a7)+,d0-d3/a0 move.l (a7)+,a2 rts ;=============================================================================== ;Affichage d'un bloc sur l'ecran (En inverse) ;=============================================================================== ;d0.w Position X (1-20) ;d1.w Position Y (1-10) ;d2.b Type du bloc (0-4) ;=============================================================================== draw_neg_block: move.l a2,-(a7) move.l d5,-(a7) movem d0-d4/a0-a2,-(a7) move.l #block_data,a0 moveq #0,d3 move.b d2,d3 mulu #26,d3 add.l d3,a0 sub.w #1,d0 mulu #11,d0 sub.w #1,d1 mulu #11,d1 move.w #9,d3 move.l a0,a2 add.l #4,a2 move.l a2,a3 add.l #130,a3 neg_loop1 move.b #255,d4 sub.b (a2),d4 move.b d4,(a2)+ move.b #255,d4 sub.b (a3),d4 move.b d4,(a3)+ move.b #224,d4 sub.b (a2),d4 move.b d4,(a2)+ move.b #224,d4 sub.b (a3),d4 move.b d4,(a3)+ dbra d3,neg_loop1 move.l #mask,a2 move.l graphlib::plane0,a1 jsr graphlib::put_sprite2 add.l #130,a0 move.l #mask,a2 move.l graphlib::plane1,a1 jsr graphlib::put_sprite2 move.l graphlib::plane0,a1 sub.l #130,a0 move.w #9,d3 move.l a0,a2 add.l #4,a2 move.l a2,a3 add.l #130,a3 neg_loop2 move.b #255,d4 sub.b (a2),d4 move.b d4,(a2)+ move.b #255,d4 sub.b (a3),d4 move.b d4,(a3)+ move.b #224,d4 sub.b (a2),d4 move.b d4,(a2)+ move.b #224,d4 sub.b (a3),d4 move.b d4,(a3)+ dbra d3,neg_loop2 movem (a7)+,d0-d4/a0-a2 move.l (a7)+,d5 move.l (a7)+,a2 rts ;=============================================================================== ;Traduit en nombre en chaine et le place dans une autre chaine ;=============================================================================== ;d0.l Nombre (0-655350) ;a0 Pointeur sur la chaine (future fin du nombre) ;=============================================================================== writed0: moveq #0,d1 divu #10,d0 ;apres, d0->prochain nombre,d1->chiffre voulu swap d0 move.w d0,d1 clr.w d0 swap d0 ;d0 -> prochain nombre; d1 -> chiffre a afficher add.b #48,d1 ;on affiche le chiffre move.b d1,(a0) ;on le met dans la chaine sub.l #1,a0 ;on modifie le pointeur sur la chaine cmp.w #0,d0 ;on regarde s'il reste encore des chiffres bne writed0 rts ;=============================================================================== ;=============================================================================== ;=============================================================================== draw_screen: move.l #arena,a2 add.l #112,a2 moveq #8,d1 \loopy moveq #14,d0 \loopx moveq #0,d3 move.b -(a2),d2 bsr draw_block sub.w #1,d0 tst.w d0 bhi \loopx sub.w #1,d1 tst.w d1 bhi \loopy bsr prepare_block bsr draw_neg_block rts ;=============================================================================== ;Recupere la valeur du port clavier ;=============================================================================== getkey: move.w d0,($600018) nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop clr.w d0 move.b ($60001B),d0 rts ;=============================================================================== ;Détourne l'interruption du timer ;=============================================================================== change_int: clr.l d0 move.w #$0700,d0 trap #1 bclr.b #2,($600001) move.l ($64),old_int move.l #new_int,($64) bset.b #2,($600001) trap #1 rts restore_int: clr.l d0 move.w #$0700,d0 trap #1 bclr.b #2,($600001) move.l old_int,($64) bset.b #2,($600001) trap #1 rts new_int: add.w #1,timer add.w #1,current_t add.w #1,key_timer rte block_data: dc.w 11 dc.w 2 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00011111,%00000000 dc.b %00100001,%10000000 dc.b %01000000,%11000000 dc.b %10000000,%01100000 dc.b %10000000,%01100000 dc.b %10000000,%01100000 dc.b %10000000,%01100000 dc.b %01000000,%11000000 dc.b %00100001,%10000000 dc.b %00011111,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %01111111,%11000000 dc.b %10101010,%11100000 dc.b %11000101,%01100000 dc.b %10001010,%11100000 dc.b %11010101,%01100000 dc.b %10101010,%11100000 dc.b %11010101,%01100000 dc.b %10101010,%11100000 dc.b %11010101,%01100000 dc.b %01111111,%11000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00001110,%00000000 dc.b %00011111,%00000000 dc.b %00110011,%10000000 dc.b %01100111,%11000000 dc.b %11101111,%11100000 dc.b %11111111,%11100000 dc.b %01111111,%11000000 dc.b %00111111,%10000000 dc.b %00011111,%00000000 dc.b %00001110,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00001110,%00000000 dc.b %00001110,%00000000 dc.b %00011111,%00000000 dc.b %00010011,%00000000 dc.b %00100111,%10000000 dc.b %00101111,%10000000 dc.b %01111111,%11000000 dc.b %01111111,%11000000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %00000000,%00000000 block_data2: dc.w 11 dc.w 2 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00011110,%00000000 dc.b %00111111,%00000000 dc.b %01110011,%10000000 dc.b %11100111,%11000000 dc.b %11101111,%11000000 dc.b %11111111,%11000000 dc.b %11111111,%11000000 dc.b %01111111,%10000000 dc.b %00111111,%00000000 dc.b %00011110,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %01111111,%10000000 dc.b %11010101,%01000000 dc.b %10100010,%11000000 dc.b %11000101,%01000000 dc.b %10001010,%11000000 dc.b %11010101,%01000000 dc.b %10101010,%11000000 dc.b %11010101,%01000000 dc.b %10101010,%11000000 dc.b %01111111,%10000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00001100,%00000000 dc.b %00010010,%00000000 dc.b %00101101,%00000000 dc.b %01011000,%10000000 dc.b %10010000,%01000000 dc.b %10000000,%01000000 dc.b %01000000,%10000000 dc.b %00100001,%00000000 dc.b %00010010,%00000000 dc.b %00001100,%00000000 dc.b %00000000,%00000000 dc.w 11 dc.w 2 dc.b %00001100,%00000000 dc.b %00001100,%00000000 dc.b %00011110,%00000000 dc.b %00011110,%00000000 dc.b %00111111,%00000000 dc.b %00111111,%00000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %11111111,%11000000 dc.b %11111111,%11000000 dc.b %00000000,%00000000 mask: dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %11111111,%11100000 dc.b %00000000,%00000000 nsec dc.w 0 speed dc.w 0 speed_step dc.w 0 current_t dc.w 0 blockx dc.w 1 blocky dc.w 1 score dc.w 0 game_mode dc.w 0 ;mode de jeu (0 = action, 1 = puzzle) ncase dc.w 0 ;nb de cases identiques autour ;d'un symbole (profondeur de 1) nbcase dc.w 0 ;nb de cases identiques autour ;d'un symbole (profondeur infini) timer dc.w 0 old_int dc.l 0 key_timer dc.w 0 info dc.b " SameGame V1.0 by CandyMan",0 autor dc.b "by GeRvAiSe PhIlIpPe",0 nick dc.b "- CandyMan -",0 score_str dc.b "Score : ",32,32,32,32,32,0 mode_str dc.b "Game mode : < ",32,32,32,32,32,32,32,32," >",0 action_str dc.b 32,"Action",32,0 puzzle_str dc.b 32,"Puzzle",32,0 hi_str dc.b "High scores",0 name_empty dc.b 32,32,32,32,32,32,32,32,0 new dc.b "New high score !",0 enter dc.b "Your name : < >",0 score_a_nb dc.w 0 score_p_nb dc.w 0 score_a dc.b "Action",32,32,32,"CandyMan",32,32,32,32,32,32,32,"0",0 score_p dc.b "Puzzle",32,32,32,"CandyMan",32,32,32,32,32,32,32,"0",0 title: dc.w 15 dc.w 19 dc.b %00001111,%10000000,%00000000,%00000000,%00000000,%00000000,%00000011,%11100000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000,%00001110,%00000111,%00001110,%00000000,%00000000,%11100000 dc.b %00011111,%11000000,%00000000,%00000000,%00000000,%00000000,%00000111,%11110000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000,%00001110,%00001111,%00011110,%00000000,%00000001,%11100000 dc.b %00111111,%11000000,%00000000,%00000000,%00000000,%00000000,%00001111,%11111000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000,%00001110,%00001110,%01111110,%00000000,%00000111,%11100000 dc.b %00111000,%00000000,%00000000,%00000000,%00000000,%00000000,%00011110,%00111000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000,%00001111,%00001110,%01111110,%00000000,%00000111,%11100000 dc.b %01110000,%00000000,%11110000,%01101110,%11110000,%01111100,%00011100,%00000000,%00111100,%00011011 dc.b %10111100,%00011111,%00000000,%00000111,%00011110,%00001110,%00000000,%00000000,%11100000 dc.b %01110000,%00000011,%11111100,%11111111,%11111000,%11111111,%00111000,%00000000,%11111111,%00111111 dc.b %11111110,%00111111,%11000000,%00000111,%00011100,%00001110,%00000000,%00000000,%11100000 dc.b %01111111,%10000111,%11111100,%11111111,%11111001,%11111111,%00111001,%11111101,%11111111,%00111111 dc.b %11111110,%01111111,%11000000,%00000111,%00011100,%00001110,%00000000,%00000000,%11100000 dc.b %00111111,%11000111,%10011100,%11110111,%10111011,%11000011,%01110111,%11111101,%11100111,%00111101 dc.b %11101110,%11110000,%11000000,%00000011,%10111100,%00001110,%00000000,%00000000,%11100000 dc.b %00011111,%11101110,%00011100,%11100111,%00111011,%10011110,%01110111,%11111011,%10000111,%00111001 dc.b %11001110,%11100111,%10000000,%00000011,%10111000,%00001110,%00000000,%00000000,%11100000 dc.b %00000000,%11101110,%00011100,%11100111,%00111011,%11111100,%01110000,%00111011,%10000111,%00111001 dc.b %11001110,%11111111,%00000000,%00000011,%10111000,%00001110,%00000000,%00000000,%11100000 dc.b %11100000,%11101110,%00011100,%11100111,%00111011,%11100000,%01110000,%01110011,%10000111,%00111001 dc.b %11001110,%11111000,%00000000,%00000001,%11111000,%00001110,%00000000,%00000000,%11100000 dc.b %11100001,%11101111,%00011100,%11100111,%00111011,%10000011,%01110000,%11110011,%11000111,%00111001 dc.b %11001110,%11100000,%11000000,%00000001,%11110000,%01111111,%11000000,%00000111,%11111100 dc.b %11111111,%11001111,%11111110,%11100111,%00111001,%11111111,%01111111,%11100011,%11111111,%10111001 dc.b %11001110,%01111111,%11000000,%00000001,%11110000,%01111111,%11000000,%00000111,%11111100 dc.b %01111111,%10000111,%11111110,%11100111,%00111001,%11111110,%00111111,%11000001,%11111111,%10111001 dc.b %11001110,%01111111,%10000000,%00000000,%11100000,%01111111,%11000001,%10000111,%11111100 dc.b %00111111,%00000011,%11101110,%01000010,%00010000,%01111100,%00011111,%00000000,%11111011,%10010000 dc.b %10000100,%00011111,%00000000,%00000000,%11100000,%00000000,%00000001,%10000000,%00000000 _comment dc.b "SameGame V1.1 by CandyMan",0 BSS arena ds.b 112 end