INK BROWN CLS COLOR BORDER LIGHT BLUE CONST POSITIVE maxWalls = 3 CONST POSITIVE windowHeight = 3 CONST POSITIVE maxPlayers = 2 CONST POSITIVE maxArrows = 2 title = LOAD TILES("examples/scrolling_title.png") TRANSPARENT titleX = ( SCREEN TILES WIDTH - TILES WIDTH( title ) ) \ 2 titleY = ( SCREEN TILES HEIGHT - TILES HEIGHT( title ) ) \ 2 titleCycle = 0 DO ADD titleCycle, 1, 0 TO 5000 IF titleCycle = 0 THEN INK BROWN PUT TILE title AT titleX, titleY ELSE IF titleCycle = 2500 THEN INK RED PUT TILE title AT titleX, titleY ENDIF IF (titleCycle = 0) OR (titleCycle=2500) THEN INK YELLOW LOCATE , titleY + TILES HEIGHT(title) + 2: CENTER "press any key" ELSE IF (titleCycle = 1250) OR (titleCycle=3750) THEN LOCATE , titleY + TILES HEIGHT(title) + 2: CLINE ENDIF IF SCANCODE > 0 THEN EXIT ENDIF LOOP INK BROWN basement = LOAD TILES("examples/scrolling_basement.png") TRANSPARENT DIM wall AS TILES(maxWalls) wall(0) = LOAD TILES("examples/scrolling_wall0.png") TRANSPARENT wall(1) = LOAD TILES("examples/scrolling_wall1.png") TRANSPARENT wall(2) = LOAD TILES("examples/scrolling_wall2.png") TRANSPARENT DIM window AS TILES(windowHeight) window(0) = LOAD TILES("examples/scrolling_window0.png") TRANSPARENT window(1) = LOAD TILES("examples/scrolling_window1.png") TRANSPARENT window(2) = LOAD TILES("examples/scrolling_window2.png") TRANSPARENT DIM player AS SPRITE(maxPlayers) player(0) = CSPRITE(LOAD IMAGE("examples/scrolling_player0.png")) player(1) = CSPRITE(LOAD IMAGE("examples/scrolling_player1.png")) DIM arrow AS SPRITE(maxArrows) arrow(0) = SPRITE(LOAD IMAGE("examples/scrolling_arrow.png")) arrow(1) = SPRITE(LOAD IMAGE("examples/scrolling_arrow.png")) DIM arrowX AS POSITION(maxArrows) arrowX(0) = 0 arrowX(1) = 0 DIM arrowY AS POSITION(maxArrows) arrowY(0) = 0 arrowY(1) = 0 DIM arrowSpeed AS POSITION(maxArrows) arrowSpeed(0) = 0 arrowSpeed(1) = 0 rowIndex = 0 windowIndex = 0 playerIndex = 0 playerX = ( SCREEN WIDTH - SPRITE WIDTH ) \ #2 playerY = SCREEN HEIGHT - SPRITE HEIGHT - TILES HEIGHT(basement) GLOBAL wall GLOBAL window GLOBAL rowIndex GLOBAL windowIndex GLOBAL playerIndex GLOBAL playerX GLOBAL arrowX GLOBAL arrowY GLOBAL arrowSpeed GLOBAL arrow PROCEDURE refreshRow x = (BYTE) 0 IF rowIndex > 0 THEN DRAW TILES wall(rowIndex) ROW 0, 0 TO rowIndex - 1 ENDIF DRAW TILES wall(rowIndex) ROW 0, rowIndex TO SCREEN TILES WIDTH - 1 IF windowIndex > 4 THEN w = TILES WIDTH(window(windowIndex-5)) x = 4 DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1 ADD x, w ** #2 DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1 ADD x, w ** #2 DRAW TILES window(windowIndex-5) ROW 0, x TO x + w - 1 ENDIF ADD rowIndex, 1, 0 TO 2 ADD windowIndex, 1, 0 TO 7 ADD playerIndex, 1, 0 TO 1 IF ( playerY > 0 ) AND ( windowIndex = 7 ) THEN DEC playerY DEC playerY ENDIF END PROC SCREEN ROWS 24 SCROLL DOWN DRAW TILES basement ROW 0, 0 TO SCREEN TILES WIDTH - 1 DOUBLE BUFFER ON PARALLEL PROCEDURE moveArrow [arrowX] = RND(SCREEN WIDTH - SPRITE WIDTH - 1) [arrowY] = 1 [arrowSpeed] = 3 + RND(5) WHILE [arrowY] > 0 IF COLLISION([arrow]) THEN playerY = playerY + [arrowSpeed] ENDIF ADD [arrowY], [arrowSpeed], 0 TO SCREEN HEIGHT + SPRITE HEIGHT SPRITE [arrow] AT [arrowX],[arrowY] ENABLE WEND SPRITE [arrow] DISABLE END PROC moveArrowThreadId1 = HALTED SPAWN moveArrow moveArrowThreadId2 = HALTED SPAWN moveArrow BEGIN GAMELOOP ON SCROLL DOWN ROW CALL refreshRow SCROLL DOWN SELECT CASE JOY(0) CASE JOY LEFT IF playerX > 0 THEN DEC playerX ENDIF CASE JOY RIGHT IF playerX < (SCREEN WIDTH - SPRITE WIDTH) THEN INC playerX ENDIF ENDSELECT SPRITE player(playerIndex) AT playerX, playerY ENABLE SPRITE player(1-playerIndex) DISABLE IF (RANDOM BYTE > 128) THEN RESPAWN moveArrowThreadId1 ENDIF IF (RANDOM BYTE > 220) THEN RESPAWN moveArrowThreadId2 ENDIF END GAMELOOP
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.atari scrolling_example_06.bas -o example.xex altirra example.xex # Windows ugbc.atari.exe scrolling_example_06.bas -o example.xex altirra example.xex
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.atarixl scrolling_example_06.bas -o example.xex altirra example.xex # Windows ugbc.atarixl.exe scrolling_example_06.bas -o example.xex altirra example.xex
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.c64 scrolling_example_06.bas -o example.prg x64sc example.prg # Windows ugbc.c64.exe scrolling_example_06.bas -o example.prg x64sc example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore YAPE, e in particolare che l'eseguibile yape
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.plus4 scrolling_example_06.bas -o example.prg yape example.prg # Windows ugbc.plus4.exe scrolling_example_06.bas -o example.prg yape example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile xplus4
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.plus4 scrolling_example_06.bas -o example.prg xplus4 example.prg # Windows ugbc.plus4.exe scrolling_example_06.bas -o example.prg xplus4 example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.d32 scrolling_example_06.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d32.exe scrolling_example_06.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.d64 scrolling_example_06.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d64.exe scrolling_example_06.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi i seguenti comandi:
# Linux ugbc.pc128op scrolling_example_06.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.pc128op.exe scrolling_example_06.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile x64sc
sia accessibile.
Digitare quindi i seguenti comandi:
# Linux ugbc.mo5 scrolling_example_06.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.mo5.exe scrolling_example_06.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XEMU, e in particolare che l'eseguibile xmega65
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.vic20 scrolling_example_06.bas -o example.prg xvic --memory 24k example.prg # Windows ugbc.vic20.exe scrolling_example_06.bas -o example.prg xvic --memory 24k example.prg
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Speccy, e in particolare che l'eseguibile speccy
sia accessibile.
Digitare quindi il seguente comando:
# Linux ugbc.zx scrolling_example_06.bas -o example.tap Speccy example.tap # Windows ugbc.zx.exe scrolling_example_06.bas -o example.tap Speccy example.tap
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore openMsx oppure il BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.coleco scrolling_example_06.bas -o example.rom openmsx -machine \"COL - ColecoVision\" -cart example.rom # Windows ugbc.coleco.exe scrolling_example_06.bas -o example.rom bluemsx -machine \"COL - ColecoVision\" example.rom
# Linux ugbc.coleco scrolling_example_06.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom # Windows ugbc.coleco.exe scrolling_example_06.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.sc3000 scrolling_example_06.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom # Windows ugbc.sc3000.exe scrolling_example_06.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux ugbc.sg1000 scrolling_example_06.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom # Windows ugbc.sg1000.exe scrolling_example_06.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
Se hai trovato un problema nel cercare di eseguire questo esempio, se pensi che ci sia un bug o, più semplicemente, vorresti che fosse migliorato, apri una segnalazione su GitHub per questo specifico esempio. Grazie!