Feat/gameplay update#1
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR delivers a gameplay/content update by adding new enemy/power-up assets and expanding src/main.c with a title screen, difficulty ramping, a BG2 scrolling starfield backdrop, and new enemy/bomb mechanics. It also modernizes the project’s asset-tooling by moving helper scripts to Python and updating the build/docs for a Linux/WSL + GNU Make workflow.
Changes:
- Add a tougher “tank” enemy (TAC-2 joystick) with multi-hit health, different scoring, and distinct graphics/palette.
- Add a bomb pickup + bomb inventory (HUD), plus gameplay logic to spend bombs to clear the screen.
- Add a title screen and a BG2 scrolling starfield to improve pacing/presentation.
Reviewed changes
Copilot reviewed 19 out of 21 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
tools/snesbmp.py |
New shared Python BMP canvas + indexed BMP read/write helpers for art generators. |
tools/make_tac2_bmp.py |
New Python generator for the TAC-2 tough enemy sprite source BMP. |
tools/make_powerup_bmp.py |
New Python generator for the bomb power-up sprite source BMP. |
tools/make_player_bmp.py |
New Python replacement for player sprite downscaling workflow. |
tools/make_player_bmp.ps1 |
Removed PowerShell player BMP helper. |
tools/make_gunshot.js |
Removed Node-based gunshot WAV synthesizer. |
tools/make_enemy_bmp.py |
New Python replacement for enemy BMP generator (includes downscaling). |
tools/make_enemy_bmp.ps1 |
Removed PowerShell enemy BMP helper. |
tools/make_bullet_bmp.py |
New Python replacement for bullet BMP generator. |
tools/make_bullet_bmp.ps1 |
Removed PowerShell bullet BMP helper. |
tac2.bmp |
Adds the TAC-2 enemy source BMP (Git LFS pointer). |
powerup.bmp |
Adds the bomb power-up source BMP (Git LFS pointer). |
src/main.c |
Implements new enemy type, bomb pickup/inventory, title screen, starfield BG2, and difficulty ramp/pacing changes. |
res/gunshot.wav |
Updates the gunshot WAV asset (Git LFS pointer update). |
README.md |
Updates docs for Linux/WSL + GNU Make and Python tooling; documents new TAC-2 asset. |
Makefile |
Adds artifacts target, adds conversion rules for new assets, and aligns build for Linux/WSL usage. |
data.asm |
Links in powerup and tac2 generated graphics/palettes into ROM. |
build.sh |
Removes the Windows-specific build wrapper. |
.gitignore |
Ignores Python bytecode caches generated by helper scripts. |
.claude/skills/snes-developer/SKILL.md |
Updates contributor guidance (notably: prefer Python over Node for tooling). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+76
to
82
| #define MAX_ENEMIES 12 // hard cap: sizes the enemy arrays + reserved OAM slots | ||
| #define START_ENEMIES 3 // active enemies on screen at score 0 | ||
| #define ENEMIES_PER_LEVEL 1000 // +1 active enemy per this many points; slow ramp to MAX_ENEMIES | ||
| // (SCORE_PER_KILL is 100, so ~10 kills per extra enemy) | ||
| #define NUM_BULLETS 4 | ||
| #define NUM_STARS 24 // falling background starfield | ||
| #define BULLET_SPEED 4 |
Comment on lines
+276
to
285
| // Drop a bomb power-up at (sx, sy) -- where a console was just destroyed -- | ||
| // unless one is already falling. Clamp into the playfield so it stays visible. | ||
| void spawnPowerup(short sx, short sy) | ||
| { | ||
| if (powerupActive) return; | ||
| if (sy < PLAYFIELD_TOP) sy = PLAYFIELD_TOP; | ||
| powerupX = sx; | ||
| powerupY = sy; | ||
| powerupActive = 1; | ||
| } |
Comment on lines
+92
to
+98
| # Palette: stored BGRA, 256 entries. | ||
| for i, (r, g, bl) in enumerate(palette): | ||
| o = _HEADER_SIZE + i * 4 | ||
| b[o] = bl | ||
| b[o + 1] = g | ||
| b[o + 2] = r | ||
|
|
Comment on lines
62
to
66
| - `pvsneslibfont.png` -> `pvsneslibfont.pic`, `pvsneslibfont.pal` | ||
| - `sprites.bmp` -> `sprites.pic`, `sprites.pal` | ||
| - `enemy.bmp` -> `enemy.pic`, `enemy.pal` | ||
| - `tac2.bmp` -> `tac2.pic`, `tac2.pal` | ||
| - `bullet.bmp` -> `bullet.pic`, `bullet.pal` |
Comment on lines
102
to
106
| - `sprites.bmp`: player sprite sheet | ||
| - `enemy.bmp`: enemy sprite sheet | ||
| - `enemy.bmp`: enemy sprite sheet (Genesis console; one hit to destroy) | ||
| - `tac2.bmp`: tough enemy sprite (TAC-2 joystick; takes three hits to destroy) | ||
| - `bullet.bmp`: bullet sprite | ||
| - `pvsneslibfont.png`: font image |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes