• 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: 15
  • bbb.png
    bbb.png
    206.6 KB · Views: 7
  • ccc.png
    ccc.png
    180.8 KB · Views: 6
  • ddd.png
    ddd.png
    167.3 KB · Views: 7
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! :)
 
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.
 
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: 6
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
 
I'll try it in DingusPPC after it's done compiling.
Generic Block Game works ok in my fork of DingusPPC running 9.2.2 on an emulated Beige G3 (AppleTalk disabled) but I need to fix the audio emulation.

It would be nice if the game had a fullscreen mode.
 
Generic Block Game works ok in my fork of DingusPPC running 9.2.2 on an emulated Beige G3 (AppleTalk disabled) but I need to fix the audio emulation.

It would be nice if the game had a fullscreen mode.
Awesome, thanks for testing it on a PPC G3 in 9.2.2!
I've only ever ran it under 7.x and either in Basilisk II or on one of my 040 machines.

Full screen eh? 🤔
Let me think about that and how it might work.
The trick will be the GWorld and adjusting coordinates and keeping copybits happy.

A couple more sneak peek 'polish' features.
Side bar particle explosion text when special events happen (because who doesn't like particle explosions?) & a little count down timer window during Time Attack style games.
Still refining. :)

Thanks again for testing and the suggestion!
 

Attachments

  • Screenshot 2026-08-02 at 5.17.33 PM.png
    Screenshot 2026-08-02 at 5.17.33 PM.png
    66 KB · Views: 4
  • Screenshot 2026-08-02 at 5.20.15 PM.png
    Screenshot 2026-08-02 at 5.20.15 PM.png
    46.5 KB · Views: 4
How much time is there after a block reaches the bottom before it can no longer be moved? I think the game is missing some sliding mechanics (I am not an expert of the game so I can't describe all the tricks - such as being able to rotate into tight spaces, etc.).
 
How much time is there after a block reaches the bottom before it can no longer be moved? I think the game is missing some sliding mechanics (I am not an expert of the game so I can't describe all the tricks - such as being able to rotate into tight spaces, etc.).
Right now, when a piece reached the 'floor' it gives you 12 ticks (60 ticks / sec) to move left/right before locking the piece.
It is a very simple system that literally just counts the ticks and then calls for the function to spawn the next piece.
If you 'hard drop'(space bar) it locks instantly.

Let me see if I can refine it a bit, maybe add a second timer, 12 is the default, but if there is movement / rotation in that 12 ticks, extend for 30 ticks (half second), or something like that.

*edit*
Actually, I could add something like, #define kMaxLockResets 5 (or whatever value) so in addition to the ticks count down, you can also only have so many 'adjustments' before it also locks. So you can't just wiggle forever. :)
Hmm.. ideas... lol

Thanks for the suggestions!
 
Little progress update on Generic Block Game.

Built a little 'themes' drop down selection system into the Apple Menu. So far it's running well! :)
With any luck (and time) there will be a dozen or so themes to choose from (of varying quality). 🥳


Screenshot 2026-08-03 at 5.48.33 PM 2.pngScreenshot 2026-08-05 at 5.05.17 PM.pngScreenshot 2026-08-05 at 9.04.42 PM.png

Showing above...
Secret of the slime
Another brick in the wall
Ice ice baby!

Ya, my humour is embedded into this one. 🤪
My favourite so far is 'Secret of the slime'.

I've also been playing with joevt's great suggestion regarding the 'floor lock' timing, so there's a menu option to adjust that unit it feels 'right'.

Stay tuned!
v2.0 beta release is almost ready to post. :alien:
 
Hi Everyone,

I'm happy to say that Generic Block Game 2.0 (cough.. Tetris clone.. cough) is finally ready (I think)... ! 😂\

splash2.jpg

A lot of bug fixes 🐛and new features have gone into this.
Originally written as my contribution to #MARCHintosh 2026, it's grown into something I never planned, and the response has been great from the community!
I've learned a LOT writing this and my other little apps, games and BBStro.

Particle effects
Screen shake
Amiga MOD music (5 songs to choose from!)
Sound FX
Custom themes...
oh my! 🙀

Some of the bigger new features (I won't cover them all and bore you) 🥱...

- Line(s) now flash before they clear.
- 'Tetris' 4 line clear is now called a 'Quadra'.
- Line drop speed increases with level increase to a MAX of level 16.
- Added a new music selection Apple menu.
- Start with a centred game window, regardless of screen resolution.
- Add bonus rewards text and explosion for achievements like getting a Quadra, etc..
- Added a TIMED GAME mode. Player selects predefined time amounts. Can be used with Level up or not.
- THEMES! Added an Apple theme drop down selection menu.
- Piece locking delay added with the menu ability to adjust the delay time (short / med / long).

A full 'new features / bug fixes' ReadMe.txt file is in the .SIT and on Demozoo.

fire.png slime.png timed ice.png

My favourite themes are Secret of the Slime & Ice ice baby!
Yes, my 80s humour is coming through.. sorry, you're stuck with me... 🤪

Themes.png

You can download the .SIT (as well as v1.5 and the full 1.5 CodeWarrior project, libraries and source) from my Demozoo account.
The 2.0 CodeWarrior project will be posted there ASAP, I just want to finish commenting the source first so it almost makes some sort of sense.

Let me know what you think!
Good, bad, suggestions, requests. All welcome!

Runs well on my LC475 and CC Mystic.
Was careful to make sure no FLOAT math, so 68LC040 should be happy. :giggle:
Also runs great in the Basilisk II emulator on my M1 MacBook Air.

Check out some of my other fun while over on Demozoo. :)

Thanks for checking it out!
Aaron/DW
Dark Systems BBS
 

Attachments

  • game modes.png
    game modes.png
    16.7 KB · Views: 2
  • reward slime.png
    reward slime.png
    24.6 KB · Views: 2
  • music.png
    music.png
    12.1 KB · Views: 1
  • options.png
    options.png
    12.1 KB · Views: 2
  • bevelle.png
    bevelle.png
    26.4 KB · Views: 4
NOTE: One thing I forgot to mention... The Systems 7.5.x extension APPLE GUIDE can sometimes cause the game to crash after the splash screen.
Simply turn off APPLE GUIDE in the extension manager, reboot.. voila!
This only seems to happen on real hardware, not in emulation.
Working on it... ⛑️
 
I finally had some time to finish putting together and releasing the fully commented C source code, CodeWarrior PRO 4 project, libraries, etc.. for Generic Block Game v2.0.
It's all up for free download on my Demozoo page.

GBG2 CW Prj.png

Any suggestions, issues, requests, etc.. please don't hesitate to shout! :)

Aaron/DW
Dark Systems BBS
 
Generic Block Game works ok in my fork of DingusPPC running 9.2.2 on an emulated Beige G3 (AppleTalk disabled) but I need to fix the audio emulation.
Audio is working much better now in my fork of DingusPPC. The background music is perfect. But It inexplicably stops working after several minutes. It's a minor bug I need to fix (maybe a race condition - since the DingusPPC audio is handled by a separate thread from the CPU emulation).

I tried GBG v2.0. I like the default bevelled theme. The highlight color for the bevel is not noticeable on the lighter colored blocks (green, cyan, yellow).

The icons in the final score screen flash a lot (I don't know if it's an emulation problem or not).
 
Back
Top