Skip to content

Instantly share code, notes, and snippets.

@fu-sen
Last active April 19, 2025 02:17
Show Gist options
  • Select an option

  • Save fu-sen/898173133ffc1f501e1bc83442489c0a to your computer and use it in GitHub Desktop.

Select an option

Save fu-sen/898173133ffc1f501e1bc83442489c0a to your computer and use it in GitHub Desktop.
Balloons | z88dk monochrome sprites functions
/*
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;
}
}
}
}
@fu-sen
Copy link
Copy Markdown
Author

fu-sen commented Dec 7, 2024

balloons_0000
balloons2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment