From 49232e5887bd726f0709ebcc66cefc197fa9777d Mon Sep 17 00:00:00 2001 From: hkz Date: Tue, 7 Oct 2025 09:09:38 +0200 Subject: [PATCH] Update README and screenshot --- README.md | 137 +++++++++++++++++++++++++------------------------ pics/title.png | Bin 4706 -> 3208 bytes 2 files changed, 69 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 1ad1aa2..87359f6 100644 --- a/README.md +++ b/README.md @@ -1,69 +1,70 @@ -# TK2048 - -## DISCLAIMER - -Any use of this project is **under your own responsibility**. -By using this project You will agree that I cannot be held responsible if it will destroy any of your devices, damage your computer, burn down your house or whatever. - -## Introduction - -![TK2048 V2.0 title screen](pics/title.png) - -This game is an excuse and a testbed for the development on the Microdigital TK2000 clone [I recently built for myself](https://github.com/hkzlab/TK2000_Build_Notes). - -My primary objective with this game is building something where I can add support for all my expansion boards (well, at least where it makes a sliver of sense) so I can test and PoC them, beside, -I want to experiment with the [Calypsi toolchain](https://www.calypsi.cc/). - -I decided for a port of 2048, the now-classic tile sliding game, as it provided several advantages as a first time/playground project: - -- Doesn't need complex graphics hardware or advanced artist skills -- It can be drawn in B/W with static graphics, but animations and colors can be added in the future -- Sound is not needed either, but can be added for simple events like a tile slide or a button press -- The game logic is pretty simple -- Not CPU or memory intensive -- Can be expanded with support for additional hardware (sound cards, video cards, timers) if so desired, but it's not necessary -- Floppy drive can be potentially used not only to load the game, but also for saving the high score - -![TK2048 V1.0 main game shown on a green phosphor CRT](pics/screenshot.jpg) - -### Support - -If you wish to support me in building new hardware and software for old machines, [throw a few euros in my direction via Ko-Fi](https://ko-fi.com/hkzlab) ☕! - -### Current state - -The game is playable, and the following features have been implemented: - -- B/W mode -- Single graphical tileset -- Crude sound -- Control via keyboard -- 5x5 grid, with randomized start and new tiles -- Game save/load -- Highscore saving - -## How to play - -- You can move the tiles using the cursor keys -- `CTRL-R` during the game will clear your score and restart -- `CTRL-S` during the game will save the game on floppy and let you continue -- `CTRL-L` during the game will load the previous save from floppy and let you continue from there - -The game ends once you reach a tile with a value of 2048. - -### Floppy version - -Just put your floppy in the first drive and power on the TK2000. It will autoboot. - -## How to build - -You need the following: - -- GNU Make (I used the one provides by [MSYS2](https://www.msys2.org/)) -- [Calypsi 6502 toolchain](https://www.calypsi.cc/) (tested with 5.10) -- [AppleCommander](https://github.com/AppleCommander/AppleCommander), "ac" command line version (tested with 1.9.0) -- [dsk2woz](https://github.com/TomHarte/dsk2woz) - -## The future - +# TK2048 + +## DISCLAIMER + +Any use of this project is **under your own responsibility**. +By using this project You will agree that I cannot be held responsible if it will destroy any of your devices, damage your computer, burn down your house or whatever. + +## Introduction + +![TK2048 V2.0 title screen](pics/title.png) + +This game is an excuse and a testbed for the development on the Microdigital TK2000 clone [I recently built for myself](https://github.com/hkzlab/TK2000_Build_Notes). + +My primary objective with this game is building something where I can add support for all my expansion boards (well, at least where it makes a sliver of sense) so I can test and PoC them, beside, +I want to experiment with the [Calypsi toolchain](https://www.calypsi.cc/). + +I decided for a port of 2048, the now-classic tile sliding game, as it provided several advantages as a first time/playground project: + +- Doesn't need complex graphics hardware or advanced artist skills +- It can be drawn in B/W with static graphics, but animations and colors can be added in the future +- Sound is not needed either, but can be added for simple events like a tile slide or a button press +- The game logic is pretty simple +- Not CPU or memory intensive +- Can be expanded with support for additional hardware (sound cards, video cards, timers) if so desired, but it's not necessary +- Floppy drive can be potentially used not only to load the game, but also for saving the high score + +![TK2048 V1.0 main game shown on a green phosphor CRT](pics/screenshot.jpg) + +### Support + +If you wish to support me in building new hardware and software for old machines, [throw a few euros in my direction via Ko-Fi](https://ko-fi.com/hkzlab) ☕! + +### Current state + +The game is playable, and the following features have been implemented: + +- B/W mode +- Single graphical tileset +- Simple sound effects +- Control via keyboard +- 5x5 grid, with randomized start and new tiles +- Game save/load +- Highscore saving +- Demo mode + +## How to play + +- You can move the tiles using the cursor keys +- `CTRL-R` during the game will clear your score and restart +- `CTRL-S` during the game will save the game on floppy and let you continue +- `CTRL-L` during the game will load the previous save from floppy and let you continue from there + +The game ends once you reach a tile with a value of 2048. + +### Floppy version + +Just put your floppy in the first drive and power on the TK2000. It will autoboot. + +## How to build + +You need the following: + +- GNU Make (I used the one provides by [MSYS2](https://www.msys2.org/)) +- [Calypsi 6502 toolchain](https://www.calypsi.cc/) (tested with 5.10) +- [AppleCommander](https://github.com/AppleCommander/AppleCommander), "ac" command line version (tested with 1.9.0) +- [dsk2woz](https://github.com/TomHarte/dsk2woz) + +## The future + I plan to add (optional) support for several expansion boards I'm working on, starting with a VDP board sporting a TMS9918A graphic processor. \ No newline at end of file diff --git a/pics/title.png b/pics/title.png index 1156bd5f766ab67217fc67a5eed6d22033a7e2a5..8c2b99a0b13d19fd8fc4a4e279fc187fe149740d 100644 GIT binary patch literal 3208 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 literal 4706 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 F{vYr{?85*6