• Hello Guest! We're hosting a challenge to welcome vintage Intel macs to the MLA during the month of July! See this thread for more information.
  • We've made some quality of life improvements to the Trading Post. More info here.

Generic Block Game - Happy #MARCHintosh 2026

Hi Everyone,

Just a little 'sneak preview' of some of the updates coming to Generic Block Game.

I've had amazing, and honestly quite surprising, positive feedback on my little Tetris clone 🤫 err, I mean Generic Block Game (all right reserved 🤪) , and a list of feature requests and bug reports (mostly the bug reports). 😜

While my first priority is obviously back country canoe camping with my kids on their summer holidays, in my "free time" I've been implementing the features I can and squishing the bugs.
Attached is a little sneak preview of the next release version. :)

COMING SOON!
Same block time...
Same block channel...
🦇😂

Aaron/DW
Dark Systems BBS
 

Attachments

  • aaa.png
    aaa.png
    168.5 KB · Views: 4
  • bbb.png
    bbb.png
    206.6 KB · Views: 4
  • ccc.png
    ccc.png
    180.8 KB · Views: 4
  • ddd.png
    ddd.png
    167.3 KB · Views: 4
I've had amazing, and honestly quite surprising, positive feedback on my little Tetris clone 🤫 err, I mean Generic Block Game (all right reserved 🤪) , and a list of feature requests and bug reports (mostly the bug reports). 😜
Why does the appearance of the blocks differ during the game play vs in the application icon or final score widow?
Maybe there should be an option to choose different styles of blocks? Or maybe there already is and I should try it before commenting? I'll try it in DingusPPC after it's done compiling.
 
Why does the appearance of the blocks differ during the game play vs in the application icon or final score widow?
Maybe there should be an option to choose different styles of blocks? Or maybe there already is and I should try it before commenting? I'll try it in DingusPPC after it's done compiling.
Good question! :)
The stats screen pulls the block shapes from CICN drawings in the resource fork.
Game play just uses standard QuickDraw recs and fills to try and keep the frame rate up.

The shapes are stored in a 4x4 struct

C:
/* Structs */
typedef struct {
    char map[4][4]; /* 4x4 bounding grid containing the active block */
    RGBColor color; /* 48-bit Classic QuickDraw RGB colour specifier */
    int type;
} Shape;

and the shapes are defined like this, including colours and a few other flags for specific functions:
C:
/* Defines the actual mapping and colours for the standard block shapes (I, J, L, O, S, T, Z) */
void InitShapes(void) {
    int i, x, y;
    for(i=0; i<7; i++) for(y=0; y<4; y++) for(x=0; x<4; x++) gShapes[i].map[y][x] = 0;
    
    /* Block structures are mapped with QuickDraw 48-bit colour values */
    /* I */ gShapes[0].type = 0; gShapes[0].map[1][0]=1; gShapes[0].map[1][1]=1; gShapes[0].map[1][2]=1; gShapes[0].map[1][3]=1; gShapes[0].color.red=0x0000; gShapes[0].color.green=0xFFFF; gShapes[0].color.blue=0xFFFF;
    /* J */ gShapes[1].type = 1;gShapes[1].map[0][0]=1; gShapes[1].map[1][0]=1; gShapes[1].map[1][1]=1; gShapes[1].map[1][2]=1; gShapes[1].color.red=0x0000; gShapes[1].color.green=0x0000; gShapes[1].color.blue=0xFFFF;
    /* L */ gShapes[2].type = 2;gShapes[2].map[0][2]=1; gShapes[2].map[1][0]=1; gShapes[2].map[1][1]=1; gShapes[2].map[1][2]=1; gShapes[2].color.red=0xFFFF; gShapes[2].color.green=0x8000; gShapes[2].color.blue=0x0000;
    /* O */ gShapes[3].type = 3;gShapes[3].map[0][1]=1; gShapes[3].map[0][2]=1; gShapes[3].map[1][1]=1; gShapes[3].map[1][2]=1; gShapes[3].color.red=0xFFFF; gShapes[3].color.green=0xFFFF; gShapes[3].color.blue=0x0000;
    /* S */ gShapes[4].type = 4;gShapes[4].map[0][1]=1; gShapes[4].map[0][2]=1; gShapes[4].map[1][0]=1; gShapes[4].map[1][1]=1; gShapes[4].color.red=0x0000; gShapes[4].color.green=0xFFFF; gShapes[4].color.blue=0x0000;
    /* T */ gShapes[5].type = 5;gShapes[5].map[0][1]=1; gShapes[5].map[1][0]=1; gShapes[5].map[1][1]=1; gShapes[5].map[1][2]=1; gShapes[5].color.red=0x8000; gShapes[5].color.green=0x0000; gShapes[5].color.blue=0xFFFF;
    /* Z */ gShapes[6].type = 6;gShapes[6].map[0][0]=1; gShapes[6].map[0][1]=1; gShapes[6].map[1][1]=1; gShapes[6].map[1][2]=1; gShapes[6].color.red=0xFFFF; gShapes[6].color.green=0x0000; gShapes[6].color.blue=0x0000;
}

I just thought the CICN looked nice. lol 😋

Might be fun to have a 'block theme' you can choose from though... interesting idea...
Standard
Halloween theme
Starwars theme
Fancy pants theme
1Bit theme
etc..

Going to have to think about this.
Thanks! :)
 
Why does the appearance of the blocks differ during the game play vs in the application icon or final score widow?
Maybe there should be an option to choose different styles of blocks? Or maybe there already is and I should try it before commenting? I'll try it in DingusPPC after it's done compiling.
Here's the Resource file's CICNs vs the QuickDraw shapes defined in my last reply.
I meant to attach this time.
 

Attachments

  • Screenshot 2026-08-01 at 3.29.27 PM.png
    Screenshot 2026-08-01 at 3.29.27 PM.png
    77.4 KB · Views: 2
How did you program it? Is there a way to use javascript to make an application for classic mac os 6? Look's fun! Good work.
Hello,
Thanks for the kind words! :)

I'm not sure about Javascript, the MOD background music kinda places it in the 68040 (and maybe 68030) CPU range, but I did try to not use any float math, so 68LC040 should be A-OK math-wise.

It's written in C (old school C89) using CodeWarrior PRO 4.
The PICTs, Icons, MOD music and Sound FX are all stored in the resource file.

I use the Basilisk II emulator on my M1 MACBook Air, running System 7.5.5 and send compiled binaries (over FTP) to my LC475, Colour Classic MYSTIC (LC575) and sometimes my SE/30.

You can download the source and full CodeWarrior project in an .SIT archive from my Demozoo account. Although, if you wait a day or two, the most resent version of the compiled game and the source will be up for download. There's quite a few changes, fixes and new features. :)

Thanks again!
Aaron/DW
Dark Systems BBS
 
Back
Top