Last active
April 19, 2025 02:17
-
-
Save fu-sen/898173133ffc1f501e1bc83442489c0a to your computer and use it in GitHub Desktop.
Balloons | z88dk monochrome sprites functions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| Balloons | z88dk monochrome sprites functions | |
| Copyright (c) 2024-2025 BALLOON | FU-SEN | |
| The MIT License (MIT) - https://mit.balloon.net.eu.org/#2024-2025 | |
| Colecovision: | |
| zcc +coleco -create-app -bn balloons balloons.c (generate balloons.rom) | |
| MSX (-pragma-define:CLIB_DEFAULT_SCREEN_MODE=3 also works, after nightly build 20241218): | |
| zcc +msx -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -create-app -bn balloons balloons.c (Cassette tape image, generate balloons.cas) | |
| --> BLOAD"CAS:",R (MSX turbo R has the tape feature removed!) | |
| zcc +msx -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -create-app -subtype=disk -bn balloons balloons.c (BASIC BLOAD file, generate balloons.msx) | |
| --> BLOAD"balloons.MSX",R | |
| zcc +msx -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -create-app -subtype=wav -bn balloons balloons.c (Cassette tape audio WAV format, generate balloons.wav) | |
| --> BLOAD"CAS:",R (MSX turbo R has the tape feature removed!) | |
| zcc +msx -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -create-app -subtype=msxdos -bn balloons balloons.c (MSX-DOS .com executable file, generate balloons.com) | |
| --> balloons (mSX-DOS) | |
| zcc +msx -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -create-app -subtype=rom -bn balloons balloons.c (ROM cartridge image, generate balloons.rom) | |
| PC-6001: | |
| zcc +pc6001 -create-app -bn balloons balloons.c (16k, generate balloons.cas) | |
| zcc +pc6001 -subtype=32k -create-app -bn balloons balloons.c (32k, generate balloons.cas) | |
| --> CLOAD | |
| RUN | |
| PC-8801: | |
| zcc +pc88 -lgfxpc88 -create-app -Cz--audio -bn balloons balloons.c (160x100, generate balloons.t88) | |
| zcc +pc88 -lgfxpc88hr200 -create-app -Cz--audio -bn balloons balloons.c (640x200, generate balloons.t88) | |
| --> MON | |
| R | |
| G8A00 | |
| PC-E200, E220, G801, G802, G803, G811, G812, G813, G820, G830: | |
| zcc +g800 -create-app -clib=e200 -bn balloons balloons.c (generate balloons.ihx) | |
| --> g800 balloons.ihx 100 (g800) | |
| MON | |
| USER 1000 | |
| R | |
| G100 | |
| PC-G815: | |
| zcc +g800 -create-app -clib=g815 -bn balloons balloons.c (generate balloons.ihx) | |
| --> g800 balloons.ihx 100 (g800) | |
| MON | |
| USER 1000 | |
| R | |
| G100 | |
| PC-G850: | |
| zcc +g800 -create-app -clib=g850b -bn balloons balloons.c (generate balloons.ihx) | |
| --> g800 balloons.ihx 100 (g800) | |
| MON | |
| USER 1000 | |
| R | |
| G100 | |
| SV-318 (-pragma-define:CLIB_DEFAULT_SCREEN_MODE=3 also works, after nightly build 20241218): | |
| zcc +svi -create-app -pragma-define:CRT_ORG_CODE=49200 -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -bn balloons balloons.c (generate balloons.cas) | |
| --> BLOAD"cas:",R | |
| zcc +svi -create-app -pragma-define:CRT_ORG_CODE=49200 -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -subtype=wav -bn balloons balloons.c (generate balloons.wav) | |
| --> BLOAD"cas:",R | |
| zcc +svi -create-app -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -subtype=rom318 -bn balloons balloons.c | |
| SV-328 (-pragma-define:CLIB_DEFAULT_SCREEN_MODE=3 also works, after nightly build 20241218): | |
| zcc +svi -create-app -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -bn balloons balloons.c (generate balloons.cas) | |
| --> BLOAD"cas:",R | |
| zcc +svi -create-app -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -subtype=wav -bn balloons balloons.c (generate balloons.wav) | |
| --> BLOAD"cas:",R | |
| zcc +svi -create-app -pragma-define:CLIB_DEFAULT_SCREEN_MODE=2 -subtype=rom -bn balloons balloons.c (generate balloons.rom) | |
| TI-83: | |
| zcc +ti83 -create-app -bn balloons balloons.c (shell=Ion or Ti-Explorer, generate balloons.83p) | |
| TI-86: | |
| zcc +ti83 -create-app -startup=2 -bn balloons balloons.c (shell=ASE, Rascal or emanon, generate balloons.86p) | |
| ZX81: | |
| zcc +zx81 -create-app -bn balloons balloons.c (generate balloons.P) | |
| ZX Spectrum: | |
| zcc +zx -lp3 -create-app -bn balloons balloons.c (generate balloons.tap) | |
| It can be built on various other Z80 platforms! | |
| */ | |
| #include <graphics.h> | |
| #include <games.h> | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| char balloon[] = { 8, 8, | |
| 0x38, 0x74, 0xfa, 0xfe, 0xfe, 0x7c, 0x38, 0x10 | |
| }; | |
| char ribbon[] = { 8, 8, | |
| 0x10, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08, 0x10 | |
| }; | |
| int x[64] ,y[64] = { 0 }; /* max getmaxy() 480 / 8 + 4 = 64 */ | |
| void main(){ | |
| int max_balloon = getmaxy() / 8 + 4; | |
| int n = 0; | |
| clg(); | |
| while (getk() > 0){} | |
| while (getk() < 1) { | |
| x[n] = rand() % (getmaxx() - 8); | |
| y[n] = getmaxy()+16; | |
| n = (n + 1) % max_balloon; | |
| for (int i=0 ;i<(max_balloon-1) ;i++) { | |
| if((y[i] > 8)&&(y[i]-16 < getmaxy())) { | |
| putsprite(SPR_XOR, x[i], y[i]-15, balloon); | |
| } | |
| if((y[i] > 0)&&(y[i]-8 < getmaxy())) { | |
| putsprite(SPR_XOR, x[i], y[i]-7, ribbon); | |
| } | |
| if(y[i] > 0) { | |
| y[i] -= 8; | |
| } | |
| if((y[i] > 8)&&(y[i]-16 < getmaxy())) { | |
| putsprite(SPR_XOR, x[i], y[i]-15, balloon); | |
| } | |
| if((y[i] > 0)&&(y[i]-8 < getmaxy())) { | |
| putsprite(SPR_XOR, x[i], y[i]-7, ribbon); | |
| } | |
| if (getk() > 0) { | |
| break; | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.