;========================================================== ;tetrisgrey ;========================================================== .nolist #ifdef VTI #define TI83P #endif ;#include "keyval.inc" #include "ion.inc" .list #ifdef TI83P .org progstart-2 .db $BB,$6D #else .org progstart #endif ret jr nc,start_of_program .db "GT-cjgone2",0 ;========================================================== ; hello from america ;========================================================== start_of_program: xor a out ($20),a call gsClearbuffer call gsEnable Bam: ld a,1 ld (Arrw_Pnter),a xor a ld (GameOver),a ld hl,Image1_Layer1 ld de,gsActivebuf1 ld bc,768 ldir ld hl,Image1_Layer2 ld de,gsActivebuf2 ld bc,768 ldir ld hl,Image3_Layer1 ld de,gsActivebuf1 ld bc,588 ldir ld hl,Image3_Layer2 ld de,gsActivebuf2 ld bc,588 ldir Delay_Home_Loopx555: ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $DF jp z,LoadUpx ld a,$FF nop out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $FE Call z, Arrw_Down ld a,$FF nop out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $F7 Call z, Arrw_Up ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $FE jr z,_End jp Delay_Home_Loopx555 _End: Call gsDisable ret Arrw_Down: Call Superior_Delay ld a,(Arrw_Pnter) cp 3 ret z push af Call RedrawArrow pop af inc a ld (Arrw_Pnter),a Call RedrawArrow ret Arrw_Up: Call Superior_Delay ld a,(Arrw_Pnter) cp 1 ret z push af Call RedrawArrow pop af dec a ld (Arrw_Pnter),a Call RedrawArrow ret RedrawArrow: ld a,(Arrw_Pnter) cp 1 jr z,Top cp 2 jr z,Middle cp 3 jr z,Bottom Top: ld de,19*12 jr WakaCrabz Middle: ld de,30 * 12 jr WakaCrabz Bottom: ld de,41 * 12 WakaCrabz: xor a ld ix,Arrow1 ld b,5 push bc push de ld hl,gsactivebuf1 add hl,de Call PutSpriteXOR pop de pop bc ld ix,Arrow2 xor a ld hl,gsactivebuf2 add hl,de Call PutSpriteXOR ret Arrw_Pnter: .db 1 ;Arrow_LUT: ;.db 20, 31, 42 Superior_Delay: ; args b = ? ld b,15 YummyFishCake: push bc ld b,250 Yummy_Delay: Call TempFill djnz Yummy_Delay pop bc djnz YummyFishCake ret LoadUpx: CALL Superior_Delay CALL Superior_Delay ld a,(Arrw_Pnter) cp 1 jp z,StartTheDangGameLol cp 2 jp z,Instructions Hiscore: xor a out ($20),a DispHiScores: Call gsDisable ei ld hl,Image1_Layer1 ld de,$9340 ld bc,768 ldir ld hl,Image1_Layer2 ld de,gsactivebuf2 ld bc,768 ldir ld a,22 ld (PenCol),a xor a ld (PenRow),a ld hl,HiscoreMsg bcall(_VPutS) xor a ld (PenCol),a ld a,10 ld (PenRow),a ld hl,UserA bcall(_VPutS) xor a ld (PenCol),a ld a,28 ld (PenRow),a ld hl,UserB bcall(_VPutS) xor a ld (PenCol),a ld a,46 ld (PenRow),a ld hl,UserC bcall(_VPutS) ld hl,$9340 ld de,gsactivebuf1 ld bc,768 ldir call gsEnable ld de,18 * 12 ld hl,ScoreA xor a Call Draw_Hi_Score ld de,36 * 12 ld hl,ScoreB xor a Call Draw_Hi_Score ld de,54 * 12 ld hl,ScoreC xor a Call Draw_Hi_Score Call El_Stupido_Pause jp Bam El_Stupido_Pause: ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $DF jr nz, El_Stupido_Pause CALL Superior_Delay CALL Superior_Delay ret HiscoreMsg: .db "Hiscores",0 Instructions: Call gsDisable ei ld hl,Image1_Layer1 ld de,$9340 ld bc,768 ldir ld hl,Image1_Layer2 ld de,gsactivebuf2 ld bc,768 ldir ld hl,Vroog xor a Call DispStr ld hl,Instr ld a,7 Call DispStr ld hl,Instr2 ld a,14 Call DispStr ld hl,Instr3 ld a,21 Call DispStr ld hl,Instr4 ld a,28 Call DispStr ld hl,Instr5 ld a,35 Call DispStr ld hl,piecrust ld a,42 Call DispStr ld hl,piecrust2 ld a,49 Call DispStr ld hl,$9340 ld de,gsactivebuf1 ld bc,768 ldir call gsEnable Call El_Stupido_Pause jp Bam DispStr: ; hl = null term string a = row . column = 0 ld (PenRow),a xor a ld (PenCol),a bcall(_Vputs) ret StartTheDangGameLol: xor a ld (Arrw_Pnter),a ld (Score),a ld (Score+1),a ld (Score+2),a ld (Score+3),a ld (Score+4),a ld (StatusFlag),a ;ld (Level),a ld hl,TestrisMtrx ld de,TestrisMtrx+1 ld (hl),0 ;Call ChkLvl ld bc, 224 ldir xor a ld (Blah),a ld (GameOver),a ld (Level),a ld a,(Level) ld b,a add a,a add a,a add a,b ld e,a ld d,0 ld hl,Score_Per_Lvl add hl,de ld de,Add ld bc,5 ldir Call gsDisable ei ld hl,$9340 ld de,$9340 + 1 ld (hl),0 ld bc,768 ldir ld hl,WhatMode xor a Call DispStr call fastCopy Restart_Option: bcall(_GetKey) cp $8E jr z,Newlvl cp $8F jr z,Newlvl cp $90 jr z,Newlvl cp $91 jr z,Newlvl cp $92 jr z,Newlvl cp $93 jr z,Newlvl cp $94 jr z,Newlvl cp $95 jr z,Newlvl jr Restart_Option NewLvl: ld b,$8E sub b ld (Level),a Call Subscore ld a,7 ld hl,Dimensions Call DispStr ld a,14 ld hl,Dimx Call DispStr ld a,21 ld hl,Dimz Call DispStr Call fastCopy Dimentia: bcall(_GetKey) cp $8E jr z,Newlvl3 cp $8F jp z,Newlvl2 jr Dimentia Newlvl3: ld a,1 ld (StatusFlag),a call gsEnable xor a out ($20),a ld hl,Image1_Layer1 ld de,gsActivebuf1 ld bc,768 ldir ld hl,Image1_Layer2 ld de,gsActivebuf2 ld bc,768 ldir ld hl,TestrisMtrx ld de,11 ld b,13 ld a,1 Reset_Fat_Loopa: ld (hl),a inc hl ld (hl),a inc hl ld (hl),a inc hl ld (hl),a inc hl ld (hl),a add hl,de ld (hl),a inc hl djnz Reset_Fat_Loopa xor a ld de,0 ld b,12 _BlokLoop: push bc ld b,4 _Blokers: push af push bc push de ld hl,gsactivebuf1 add hl,de ld b,5 ld ix,Blok Call PutSpriteXOR pop de pop bc pop af ld c,5 add a,c djnz _Blokers ld hl,60 add hl,de ex de,hl xor a pop bc djnz _BlokLoop ld de,TestrisMtrx ld hl,Extra_Reset_Data ld bc,16 ldir ld de,TestrisMtrx+208 ld hl,Extra_Reset_Data ld bc,16 ldir jp Continuewithlyfer Newlvl2: ld hl,TestrisMtrx ld de,15 ld b,13 ld a,1 Reset_Fat_Loop: ld (hl),a add hl,de ld (hl),a inc hl djnz Reset_Fat_Loop jr Continuewithlyf Dimensions: .db "Choose dimension ( 0-1)",0 Dimx: .db "0 = 10 across (standard)",0 Dimz: .db "1 = 14 across",0 Blok: .db %11111000 .db %11011000 .db %10101000 .db %11011000 .db %11111000 Continuewithlyf: ld de,TestrisMtrx ld hl,Extra_Reset_Data ld bc,16 ldir ld de,TestrisMtrx+208 ld hl,Extra_Reset_Data ld bc,16 ldir call gsEnable xor a out ($20),a ld hl,Image1_Layer1 ld de,gsActivebuf1 ld bc,768 ldir ld hl,Image1_Layer2 ld de,gsActivebuf2 ld bc,768 ldir Continuewithlyfer: Call Randzorz Call New_Piece Call Next_Piece Call Draw_Lvl Keys: ld a,(GameOver) cp 1 jp z,Over ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $FE jp z,Over ld a,(BlahFish) cp 1 jp nz,CowFishee xor a ld (BlahFish),a ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $BF Call z,Pause ld a,$BF out (1),a nop nop in a,(1) cp $DF Call z,Down jr RoflSkipper CowFishee: ld a,(BlahFish) inc a ld (BlahFish),a RoflSkipper: ld a,$FF nop out (1),a ld a,$FF nop out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $FD Call z,Left ld a,$FF out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $FB Call z,Right ld a,$FF nop nop out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $F7 Call z,Rotate_Piece ld a,$FF nop nop out (1),a ld a,$FE out (1),a nop nop in a,(1) cp $FE Call z,Gravity ld a,(Level) ld b,a ld a,8 sub b ld b,a ld a,(Blah) cp b ; controlled by le jp nz,CowFish xor a ld (Blah),a Call Gravity jr RoflSkip CowFish: inc a ld (Blah),a RoflSkip: ld b,226 Super_Delay: Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill Call TempFill djnz Super_Delay ld a,$FF nop nop out (1),a jp Keys ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;END OF KEYS Blah: .db 0 Blahmore: .db 0 BlahFish: .db 0 Counter: ;down .db 0 CounterB: .db 0 ;left CounterC: .db 0 ; right GameOver: .db 0 GameBye: .db "Game Over!",0 Pause: Delay_Home_Loopkkk: ld hl,gsactivebuf1 ld de,$9340 ld bc, 768 ldir ld hl,gsactivebuf2 ld de,$86EC ld bc, 768 ldir ld hl,Image4_Layer1 ld de, gsactivebuf1 + ( 27 * 12) ld bc, 132 ldir ld hl,Image4_Layer2 ld de, gsactivebuf2 + ( 27 * 12) ld bc, 132 ldir Call Superior_Delay Call Superior_Delay RuniteRunescapez: ; hint: I play that game :] ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $BF jr z,LoadUpkkk jr RuniteRunescapez LoadUpkkk: ld de, gsactivebuf1 ld hl,$9340 ld bc, 768 ldir ld de, gsactivebuf2 ld hl,$86EC ld bc, 768 ldir ret Over: Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 ld hl,Image2_Layer1 ld de, gsactivebuf1 + ( 27 * 12) ld bc, 132 ldir ld hl,Image2_Layer2 ld de, gsactivebuf2 + ( 27 * 12) ld bc, 132 ldir Call Superior_Delay Call Superior_Delay Delay_Home_Loop: ld a,$FF nop out (1),a ld a,$BF out (1),a nop nop in a,(1) cp $DF jr z,LoadUp jr Delay_Home_Loop LoadUp: ld hl,ScoreA ld de,Score Call ChkEqual cp 0 jr z,MehCramz ld hl,ScoreB ld de,ScoreC ld bc,5 ldir ld hl,UserB+2 ld de,UserC+2 ld bc,10 ldir ld hl,Score ld de,ScoreB ld bc,5 ldir ld hl,UserB jp InputName MehCramz: ld hl,ScoreB ld de,Score Call ChkEqual cp 0 jr z,MehCramz2 ld hl,Score ld de,ScoreC ld bc,5 ldir ld hl,UserC jp InputName MehCramz2: ld de,ScoreA ld hl,Score Call ChkScore cp 1 ; hl > de jr nz,MooFrog ld hl,ScoreB ld de,ScoreC ld bc,5 ldir ld hl,UserB+2 ld de,UserC+2 ld bc,10 ldir ld hl,ScoreA ld de,ScoreB ld bc,5 ldir ld hl,UserA+2 ld de,UserB+2 ld bc,10 ldir ld hl,Score ld de,ScoreA ld bc,5 ldir ld hl,UserA jp InputName MooFrog: ld de,ScoreB ld hl,Score Call ChkScore cp 1 jp nz,MooFrog2 ld hl,ScoreB ld de,ScoreC ld bc,5 ldir ld hl,UserB+2 ld de,UserC+2 ld bc,10 ldir ld hl,Score ld de,ScoreB ld bc,5 ldir ld hl,UserB jp InputName MooFrog2: ld de,ScoreC ld hl,Score Call ChkScore cp 1 jp nz,End_Of_Pasta ld hl,Score ld de,ScoreC ld bc,5 ldir ld hl,UserC jp InputName End_Of_Pasta: jp start_of_program InputName: push hl Call gsDisable ld hl,$9340 ld de,$9340+1 ld (hl),0 ld bc,768 ldir xor a ld (PenCol),a ld (PenRow),a ld hl,Winner bcall(_VPUTS) xor a ld (PenCol),a ld a,10 ld (PenRow),a ld hl,Winner2 bcall(_VPUTS) xor a ld (PenCol),a ld a,20 ld (PenRow),a ld hl,Winner3 bcall(_VPUTS) Call fastCopy CALL Superior_Delay CALL Superior_Delay CALL Superior_Delay CALL Superior_Delay CALL Superior_Delay CALL Superior_Delay ld a,7 ld (Currow),a ld a,1 ld (CurCol),a ld hl,Menu bcall(_PutS) ld a,5 ld (Currow),a ;--------------------------------- Sigma's freakin' intense string input routine :D GetStr: RES AppTextSave, (IY + AppFlags) LD HL, buffer ; Init pointer XOR A LD B, A ; Init character counter LD (CurCol), A KeyLoop: EX DE, HL ; Get a character bcall(_GetCSC) EX DE, HL OR A ; If no character recieved, restart JR Z, KeyLoop CP $36 ; If [ENTER] pressed, exit JR NZ, NotEnter LD (HL), 0 ; Null-terminate buffer ;-------------- Modificationz pop de inc de inc de ;push bc inc b ld hl,buffer ld c,b ld b,0 ldir Call gsEnable jp Hiscore ;------------------------ NotEnter: LD C, A ; Save input char temporarily LD A, B ; See if max number of characters input CP 10 JR Z, KeyLoop LD A, C ; Restore char SUB $0A ; Throw out all keys below [+] JR C, KeyLoop CP $2F - $0A + 1 ; Throw out all keys above [MATH] JR NC, KeyLoop PUSH HL ; Convert scan code into character LD H, 0 LD L, A LD DE, CharTable ADD HL, DE LD A, (HL) POP HL bcall(_PutC) ; Echo it LD (HL), A ; Write char to buffer INC HL ; Increment pointer INC B ; Increment char counter JR KeyLoop CharTable: .DB $27, "WRMH", $FF, $FF ; + - × ÷ ^ undefined .DB "?", $5B, "VQLG", $FF, $FF ; (-) 3 6 9 ) TAN VARS undefined .DB ":ZUPKFC", $FF ; . 2 5 8 ( COS PRGM STAT .DB " YTOJEB", $FF, $FF ; 0 1 4 7 , SIN APPS XT?n undefined .DB "XSNIDA" ;-------------End of his crazy routine Blank: .db " " buffer: .db " ",0 Menu: .db ">2nd<",0 Winner: .db "Congratz!",0 Winner2: .db "New Hi-Score!!!!",0 Winner3: .db "Please type in your name:",0 Down: Call Gravity ld a,(Counter) cp 1 jp z,Finished jp Down Finished: xor a ld (Counter),a ret ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- Gravity: xor a ld (Counter),a Call Bottom_Collision ld a,(Counter) cp 0 jp nz,Ohno Call PieceOneReset Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 ld a,(Block_Structure+1) inc a ld (Block_Structure+1),a Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call SetpieceOne ret Ohno: Call Check_Rows Call Next_Piece Call New_Piece Call Next_Piece xor a ld (Blah),a ret ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;LEFT Left: xor a ld (CounterB),a ;ld a,(Block_Structure) ;cp 0 ;jp z,SkipBlah Call Left_Collide ld a,(CounterB) cp 0 ret nz Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call PieceOneReset ld a,(Block_Structure) dec a ld (Block_Structure),a Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call SetpieceOne SkipBlah: ret ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;END OF LEFT ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;RIGHT Right: xor a ld (CounterC),a Call Right_Collide ld a,(CounterC) cp 0 ret nz Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call PieceOneReset ld a,(Block_Structure) inc a ld (Block_Structure),a Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call SetpieceOne SkipBlahx: ret ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------- CounterD: .db 0 Check_Rows: ld hl,TestrisMtrx ld a,(Block_Structure+1) cp 0 jr nz,FrothyMilk inc a ld (Block_Structure+1),a FrothyMilk: ld b,a ld de,16 Addup: add hl,de djnz Addup Aligne: ld b,16 Find_Rows: ld a,(hl) cp 0 jp nz,RoflCat ld a,1 ld (CounterD),a RoflCat: inc hl djnz Find_Rows ld a,(CounterD) cp 0 Call z,Delete_Line xor a ld (CounterD),a ld a,(Block_Structure+1) inc a cp 13 jr z,Finishedq ld (Block_Structure+1),a jp Aligne Finishedq: ret ;---------------------------------------------------- Delete_Line: push af push bc push de push hl Call Calculate_Score Call ChkLvl ld hl,TestrisMtrx ld a,(Block_Structure+1) cp 0 jr z,Alignezz ld b,a ld de,16 Addupzz: add hl,de djnz Addupzz Alignezz: ld a,(Block_Structure+1) ld b,a push hl ld de,-16 add hl,de pop de Reset_Loop: push bc push hl push de ld bc,16 ldir pop de pop hl pop bc dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl ;16 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 dec de ; 16 djnz Reset_Loop ld hl,Extra_Reset_Data ld de,testrismtrx ld bc,16 ldir ld hl,Extra_Reset_Data2 ld de,testrismtrx+16 ld bc,16 ldir ld hl,gsactivebuf1 ld a,(Block_Structure+1) ; y cor dec a cp -1 jr z,Dont_Inc2qq cp 0 jr z,Dont_Inc2qq ld b,a ld de,60 Add_Loop2qq: add hl,de djnz Add_Loop2qq Dont_Inc2qq: ld a,(Block_Structure+1) dec a ld b,a add a,a add a,a add a,b ld b,a ; counter! dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl push hl pop de push hl ld hl,60 add hl,de ex de,hl pop hl Move_Pic_Loop: push bc push hl push de ld bc,9 ldir pop de pop hl pop bc dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de djnz Move_Pic_Loop ld hl,gsactivebuf2 ld a,(Block_Structure+1) ; y cor dec a cp -1 jr z,Dont_Inc2qq4 cp 0 jr z,Dont_Inc2qq4 ld b,a ld de,60 Add_Loop2qq4: add hl,de djnz Add_Loop2qq4 Dont_Inc2qq4: ld a,(Block_Structure+1) dec a ld b,a add a,a add a,a add a,b ld b,a ; counter! dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl push hl pop de push hl ld hl,60 add hl,de ex de,hl pop hl Move_Pic_Loop4: push bc push hl push de ld bc,9 ldir pop de pop hl pop bc dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec hl dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de dec de djnz Move_Pic_Loop4 ld de,gsactivebuf1 ld hl,Image1_Layer1 ld bc,60 ldir ld de,gsactivebuf2 ld hl,Image1_Layer2 ld bc, 60 ldir ld hl,gsactivebuf1 + 60 + 8 ld a,(hl) or %00000011 ld (hl),a ld hl,gsactivebuf2 + 60 + 8 ld a,(hl) or %00000010 and %1111110 ld (hl),a ld a,(StatusFlag) cp 1 jr nz,Yugioh ld hl,TestrisMtrx+16 ld a,1 ld (hl),a inc hl ld (hl),a inc hl ld (hl),a inc hl ld (hl),a inc hl ld (hl),a xor a ld b,4 Kabash: push af push bc ld b,5 ld hl,gsactivebuf1 ld ix,Blok Call PutSpriteXOR pop bc pop af ld c,5 add a,c djnz Kabash Yugioh: pop hl pop de pop bc pop af ret Bottom_Collision: ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolxee ld b,a ld de,16 LoopADDxee: add hl,de djnz LoopADDxee AlignedLolxee: ld a,(Block_Structure+2) cp 1 jr z,Onezxrr cp 2 jr z,Twozxrr cp 3 jr z,Threezxrr cp 4 jr z,Fourzxrr cp 5 jr z, Fivezxrr cp 6 jr z, Sixzxrr cp 7 jr z,Sevenzxrr Onezxrr: ld de,PieceOne inc de jr Rawrrr Twozxrr: ld de,PieceTwo inc de jr Rawrrr Threezxrr: ld de,PieceThree inc de jr Rawrrr Fourzxrr: ld de,PieceFour inc de jr Rawrrr Fivezxrr: ld de,PieceFive inc de jr Rawrrr Sixzxrr: ld de,PieceSix inc de jr Rawrrr Sevenzxrr: ld de,PieceSeven inc de jr Rawrrr Rawrrr: ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld b,5 Delete_Loopqq: push bc ld b,4 Resettt: ld a,(de) cp 2 jr z,Cough cp 5 jr z,Cough cp 6 jr z,Cough jr No_Resettt Cough: ld a,(hl) cp 1 jp nz,No_Resettt ld a,1 ld (Counter),a No_Resettt: inc de inc hl djnz Resettt push de ld de,12 add hl,de pop de pop bc djnz Delete_Loopqq ret Left_Collide: ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolxeexc ld b,a ld de,16 LoopADDxeexc: add hl,de djnz LoopADDxeexc AlignedLolxeexc: ld a,(Block_Structure+2) cp 1 jr z,Onezxrrxc cp 2 jr z,Twozxrrxc cp 3 jr z,Threezxrrxc cp 4 jr z,Fourzxrrxc cp 5 jr z,Fivezxrrxc cp 6 jr z,Sixzxrrxc cp 7 jr z,Sevenzxrrxc Onezxrrxc: ld de,PieceOne inc de jr Rawrrrxc Twozxrrxc: ld de,PieceTwo inc de jr Rawrrrxc Threezxrrxc: ld de,PieceThree inc de jr Rawrrrxc Fourzxrrxc: ld de,PieceFour inc de jr Rawrrrxc Fivezxrrxc: ld de,PieceFive inc de jr Rawrrrxc Sixzxrrxc: ld de,PieceSix inc de jr Rawrrrxc Sevenzxrrxc: ld de,PieceSeven inc de jr Rawrrrxc Rawrrrxc: ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld b,4 Delete_Loopqqxc: Resetttxc: ld a,(de) cp 1 jr nz, Next_Check dec hl ld a,(hl) inc hl cp 1 jr nz,Next_Check ld a,1 ld (CounterB),a No_Resetttxc: inc de inc de inc de inc de push de ld de,16 add hl,de pop de djnz Resetttxc ret Next_Check: push hl push de push bc ld b,4 Looped: ld a,(de) cp 5 jr z,Moo cp 3 jr z,Moo jr Lame Moo: ld a,(hl) cp 1 jr nz,Lame ld a,1 ld (CounterB),a Lame: inc hl inc de djnz Looped pop bc pop de pop hl jr No_Resetttxc Right_Collide: ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolxeexcaa ld b,a ld de,16 LoopADDxeexcaa: add hl,de djnz LoopADDxeexcaa AlignedLolxeexcaa: ld a,(Block_Structure+2) cp 1 jr z,Onezxrrxcaa cp 2 jr z,Twozxrrxcaa cp 3 jr z,Threezxrrxcaa cp 4 jr z,Fourzxrrxcaa cp 5 jr z,Fivezxrrxcaa cp 6 jr z,Sixzxrrxcaa cp 7 jp z,SevenMoo Onezxrrxcaa: ld de,PieceOne inc de jr Rawrrrxcaa Twozxrrxcaa: ld de,PieceTwo inc de jr Rawrrrxcaa Threezxrrxcaa: ld de,PieceThree inc de jr Rawrrrxcaa Fourzxrrxcaa: ld de,PieceFour inc de jr Rawrrrxcaa Fivezxrrxcaa: ld de,PieceFive inc de jr Rawrrrxcaa Sixzxrrxcaa: ld de,PieceSix inc de jr Rawrrrxcaa SevenMoo: ld de,PieceSeven inc de jr Rawrrrxcaa Rawrrrxcaa: ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl inc de inc de inc de inc hl inc hl inc hl ld b,4 Delete_Loopqqxcaa: Resetttxcaa: ld a,(de) cp 1 jr nz, Next_Checkaa inc hl ld a,(hl) dec hl cp 1 jr nz,Next_Checkaa ld a,1 ld (CounterC),a No_Resetttxcaa: inc de inc de inc de inc de push de ld de,16 add hl,de pop de djnz Resetttxcaa ret Next_Checkaa: push hl push de push bc dec hl dec hl dec hl dec de dec de dec de ld b,4 Loopedaa: ld a,(de) cp 6 jr z,Mooaa cp 4 jr z,Mooaa jr Lameaa Mooaa: ld a,(hl) cp 1 jr nz,Lameaa ld a,1 ld (CounterC),a Lameaa: inc hl inc de djnz Loopedaa pop bc pop de pop hl jr No_Resetttxcaa ;-------------------------------------- ;-------------------------------------- ;-------------------------------------- ;-------------------------------------- Rotate_Piece: ld a,(Block_Structure+3) ; rotation number ld b,a ld a,(Block_Structure+2) cp 1 jr z,Onezx9 cp 2 jr z,Twozx9 cp 3 jr z,Threezx9 cp 4 jr z,Fourzx9 cp 5 jr z,Fivezx9 cp 6 jr z,Sixzx9 cp 7 jr z,Sevenzx9 Onezx9: ld c,1 ld hl,PieceOne inc hl jr Rawr9 Twozx9: ld c,2 ld hl,PieceTwo inc hl jr Rawr9 Threezx9: ld c,2 ld hl,PieceThree inc hl jr Rawr9 Fourzx9: ld c,4 ld hl,PieceFour inc hl jr Rawr9 Fivezx9: ld c,4 ld hl,PieceFive inc hl jr Rawr9 Sixzx9: ld c,2 ld hl,PieceSix inc hl jr Rawr9 Sevenzx9: ld c,4 ld hl,PieceSeven inc hl jr Rawr9 Rawr9: ld a,b inc a inc c cp c jr nz,Reset_Rotate ld a,1 Reset_Rotate: push af dec a add a,a add a,a ld b,a add a,a add a,a add a,b ld e,a ld d,0 add hl,de push hl ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolxeekkk ld b,a ld de,16 LoopADDxeekkk: add hl,de djnz LoopADDxeekkk AlignedLolxeekkk: push hl Call PieceOneReset pop hl ; hl = matrx pop de ; de = 4 x 4 square ld b,4 Quik_Rotate_Loop: push bc ld b,4 Even_Happier_Loop: ld a,(de) cp 1 jr nz,Skip_the_xor_check ld c,a ld a,(hl) xor c cp 0 jp z,RotationFailed Skip_the_xor_check: inc hl inc de djnz Even_Happier_Loop ld b,12 Add14: inc hl djnz Add14 pop bc djnz Quik_Rotate_Loop Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 pop af ld (Block_Structure+3),a Call SetpieceOne Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 ret RotationFailed: pop bc pop af Call SetpieceOne ret New_Piece: ;-----> Generate a random number ; ouput a=answer 0<=a<=255 ; all registers are preserved except: af ld a,(Temp_Piece) ld (Block_Structure+2),a Call Randzorz StructureBlockOne: ld (Temp_Piece),a ld a,(StatusFlag) cp 1 jr nz,Create14Piece ld a,8 ld (Block_Structure),a jr Pokemon4eva Create14Piece: ld a,6 ld (Block_Structure),a Pokemon4eva: xor a ld (Block_Structure+1),a ld a,1 ld (Block_Structure+3),a Call Draw_Tetris_Piece1 Call Draw_Tetris_Piece2 Call SetpieceOne ret Temp_Piece: .db 1 SetpieceOne: ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolxx ld b,a ld de,16 LoopADDxx: add hl,de djnz LoopADDxx AlignedLolxx: ld a,(Block_Structure+2) cp 1 jr z,Onezxx cp 2 jr z,Twozxx cp 3 jr z,Threezxx cp 4 jr z,Fourzxx cp 5 jr z,Fivezxx cp 6 jr z,Sixzxx cp 7 jr z,Sevenzxx Onezxx: ld de,PieceOne inc de jr Rawrx Twozxx: ld de,PieceTwo inc de jr Rawrx Threezxx: ld de,PieceThree inc de jr Rawrx Fourzxx: ld de,PieceFour inc de jr Rawrx Fivezxx: ld de,PieceFive inc de jr Rawrx Sixzxx: ld de,PieceSix inc de jr Rawrx Sevenzxx: ld de,PieceSeven inc de jr Rawrx Rawrx: ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld b,4 Delete_Loopx: push bc ld b,4 Resetx: ld a,(de) cp 1 jr nz, No_Resetx ld a,(hl) cp 1 jr nz,ContinueBeef ld a,1 ld (GameOver),a ContinueBeef: ld a,1 ld (hl),a No_Resetx: inc de inc hl djnz Resetx push de ld de,12 add hl,de pop de pop bc djnz Delete_Loopx ret PieceOneReset: ld hl,TestrisMtrx ld a,(Block_Structure) ld e,a ld d,0 add hl,de ld a,(Block_Structure+1) cp 0 jr z,AlignedLolx ld b,a ld de,16 LoopADDx: add hl,de djnz LoopADDx AlignedLolx: ld a,(Block_Structure+2) cp 1 jr z,Onezx cp 2 jr z,Twozx cp 3 jr z,Threezx cp 4 jr z,Fourzx cp 5 jr z,Fivezx cp 6 jr z,Sixzx cp 7 jr z,Sevenzx Onezx: ld de,PieceOne inc de jr Rawr Twozx: ld de,PieceTwo inc de jr Rawr Threezx: ld de,PieceThree inc de jr Rawr Fourzx: ld de,PieceFour inc de jr Rawr Fivezx: ld de,PieceFive inc de jr Rawr Sixzx: ld de,PieceSix inc de jr Rawr Sevenzx: ld de,PieceSeven inc de jr Rawr Rawr: ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld b,4 Delete_Loop: push bc ld b,4 Reset: ld a,(de) cp 1 jr nz, No_Reset xor a ld (hl),a No_Reset: inc de inc hl djnz Reset push de ld de,12 add hl,de pop de pop bc djnz Delete_Loop ret Draw_Tetris_Piece1: ld hl,gsActivebuf1 Mofo: ld a,(Block_Structure) ; x cor dec a ld b,a add a,a add a,a ; x * 5 add a,b push af ld a,(Block_Structure+1) ; y cor dec a cp -1 jr z,Dont_Inc cp 0 jr z,Dont_Inc ld b,a ld de,60 Add_Loop: add hl,de djnz Add_Loop Dont_Inc: ld a,(Block_Structure+2) cp 1 jr z,Onez cp 2 jr z,Twoz cp 3 jr z,Threez cp 4 jr z,Fourz cp 5 jr z,Fivez cp 6 jr z,Sixz cp 7 jr z,Sevenz Onez: ld de,PieceOne jr Next Twoz: ld de,PieceTwo jr Next Threez: ld de,PieceThree jr Next Fourz: ld de,PieceFour jr Next Fivez: ld de,PieceFive jr Next Sixz: ld de,PieceSix jr Next Sevenz: ld de,PieceSeven jr Next Next: ld a,(de) cp 1 jr z,Onez_Tiled cp 2 jr z,Twoz_Tiled cp 3 jr z,Threez_Tiled cp 4 jr z,Fourz_Tiled Onez_Tiled: ld ix,Tile_One jr Next2 Twoz_Tiled: ld ix,Tile_Two jr Next2 Threez_Tiled: ld ix,Tile_Three jr Next2 Fourz_Tiled ld ix,Tile_Four jr Next2 Next2: inc de ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld a,(Block_Structure+1) cp 0 jr nz, SkipTehPop ld b,3 inc de inc de inc de inc de pop af jr Draw_Loop SkipTehPop: pop af ld b,4 Draw_Loop: push bc ld b,4 Funny_Loop: push af ld a,(de) cp 1 jr nz,Skip_Tile pop af push af push bc push hl push de push ix ld b,5 Call PutSpriteXOR pop ix pop de pop hl pop bc Skip_Tile: pop af inc a inc a inc a inc a inc a inc de djnz Funny_Loop ld b,20 sub b push de ld de,60 add hl,de pop de pop bc djnz Draw_Loop ret Draw_Tetris_Piece2: ld hl,gsActivebuf2 ld a,(Block_Structure) ; x cor dec a ld b,a add a,a add a,a ; x * 5 add a,b push af ld a,(Block_Structure+1) ; y cor dec a cp -1 jr z,Dont_Inc1 cp 0 jr z,Dont_Inc1 ld b,a ld de,60 Add_Loop1: add hl,de djnz Add_Loop1 Dont_Inc1: ld a,(Block_Structure+2) cp 1 jr z,Onez1 cp 2 jr z,Twoz1 cp 3 jr z,Threez1 cp 4 jr z,Fourz1 cp 5 jr z,Fivez1 cp 6 jr z,Sixz1 cp 7 jr z,Sevenz1 Onez1: ld de,PieceOne jr Next1 Twoz1: ld de,PieceTwo jr Next1 Threez1: ld de,PieceThree jr Next1 Fourz1: ld de,PieceFour jr Next1 Fivez1: ld de,PieceFive jr Next1 Sixz1: ld de,PieceSix jr Next1 Sevenz1: ld de,PieceSeven jr Next1 Next1: ld a,(de) cp 1 jr z,Onez_Tiled1 cp 2 jr z,Twoz_Tiled1 cp 3 jr z,Threez_Tiled1 cp 4 jr z,Fourz_Tiled1 Onez_Tiled1: ld ix,Tile_One2 jr Next21 Twoz_Tiled1: ld ix,Tile_Two2 jr Next21 Threez_Tiled1: ld ix,Tile_Three2 jr Next21 Fourz_Tiled1: ld ix,Tile_Four2 jr Next21 Next21: inc de ld a,(Block_Structure+3) dec a add a,a add a,a ld b,a add a,a add a,a add a,b push hl ld l,a ld h,0 add hl,de ex de,hl pop hl ld a,(Block_Structure+1) cp 0 jr nz, SkipTehPop2 ld b,3 inc de inc de inc de inc de pop af jr Draw_Loop1 SkipTehPop2: pop af ld b,4 Draw_Loop1: push bc ld b,4 Funny_Loop1: push af ld a,(de) cp 1 jr nz,Skip_Tile1 pop af push af push bc push hl push de push ix ld b,5 Call PutSpriteXOR pop ix pop de pop hl pop bc Skip_Tile1: pop af inc a inc a inc a inc a inc a inc de djnz Funny_Loop1 ld b,20 sub b push de ld de,60 add hl,de pop de pop bc djnz Draw_Loop1 ret Draw_Sprite: ;MODIFIED XOR ROUTINE (did not write) PutSpriteXOR: ; E = y coordinate ; B = number of rows ; IX = address of sprite ld d,0 LD E, A SRL E SRL E SRL E ADD HL, DE AND 7 JR Z, _Aligned LD C, A LD DE, 12 _RowLoop: PUSH BC LD B, C LD C, (IX) XOR A _ShiftLoop: SRL C RRA DJNZ _ShiftLoop INC HL XOR (HL) LD (HL), A DEC HL LD A, C XOR (HL) LD (HL), A ADD HL, DE INC IX POP BC DJNZ _RowLoop RET _Aligned: LD DE, 12 _PutLoop LD A, (IX) XOR (HL) LD (HL), A INC IX ADD HL, DE DJNZ _PutLoop RET TempFill: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ret ;END OF FIRSt BLOCK ;struct block { ; int x cor ;int y cor ;int block_type ;int rotation ;} Block_Structure: .db 0,0,0,1 ; x-cor,y-cor, piece, rotation Extra_Reset_Data: .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Extra_Reset_Data2: .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Calculate_Score: ; Call SideBar_Score Call Draw_Next_Score or a ;digit 1 ld a,(Add+4) ld b,a ld a,(Score+4) add a,b cp 10 jr c, Tens_Digit ; if carry flag is SET then a is less then 10 push af ld a,(Score+3) inc a ld (Score+3),a pop af ld b,10 sub b Tens_Digit: ld (Score+4),a or a ld a,(Add+3) ld b,a ld a,(Score+3) add a,b cp 10 jr c,Hundreds_Digit push af ld a,(Score+2) inc a ld (Score+2),a pop af ld b,10 sub b Hundreds_Digit: ld (Score+3),a or a ld a,(Add+2) ld b,a ld a,(Score+2) add a,b cp 10 jr c,Thosnds_Digit push af ld a,(Score+1) inc a ld (Score+1),a pop af ld b,10 sub b Thosnds_Digit: ld (Score+2),a or a ld a,(Score+1) cp 10 jr c,Tenthousands_Digit push af ld a,(Score) inc a ld (Score),a pop af ld b,10 sub b Tenthousands_Digit: ld (Score+1),a Call Draw_Next_Score ret Draw_Next_Score: ld a,74 ld hl,Score ld de,42*12 Call Draw_Hi_Score ret Draw_Hi_Score: ; hl = score location ; de = y * 12 ; a = first x location ld b,5 Number_Loop: ld c,a ld a,(hl) push de Call PicR push de pop ix pop de push hl ld hl,gsactivebuf1 add hl,de ld a,c push af push bc push de ld b,5 Call PutSpriteXOR pop de pop bc pop af ld c,4 add a,c pop hl inc hl djnz Number_Loop ret PicR: ;---------------------SPRITE LUT, I DID NOT WRITE THIS push hl push af add a,a ; a*2 (limits SpriteNumber to 128) ld h,0 ld l,a ld de,SpriteAddressLUT add hl,de ld a,(hl) inc hl ld d,(hl) ld e,a pop af pop hl ret ;------------------------------------------ SpriteAddressLUT: .dw zeronum .dw onenum .dw twonum .dw threenum .dw fournum .dw fivenum .dw Sixnum .dw sevennum .dw eightnum .dw ninenum Score: .db 0,0,0,0,0 ;Number table ;Score_TableX: ;.db 74,78,82, 86, 90 ;Score_TableY: ;.db 42 Next_Piece: ld a,(Temp_Piece) cp 1 jr z,DrawTemp1 cp 2 jr z,DrawTemp2 cp 3 jr z,DrawTemp3 cp 4 jr z,DrawTemp4 cp 5 jr z,DrawTemp5 cp 6 jr z,DrawTemp6 cp 7 jr z,DrawTemp7 DrawTemp1: ld ix, TempPiece1 jr StartTheTemp DrawTemp2: ld ix, TempPiece2 jr StartTheTemp DrawTemp3: ld ix, TempPiece3 jr StartTheTemp DrawTemp4: ld ix, TempPiece4 jr StartTheTemp DrawTemp5: ld ix, TempPiece5 jr StartTheTemp DrawTemp6: ld ix, TempPiece6 jr StartTheTemp DrawTemp7: ld ix, TempPiece7 jr StartTheTemp StartTheTemp: ld hl,gsactivebuf1 + ( 12 * 8) ld a,96-16 ld b,6 Call PutSpriteXOR ret Achievements: ChkLvl: ld a,(Level) inc a ld b,a add a,a add a,a add a,b ld e,a ld d,0 ld hl,Level_array add hl,de ld de,Score Call ChkScore cp 0 ret nz IncLvl: Call Draw_Lvl ld a,(Level) inc a ld (Level),a Call Draw_Lvl SubScore: ld a,(Level) ld b,a add a,a add a,a add a,b ld e,a ld d,0 ld hl,Score_Per_Lvl add hl,de ld de,Add ld bc,5 ldir ret Draw_Lvl: ld a,(Level) Call PicR push de pop ix ld hl,gsactivebuf1 + (26* 12) ld a,82 ld b,5 Call PutSpriteXOR ChkScore: ; hl = score1, de = score2 ;returns a =1 if de < hl | a = 0 if de >= hl ld b,5 _ChkLoop: ld a,(hl) ld c,a ld a,(de) ; hl = c , a = de cp c jr z,SkipChk jr nc, de_greaterequal_hl jr Blah_Skip SkipChk: inc hl inc de djnz _ChkLoop Blah_Skip: ld a,1 ret de_greaterequal_hl: xor a ret ChkEqual: ; hl = score1, de = score2 ;returns a=0 if not equal, a=1 if equal ld b,5 _ChkLoop2: ld a,(hl) ld c,a ld a,(de) ; hl = c , a = de cp c jr nz,NotEqual inc hl inc de djnz _ChkLoop2 ld a,1 ret NotEqual: xor a ret ; random numba's, did not write this. Randzorz: push hl push de ld hl,(randData) ld a,r ld d,a ld e,(hl) ; get new tetris piece add hl,de add a,l xor h ld (randData),hl pop de pop hl and %00000111 cp 0 jr z,Randzorz ret ;did not write this fastCopy: push af push de push hl push bc xor a out ($20),a di ld a,$80 out ($10),a ld hl,$9340-12-(-(12*64)+1) ld a,$20 ld c,a inc hl dec hl fastCopyAgain: ld b,64 inc c ld de,-(12*64)+1 out ($10),a add hl,de ld de,10 fastCopyLoop: add hl,de inc hl inc hl inc de ld a,(hl) out ($11),a dec de djnz fastCopyLoop ld a,c cp $2B+1 jr nz,fastCopyAgain ld a,1 out ($20),a pop bc pop hl pop de pop af ret ;freakin' intense grayscale by james (jim e) :D, did not write #include graylib.inc Arrow1: .db %11100000 .db %11111000 .db %11111100 .db %11111000 .db %11100000 Arrow2: .db %11100000 .db %10011000 .db %10000100 .db %10011000 .db %11100000 TempPiece1: .db %00000000 .db %00000000 .db %00111100 .db %00111100 .db %00111100 .db %00111100 TempPiece2: .db %00000000 .db %00000000 .db %00000000 .db %11111111 .db %11111111 .db %00000000 TempPiece3: .db %00000000 .db %00000000 .db %11110000 .db %11110000 .db %00111100 .db %00111100 TempPiece4: .db %00000000 .db %00000000 .db %11111100 .db %11111100 .db %11000000 .db %11000000 TempPiece5: .db %00000000 .db %00000000 .db %11111100 .db %11111100 .db %00001100 .db %00001100 TempPiece6: .db %00000000 .db %00000000 .db %00111100 .db %00111100 .db %11110000 .db %11110000 TempPiece7: .db %00000000 .db %00000000 .db %11111100 .db %11111100 .db %00110000 .db %00110000 .db randData: .db 5,0,0,0 Level: .db 0 Level_array: .db 0,0,0,0,0 .db 0,0,6,5,9 ;1 .db 0,2,4,9,9 ;2 .db 0,4,9,9,9 ;3 .db 0,8,0,9,9 ;4 .db 1,3,7,9,9 ;5 .db 1,7,4,9,9 ;6 .db 2,1,9,9,9 ;7 .db 9,9,9,9,9 ; null Score_Per_Lvl: .db 0,0,1,0,0 .db 0,0,1,2,5 .db 0,0,1,6,0 .db 0,0,2,0,0 .db 0,0,2,3,0 .db 0,0,2,8,0 .db 0,0,3,3,0 .db 0,0,8,0,0 .db 0,0,9,9,9 ; lol, impossible without modifying source Add: .db 0,0,0,0,0 zeronum: .db %01000000 .db %10100000 .db %10100000 .db %10100000 .db %01000000 Onenum: .db %01000000 .db %11000000 .db %01000000 .db %01000000 .db %01000000 Twonum: .db %11000000 .db %00100000 .db %01000000 .db %10000000 .db %11100000 Threenum: .db %11000000 .db %00100000 .db %01000000 .db %00100000 .db %11000000 Fournum: .db %10100000 .db %10100000 .db %11100000 .db %00100000 .db %00100000 Fivenum: .db %11100000 .db %10000000 .db %11000000 .db %00100000 .db %11000000 Sixnum: .db %01100000 .db %10000000 .db %11000000 .db %10100000 .db %01100000 Sevennum: .db %11100000 .db %00100000 .db %01000000 .db %01000000 .db %10000000 EightNum: .db %01000000 .db %10100000 .db %01000000 .db %10100000 .db %01000000 Ninenum: .db %01100000 .db %10100000 .db %01100000 .db %00100000 .db %00100000 TestrisMtrx: .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Image1_Layer1: .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$FC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$3F,$FF,$FB,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$FC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$3F,$FF,$FB,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$FF,$FF,$FC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$D1,$11,$14,$00,$00,$00,$00,$00,$00,$00,$00,$03,$EA,$AA,$AC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$6A,$AA,$AF,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$6A,$AA,$AF,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$D1,$11,$14,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$40,$00,$07,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$3F,$FF,$FB,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00 .db $00,$00,$00,$00,$03,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $03,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00,$03,$CC,$CC,$CC .db $7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$33,$33,$33,$B3,$33,$33,$33 .db $33,$33,$33,$33,$33,$33,$33,$33,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC .db $CC,$CC,$CC,$CC,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Image1_Layer2: .db $00,$00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$3F,$FF,$FB .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$FF,$FF,$FC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$3F,$FF,$FB .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$FF,$FF,$FC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$3F,$FF,$FB .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$FF,$FF,$FC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$33,$33,$33 .db $7F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE,$CC,$CC,$CC,$CC,$CC,$CC,$CC .db $CC,$CC,$CC,$CC,$CC,$CC,$CC,$CC,$B3,$33,$33,$33,$33,$33,$33,$33 .db $33,$33,$33,$33,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 Image2_Layer1: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$D5,$55,$55,$55,$55,$55,$55,$55 .db $55,$55,$55,$57,$C0,$00,$00,$01,$12,$B8,$4A,$EC,$80,$00,$00,$03 .db $E0,$00,$00,$02,$AB,$A0,$AA,$8A,$80,$00,$00,$07,$E0,$00,$00,$02 .db $3A,$B0,$AA,$CC,$80,$00,$00,$07,$E0,$00,$00,$02,$AA,$A0,$AE,$8A .db $00,$00,$00,$07,$C0,$00,$00,$01,$AA,$B8,$44,$EA,$80,$00,$00,$03 .db $EA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AB,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF Image2_Layer2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$01,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA .db $AA,$AA,$AA,$A9,$BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD .db $9F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F9,$9F,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$F9,$9F,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$F9,$BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD .db $95,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$80,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF Image3_Layer1: .db $7F,$FB,$FE,$7F,$F7,$F0,$F2,$F8,$01,$FF,$FF,$FF,$54,$88,$C3,$89 .db $94,$CC,$97,$08,$03,$FF,$FF,$FF,$44,$98,$C3,$29,$14,$C4,$99,$08 .db $03,$CC,$CC,$CC,$65,$9A,$C3,$C9,$34,$C6,$99,$A8,$03,$CC,$CC,$CC .db $45,$9A,$C3,$CD,$15,$E4,$DD,$B8,$03,$33,$33,$33,$45,$8A,$CC,$89 .db $15,$E4,$94,$D8,$03,$33,$33,$33,$05,$82,$DC,$0D,$05,$EC,$D2,$68 .db $03,$CC,$CC,$CC,$07,$83,$FC,$0F,$07,$F8,$F3,$E0,$03,$FF,$FF,$FC .db $07,$83,$DC,$0F,$07,$E0,$F5,$F0,$03,$40,$00,$07,$07,$83,$CC,$0F .db $07,$E0,$F6,$F8,$03,$40,$00,$07,$07,$83,$C1,$0F,$07,$F0,$F7,$FC .db $03,$C0,$00,$04,$07,$83,$C7,$0F,$07,$F8,$F7,$7C,$03,$C0,$00,$04 .db $07,$83,$C7,$0F,$07,$F8,$F7,$BC,$03,$40,$00,$07,$07,$83,$DF,$0F .db $07,$FC,$F7,$BC,$03,$40,$00,$07,$07,$83,$DF,$0F,$07,$FE,$F7,$D8 .db $03,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$03,$C0,$00,$04 .db $00,$00,$00,$00,$00,$00,$00,$00,$03,$3F,$FF,$FB,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$03,$33,$33,$33,$01,$00,$00,$00,$00,$00,$01,$00 .db $03,$CC,$CC,$CC,$E1,$00,$00,$E0,$00,$00,$01,$00,$03,$CC,$CC,$CC .db $F9,$00,$01,$08,$00,$80,$01,$00,$03,$33,$33,$33,$FD,$00,$01,$DD .db $DD,$C0,$01,$00,$73,$33,$33,$33,$F9,$00,$00,$2A,$54,$80,$01,$00 .db $8B,$CC,$CC,$CC,$E1,$00,$02,$2A,$50,$80,$01,$00,$8B,$FF,$FF,$FC .db $01,$00,$01,$CB,$D0,$80,$01,$00,$03,$40,$00,$07,$01,$00,$00,$00 .db $00,$00,$01,$00,$43,$40,$00,$07,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $83,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00,$6B,$C0,$00,$04 .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$03,$40,$00,$07,$01,$00,$00,$00 .db $00,$00,$01,$00,$93,$40,$00,$07,$01,$7C,$00,$00,$00,$40,$01,$00 .db $AB,$C0,$00,$04,$01,$10,$02,$00,$02,$00,$01,$00,$7B,$C0,$00,$04 .db $01,$17,$B7,$74,$9F,$4F,$ED,$00,$03,$3F,$FF,$FB,$01,$16,$C2,$54 .db $A2,$53,$B1,$00,$63,$33,$33,$33,$01,$14,$B2,$44,$A2,$53,$2D,$00 .db $93,$CC,$CC,$CC,$01,$7C,$F2,$47,$BA,$4D,$3D,$00,$63,$CC,$CC,$CC .db $01,$00,$00,$00,$00,$00,$01,$00,$03,$33,$33,$33,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$F3,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00 .db $13,$CC,$CC,$CC,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$E3,$FF,$FF,$FC .db $01,$00,$00,$00,$00,$00,$01,$00,$03,$40,$00,$07,$01,$00,$8A,$07 .db $00,$00,$01,$00,$63,$40,$00,$07,$01,$00,$88,$08,$00,$00,$01,$00 .db $D3,$D1,$11,$14,$01,$00,$FA,$0E,$37,$E7,$01,$00,$A3,$EA,$AA,$AC .db $01,$00,$8A,$01,$49,$AA,$01,$00,$03,$6A,$AA,$AF,$01,$00,$8A,$11 .db $49,$8D,$01,$00,$CB,$6A,$AA,$AF,$01,$00,$8A,$0E,$76,$86,$01,$00 .db $AB,$D1,$11,$14,$01,$00,$00,$00,$00,$00,$01,$00,$93,$C0,$00,$04 .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$03,$40,$00,$07 Image3_Layer2: .db $00,$04,$01,$80,$08,$08,$0D,$04,$01,$FF,$FF,$FF,$89,$FE,$38,$75 .db $79,$B0,$1A,$9C,$02,$00,$00,$00,$B1,$A6,$18,$C1,$F9,$A2,$16,$D8 .db $02,$33,$33,$33,$8A,$BD,$0E,$27,$9B,$BC,$77,$58,$02,$33,$33,$33 .db $6A,$8D,$06,$03,$BA,$9E,$32,$C8,$02,$CC,$CC,$CC,$8A,$95,$03,$47 .db $8A,$9E,$7B,$68,$02,$CC,$CC,$CC,$0A,$85,$08,$03,$8A,$94,$3D,$98 .db $02,$33,$33,$33,$0D,$86,$98,$01,$84,$BC,$18,$38,$02,$3F,$FF,$FB .db $0D,$86,$B8,$05,$85,$B0,$5B,$18,$02,$C0,$00,$04,$0D,$86,$98,$01 .db $8C,$A0,$1D,$9C,$02,$C0,$00,$04,$0D,$87,$8E,$07,$87,$A0,$7E,$78 .db $02,$40,$00,$07,$0F,$87,$82,$07,$87,$B0,$FF,$FC,$02,$40,$00,$07 .db $0F,$87,$8E,$07,$87,$BC,$FF,$FC,$02,$C0,$00,$06,$0F,$87,$8E,$07 .db $87,$BE,$FF,$DC,$02,$C0,$00,$04,$0F,$87,$BE,$07,$87,$BD,$FF,$FC .db $02,$40,$00,$07,$07,$83,$FF,$0F,$07,$FF,$F7,$F8,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$FF,$FF,$FC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$33,$33,$33,$E0,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$33,$33,$33 .db $98,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$CC,$CC,$CC,$84,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$CC,$CC,$CC,$98,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$33,$33,$33,$E0,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$3F,$FF,$FB .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$40,$00,$07,$00,$00,$00,$00,$00,$00,$00,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$40,$00,$07,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$40,$00,$07 .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$FF,$FF,$FC,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$CC,$CC,$CC,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$33,$33,$33,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$33,$33,$33 .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00 .db $00,$00,$00,$00,$02,$CC,$CC,$CC,$00,$00,$00,$00,$00,$00,$00,$00 .db $02,$33,$33,$33,$00,$00,$00,$00,$00,$00,$00,$00,$02,$3F,$FF,$FB .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$40,$00,$07,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$40,$00,$07 .db $00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF .db $FF,$FF,$FE,$00,$02,$C0,$00,$04,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00 .db $02,$40,$00,$07,$00,$FF,$FF,$FF,$FF,$FF,$FE,$00,$02,$40,$00,$07 .db $00,$00,$00,$00,$00,$00,$00,$00,$02,$C0,$00,$04 Image4_Layer1: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$D5,$55,$55,$55,$55,$55,$55,$55 .db $55,$55,$55,$57,$C0,$00,$00,$00,$0C,$4A,$6E,$C8,$00,$00,$00,$03 .db $E0,$00,$00,$00,$0A,$AA,$88,$A8,$00,$00,$00,$07,$E0,$00,$00,$00 .db $0C,$EA,$4C,$A8,$00,$00,$00,$07,$E0,$00,$00,$00,$08,$AA,$28,$A0 .db $00,$00,$00,$07,$C0,$00,$00,$00,$08,$A4,$CE,$C8,$00,$00,$00,$03 .db $EA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AB,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF Image4_Layer2: .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$80,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$01,$AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA .db $AA,$AA,$AA,$A9,$BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD .db $9F,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F9,$9F,$FF,$FF,$FF .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$F9,$9F,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$F9,$BF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FD .db $95,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$80,$00,$00,$00 .db $00,$00,$00,$00,$00,$00,$00,$01,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF .db $FF,$FF,$FF,$FF HiScores: UserA: .db "1.CPU1111111",0 ; 3 letters, end ScoreA: .db 0,0,0,3,0 UserB: .db "2.CPU2222222",0 ScoreB: .db 0,0,0,2,0 UserC: .db "3.CPU1337 =P",0 ScoreC: .db 0,0,0,1,0 WhatMode: .db "Choose Level (0-7)",0 ; IMAGE DATA ; DATA CONTAINED IN 4x4 MATRICES ; EXTRA 1 x 4 for BOTTOM COLLISION DETECTION ;PIECEX: ;.db 2 ; image data ; .db a,b,c,d ; shape ; .db a,b,c,d ; .db a,b,c,d ; .db a,b,c,d ;.db x,0,0,0 ; only needed if the piece is 4x1 vertical ; 1 = Square ; 2 = Bottom collision ; 3 = Left_Collision ; 5 = Left + Bottom Collision ; 4 = Right ;6 = Right+Down PieceOne: .db 3 .db 0,0,0,0 .db 1,1,4,0 .db 1,1,4,0 .db 2,2,0,0 .db 0,0,0,0 ;1 PieceTwo: .db 2 .db 0,0,0,0 .db 1,1,1,1 .db 2,2,2,2 .db 0,0,0,0 .db 0,0,0,0 ;2 .db 3,1,4,0 .db 3,1,4,0 .db 3,1,4,0 .db 3,1,4,0 .db 0,2,0,0 PieceThree: .db 4 .db 0,0,0,0 .db 1,1,4,0 .db 5,1,1,4 .db 0,2,2,0 ;2 .db 0,0,0,0 .db 0,3,1,4 .db 3,1,1,4 .db 3,1,6,0 .db 0,2,0,0 .db 0,0,0,0 PieceFour: .db 1 .db 0,0,0,0 .db 1,1,1,4 .db 1,6,2,0 .db 2,0,0,0 .db 0,0,0,0 .db 1,1,4,0 .db 5,1,4,0 .db 3,1,4,0 .db 0,2,0,0 .db 0,0,0,0 .db 0,0,0,0 .db 0,3,1,4 .db 1,1,1,4 .db 2,2,2,0 .db 0,0,0,0 .db 3,1,4,0 .db 3,1,4,0 .db 3,1,1,4 .db 0,2,2,0 ;4 .db 0,0,0,0 PieceFive: .db 1 .db 0,0,0,0 .db 1,1,1,4 ;4 .db 2,5,1,4 .db 0,0,2,0 .db 0,0,0,0 .db 3,1,4,0 .db 3,1,4,0 .db 1,1,4,0 .db 2,2,0,0 .db 0,0,0,0 .db 0,0,0,0 .db 1,4,0,0 .db 1,1,1,4 .db 2,2,2,0 .db 0,0,0,0 .db 3,1,1,4 .db 3,1,6,0 .db 3,1,4,0 .db 0,2,0,0 .db 0,0,0,0 PieceSix: .db 3 .db 0,0,0,0 .db 3,1,1,4 .db 1,1,6,0 .db 2,2,0,0 .db 0,0,0,0 .db 3,1,4,0;2 .db 3,1,1,4 .db 0,5,1,4 .db 0,0,2,0 .db 0,0,0,0 PieceSeven .db 2 .db 0,0,0,0 .db 1,1,1,4 .db 5,1,6,0 .db 0,2,0,0 .db 0,0,0,0 ;4 .db 3,1,4,0 .db 1,1,4,0 .db 5,1,4,0 .db 0,2,0,0 .db 0,0,0,0 .db 3,1,4,0 .db 1,1,1,4 .db 2,2,2,0 .db 0,0,0,0 .db 0,0,0,0 .db 3,1,4,0 .db 3,1,1,4 .db 3,1,6,0 .db 0,2,0,0 .db 0,0,0,0 Tile_One: .db %11111000 .db %10001000 .db %10101000 .db %10001000 .db %11111000 Tile_One2: .db %11111000 .db %11111000 .db %11011000 .db %11111000 .db %11111000 Tile_Two: .db %11111000 .db %10011000 .db %10101000 .db %11001000 .db %11111000 Tile_Two2: .db %00000000 .db %01100000 .db %01010000 .db %00110000 .db %00000000 Tile_Three: .db %11111000 .db %11111000 .db %11111000 .db %11111000 .db %11111000 Tile_Three2: .db %11111000 .db %10001000 .db %10101000 .db %10001000 .db %11111000 Tile_Four: .db %11111000 .db %10011000 .db %10011000 .db %11111000 .db %11111000 Tile_Four2: .db %11111000 .db %11101000 .db %11101000 .db %10001000 .db %11111000 Vroog: .db "Instructions",0 Instr: .db "Left*Right",0 Instr2: .db "Up - Rotate Piece",0 Instr3: .db "Graph - Exit",0 Instr4: .db "Down - Move 1 down",0 Instr5: .db "2nd -Force Down",0 piecrust: .db "2nd - Confirm",0 piecrust2: .db "Mode - (un)Pause",0 StatusFlag: .db 0 ;========================================================== ; grayscale include file ;========================================================== ; comment these defines in or out to activate/deactivate them ;#DEFINE NODOUBLEBUFFER ;when on,routines write directly to screen (faster and smaller) ;#DEFINE 3LEVELGRAY ;makes it 3-level grayscale (a bit faster) ;#DEFINE XORSPRITE ;includes gsPutSprite ;#DEFINE LARGESPRITE ;includes gsLargeSprite ;#DEFINE ALIGNEDSPRITE ;includes gsAlignedsprite ;#DEFINE ALIGNEDMASKEDSPRITE .end END