Repository navigation
Releases: productiondave/nabu-games
Release list
It's been a while
The "Its Been A While" release
HOTFIX
Address buggy sound in invaders
Release Notes
Following some recent heavy development on the Z80-Nouveau Project (https://youtube.com/playlist?list=PL3by7evD3F52rUbThUNDYGxNpKFF1HCNT&si=Iaq1VW9FBajBrhiN) I thought it was time to do another release.
In terms of gameplay, there are only a few minor tweaks.
Gameplay Fixes and Changes
- Invaders had a bug where the player ship could not move as far left on the screen as it could right.
- Invaders had a bug where the game over screen still showed sprites from the gameplay.
- Invaders has a better Pew-Pew sound now.
Technical changes
- All three games now run in Graphics Mode 1 on the TMS9918A. Until now, the games were using a trick with registers in Graphics Mode 2. This trick is not currently supported on the Z80-Nouveau so a port to Graphics Mode 1 was required. In many respects, this makes the code more portable for possible future platforms as well as supporting VDPs with less than 16 KB of RAM.
- Keyboard input is now done through the CP/M BDOS Call #6 (RAWIO) on the Retro and Nouveau platforms. On the NABU the function is a stub for existing NABU-LIB features. Turns out that the NABU is now the odd-one-out when it comes to reading keyboard input.
- Using my own NABU-LIB fork going forward. My version of NABU-LIB has now differed from the original version by DJ Sures, enough for me to dethatch from the GitHub fork network and forgo any upstream changes. I don't really use any of the Cloud CP/M features in that library so I don't think this is a problem for the Nabu-Games.
- The versions of the games for the Z80-Retro! and the Z80-Nouveau are now completely binary compatible.
- I have re-introduced the audio code back into the Z80Retro-Lib. These functions were always just void / stubs but as the Nouveau and Z80-Retro might soon get support for the AY-3-8910, I figured it's best to include the code and if there was anything listening on the hardware, it "should" just work. Fingers crossed.
The No High Score Release
I have been made aware that these games crash on both the retro and the nabu after exiting the game and starting it again. Or, in some cases, the game won't exit back to CPM at all.
I have figured out that the issue is related to saving and retrieving high score data from CPM storage.
Rather than trying to figure out what the issue is, I have decided to drop the feature for now. I might reintroduce it if I can reliably fix the issue.
Rebase off forked NABU-LIB
This release adds no new gameplay features. It's just a minor update to reflect a change to the underlying NABU-LIB.
I am now using my fork of NABU-LIB which has the needed changes to work with the latest version 2.3 of the z88dk compiler and it's underlying SDCC.
My fork of NABU-LIB: https://github.com/linuxplayground/NABU-LIB
Simply use this version of NABU-LIB and compile with latest version of Z88DK for a warning and error free compilation experience!
Invaders Release
The nabu-games family would like to welcome a new member. Invaders is now available for play on your Nabu in CP/M or Nabu Homebrew as well as on the Z80 Retro!
This release also updates all the Z80 Retro! versions to work with the new Rev 2.1 version of the VDP daughter board.
For all you Ishkur CP/M fans, I have tested the nabu-games on the current version of Iskur CP/M (https://github.com/tergav17/IshkurCPM/tree/main) and they seem to work fine. If you have any issues there let us know in Discord.
Minor performance improvement
This release adds some minor performance improvements by printing text to the framebuffer rather than directly to the VDP. This means the whole screen in Tetris is updated at the same time. This avoids occasional glitches caused by VDP race conditions.
BUGFIX: Saving high score on snake crashed the NABU
There was a bug in Snake where if the game attempted to save the high score after playing the crash sound the game would crash and the NABU would require a reset.
This is resolved in v3.3.
Please update your games.
ALSO: Please note: If you are playing in Cloud CP/M from A: User Area 3, then please move the games using RNCMD to C: so that your high scores will not be lost next time an update to Cloud CP/M is released. As documented on nabu.ca the only storage garunteed to not be overwritten is C: disk.
HOTFIX: Snake saving high scores bug
HOTFIX Patch - Snake was not saving high scores. Instead it was crashing altogether requiring a reset on the Nabu.
Snake Levels and High Scores
Snake and Tetris now track high scores in CP/M on both the Nabu and the Z80-Retro. High score data is saved in a .dat file in the same disk and user area as the game.
Native Nabu versions of the games will track high scores for the duration of a play session. I have not implemented a storage solution for these as there are different network adapters with different methods of holding storage data.
Snake now has levels. The game works like this:
- You level up every 10 apples.
- Your snake resets its length every time you level up.
- There are 5 levels in total. If you make it that far, the levels start at the beginning again.
- Your snake starts to speed up after every level from the end of Level 2 onwards.
- Because the snake length is reset with each level, the snake now grows by 4 segments each time you eat an apple.
The guidelines update
Release 3.0
General
Nabu Games has a new platform! Yes you heard it here first. Tetris and Snake are now playable on the Z80-Retro. See release artifacts for a ZIP or tar.gz file containing the CP/M Versions compiled for the Retro.
Generally, the games are a little more stable now. Much of what I learned in order to support the Z80-Retro, I was able to bring back to the Nabu.
Tetris
This release begins to bring Tetris more in line with the Tetris Guidelines Wiki (https://tetris.wiki/Tetris_Guideline). Things to note are:
- Narrower playfield. It's astonishing how much harder this small change makes the game.
- Correct starting orientation of Tetronimos
- Score accumulation is completely overhauled.
Snake
Snake remains the same as before and you will note that the version of Snake is not updated to 3.0 in this release. It seemed crazy to add a release number to snake when not much has changed. Gameplay and scoring remain the same as version 2.2.
Availability
Other than the binary files you can download from here, these games usually make their way into the following internet adapters and CPMs etc.
- nabu.ca - Internet Adapter "native" and CP/M
- nabunetwork.com - Internet Adapter "native" - Potentially CP/M - I really don't know. These things take on a life of their own it seems.
- possibly - nabu.run as a native option.
No More Glitches
This release introduces Framebuffer support to the games. Essentially, the game calculates everything in system memory and then paints the screen from there on refresh. This is to solve some timing issues I was having which was resulting in artifacts on the screen.
I have also included a short pause after game over on both Snake and Tetris so you can see the carnage before being taken back to the menu. It's only 3 seconds and I think it adds a smoother transition from game over to menu.
Have fun!
