-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a0e5a62
commit 2e1a792
Showing
10 changed files
with
828 additions
and
131 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,7 @@ Ever wondered how your *pron* stash would have looked on floppy disk? | |
|
||
Try it out with HypraFap! | ||
|
||
With HypraFap you can store and view 16 beautiful color images per disk side on your Commodore 64! | ||
With HypraFap you can store and view about 16 beautiful color images per disk side on your Commodore 64! | ||
|
||
![](img/3.png) | ||
|
||
|
@@ -76,6 +76,11 @@ You can directly select an image by pressing its number/letter. Press `5` to jum | |
|
||
Press `0` or `i` (as in index) to jump back to the index image. | ||
|
||
Now press `F3` to switch to the second screen and load image number 3 by pressing `3`. | ||
|
||
![](img/10.jpg) | ||
|
||
You then can switch back to screen 1 (with the index) by pressing `F1`. Jump back and forth between both screens. Everytime you press an image number or space, hyprafap loads the image to the currently selected screen. | ||
|
||
While loading the next screen the old image is visible and you can see how it is overwritten with new image data. | ||
This is intentional (you know HypraFap is doing something). | ||
|
@@ -88,23 +93,26 @@ See here how the next image is faintly visible on the top half (a face in the mi | |
|
||
![](img/1.jpg) | ||
|
||
If you load a compressed Koala image (`.gg`), you cannot see how it is loaded because the data is loaded off screen to a buffer for decompressing. | ||
|
||
## Swap Disk | ||
|
||
If you have multiple disks with images, you can swap a disk out anytime while no drive access happens. | ||
|
||
Press `R` to reload the directory of the new disk and access the images on it. | ||
|
||
Also, when you start HypraFap as a standalone `.prg` in VICE and thus no image is loaded at startup, use `R` to switch to and load an image disk. | ||
|
||
# Keyboard Commands | ||
|
||
| key | command | | ||
|---|---| | ||
| `0`-`9`, `A`-`F`| Load image 0..15| | ||
| `I` | Load first image / number 0 (index / gallery)| | ||
| `0`-`9`, `A`-`H`| Load image 0..17 to current screen| | ||
| `I` | Load first image / number 0 (index / gallery) to current screen| | ||
| `Space` | next image | | ||
| `R` | Reload directory after disk swap. Loads first image on new disk| | ||
|
||
|
||
![](img/10.jpg) | ||
| `R` | Reload directory after disk swap. Loads first image on new disk to current screen| | ||
| f1 | Switch to screen 1| | ||
| f3 | Switch to screen 2| | ||
|
||
# Making your own HypraFap disks | ||
|
||
|
@@ -118,6 +126,8 @@ HypraFap uses standard uncompressed Koala Painter images produced by a lot of pr | |
|
||
to convert `.jpg` / `.png` files to `.koa` files. | ||
|
||
You can also use RLE-compressed Koala Painter images (`.gg`), which you can convert from `.koa` files with different programs like [Pixcen](https://csdb.dk/release/?id=149752). This will typically make room for 1 more image per disk side. | ||
|
||
### Image aspect ratio | ||
|
||
Note that the pixels are not perfectly square on a C64. | ||
|
@@ -145,13 +155,13 @@ See how the Demo Disk looks like: | |
|
||
![](img/directory.png) | ||
|
||
Images *need* to have the name ending in `.koa` for HypraFap to recognize them! | ||
Images *need* to have the name ending in `.koa` (uncompressed) or `.gg` (compressed) for HypraFap to recognize them! | ||
|
||
Add up to 16 Koala images per disk! | ||
Add up to 16 Koala images per disk uncompressed or 17-18 compressed! | ||
|
||
## Index image template | ||
|
||
Index pages are just koala pictures like all the other pictures on the disks. An index images has to be the first image in the directory with the ending `.koa`. | ||
Index pages are just koala pictures like all the other pictures on the disks. An index images has to be the first image in the directory with the ending `.koa` or `.gg`. | ||
|
||
You can use this template for your index image: | ||
|
||
|
@@ -182,6 +192,46 @@ If you have the linux bin in the same directory (src) as the `.asm` files run: | |
|
||
to compile HypraFap. | ||
|
||
# Technical specification of the Compressed Koala Painter Format (.gg) | ||
|
||
> :eggplant: :sweat_drops: *Note: This is retrived through reverse engineering* | ||
Koala Painter files with extension .gg are RLE compressed as follows: | ||
|
||
Starting at byte number 3 to skip the first two load address bytes ($00 $60), if 3 or more bytes are identical, these are replaced by | ||
|
||
`$FE [identical byte] [number of repetitions]` | ||
|
||
`[number of repetitions]` can be between $00 and $FF ($00 represents 256 repetitions) | ||
|
||
If $FE is found in the source bytes it is compressed, even when it only occures one time (one occurents of $FE results in bytes: `$FE $FE $01`). This can in rare occurences make the file larger than uncompressed. | ||
|
||
The load address' second byte $60 is not compressed even when several $60 bytes follow. Only the bytes starting at 3rd position are compressed -- thus only the image information is compressed! This makes sense as otherwise a load of a .gg file would fail in rare cases. | ||
|
||
(That $00 represents 256 repetitions is not mentioned in other documentations!) | ||
|
||
# Memory map of HypraFap | ||
|
||
| address | for Screen| Description| | ||
|----|----|---| | ||
|$0400|Screen 1|Screen RAM| | ||
|$0801| |HypraFap program code| | ||
|$2000|Screen 1|Bitmap| | ||
|$3f40|Screen 1|Screen Data| | ||
|$4328|Screen 1|Color Data| | ||
|$4710|Screen 1|Color 0| | ||
|$5c00|Screen 2|Screen RAM| | ||
|$6000|Screen 2|Bitmap| | ||
|$7f40|Screen 2|Screen Data| | ||
|$8328|Screen 2|Color Data| | ||
|$8710|Screen 2|Color 0| | ||
|$9000|Buffer 1|RLE Load Buffer| | ||
|$c320| |Number of images, other variables| | ||
|$c581| |Directory entries| | ||
|$d800| |Color RAM| | ||
|
||
See `headers.asm` for all labels in use. | ||
|
||
# Know bugs & limitations | ||
|
||
- "Loading" message is written to screen ram, color changes in the old image partially when load is started. Since the old image is overwritten, that is not that of a problem. | ||
|
@@ -194,13 +244,35 @@ to compile HypraFap. | |
|---------|---| | ||
|It is slow!| Yes, the data transfer between disk drive and computer is 400 bytes (!) per second. A 10kB Koala image takes about 25 seconds to load. You can speed this up with a fastloader, see above.| | ||
|
||
# 📢 Community Support | ||
|
||
The [GitHub discussion boards](https://github.com/pronopython/hyprafap/discussions) are open for sharing ideas and plans for HypraFap. | ||
|
||
You can report errors through a [GitHub issue](https://github.com/pronopython/hyprafap/issues/new). | ||
|
||
Don't want to use GitHub? You can also contact me via email: [email protected] If you want to contact me anonymously, create yourself a burner email account. | ||
|
||
# Release Notes | ||
|
||
## v0.2.0-alpha | ||
|
||
### added | ||
|
||
- 2 Screens available: Swicht between them with f1/f3 | ||
- .gg file support with RLE decompression | ||
|
||
### changed | ||
|
||
- Pictures are now numbered 0-9,A-H (18 total) to accomodate 1 or 2 more pictures through RLE compression | ||
|
||
### fixed | ||
|
||
- Crash when no image is present on startup | ||
|
||
## v0.1.0-alpha | ||
|
||
- Initial Release | ||
|
||
# Why? | ||
|
||
For me this is just a weekend fun project to learn a bit 6502 assembly language on an 8 bit computer :-) | ||
For me this is just a weekend fun project to learn a bit 6502 assembly language on an 8 bit computer :-) |
Binary file not shown.
Binary file not shown.
This file contains 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
Oops, something went wrong.