Skip to content

pineapple-pager-projects/pineapple_pager_hakanoid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hakanoid for WiFi Pineapple Pager

Classic brick breaker arcade game for the WiFi Pineapple Pager.

Created by brAinphreAk | www.brainphreak.net

Screenshots

Main Menu Custom Level Set Gameplay Pause Menu
Menu Level Set Gameplay Pause

Gameplay

Break all the bricks by bouncing the ball off your paddle! Don't let the ball fall off the bottom of the screen.

Controls

Button Action
LEFT Move paddle left
RIGHT Move paddle right
GREEN Launch ball / Fire laser
RED Pause menu
UP/DOWN Menu navigation

Difficulty Levels

  • NOOB - Slower ball speed for beginners
  • PRO - Standard speed
  • L33T - Fast ball for experts

Scoring

  • Normal bricks: 10 points
  • Silver bricks (2 hits): 20 points
  • Gold bricks (3 hits): 30 points
  • Metal bricks are indestructible

Power-Ups

Power-ups are hidden inside special bricks. When destroyed, they drop down - catch them with your paddle!

Power-Up Effect
L - Laser Shoot bricks with GREEN button (10 sec)
C - Catch Ball sticks to paddle (one use)
E - Expand Paddle gets wider
T - Tiny Paddle shrinks (bad!)
S - Slow Ball slows down (8 sec)
F - Fast Ball speeds up (bad!)
+ - Extra Life Gain an extra life (max 5)
R - Random Any of the above

Level Sets

Hakanoid supports multiple level sets! Switch between them on the main menu.

  • DEFAULT - Classic rainbow levels
  • HAK5 - Hak5 themed levels

Creating Custom Level Sets

  1. Create a new folder in /root/payloads/user/games/hakanoid/levels/
  2. Add level files named level1.txt, level2.txt, etc.
  3. Your level set will appear in the menu!

See levels/readme.txt for the complete level editor guide.

Level Format

Levels are 14 columns x 8 rows. Bricks are space-separated:

# Level 1 - Hak5 Text
#
w w w w w w w w w w w w w w
w S w S w G w S w S G G G w
w S w S G w G S w S G w w w
w S S S G G G S S w G G w w
w S w S G w G S w SEw w G w
w S w S G w G S w S G G w w
w w wCw w w w wLw w w w wCw
0 0 0 0 0 0 0 0 0 0 0 0 0 0

Brick Colors:

  • r=red, o=orange, y=yellow, g=green, t=teal, b=blue, p=purple, m=magenta
  • w=white, c=chartreuse, n=brown, k=pink, l=lime, a=aqua, v=violet, i=indigo, s=sky
  • x=invisible (surprise blocks!)

Special Bricks: S=silver (2 hits), G=gold (3 hits), I=indestructible (metal)

Power-ups: Add after brick color (e.g., rL=red with laser, gE=green with expand):

  • L=Laser, C=Catch, E=Expand, S=Slow, +=Extra Life
  • T=Tiny (bad!), F=Fast (bad!), R=Random

Installation

Quick Install (Pre-built Binary)

  1. Connect to your Pager via SSH:

    ssh root@172.16.52.1
  2. Create the game directory:

    mkdir -p /root/payloads/user/games/hakanoid/levels
  3. Copy the files from payloads/user/games/hakanoid/ to your Pager:

    scp -r payloads/user/games/hakanoid/* root@172.16.52.1:/root/payloads/user/games/hakanoid/
  4. Make the files executable:

    ssh root@172.16.52.1 "chmod +x /root/payloads/user/games/hakanoid/hakanoid /root/payloads/user/games/hakanoid/payload.sh"
  5. The game will now appear in your Pager's Games menu!

Build from Source

Build Server

All Pager games are built on a Linux build server with the OpenWrt MIPS toolchain installed. The workflow is:

  1. Develop locally - Edit source files on your local machine
  2. Sync to build server - Copy source to the build server (e.g., root@brainphreak)
  3. Build on server - Cross-compile using the MIPS toolchain
  4. Download binary - Copy the compiled binary back to your local machine
  5. Deploy to Pager - Push the binary to the connected Pager

Prerequisites

On the build server:

  • MIPS cross-compiler: mipsel-openwrt-linux-musl-gcc
  • Standard build tools (make)

You can obtain the cross-compiler from the OpenWrt SDK for the ramips/mt76x8 target.

Build Workflow Example

IMPORTANT: Always use CROSS_COMPILE when building on the server! Without it, you'll get an x86_64 binary that crashes on the MIPS Pager.

# 1. Sync source to build server
rsync -av --exclude='*.o' --exclude='build/' . root@brainphreak:~/pineapple_pager_hakanoid/

# 2. Build on server - MUST use CROSS_COMPILE for MIPS!
#    The toolchain PATH must be set first!
ssh root@brainphreak "export PATH=/root/openwrt-sdk-24.10.0-ramips-mt76x8_gcc-13.3.0_musl.Linux-x86_64/staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/bin:\$PATH && cd ~/pineapple_pager_hakanoid && make clean && make CROSS_COMPILE=mipsel-openwrt-linux-musl- hakanoid"

# 3. Download compiled binary
scp root@brainphreak:~/pineapple_pager_hakanoid/payloads/user/games/hakanoid/hakanoid payloads/user/games/hakanoid/

# 4. Deploy to Pager (may need to kill running game first)
ssh root@172.16.52.1 "killall hakanoid 2>/dev/null; rm -f /root/payloads/user/games/hakanoid/hakanoid"
scp payloads/user/games/hakanoid/hakanoid root@172.16.52.1:/root/payloads/user/games/hakanoid/
ssh root@172.16.52.1 "chmod +x /root/payloads/user/games/hakanoid/hakanoid"

Toolchain location on build server:

  • SDK: /root/openwrt-sdk-24.10.0-ramips-mt76x8_gcc-13.3.0_musl.Linux-x86_64/
  • Compiler: staging_dir/toolchain-mipsel_24kc_gcc-13.3.0_musl/bin/mipsel-openwrt-linux-musl-gcc

Verify correct build: The MIPS binary should be ~575KB. If it's ~41KB, you built for x86_64 by mistake!

Compile (on build server)

# Cross-compile for Pager - REQUIRED for the binary to run on Pager!
make CROSS_COMPILE=mipsel-openwrt-linux-musl- hakanoid

# WARNING: Running just "make hakanoid" builds for x86_64 which will NOT work on the Pager!

Deploy to Pager

# Deploy via SSH (Pager connected via USB)
make deploy

# Or specify a different IP
make deploy PAGER_IP=192.168.1.100

Project Structure

pineapple_pager_hakanoid/
├── src/
│   ├── lib/
│   │   ├── pager_gfx.h       # Graphics library header
│   │   └── pager_gfx.c       # Graphics library implementation
│   └── arkanoid/
│       └── arkanoid.c        # Main game source
├── payloads/user/games/hakanoid/
│   ├── payload.sh            # Pager payload entry point
│   ├── hakanoid              # Compiled binary (after build)
│   └── levels/
│       ├── readme.txt        # Level editor documentation
│       ├── DEFAULT/          # Default level set
│       │   └── level1-5.txt
│       └── HAK5/             # Hak5 themed levels
│           └── level1-5.txt
├── screenshots/              # Game screenshots
├── Makefile                  # Build configuration
├── .gitignore
└── README.md

Features

  • 14x8 brick grid with colorful patterns
  • Multiple brick types:
    • Normal (1 hit) - 18 different colors
    • Silver (2 hits)
    • Gold (3 hits)
    • Metal (indestructible)
    • Invisible (surprise blocks!)
  • Power-up system with 8 different power-ups
  • Level set support - switch between level packs
  • Custom level editor - create your own levels!
  • 3 difficulty levels - NOOB, PRO, L33T
  • Ball physics - angle varies based on paddle hit position
  • High score persistence (saved to /root/loot/hakanoid_highscore)
  • Sound effects via RTTTL buzzer
  • LED effects for game events
  • Smooth gameplay with fixed-point ball physics

Hardware

  • Display: 222x480 (used in landscape: 480x222)
  • Input: D-pad + A/B buttons
  • Audio: Buzzer with RTTTL support
  • LEDs: RGB D-pad LEDs + A/B button LEDs

License

MIT License


Created by brAinphreAk

About

Arkanoid type brick breaker clone for Hak5 Pineapple Pager with power ups and custom level editor

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors