Originally written by nurpax, their version (8.x) is here. Petmate9 is a cross platform PETSCII graphics editor written in React/Redux/Electron, maintained by Wolfgang-Aaron Bochar (wbochar).
I like this tool for its simplicity and ease of use. I asked Nurpax/Janne if I could work on another version of it, trying to add some community requests and bug fixes. I am not a professional electron coder, so before reading some of the brutality contained in my updated sources: be kind. I'll take requests, but I do have a day job :)
- npm install
- npm start
be forewarned; do not go down the npm upgrade rabbit hole. there are so many extinct npm packages that you'll never come out from that hell.
I know that some of them are not safe (or up-to-date), but really I don't care. I got trapped in the hole for a long time and decided not to pursue it without a priest and someone who's a better/experienced coder than myself.
I use VSCODE/Win11 as my dev env for this project.
Change Log/History: CHANGELOG.md
docker run --rm -ti -v C:\C64\Projects_Petmate\petmate9:/petmate9 -w /petmate9 electronuserland/buildernpm
PC: NSIS/.exe (via main dev PC) MacOs: intel and amd 64bit (via macos laptop) Linux: deb,apk,freebsd,pacman,p5p,rpm (via docker)
Notes: "electron-builder": "23.6.0", for MACOS "electron-builder": "22.10.5", for PC
- Group/frame zoom not zooming/aligning the last frame in the stack
- after using a menu shortcuts (alt f) alt is trapped on
- Adjust something to make touch pad pinch/zoom usable
- Middle mouse Button Pan Control
- What was I thinking
- Recent Files menu
- Update Menu subsystem
- PC Version
- Mac Version
- Linux Version
- Zoom Level display
- Dirart Clip Art
- Texture Generator
- Preview with dropdown
- features: Linear, random, radial, mono...
- Font Pack
- Note: Fonts stored in one large PETMATE file, saved to the application folder
- Note: Name of Frame is the font name and config "FontName:3x3:F/P:CharCount"
- Note: Line 1 of each font frame will list the letter and its width. Width of 0 means the letter is not in the font (or is its ID doesn't exist). Font ID's are the ROM ID of the c64 CHAR ROM. So, "ABC" defined would be 1:3,2:3,3:3,
- Colour Selector Component
- Buttons to sort by Colour ID (default Commodore colours)
- Sub Title with Colour Sort Name
- Colour Sort: by Light To Dark LUMA
- Colour Sort: by Dark to Light LUMA
- Gradient/Shader
- Toolbar Icon/Button
- what does the control/alt/shift modifiers do?
- the palette component (max steps, colours and gradients?)
- drop down for various versions
- local save file
- exports for local save file to allow portable settings
- Character Palette Updates
- Dropdown to select various palette types
- lvllvl style character palette layout
- Light to Dark character palette layout
- Custom Layout (and save/export/portable)
- Frame export to layout
- Copy and Paste 096
- All brush Copies will have String, Byte Array (SEQ), PNG and brush
- Inter Instance Copy/Paste
- Frames Paste Frame, Brushes Paste Brushes but can only be done via menus?
- Note Sure: Multiple Frame Copy?
- PRG Exporter 096
- Update Export Windows Options
- Anim player export
- Wide/Long Screen export
- Faux Terminal BBS export prg
- Export with Dirart frame (and position of prg file before after dirart)
- Export with SID file
- Guide Layer
- Import Image
- Image Placement (Position, Zoom, Lock)
- Image Transparency
- Convert Guide to PETSCII (live, no colours, 4x4)
- Toolbar Icon/Button
- Import Image
- Shadow Characters (Icon Suggestion)
- Same FG/BG character colours makes colour palette useless
- Toggle to show in image and a way to show in palette that is obvious.
- selections / brushes should colour cycle slightly to show they are highlighted and not drawing
- Fontawesome and Supporting have been updated to current versions (as of 3/7/2024)
- General UI: Move Component Palettes to top of UI and shift frame stack around it
Note: I migrated c1541.git (repo) internally. It seems that the commander and other aspects of the repo do not work well with macosx. I don't need an external c1541 console app so now x1541.ts will handle all D64 operations internally
- Colour Palette margin/padding issues on some linux versions. Test in debian works fine
- MacOSX does not like c1541 js, need to figure out. Ended up migrating c1541.git to x1541 internally.
- Update MACOS menu shortcuts to match PC/Linux
- Top-left/Center align all frames in stack buttons (below add button)
- Top-left/Center align all frames in Menu System
- bring back the zoom level status bar item
- gap between SCRN/COLR increased for larger numbers in wide/long format images (had to be huge)
- OCD margin/padding at end of frame stack
- Update MAC versions with new Menu system
- fix scaling and css border issues that was leaving artifacts at some zoom levels
- Make New Document button left locked to the UI
- Zoom Menu Items wired up
- Selection/Brush to new image in stack
- Docker Setup for multiple version of Linux (DEB, REP, )
- CTRL SHIFT +/- ZOOM Upper Left Aligned (CTRL ALT 0 sets scale 1)
- CTRL +/- ZOOM Center Aligned (CTRL ALT 0 sets scale 1)
- Invert Brush
- Clear Brush
- remove Frame (menu/key)
- duplicate frame (menu/key)
- Add all p8 applicable KB: commands to menus
- Issues link now points: Issues
- Border shortcut key
- grid added to menu
- 'View' menu now holds zoom features and Original 'View' menu is renamed 'Tools'
- BUG: Menu Accelerator CTRL ++ not showing up properly
- Create a new Help Link (old one points to nurpax site) Help
- Update menu system with new features (Crop, Fill, Paste text, etc)
- Adjust SEQ import to handle animation captures (SHIFT/CLRHOME=New Frame etc..)
- copy should support multiple object types in clipboard
- Paste to global clipboard as PNG/Bitmap or JSON
- Guide Layer: load/show a guide layer
- Guide Layer: move/zoom/pan layer
- Guide Layer: change/toggle layer transparency
- PNG imports a little more forgiving
- c1541 Script export
- Gradient, shader, texture generator (tak-o-vision)
- Make Dark/Light Mode actually work.. sigh.
- Setup Website
- record videos showing new tools and adjustments
- Instruction Manual
-
Menu "File"
- Menu KB: (ALT F)
- Action: New PETMATE document
- Menu KB: (ALT F, N)
-
Action: New PETSCII image (40x25)
- KB: (CTRL) T
- Menu KB: (ALT F, C)
-
Action: New Dirart Image (16x32)
- KB: (CTRL) D
- Menu KB: (ALT F, D)
-
Action: Open PETMATE File
- KB: (CTRL) O
- Menu KB: (ALT F, O)
-
Action: Save PETMATE FILE
- KB: (CTRL) S
- Menu KB: (ALT F, S)
-
Action: Save PETMATE file as
- KB: (CTRL+SHIFT) S
- Menu KB: (ALT F, A)
-
Action: Fonts
- Menu KB: (ALT F, F)
-
Action: Import D64
- Menu KB: (ALT F, I, D)
-
Action: Import PETSCII (.c)
- Menu KB: (ALT F, I, C)
-
Action: Import PNG
- Menu KB: (ALT F, I, P)
-
Action: Import SEQ
- Menu KB: (ALT F, I, S)
-
Action: Export Assembler Source (.asm)
- Menu KB: (ALT F, E, A)
-
Action: Export BASIC (.bas)
- Menu KB: (ALT F, E, B)
-
Action: Export D64
- Menu KB: (ALT F, E, D)
-
Action: Export Executable (.prg)
- Menu KB: (ALT F, E, E)
-
Action: Export GIF
- Menu KB: (ALT F, E, G)
-
Action: Export JSON
- Menu KB: (ALT F, E, J)
-
Action: Export PETSCII (.c)
- Menu KB: (ALT F, E, C)
-
Action: Export PNG
- Menu KB: (ALT F, E, P)
-
Action: Export SEQ
- Menu KB: (ALT F, E, S)
-
Action: Export PET (.pet)
- Menu KB: (ALT F, E, T)
-
Menu "Edit"
- Menu KB: (ALT E)
-
Action: Undo
- KB: (CTRL) Z
- Menu KB: (ALT E, U)
-
Action: Redo
- KB: (CTRL) Y
- Menu KB: (ALT E, R)
-
Action: Paste Text
- KB: (CTRL) V
- Menu KB: (ALT E, T)
-
Action: Preferences
- KB: (CTRL) P
- Menu KB: (ALT E, P)
-
Menu "Selection"
- Menu KB: (ALT S)
-
Action: Select All
- KB: (CTRL) A
- Menu KB: (ALT S, A)
-
Action: Paste to New Image
- KB: (CTRL) N
- Menu KB: (ALT S, N)
-
Action: Clear Selection
- KB: (CTRL+HOME)
- Menu KB: (ALT S, C)
-
Action: Rotate Left
- KB: (CTRL) [
- Menu KB: (ALT S, L)
-
Action: Rotate Right
- KB: (CTRL) ]
- Menu KB: (ALT S, R)
-
Action: Flip Horizontally
- KB: H
- Menu KB: (ALT S, H)
-
Action: Flip Vertically
- KB: V
- Menu KB: (ALT S, V)
-
Action: Invert Characters
- KB: (CTRL) I
- Menu KB: (ALT S, I)
-
Menu "Frames"
- Menu KB: (ALT R)
-
Action: Align All Frames Top-Left 2x Zoom
- KB: (CTRL+ALT+SHIFT) 9
- Menu KB: (ALT R, T)
-
Action: Align All Frames Centered 2x Zoom
- KB: (CTRL+ALT) 9
- Menu KB: (ALT R, C)
-
Action: Move Frame Left in Stack
- KB: (CTRL) Left Arrow
- Menu KB: (ALT R, L)
-
Action: Move Frame Right in Stack
- KB: (CTRL) Right Arrow
- Menu KB: (ALT R, R)
- Action: Duplicate Frame
- KB: Insert key
- Menu KB: (ALT R, D)
-
Action: Remove Frame
- KB: Delete key
- Menu KB: (ALT R, I)
-
Menu "View"
- Menu KB: (ALT V)
-
Action: Zoom In (centered)
- KB: (CTRL) =
-
Action: Zoom Out (centered)
- KB: (CTRL) -
-
Action: Zoom In (left-top)
- KB: (CTRL+SHIFT) +
-
Action: Zoom In (left-top)
- KB: (CTRL+SHIFT) -
-
Action: Zoom x2 (centered)
- KB: (CTRL) 9
-
Action: Zoom x2 (left-top)
- KB: (CTRL+SHIFT) 9
-
Menu "Tools"
- Menu KB: (ALT T)
-
Action: Reload
- KB: (CTRL) R
- Menu KB: (ALT T, R)
-
Action: Toggle Light/Dark Mode
- KB: (CTRL) M
- Menu KB: (ALT T, L)
-
Action: Toggle Full Screen
- KB: F11
- Menu KB: (ALT T, F)
-
Action: Toggle Developer Tools
- KB: (CTRL+ALT) I
- Menu KB: (ALT T, D)
-
Menu "Help"
- Menu KB: (ALT H)
-
Action: Online Documentation
- KB: F11
- Menu KB: (ALT H, D)
-
Action: Search Issues Online
- KB: (CTRL) F1
- Menu KB: (ALT H, S)
-
Action: About
- Menu KB: (ALT H, A)