;Yoshi 89 is a TCPA game written by Brandon Sterner include "doorsos.h" include "graphlib.h" include "userlib.h" xdef _ti89 xdef _main _main: move.b #%11111101,($600019) ;set the row move.b ($60001b),d5 ;read back keypress data btst.b #0,d5 beq.b _main ;So you got a lead finger and won't let up on the enter button? ;well, we'll just wait till you do:) bsr.w clear move.w #4,-(a7) ;color #4 : black on white pea author(pc) ;adress of the string move.w #55,-(a7) ;y coord move.w #40,-(a7) ;x coord bsr.w putstr move.w #4,-(a7) ;color #4 : black on white pea web(pc) ;adress of the string move.w #65,-(a7) ;y coord move.w #37,-(a7) ;x coord bsr.w putstr move.w #4,-(a7) ;color #4 : black on white pea IntPres(pc) ;adress of the string move.w #90,-(a7) ;y coord move.w #47,-(a7) ;x coord bsr.w putstr ; add #30,a7 ;restores the stack ;we'll correct the stack later title: moveq.w #28,d0 ;x clr.w d1 ;y clr.b d3 ;mask move.l #Layer1,a0 bsr.w putsprite title10: bsr.w mykeys btst.b #4,d5 beq.b title11 bsr.w getclear bne.b title10 add #30,a7 rts title11: move.w #6,matches clr.l score moveq.b #3,d0 move.l #map1,a0 eraseb2: moveq.l #7,d1 erasebuff: clr.w (a0) addq.l #2,a0 dbra.l d1,erasebuff addq.l #2,a0 dbra.b d0,eraseb2 move.l ($040064),(rem) move.l #int1,($040064) ;install new handler bsr.w clear jsr graphlib::gray4 ;switches to 4 grayshades mode move.w #1,graphlib::choosescreen ;set all graphlib functions to grayscale mode bsr.w seclayer bsr.w clear moveq.b #16,d1 moveq.b #8,d2 clr.w d3 ;left side checkers clr.w d4 move.l #checker,loc1 move.l #checker2,loc2 bsr.w fill moveq.b #16,d1 moveq.b #7,d2 moveq.w #118,d3 ;right side clr.w d4 bsr.w fill bsr.w bottomleft moveq.b #1,d1 moveq.b #7,d2 moveq.w #118,d3 ;right bottom side moveq.w #96,d4 bsr.w fill move.l #undo,loc1 move.l loc1,loc2 moveq.b #3,d1 moveq.b #4,d2 moveq.w #7,d3 ;x moveq.w #4,d4 ;y bsr.w fill moveq.b #3,d1 moveq.b #4,d2 moveq.b #7,d3 ;x moveq.b #32,d4 ;y bsr.w fill move.w #4,-(a7) ;color #4 : black on white pea tscore(pc) ;adress of the string move.w #7,-(a7) ;y coord move.w #8,-(a7) ;x coord bsr.w putstr move.w #4,-(a7) ;color #4 : black on white pea THigh(pc) ;adress of the string move.w #34,-(a7) ;y coord move.w #11,-(a7) ;x coord bsr.w putstr ; add #20,a7 ;restores the stack ;we'll restore the stack later bsr.w put_hscore bsr.w put_score moveq.w #53,d0 moveq.w #88,d1 ;several lines at bottom moveq.w #64,d2 moveq.w #2,d3 moveq.b #3,d4 lines: bsr.w line add.w #16,d0 add.w #16,d2 dbra.b d4,lines moveq.w #53,d0 moveq.w #10,d1 ;top line moveq.w #112,d2 bsr.w line drawyoshi: moveq.w #1,d0 ;x moveq.w #66,d1 ;y move.b #255,d3 move.l #yoshi,a0 move.l #yoshi2,a2 bsr.w sprite bsr.w getnew ;get first pieces bsr.w drawarrow move.w #30000,d0 move.w d0,time move.w d0,maxtime mainloop: bsr.b mykeys btst.b #5,d5 beq.b pause cmp.w nokey,d5 beq.b held move.w d5,nokey btst.b #3,d5 beq.w right btst.b #1,d5 beq.w left btst.b #4,d5 beq.w swap held: btst.b #2,d5 bne.b mainloop2 bsr.b down mainloop2: bsr.b movedown bsr.b getclear bne.b mainloop bra.w gameover2 clear jmp graphlib::clr_scr ;clears the a0th bitplane seclayer: move.l graphlib::plane1,a1 ;adress of the 2nd bitplane rts pause: bsr.b mykeys cmp.b #255,d5 beq.b pause btst.b #5,d5 beq pause bra.b mainloop line: bsr.b seclayer bsr.b line2 move.l #LCD_MEM,a1 ;adress of the 1st bitplane line2: jmp graphlib::horiz ;if shift 2nd right down left ;d0= b5 b4 b3 b2 b1 mykeys: move.b #%11111110,($600019) ;set the row move.b ($60001b),d5 ;read back keypress data rts getclear: btst.b #0,d5 ;this avoids the up button from doing the same as clear beq.b invert move.b #%10111111,($600019) ;set the row with 2nd in it move.b ($60001b),d0 ;read back keypress data btst.b #0,d0 rts invert: btst.b #6,d5 ;now if up and diamod were pressed then it'll rts ;exit also but it requires two mispresses ;at the same time to exit-unlikely down: move.w #$3FFF,d0 down2: nop dbra.w d0,down2 bra.b moved2 movedown: sub.w #1,time beq.b moved2 rts moved2: move.w maxtime,time bsr.b moved3 tst.w type bne.b moved21 move.w type,a0 cmp.w type2,a0 beq.w getnew moved21: bsr.w rotate bsr.b moved3 tst.w type bne.b ret move.w type,a0 cmp.w type2,a0 beq.w getnew rts moved3: tst.w type beq.b ret addq.l #2,a5 tst.w (a5) beq.b notstop stop: addq.l #5,score move.w type,a0 cmp.w #4,a0 beq.b formegg stop11: cmp.w (a5),a0 beq.b match stop2: tst.w y beq.w gameover subq.l #2,a5 move.w type,(a5) clr.w type bra.w put_score ret: rts match: subq.w #1,matches bne.b match2 move.w #6,matches sub.w #500,maxtime match2: addq.l #5,score clr.w type bsr.w erase ;erase current piece clr.w (a5) ;erase piece below on buffer add.w #11,y ;increment to coors or piece below bsr.w erase ;erase pic of piece below bra.w put_score notstop: bsr.w erase add.w #11,y bra.w interpret formegg: subq.l #2,a5 move.l a5,a4 formegg2: cmp.w #5,(a4) beq.b hatch addq.l #2,a4 cmp.w #$FFFF,(a4) bne.b formegg2 nohatch: clr.w type bsr.b erase bra.w put_score hatch: addq.l #5,score addq.l #2,a5 cmp.w #5,(a5) bne.b hatch2 clr.w type clr.l d0 subq.l #1,d0 ;move #FFFFF,d0 hatch11: nop nop dbra.l d0,hatch11 bsr.b erase add.w #11,y bsr.b erase clr.w (A5) add.l #10,score subq.w #1,matches bne.w put_score move.w #6,matches sub.w #500,maxtime bra.w put_score hatch2: clr.w (a5) bsr.b erase add.w #11,y bsr.w interpret bra.b hatch erase: move.b #255,d3 move.w x,d0 ;x move.w y,d1 ;y move.l #blank,a0 move.l #blank,a2 bra.w sprite gameover: add #8,a7 ;correct stack (we're two call's deep) gameover2: ;or if this is called, we're none move.l #undo,loc1 move.l loc1,loc2 moveq.b #6,d1 moveq.b #11,d2 moveq.w #45,d3 ;x moveq.w #20,d4 ;y bsr.w fill move.l #LCD_MEM,a1 ;adress of the 1st bitplane moveq.w #45,d0 ;x moveq.w #20,d1 ;y moveq.w #76,d4 moveq.w #40,d5 bsr.b frame bsr.w seclayer bsr.b frame move.l hscore,a0 cmp.l score,a0 blt.b highscore gameover21: move.w #4,-(a7) ;color #4 : black on white pea GOver(pc) ;adress of the string move.w #38,-(a7) ;y coord move.w #54,-(a7) ;x coord bsr.w putstr move.w #4,-(a7) ;color #4 : black on white pea IntPres(pc) ;adress of the string move.w #48,-(a7) ;y coord move.w #54,-(a7) ;x coord bsr.w putstr ; add #20,a7 ;we went 50 bytes from the start of the stack in the intro plus 20 bytes here ;so we'll need to add 70 to the stack add #70,a7 gameover3: bsr.w mykeys btst.b #4,d5 bne.b gameover3 gameover4: bsr.w mykeys cmp.b #$FF,d5 bne.b gameover4 nokey2: bsr.w mykeys cmp.b #255,d5 bne.b nokey2 clr.w graphlib::choosescreen ;set all graphlib functions to Black and White mode jsr graphlib::gray2 ;restores Black and White mode move.l (rem),($040064) bra.w _main frame: jmp graphlib::frame highscore: move.l score,hscore move.w #4,-(a7) ;color #4 : black on white pea thighs(pc) ;adress of the string move.w #28,-(a7) ;y coord move.w #50,-(a7) ;x coord bsr.w putstr add #10,a7 bra.w gameover21 getnew: bsr.b getpieces move.l a4,a5 bsr.w interpret bsr.b rotate again: bsr.b getpieces move.l a4,a5 move.w x,a0 cmp.w x2,a0 beq.b again bra.w interpret getpieces: moveq.w #6,d0 bsr.b random addq.w #1,d0 move.w d0,(type) moveq.w #4,d0 bsr.b random move.w d0,d1 mulu.w #16,d0 add.w #54,d0 move.w d0,(x) clr.w (y) ;need to assign loc to a5 in board map getloc: tst.w d1 beq.b b0 cmp.w #1,d1 beq.b b1 cmp.w #2,d1 beq.b b2 move.l #map4,a4 rts b0: move.l #map1,a4 rts b1: move.l #map2,a4 rts b2: move.l #map3,a4 rts random: jmp userlib::random rotate: move.l y,a0 ;takes care of x an y if you use longword move.l y2,y move.l a0,y2 move.w type,a0 move.w type2,type move.w a0,type2 exg.l a6,a5 rts ;input: type,x,y interpret: move.b #255,d3 move.w x,d0 ;x move.w y,d1 ;y move.w type,a0 ;done with standards interpret2: cmp.w #1,a0 beq.b drawghost cmp.w #2,a0 beq.w drawPiranha cmp.w #3,a0 beq.w drawsquid cmp.w #4,a0 beq.w drawtopegg cmp.w #5,a0 beq.w drawbottomegg cmp.w #6,a0 beq.w drawshroom cmp.w #0,a0 beq.b erasepiece rts erasepiece: tst.w type beq.b erp2 cmp.w x,d0 bne.b erp2 cmp.w y,d1 bne.b erp2 rts erp2: tst.w type2 beq.b erp3 cmp.w x2,d0 bne.b erp3 cmp.w y2,d1 bne.b erp3 rts erp3: move.l #blank,a0 move.l a0,a2 bra.b sprite drawghost: move.l #ghost,a0 move.l #ghost2,a2 bra.b sprite drawPiranha: move.l #Piranha,a0 move.l #Piranha2,a2 bra.b sprite drawsquid: move.l #squid,a0 move.l #squid2,a2 bra.b sprite drawtopegg: move.l #topegg,a0 move.l #topegg2,a2 bra.b sprite drawbottomegg: move.l #bottomegg,a0 move.l #bottomegg2,a2 bra.b sprite drawshroom: move.l #shroom,a0 move.l #shroom2,a2 sprite: move.l #LCD_MEM,a1 ;adress of the 1st bitplane bsr.b putsprite move.l a2,a0 bsr.w seclayer ;adress of the 2nd bitplane putsprite: jmp graphlib::put_sprite_mask drawarrow: clr.b d3 move.l #arrow,a0 move.l #arrow2,a2 darrow2: move.w ax,d0 ;x move.w ay,d1 ;y bra.b sprite erase2: move.b #255,d3 move.l #blank2,a0 move.l a0,a2 bra.b darrow2 ;Input: d0.w = x ; d1.w = y ; d3.b = constant mask ; a0.l = adress of the sprite & the mask right: cmp.w #86,ax beq.w mainloop2 bsr.b erase2 add.w #16,ax bsr.b drawarrow bra.w mainloop2 left: cmp.w #54,ax beq.w mainloop2 bsr.b erase2 sub.w #16,ax bsr.b drawarrow bra.w mainloop2 bottomleft: moveq.b #1,d1 moveq.b #8,d2 clr.w d3 ;bottom left side moveq.w #96,d4 move.l #checker3,loc1 move.l #checker4,loc2 fill: move.b d1,y2 move.b d2,x2 move.w d3,type move.w d4,type2 move.b #255,d3 move.w type2,d1 ;y move.b y2,y bground: move.w type,d0 ;x move.b x2,x bground2: move.l (loc1),a0 move.l (loc2),a2 bsr.w sprite addq.w #6,d0 ;x sub.b #1,x bne.b bground2 addq.w #6,d1 sub.b #1,y bne.b bground rts swap: swap2: move.w ax,d1 sub.w #38,d1 divu.w #16,d1 subq.w #1,d1 bsr.w getloc move.l a4,a3 add.l #18,a3 move.b #255,d3 clr.w d1 swaploop: move.w (a3),a0 ;move all the pieces move.w (a4),a1 ; move.w a0,(a4) ; move.w a1,(a3) ; move.w ax,d0 bsr.w interpret2 ;swap the sprites add.w #16,d0 ;of placed pieces move.w (a3),a0 bsr.w interpret2 add.l #2,a3 ; add.l #2,a4 ;increment the locaTION POINTERS add.w #11,d1 ;increment y by 11 cmp.w #88,d1 ;stop if at bottom bne.b swaploop ;(88) tst.w (a5) beq.b swap21 bsr.b swap23 tst.w type beq.b swap21 bsr.w interpret swap21: bsr.w rotate tst.w (a5) beq.b swap22 bsr.w swap23 swap22: tst.w type beq.b swap221 bsr.w interpret swap221: bra.w mainloop2 swap23: move.w ax,a0 cmp.w x,a0 beq.b swap24 sub.w #16,x sub.l #18,a5 rts swap24: add.w #16,x add.l #18,a5 rts put_score: lea tmpstr+6(PC),a0 move.l score(PC),d0 moveq #4,d1 bsr.b ConvStr WriteStrA #11,#17,#4,a0 rts put_hscore: lea tmpstr+6(PC),a0 move.l hscore(PC),d0 moveq #4,d1 bsr.b ConvStr WriteStrA #11,#44,#4,a0 rts putstr: jmp doorsos::DrawStrXY ;calls the ROM function which draws a string in current font ConvStr: movem.l d0-d2,-(a7) clr.b (a0) RepConv: divu #10,d0 move.l d0,d2 swap d2 add.b #48,d2 move.b d2,-(a0) subq #1,d1 and.l #$FFFF,d0 bne.b RepConv tst.w d1 beq.b CS_Done subq #1,d1 FillOut: move.b #32,-(a0) dbra d1,FillOut CS_Done: movem.l (a7)+,d0-d2 rts int1: rte undo: blank: dc.w 10 dc.w 2 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 dc.w 0 ghost: dc.w 10 dc.w 2 dc.w %0011110000000000 dc.w %0100001000000000 dc.w %1010100100000000 dc.w %1010100010000000 dc.w %1000000001000000 dc.w %1000001011000000 dc.w %1010100111000000 dc.w %0101010001000000 dc.w %0010000010000000 dc.w %0001111100000000 ghost2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0011110000000000 dc.w %0111111000000000 dc.w %0111111100000000 dc.w %0111111110000000 dc.w %0111111110000000 dc.w %0111111110000000 dc.w %0011111110000000 dc.w %0001111100000000 dc.w %0000000000000000 Piranha: dc.w 10 dc.w 2 dc.w %1100000011000000 dc.w %1010000101000000 dc.w %0101001010000000 dc.w %1110110111000000 dc.w %1011001101000000 dc.w %1111111111000000 dc.w %0110110110000000 dc.w %0011111100000000 dc.w %0001111000000000 dc.w %0011111100000000 Piranha2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0100000010000000 dc.w %0010000100000000 dc.w %0111001110000000 dc.w %0111111110000000 dc.w %0111111110000000 dc.w %0011111100000000 dc.w %0001111000000000 dc.w %0000110000000000 dc.w %0000000000000000 squid: dc.w 10 dc.w 2 dc.w %0001111000000000 dc.w %0010000100000000 dc.w %0100000010000000 dc.w %1011111101000000 dc.w %0101001010000000 dc.w %0011111100000000 dc.w %0101001010000000 dc.w %0101001010000000 dc.w %1010110101000000 dc.w %0111001110000000 squid2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0001111000000000 dc.w %0011111100000000 dc.w %0100000010000000 dc.w %0011111100000000 dc.w %0000000000000000 dc.w %0010110100000000 dc.w %0010110100000000 dc.w %0101001010000000 dc.w %0000000000000000 topegg: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0001111000000000 dc.w %0011011100000000 dc.w %0111000110000000 dc.w %0101000010000000 dc.w %1000011101000000 dc.w %1111001001000000 dc.w %1011101011000000 dc.w %1101010111000000 dc.w %1000100010000000 topegg2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0000000000000000 dc.w %0001111000000000 dc.w %0011111100000000 dc.w %0011111100000000 dc.w %0111111110000000 dc.w %0111111110000000 dc.w %0101110110000000 dc.w %0000100010000000 dc.w %0000000000000000 bottomegg: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %1000100010000000 dc.w %1101010111000000 dc.w %1011101011000000 dc.w %1111001001000000 dc.w %1000011101000000 dc.w %0101000010000000 dc.w %0111000110000000 dc.w %0011011100000000 dc.w %0001111000000000 bottomegg2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0000000000000000 dc.w %0000100010000000 dc.w %0101110110000000 dc.w %0111111110000000 dc.w %0111111110000000 dc.w %0011111100000000 dc.w %0011111100000000 dc.w %0001111000000000 dc.w %0000000000000000 shroom: dc.w 10 dc.w 2 dc.w %0000110000000000 dc.w %0001011000000000 dc.w %0001011000000000 dc.w %0010001100000000 dc.w %0011000100000000 dc.w %0111101010000000 dc.w %1000011101000000 dc.w %0111111110000000 dc.w %0001001000000000 dc.w %0001111000000000 shroom2: dc.w 10 dc.w 2 dc.w %0000000000000000 dc.w %0000110000000000 dc.w %0000110000000000 dc.w %0001111000000000 dc.w %0001111000000000 dc.w %0011111100000000 dc.w %0111111110000000 dc.w %0000000000000000 dc.w %0000110000000000 dc.w %0000000000000000 arrow: dc.w 10 dc.w 4 dc.l %10000011011111111011000001000000 dc.l %11100111111111111111100111000000 dc.l %00000110111111111101100000000000 dc.l %00000000110000001100000000000000 dc.l %00100001100100100110000100000000 dc.l %00111101000000000010111100000000 dc.l %00011110011000011001111000000000 dc.l %00011111101111110111111000000000 dc.l %00001111110000001111110000000000 dc.l %00000111111111111111100000000000 arrow2: dc.w 10 dc.w 4 dc.l %01111100011111111000111110000000 dc.l %00011000100000000100011000000000 dc.l %01111000011111111000011110000000 dc.l %00111100111111111100111100000000 dc.l %00011100011111111000111000000000 dc.l %00111100111111111100111100000000 dc.l %00111110111111111101111100000000 dc.l %00011111011111111011111000000000 dc.l %00001111101111110111110000000000 dc.l %00000111111111111111100000000000 yoshi: dc.w 32 dc.w 4 dc.l %11000111000111000111011111000111 dc.l %11000111000111000111100111000111 dc.l %11000111000111000111000011000111 dc.l %00111000111000111001000100111000 dc.l %00111000111000111111000101111000 dc.l %00111000111000111001000010001100 dc.l %11000111000111001001000000000011 dc.l %11000111000111000111000000001011 dc.l %11000111000111001011000000000001 dc.l %00111000111000111011000000000001 dc.l %00111000111000111111000001000001 dc.l %00111000111000111101000001100001 dc.l %11000111000111000101000011100001 dc.l %11000111000111000111000000111011 dc.l %11000111000111001011000100011111 dc.l %00111000111000111111001011111000 dc.l %00111000111011110110001000111000 dc.l %00111001110110001010001000111000 dc.l %11000111010111101010001111000111 dc.l %11000111100011110100001111000111 dc.l %11000111100000001110010111000111 dc.l %00111000100000110010011000111000 dc.l %00111000110000100100011000111000 dc.l %00111000110000101000111000111000 dc.l %11000111001001000100100111000111 dc.l %11000111001001000101000111000111 dc.l %11000111000110111011000111000111 dc.l %00111000111011111100111000111000 dc.l %00111000111100000100111000111000 dc.l %00111000111100000010111000111000 dc.l %11000111000100000011000111000111 dc.l %11000111000111111111000111000111 yoshi2: dc.w 32 dc.w 4 dc.l %00111000111000111000111000111000 dc.l %00111000111000111000111100111000 dc.l %00111000111000111001110000111000 dc.l %11000111000111000111100111000111 dc.l %11000111000111000111000111110111 dc.l %11000111000111001111000011111111 dc.l %00111000111000111111100111111110 dc.l %00111000111000111111111111111110 dc.l %00111000111000111110111111111111 dc.l %11000111000111001110111111111111 dc.l %11000111000111000110111101111111 dc.l %11000111000111000111111101011111 dc.l %00111000111000111111111011011111 dc.l %00111000111000111111100000100110 dc.l %00111000111000111110100100011100 dc.l %11000111000111000110101111100111 dc.l %11000111011111110111101111000111 dc.l %11000111111101111111101111000111 dc.l %00111001011100011111101000111000 dc.l %00111000111111111111001000111000 dc.l %00111000111111111111011000111000 dc.l %11000111101111111111010111000111 dc.l %11000111010111111100010111000111 dc.l %11000111010000111000100111000111 dc.l %00111000111001111100111000111000 dc.l %00111000111001111101111000111000 dc.l %00111000111110111011111000111000 dc.l %11000111000111111111000111000111 dc.l %11000111000111111111000111000111 dc.l %11000111000111111111000111000111 dc.l %00111000111111111110111000111000 dc.l %00111000111111111110111000111000 blank2: dc.w 10 dc.w 4 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 dc.w 0,0 checker: dc.w 6 dc.w 1 dc.b %11100000 dc.b %11100000 dc.b %11100000 dc.b %00011100 dc.b %00011100 dc.b %00011100 checker2: dc.w 6 dc.w 1 dc.b %00011100 dc.b %00011100 dc.b %00011100 dc.b %11100000 dc.b %11100000 dc.b %11100000 checker3: dc.w 4 dc.w 1 dc.b %11100000 dc.b %11100000 dc.b %11100000 dc.b %00011100 checker4: dc.w 4 dc.w 1 dc.b %00011100 dc.b %00011100 dc.b %00011100 dc.b %11100000 buf: dc.w 0 y: dc.w 0 ;y must come before x x: dc.w 0 ;it could be the other way around type: dc.w 0 ;the critical place is y2: dc.w 0 ;in rotate: x2: dc.w 0 type2: dc.w 0 maxtime: dc.w 0 time: dc.w 0 map1: dc.w 0,0,0,0,0,0,0,0,$ffff map2: dc.w 0,0,0,0,0,0,0,0,$ffff map3: dc.w 0,0,0,0,0,0,0,0,$ffff map4: dc.w 0,0,0,0,0,0,0,0,$ffff ax: dc.w 54 ay: dc.w 90 nokey: dc.l 0 loc1: dc.l 0 loc2: dc.l 0 rem: dc.l 0 hscore: dc.l 0 score: dc.l 0 matches: dc.w 0 tscore: dc.b "Score",0 THigh: dc.b "High",0 GOver: dc.b "GAME OVER",0 IntPres: dc.b "Press 2nd",0 thighs: dc.b "High Score!",0 author: dc.b "by Vortexx15",0 web: dc.b "tcpa.calc.org",0 tmpstr ds.b 8 even Layer1: dc.w 46 dc.w 13 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1C,$80 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$38,$40 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$20 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$41,$A0 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$E3,$D0 dc.b $00,$00,$00,$00,$03,$C0,$00,$00,$00,$00,$00,$E3,$D0 dc.b $00,$00,$00,$1F,$8F,$F8,$00,$00,$00,$00,$01,$E3,$C8 dc.b $00,$00,$00,$30,$5B,$FC,$00,$00,$00,$00,$01,$E3,$C8 dc.b $00,$00,$00,$60,$73,$FC,$00,$00,$00,$00,$01,$E1,$88 dc.b $00,$01,$80,$40,$61,$FA,$00,$00,$00,$00,$01,$00,$18 dc.b $00,$02,$F0,$C0,$71,$F3,$00,$00,$00,$00,$01,$00,$38 dc.b $00,$02,$08,$80,$F0,$E1,$00,$00,$00,$00,$00,$C0,$30 dc.b $00,$04,$05,$81,$F0,$00,$FC,$00,$00,$00,$00,$E0,$30 dc.b $00,$06,$06,$01,$F0,$00,$83,$80,$00,$00,$00,$E3,$10 dc.b $00,$05,$00,$03,$F0,$00,$C0,$C0,$F8,$00,$00,$67,$A0 dc.b $00,$06,$80,$02,$E0,$03,$C0,$61,$04,$3E,$1C,$47,$A0 dc.b $00,$03,$50,$02,$07,$87,$C0,$31,$84,$29,$22,$67,$E0 dc.b $00,$00,$A8,$02,$0F,$C7,$C0,$19,$44,$31,$32,$37,$C0 dc.b $00,$00,$74,$06,$0F,$C7,$E0,$09,$84,$69,$2A,$1F,$80 dc.b $00,$00,$1A,$04,$1F,$E7,$E1,$49,$44,$50,$9C,$00,$00 dc.b $00,$00,$0D,$04,$1F,$E7,$E0,$A9,$84,$60,$80,$00,$00 dc.b $00,$00,$06,$04,$1F,$E7,$E1,$EB,$46,$50,$80,$00,$00 dc.b $00,$00,$05,$04,$1F,$E7,$E0,$3A,$82,$60,$9C,$00,$00 dc.b $03,$F0,$06,$84,$1F,$E3,$A0,$0F,$02,$50,$AA,$00,$00 dc.b $07,$18,$03,$04,$1F,$E0,$20,$06,$83,$E0,$B2,$00,$00 dc.b $07,$3C,$02,$84,$1F,$E0,$35,$03,$40,$00,$AA,$00,$00 dc.b $0F,$1C,$03,$04,$0F,$C0,$2A,$A1,$80,$00,$B2,$00,$00 dc.b $0E,$02,$02,$84,$0F,$C0,$3F,$E1,$40,$00,$AA,$00,$00 dc.b $10,$02,$01,$44,$07,$80,$20,$00,$81,$40,$B2,$00,$00 dc.b $10,$C7,$01,$85,$C0,$00,$20,$00,$C0,$A0,$AA,$00,$00 dc.b $11,$E7,$01,$47,$E0,$00,$20,$00,$81,$D0,$B2,$00,$00 dc.b $11,$E7,$01,$83,$E0,$00,$40,$00,$C1,$60,$AA,$00,$00 dc.b $11,$E7,$01,$57,$E0,$3E,$40,$01,$81,$50,$B2,$00,$00 dc.b $11,$E3,$00,$AB,$E0,$7F,$40,$2B,$43,$28,$AA,$00,$00 dc.b $10,$C1,$00,$7F,$E0,$7F,$D5,$57,$82,$30,$B2,$00,$00 dc.b $10,$01,$00,$03,$E0,$7F,$CA,$BD,$56,$2A,$AA,$00,$00 dc.b $1C,$01,$00,$03,$E0,$7F,$DF,$C1,$AA,$15,$32,$00,$00 dc.b $1C,$02,$00,$39,$C0,$7F,$60,$00,$FC,$1F,$2A,$00,$00 dc.b $1C,$3A,$7E,$F8,$C0,$7F,$1C,$00,$00,$00,$36,$00,$00 dc.b $1C,$7C,$7F,$6F,$40,$3E,$FF,$3C,$3C,$70,$2A,$00,$00 dc.b $0C,$7C,$0F,$FF,$B0,$05,$FD,$9E,$7F,$6E,$1C,$00,$00 dc.b $02,$78,$03,$FF,$DF,$8B,$FF,$FF,$DF,$9F,$80,$00,$00 dc.b $01,$F0,$01,$FF,$EF,$FB,$FF,$FF,$FF,$E7,$C0,$00,$00 dc.b $00,$00,$00,$7F,$F1,$C7,$FF,$F7,$E7,$FB,$E0,$00,$00 dc.b $00,$00,$00,$01,$E0,$00,$3F,$E1,$E0,$F0,$C0,$00,$00 end ;i did add .b .w to calls and jumps cause the compiler is screwy ;if a lable is not defined before a call, it'll automatically use .w ;this added up to about 100 bytes more than it should ;the changes you'll need to make for the 92 will probably be: ;keys - i used the port cause i disabled interrupt ;fill - this makes a block of a pattern. You'll easily be able to ajust these for the 92 screen ;strings - i think this is the only rom call ;buttons: ;2nd+up- quit ;esc - quit ;2nd - swap ;left - left ;right - right ;down - fast ;alpha - pause ;thanks to: ;killer - for pics ;dr. mario - the source really helped:) ;mhlandry - for getting me started with 68k ;acz - their tutorials