' NATAC ISLAND ' ============ ' BASED ON SETTLERS OF CATAN ' BY WAS8BIT ' POWERED BY LOWRES NX ' ' COST CHART ' ========== ' ROAD = 1EA. CLAY+WOOD ' VILL = 1EA. CLAY+WOOD+WOOL+HAY ' TOWN = VILL + 3HAY+3ROCK ' CITY = TOWN + 2CLAY+2WOOD+3WOOL+1ROCK ' ' YIELD CHART ' =========== ' ROAD = 0 PER FARM ' VILL = 1 PER FARM ' TOWN = 2 PER FARM ' CITY = 3 PER FARM ' ' BUILD RULES '============ ' ROADS = ANY SQUARE ' BUILDINGS = ANY SQUARE, NOT BESIDE ANOTHER BUILDING ' ' [INITIALIZE] ' ____________ FONT 64 RANDOMIZE TIMER TOUCHSCREEN BG 1 BG COPY 0,0,20,16 TO 0,0 BG 0 SCROLL 0,-4,-4 DIM GLOBAL FARMGRID(4,4),BUILDGRID(5,5),ACTIONGRID(5,5) DIM GLOBAL BUILDING(4),FARMING(4),YIELD$(5,5),XYIELD(4),YYIELD(4) GLOBAL XPLAYER,YPLAYER,IMODE FOR Y=1 TO 5 FOR X=1 TO 5 READ YIELD$(X,Y) NEXT X NEXT Y DATA "11000000","11210000","21310000","31410000","41000000" DATA "11120000","11122122","21223132","31324142","41420000" DATA "12130000","12132223","22233233","32334243","42430000" DATA "13140000","13142324","23243334","33344344","43440000" DATA "14000000","14240000","24340000","34440000","44000000" BG 1 PAL 0 TEXT 0,5,"WIN:3CITY " BG 0 REPLAY: ' [PLACE FARMS] ' _____________ 'CLEAR FOR Y=1 TO 4 FOR X=1 TO 4 FARMGRID(X,X)=0 NEXT X NEXT Y 'ADD FARMS 1-5 FOR ICHAR=1 TO 5 C=9 WHILE C<>0 X=RND(3)+1 Y=RND(3)+1 C=FARMGRID(X,Y) WEND FARMGRID(X,Y)=ICHAR NEXT ICHAR 'FILL FARMS FOR Y=1 TO 4 FOR X=1 TO 4 IF FARMGRID(X,Y)=0 THEN FARMGRID(X,Y)=1+RND(4) NEXT X NEXT Y 'DRAW FARMS PAL 1 FOR Y=1 TO 4 FOR X=1 TO 4 PX=(X-1)*2+1 PY=(Y-1)*2+7 CELL PX,PY,FARMGRID(X,Y)+47 NEXT X NEXT Y '[CLEAR BUILDS] FOR X=1 TO 5 FOR Y=1 TO 5 BUILDGRID(X,Y)=0 NEXT Y NEXT X BUILDING(1)=2 BUILDING(2)=2 BUILDING(3)=1 BUILDING(4)=1 CALL SHOWBUILDS XPLAYER=3 YPLAYER=3 CALL MOVEPLAYER(0) ' '[GET MATCH ON ACTION PAD] ' ITOUCH=0 PAL 0 DO IF TOUCH THEN TX=TOUCH.X\16-4 TXX=TOUCH.X\8 TY=TOUCH.Y\16-2 IF TX<1 OR TY<1 THEN ITOUCH=0 CALL CLEARACTIONS REM TX=1 3 5 REM TY=0 REM MODE BUTTONS REM PRINT TXX IF TY=0 AND (TXX=9 OR TXX=10) THEN CALL MODEMOVE IF TY=0 AND TX=2 THEN CALL MODEFARM IF TY=0 AND (TXX=15 OR TXX=16) THEN CALL MODEMAKE IF TY=0 AND TX=5 THEN CALL MODEBUILD ELSE IF ITOUCH=0 THEN PLAY 0,49,1 SOUND 0 ITOUCH=1 CTOUCH=ACTIONGRID(TX,TY) TX1=TX TY1=TY CALL SETACTIONS(TX,TY) ELSE IF ITOUCH=1 THEN IF TX<>TX1 OR TY<>TY1 THEN IF CTOUCH=ACTIONGRID(TX,TY) THEN PLAY 1,56,1 SOUND 0 ITOUCH=2 TX2=TX TY2=TY CALL SETACTIONS(TX,TY) ELSE ITOUCH=0 CALL CLEARACTIONS END IF END IF ELSE IF ITOUCH=2 THEN IF NOT ((TX=TX1 AND TY=TY1) OR (TX=TX2 AND TY=TY2)) THEN IF CTOUCH=ACTIONGRID(TX,TY) THEN PLAY 2,61,1 SOUND 0 ITOUCH=3 TX3=TX TY3=TY CALL SETACTIONS(TX,TY) GOSUB FLASHMATCH ACTIONGRID(TX,TY)=0 ACTIONGRID(TX1,TY1)=0 ACTIONGRID(TX2,TY2)=0 IF CTOUCH>9 THEN CALL MOVEPLAYER(CTOUCH-9) IF CTOUCH>=6 AND CTOUCH<=9 THEN IF IMODE=4 THEN IBUILD=CTOUCH-5 YN=0 FOR I=1 TO 4 IF BUILDING(I)>0 THEN YN=1 NEXT I IF YN=1 THEN GOSUB BUILDMATCH END IF END IF ELSE ITOUCH=0 CALL CLEARACTIONS END IF END IF END IF END IF ELSE IF ITOUCH>0 THEN ITOUCH=0 CALL CLEARACTIONS END IF END IF LOOP BUILDMATCH: XP=XPLAYER YP=YPLAYER BBUILD=BUILDGRID(XP,YP) IF IBUILD=1 THEN IF BBUILD=0 AND BUILDING(1)>0 THEN GOSUB ADDBUILD ELSE GOSUB NOBUILD ELSE IF IBUILD=2 THEN YN=0 IF YP>1 THEN IF BUILDGRID(XP,YP-1)=1 THEN YN=1 IF YP<5 THEN IF BUILDGRID(XP,YP+1)=1 THEN YN=1 IF XP>1 THEN IF BUILDGRID(XP-1,YP)=1 THEN YN=1 IF XP<5 THEN IF BUILDGRID(XP+1,YP)=1 THEN YN=1 IF BBUILD>0 THEN YN=0 IF YN=1 AND BUILDING(2)>0 THEN GOSUB ADDBUILD ELSE GOSUB NOBUILD ELSE IF IBUILD>2 THEN YN=0 IF IBUILD=3 AND BBUILD=2 AND BUILDING(3)>0 THEN YN=1 IF IBUILD=4 AND BBUILD=3 AND BUILDING(4)>0 THEN YN=1 IF BBUILD=0 OR BBUILD=1 THEN YN=0 IF YN=1 THEN GOSUB ADDBUILD ELSE GOSUB NOBUILD END IF RETURN ADDBUILD: PLAY 3,50,5 SOUND 1 BUILDGRID(XP,YP)=IBUILD DEC BUILDING(IBUILD) CALL DRAWBUILDS CALL SHOWBUILDS CALL MODEBUILD RETURN NOBUILD: PLAY 3,20,5 SOUND 2 WAIT 15 PLAY 3,20,5 SOUND 2 RETURN FLASHMATCH: PLAY 0,49,10 SOUND 0 PLAY 1,56,10 SOUND 0 PLAY 2,61,10 SOUND 0 FOR IFLASH=1 TO 3 WAIT 5 CALL CLEARACTIONS WAIT 5 CALL SETACTIONS(TX1,TY1) CALL SETACTIONS(TX2,TY2) CALL SETACTIONS(TX3,TY3) NEXT IFLASH WAIT 5 RETURN SUB CLEARMODE CALL DRAWIT(9,4,12,6) CALL DRAWIT(18,4,14,6) CALL DRAWIT(12,4,2,6) CALL DRAWIT(15,4,46,6) END SUB SUB SETMODE I=IMODE IF I=1 THEN CALL DRAWIT(9,4,12,5) ELSE IF I=4 THEN CALL DRAWIT(18,4,14,7) ELSE IF I=2 THEN CALL DRAWIT(12,4,2,5) ELSE IF I=3 THEN CALL DRAWIT(15,4,46,5) END IF END SUB SUB MODEMOVE IMODE=1 CALL CLEARMODE CALL SETMODE PLAY 0,49,10 SOUND 0 PLAY 1,56,10 SOUND 0 PLAY 2,61,10 SOUND 0 CALL CLEARACTIONS CALL HIDEACTIONS WAIT 15 CALL MOVEACTIONS WAIT 15 END SUB SUB MODEBUILD IMODE=4 CALL CLEARMODE CALL SETMODE PLAY 0,49,10 SOUND 0 PLAY 1,56,10 SOUND 0 PLAY 2,61,10 SOUND 0 CALL CLEARACTIONS CALL HIDEACTIONS WAIT 15 CALL BUILDACTIONS WAIT 15 END SUB SUB MODEMAKE IMODE=3 CALL CLEARMODE CALL SETMODE PLAY 0,49,10 SOUND 0 PLAY 1,56,10 SOUND 0 PLAY 2,61,10 SOUND 0 CALL CLEARACTIONS CALL HIDEACTIONS WAIT 15 REM CALL BUILDACTIONS WAIT 15 END SUB SUB MODEFARM IMODE=2 CALL CLEARMODE CALL SETMODE PLAY 0,49,10 SOUND 0 PLAY 1,56,10 SOUND 0 PLAY 2,61,10 SOUND 0 CALL CLEARACTIONS CALL HIDEACTIONS WAIT 15 CALL FARMACTIONS WAIT 15 END SUB SUB MOVEPLAYER(I) CALL CLEARPLAYER IF I=1 THEN ADD YPLAYER,-1,1 TO 5 IF I=2 THEN ADD XPLAYER,1,1 TO 5 IF I=3 THEN ADD YPLAYER,1,1 TO 5 IF I=4 THEN ADD XPLAYER,-1,1 TO 5 YY$=YIELD$(XPLAYER,YPLAYER) LOCATE 0,0 FOR I=1 TO 4 II=I-1 M$=MID$(YY$,II*2+1,2) XYIELD(I)=VAL(LEFT$(M$,1)) YYIELD(I)=VAL(RIGHT$(M$,1)) REM PRINT FARMGRID(XYIELD(I),YYIELD(I)); NEXT I PX=(XPLAYER-1)*2 PY=(YPLAYER+2)*2 CALL DRAWIT(PX,PY,4,0) BG 0 CALL MODEMOVE END SUB SUB CLEARPLAYER FOR X=1 TO 5 FOR Y=1 TO 5 PX=(X-1)*2 PY=(Y-1)*2+6 CALL DRAWIT(PX,PY,6,0) NEXT Y NEXT X BG 0 END SUB SUB SHOWBUILDS BG 1 PAL 4 FOR I=1 TO 4 NUMBER 16,I-1,BUILDING(I),2 NEXT I END SUB SUB SETACTIONS(IX,IY) PX=(IX-1)*2+1+9 PY=(IY-1)*2+6 CALL DRAWIT(PX,PY,8,3) BG 0 END SUB SUB CLEARACTIONS FOR X=1 TO 5 FOR Y=1 TO 5 PX=(X-1)*2+1+9 PY=(Y-1)*2+6 CALL DRAWIT(PX,PY,10,3) NEXT Y NEXT X BG 0 END SUB SUB HIDEACTIONS FOR X=1 TO 5 FOR Y=1 TO 5 ACTIONGRID(X,Y)=0 NEXT Y NEXT X PAL 2 FOR X=1 TO 5 FOR Y=1 TO 5 PX=(X-1)*2+1+9 PY=(Y-1)*2+6 CELL PX,PY,0 NEXT Y NEXT X END SUB SUB MOVEACTIONS FOR X=1 TO 5 FOR Y=1 TO 5 ACTIONGRID(X,Y)=0 NEXT Y NEXT X FOR X=1 TO 5 FOR Y=1 TO 5 ACTIONGRID(X,Y)=RND(3)+10 NEXT Y NEXT X CALL DRAWACTIONS END SUB SUB BUILDACTIONS YN=0 FOR I=1 TO 4 IF BUILDING(I)>0 THEN YN=1 NEXT I IF YN=1 THEN FOR X=1 TO 5 FOR Y=1 TO 5 ACTIONGRID(X,Y)=0 NEXT Y NEXT X FOR X=1 TO 5 FOR Y=1 TO 5 T=0 WHILE T=0 R=RND(3) T=BUILDING(R+1) WEND ACTIONGRID(X,Y)=R+6 NEXT Y NEXT X CALL DRAWACTIONS END IF END SUB SUB FARMACTIONS FOR X=1 TO 5 FOR Y=1 TO 5 ACTIONGRID(X,Y)=0 NEXT Y NEXT X FOR X=1 TO 5 FOR Y=1 TO 5 T=0 WHILE T=0 IY=RND(3)+1 T=FARMGRID(XYIELD(IY),YYIELD(IY)) WEND ACTIONGRID(X,Y)=T NEXT Y NEXT X CALL DRAWACTIONS END SUB SUB DRAWACTIONS BG 0 PAL 2 FOR X=1 TO 5 FOR Y=1 TO 5 PX=(X-1)*2+1+9 PY=(Y-1)*2+6 CELL PX,PY,ACTIONGRID(X,Y)+31 NEXT Y NEXT X END SUB SUB DRAWBUILDS BG 0 PAL 2 FOR X=1 TO 5 FOR Y=1 TO 5 PX=(X-1)*2 PY=(Y-1)*2+6 IF BUILDGRID(X,Y)>0 THEN CELL PX,PY,BUILDGRID(X,Y)+52 NEXT Y NEXT X END SUB SUB DRAWIT(X,Y,C,P) BG 1 PAL P CELL X,Y,C CELL X+1,Y,C+1 CELL X,Y+1,C+16 CELL X+1,Y+1,C+17 END SUB #1:MAIN PALETTES 2A3F0D08003F3830003F2A00003F0B03 00003F150000033F0000152A0000070C #2:MAIN CHARACTERS 00000000000000000000000000000000 00000000000000000000000000000000 FF80808080808888007F7F7F7F7F7F7F FF0101F989898DFD00FEFEFEFEFEFEFE FFF0EFDFBFBFBFBFFFFFF0E0C0C0C0C0 FF0FF7FBFDFDFDFDFFFF0F0703030303 FFF0E0C080808080FFFFFFFFFFFFFFFF FF0F070301010101FFFFFFFFFFFFFFFF 007F7F7F7F7F7F7FFF80808080808080 00FEFEFEFEFEFEFEFF01010101010101 7F80808080808080FFFFFFFFFFFFFFFF FE01010101010101FFFFFFFFFFFFFFFF FF8183878191B1FF007F7F7F7F7F7F7F FF81C1E181898DFF00FEFEFEFEFEFEFE FF8080848E9C8A81007F7F7F7F7F7F7F FF010111391D294100FEFEFEFEFEFEFE 00000000000000000000000000000000 00000000000000000000000000000000 BFBFA1AC8C8080FF7F7F7F7F7F7F7F00 87337B79310101FFFEFEFEFEFEFEFE00 BFBFBFBFDFEFF0FFC0C0C0C0E0F0FFFF FDFDFDFDFBF70FFF03030303070FFFFF 80808080C0E0F0FFFFFFFFFFFFFFFFFF 0101010103070FFFFFFFFFFFFFFFFFFF 7F7F7F7F7F7F7F0080808080808080FF FEFEFEFEFEFEFE0001010101010101FF 808080808080807FFFFFFFFFFFFFFFFF 01010101010101FEFFFFFFFFFFFFFFFF FFB19181878381FF7F7F7F7F7F7F7F00 FF8D8981E1C181FFFEFEFEFEFEFEFE00 80818284888080FF7F7F7F7F7F7F7F00 81412111090101FFFEFEFEFEFEFEFE00 54FEFE7CFEFE540054AA825482AA5400 54FE7CFE7C38381054AA44826C282810 004CFE7E7C7C2800004CB24244542800 001C3E7F7F3F1A00001C225D55251A00 1038FCFEFEFE7C001028C48282827C00 0010387CFE7C38100010286C826C2810 0000003C7E7E7E240000003C42425A24 00183C3C7E7E7E3C001824244242423C 005AFFFFFFFFFF66005AA58181819966 183C7EFF7E3C3C181824428166242418 081C7EFFFF7E1C080814728181721408 183C3C7EFF7E3C181824246681422418 10387EFFFF7E381010284E81814E2810 183C7E2E1C1C081C18245A2A14140814 FF80AABE94BEAA80007F7F7F7F7F7F7F FF01F1117D39110100FEFEFEFEFEFEFE 00547C287C540000007C007C007C0000 00000028101010000054387C10101000 00004C3C380000000000000000280000 000000000000000000001C222A1A0000 00102844007C0000000010387C7C0000 000010107C101000000010107C101000 000000003C3C2400000000003C3C2400 000018183C3C3C00000018183C3C3C00 00005A7E7E7E660000005A7E7E7E6600 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 AA9CBE88888880FF7F7F7F7F7F7F7F00 0111117D111101FFFEFEFEFEFEFEFE00 00000000000000000000000000000000 00181818180018000000000000000000 006C6C24000000000000000000000000 00247E24247E24000000000000000000 00083E380E3E08000000000000000000 00626408102646000000000000000000 001C34386E643A000000000000000000 00181830000000000000000000000000 000C183030180C000000000000000000 0030180C0C1830000000000000000000 000024187E1824000000000000000000 000018187E1818000000000000000000 00000000181830000000000000000000 000000007E0000000000000000000000 00000000001818000000000000000000 00060C18306040000000000000000000 1C22222222221C000000000000000000 00080808080800000000000000000000 1C02021C20203C000000000000000000 1C02021E02021C000000000000000000 0022221C020200000000000000000000 3C20201C02021C000000000000000000 1C20203C22221C000000000000000000 1E020202020200000000000000000000 1C22221C22221C000000000000000000 1C22221E02021C000000000000000000 00000018001800000000000000000000 00000018001830000000000000000000 00000C1830180C000000000000000000 0000007E007E00000000000000000000 000030180C1830000000000000000000 003C660C180018000000000000000000 003C666E6E603C000000000000000000 1C22223E222222000000000000000000 3C22223C22223C000000000000000000 1C20202020201C000000000000000000 3C22222222223C000000000000000000 3C20203C20203C000000000000000000 3C20203C202020000000000000000000 1C20202C22221C000000000000000000 2222223E222222000000000000000000 1C08080808081C000000000000000000 1E02020222221C000000000000000000 22242820282422000000000000000000 0020202020203C000000000000000000 1C2A2A22222200000000000000000000 0022322A262200000000000000000000 1C22222222221C000000000000000000 3C22223C202020000000000000000000 1C2222222A261E000000000000000000 3C22223C282422000000000000000000 1C20201C02021C000000000000000000 3E080808080808000000000000000000 0022222222221C000000000000000000 00222222221408000000000000000000 002222222A2A1C000000000000000000 00221408142200000000000000000000 0022221C080808000000000000000000 1E02040810203C000000000000000000 003C303030303C000000000000000000 006030180C0602000000000000000000 003C0C0C0C0C3C000000000000000000 00183C66000000000000000000000000 0000000000007E000000000000000000 #3:MAIN BG 00001410300163046C04610479040000 5004500450040000350272046F046104 64040000000000000000000031017704 6F046F04640400005004500450040000 3602760469046C046C04000000000000 00000000320177046F046F046C040000 5004500450040000370274046F047704 6E040000000000000000000033016804 61047904000000005004500450040000 38026304690474047904000000000000 00000000340172046F0463046B040000 5004500450040C060D06000202060306 00022E062F0600020E060F0600000000 00000000000000000000000000001C06 1D0600021206130600023E063F060002 1E061F06060007000600070006000700 06000700060007000A030B030A030B03 0A030B030A030B030A030B0316001700 16001700160017001600170016001700 1A031B031A031B031A031B031A031B03 1A031B03060007000600070006000700 06000700060007000A030B030A030B03 0A030B030A030B030A030B0316001700 16001700160017001600170016001700 1A031B031A031B031A031B031A031B03 1A031B03060007000600070006000700 06000700060007000A030B030A030B03 0A030B030A030B030A030B0316001700 16001700160017001600170016001700 1A031B031A031B031A031B031A031B03 1A031B03060007000600070006000700 06000700060007000A030B030A030B03 0A030B030A030B030A030B0316001700 16001700160017001600170016001700 1A031B031A031B031A031B031A031B03 1A031B03060007000600070006000700 06000700060007000A030B030A030B03 0A030B030A030B030A030B0316001700 16001700160017001600170016001700 1A031B031A031B031A031B031A031B03 1A031B03 #15:MAIN SOUND 080031891000EC002300F16610F0FC00 08006060000000002800303019FE0000 38002020000000003800505000000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000 0800000F000000000800000F00000000