Here is the code to my nibls with sound game (simply ignore the playnote parts; they are for sound only) and the rest will form a simple nibls game. Sorry that it is in OTBP assembler form, but I programmed it entirely on-calc.
Code: :DEFHDR.HDR
:DI
:BCALL RUNINDICOFF
:RES 5,(IY)
:BCALL CLRSCRNFULL
:LD HL,0202H
:LD (CURROW),HL
:LD HL,STXT3
:BCALL PUTS
:LD D,FFH
:LD E,80H
:LD B,D
:CALL PLAYNOTE
:LD B,FFH
:CALL PLAYNOTE
:CALL QQQ
:LD B,90H
:CALL PLAYNOTE
:CALL QQQ
:LD B,90H
:CALL PLAYNOTE
:CALL QQQ
:LD B,90H
:CALL PLAYNOTE
:LD E,30H
:LD B,FFH
:CALL PLAYNOTE
:CALL QQQ
:LD E,A0H
:LD B,FFH
:CALL PLAYNOTE
:LD E,80H
:LD B,FFH
:CALL PLAYNOTE
:LD B,FFH
:CALL PLAYNOTE
:JP MENU
:QQQ:
:LD B,250
:^:
:DEC B
:DEC B
:JR NZ,{‾1}
:RET
:MENU:
:BCALL CLRSCRNFULL
:BCALL HOMEUP
:LD HL,STXT
:SET 3,(IY+5)
:BCALL PUTS
:LD HL,STXT2
:RES 3,(IY+5)
:BCALL PUTS
:MENUL:
:LD D,FFH
:LD HL,MNOTES
:LD A,(MREF)
:LD C,A
:INC A
:CP 20
:JR NZ,{1}
:XOR A
:^:
:LD (MREF),A
:LD B,0
:ADD HL,BC
:LD A,(HL)
:LD E,A
:LD B,50H
:CALL PLAYNOTE
:LD A,BFH
:OUT (1),A
:IN A,(1)
:ADD A,A
:JP P,END2
:ADD A,A
:JP M,MENUL
:LD A,48
:LD (XPOS),A
:LD A,32
:LD (YPOS),A
:XOR A
:LD (EATEN),A
:LD H,A
:LD L,A
:LD (SCORE),HL
:DEC A
:LD (EATEN+1),A
:NEWLEV:
:XOR A
:LD (EATEN),A
:LD HL,EATEN+1
:INC (HL)
:LD HL,PLOTSSCREEN
:LD DE,PLOTSSCREEN+1
:LD BC,02FFH
:LD (HL),A
:LDIR
:LD HL,CLN
:LD DE,PLOTSSCREEN
:LD BC,12
:LDIR
:LD HL,CLN
:LD DE,PLOTSSCREEN+756
:LD BC,12
:LDIR
:LD D,C
:LD L,1
:LD E,63
:CALL DRAWVERT
:LD D,95
:LD L,1
:LD E,63
:CALL DRAWVERT
:LD A,(EATEN+1)
:OR A
:JP Z,DONESDRAW
:LD D,32
:LD L,10
:LD E,53
:CALL DRAWVERT
:LD D,64
:LD L,10
:LD E,53
:CALL DRAWVERT
:LD A,(EATEN+1)
:DEC A
:JR Z,DONESDRAW
:LD DE,PLOTSSCREEN+384
:LD BC,12
:LD HL,CLN2
:LDIR
:DONESDRAW:
:CALL SAFECOPY
:NEWRAND:
:LD HL,(WINY)
:CALL GETPIX
:CPL
:AND (HL)
:LD (HL),A
:BADRAND:
:LD B,93
:CALL IONRANDOM
:INC A
:LD (WINY+1),A
:LD B,62
:CALL IONRANDOM
:INC A
:LD (WINY),A
:LD HL,(WINY)
:CALL GETPIX
:OR (HL)
:CP (HL)
:JP Z,BADRAND
:LD (HL),A
:MOVE:
:LD HL,NOTES
:LD A,(NREF)
:CP 72
:CALL Z,RESNREF
:LD D,0
:LD E,A
:ADD HL,DE
:INC A
:LD (NREF),A
:LD E,(HL)
:LD D,FFH
:LD B,15H
:CALL PLAYNOTE
:LD HL,(SCORE)
:INC HL
:LD (SCORE),HL
:LD A,(DIR)
:OR A
:JP Z,MDOWN
:DEC A
:JP Z,MLEFT
:DEC A
:JP Z,MUP
:LD HL,XPOS
:INC (HL)
:JP DRAW
:MUP:
:LD HL,YPOS
:DEC (HL)
:JP DRAW
:MLEFT:
:LD HL,XPOS
:DEC (HL)
:JP DRAW
:MDOWN:
:LD HL,YPOS
:INC (HL)
:DRAW:
:LD A,(YPOS)
:LD HL,WINY
:CP (HL)
:JP Z,CHECKX
:NOWIN:
:LD HL,(YPOS)
:CALL GETPIX
:OR (HL)
:CP (HL)
:JP Z,END
:LD (HL),A
:CALL SAFECOPY
:KEY:
:LD A,FFH
:OUT (1),A
:DEC A
:OUT (1),A
:IN A,(1)
:LD HL,MOVE
:PUSH HL
:LD HL,DIR
:RRA
:JR NC,UP
:RRA
:JR NC,LEFT
:RRA
:JR NC,RIGHT
:RRA
:JR NC,DOWN
:RET
:DOWN:
:LD (HL),2
:RET
:LEFT:
:LD (HL),1
:RET
:RIGHT:
:LD (HL),3
:RET
:UP:
:LD (HL),0
:RET
:CHECKX:
:LD A,(XPOS)
:LD B,A
:LD A,(WINY+1)
:CP B
:JP NZ,NOWIN
:LD A,(EATEN+1)
:INC A
:LD B,A
:LD DE,100
:LD HL,0
:CHECKX2:
:ADD HL,DE
:DJNZ CHECKX2
:LD D,H
:LD E,L
:LD HL,(SCORE)
:ADD HL,DE
:LD (SCORE),HL
:LD A,(EATEN)
:INC A
:LD (EATEN),A
:CP 3
:JP Z,NEWLEV
:LD D,FFH
:LD E,2AH
:LD B,90H
:CALL PLAYNOTE
:JP NEWRAND
:END:
:LD HL,STUFF
:RST 20H
:BCALL CHKFINDSYM
:JR NC,FOUNDAPPVAR
:LD HL,5
:BCALL CREATEAPPVAR
:LD H,D
:LD L,E
:XOR A
:INC HL
:INC HL
:LD (HL),A
:INC HL
:LD (HL),A
:INC HL
:LD A,"A"
:LD (HL),A
:INC HL
:LD (HL),A
:INC HL
:LD (HL),A
:FOUNDAPPVAR:
:INC DE
:INC DE
:LD H,D
:LD L,E
:PUSH HL
:LD C,(HL)
:INC HL
:LD B,(HL)
:LD HL,(SCORE)
:OR A
:SBC HL,BC
:ADD HL,BC
:JP C,NOHIGH
:EX DE,HL
:LD (HL),E
:INC HL
:LD (HL),D
:INC HL
:PUSH HL
:BCALL CLRSCRNFULL
:LD HL,0
:LD (CURROW),HL
:POP HL
:LD B,3
:INPUTINITIALS:
:LD C,(HL)
:PUSH HL
:INITLOOP:
:LD A,C
:BCALL PUTMAP
:BCALL GETCSC
:CP 1
:JR Z,INITD
:CP 4
:JR Z,INITU
:CP 9
:JR Z,INITEND
:JR INITLOOP
:INITD:
:INC C
:JR INITLOOP
:INITU:
:DEC C
:JR INITLOOP
:INITEND:
:LD A,C
:POP HL
:LD (HL),A
:INC HL
:LD A,(CURCOL)
:INC A
:LD (CURCOL),A
:DJNZ INPUTINITIALS
:NOHIGH:
:BCALL CLRSCRNFULL
:BCALL HOMEUP
:LD HL,TXT
:BCALL PUTS
:LD HL,(SCORE)
:BCALL DISPHL
:BCALL NEWLINE
:LD HL,TXTH
:BCALL PUTS
:POP HL
:PUSH HL
:BCALL LDHLIND
:BCALL DISPHL
:BCALL NEWLINE
:POP HL
:INC HL
:INC HL
:LD A,(HL)
:BCALL PUTC
:INC HL
:LD A,(HL)
:BCALL PUTC
:INC HL
:LD A,(HL)
:BCALL PUTC
:LD D,FFH
:LD E,0
:LR:
:INC E
:LD B,04H
:CALL PLAYNOTE
:LD A,FDH
:OUT (1),A
:IN A,(1)
:RRA
:JP NC,MENU
:DJNZ LR
:DEC B
:LD E,B0H
:CALL PLAYNOTE
:LD B,C0H
:LD E,80H
:CALL PLAYNOTE
:LD B,FFH
:LD E,B0H
:CALL PLAYNOTE
:JP END
:END2:
:EI
:BCALL CLRSCRNFULL
:BCALL HOMEUP
:RET
:IONRANDOM:
:PUSH HL
:PUSH DE
:LD HL,(FE8DH)
:LD A,R
:LD D,A
:LD E,(HL)
:ADD HL,DE
:ADD A,L
:XOR H
:LD (FE8DH),HL
:LD HL,0
:LD E,A
:LD D,H
:^:
:ADD HL,DE
:DJNZ {‾1}
:LD A,H
:POP DE
:POP HL
:RET
:PLAYNOTE:
:LD C,B
:PLAYN:
:LD B,D
:PLAY2:
:LD A,D1H
:OUT (0),A
:DJNZ PLAY2
:LD B,E
:PLAY3:
:LD A,D0H
:OUT (0),A
:DJNZ PLAY3
:DEC C
:JR NZ,PLAYN
:RET
:DRAWVERT:
:LD A,E
:SUB L
:RET Z
:JR NC,{1}
:LD L,E
:NEG
:^:
:PUSH AF
:LD H,D
:CALL GETPIX
:POP BC
:LD DE,12
:LD C,A
:PLOTLOOP:
:LD A,C
:OR (HL)
:LD (HL),A
:ADD HL,DE
:DJNZ PLOTLOOP
:RET
:GETPIX:
:LD A,H
:LD H,0
:LD E,L
:LD D,H
:ADD HL,DE
:ADD HL,DE
:ADD HL,HL
:ADD HL,HL
:LD E,A
:SRL E
:SRL E
:SRL E
:ADD HL,DE
:LD DE,PLOTSSCREEN
:ADD HL,DE
:AND 7
:INC A
:LD B,A
:LD A,1
:GETPIXLOOP:
:RRCA
:DJNZ GETPIXLOOP
:RET
:RESNREF:
:XOR A
:LD (NREF),A
:RET
:SAFECOPY:
:LD C,10H
:LD A,80H
:CALL LCDDELAY
:OUT (10H),A
:LD A,20H
:CALL LCDDELAY
:OUT (10H),A
:LD HL,9334H
:LD DE,12
:SAFECPY1:
:LD B,64
:EX AF,AF'
:SAFECPY2:
:ADD HL,DE
:LD A,(HL)
:CALL LCDDELAY
:OUT (11H),A
:DJNZ SAFECPY2
:EX AF,AF'
:LD H,93H
:INC L
:INC A
:CALL LCDDELAY
:OUT (10H),A
:CP 2CH
:JR NZ,SAFECPY1
:RET
:LCDDELAY:
:IN (C)
:RET P
:JP LCDDELAY
:STUFF:
:.DB 15H,"NiblsWS1"
:TXTH:
:.DB "High Score:",0
:INITIALS:
:.DB 0,0,0
:EATEN:
:.DB 0,‾1
:WINY:
:.DB 0,0
:MNOTES:
:HEX 7070D0D040404070707070C5C520202020202020
:MREF:
:.DB 0
:NREF:
:.DB 0
:NOTES:
:HEX D0D0D0D0D0D0D0D0D05050505050505050509090909090909090909090505050505050505050506060606060606060E8E8E8E8E8E8E8303030303030303030303030303030303030
:STXT2:
:.DB "[2ND]-Play [MODE]-Quit",0
:STXT3:
:.DB "(C) 5-2-2007 A Penguin Studios Production",0
:SCORE:
:.DW 0
:MUS:
:.DW 0
:DIR:
:.DB 0
:YPOS:
:.DB 32
:XPOS:
:.DB 48
:TXT:
:.DB "Your Score: ",0
:CL:
:HEX 000000000000000000000000
:CLN2:
:HEX 80000000FFFFFFFF00000001
:CLN:
:HEX FFFFFFFFFFFFFFFFFFFFFFFF
:STXT:
:.DB "Nibls With Music",0
If you have any questions about it, post them here, pm me, or email me.