Skip to content

Commit 3e91179

Browse files
committed
Add new Fujisan logo icon for all platforms
- Replace fujisanlogo.png with new FujisanLogoIcon.png design - Generate new macOS .icns file with all required sizes - Create Windows .ico file with multiple resolutions - Update CMakeLists.txt to include Windows icon in build - Update Linux build to use new icon for .desktop file - Update README.md with motivation and developer features - Add create-ico.sh script for Windows icon generation
1 parent 3ac43e4 commit 3e91179

File tree

9 files changed

+126
-11
lines changed

9 files changed

+126
-11
lines changed

.github/workflows/build-linux.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,14 @@ jobs:
137137
StartupNotify=true
138138
EOF
139139
140-
# Create icon (placeholder - you might want to add a proper icon)
141-
if [ -f "../images/fujisanlogo.png" ]; then
142-
cp ../images/fujisanlogo.png fujisan-linux/usr/share/pixmaps/fujisan.png
140+
# Use the new Fujisan logo icon
141+
if [ -f "../images/FujisanLogoIcon.png" ]; then
142+
cp ../images/FujisanLogoIcon.png fujisan-linux/usr/share/pixmaps/fujisan.png
143+
else
144+
# Fallback to old logo if available
145+
if [ -f "../images/fujisanlogo.png" ]; then
146+
cp ../images/fujisanlogo.png fujisan-linux/usr/share/pixmaps/fujisan.png
147+
fi
143148
fi
144149
145150
# Copy documentation

CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,20 @@ target_link_libraries(${PROJECT_NAME}
228228
-lm
229229
)
230230

231-
# Platform-specific linking
231+
# Platform-specific linking and resources
232232
if(APPLE)
233233
target_link_libraries(${PROJECT_NAME}
234234
"-framework Cocoa"
235235
"-framework UniformTypeIdentifiers"
236236
)
237+
elseif(WIN32)
238+
# Add Windows application icon
239+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Fujisan.ico")
240+
# Create Windows resource file for icon
241+
set(WINDOWS_RC_FILE "${CMAKE_CURRENT_BINARY_DIR}/fujisan_icon.rc")
242+
file(WRITE ${WINDOWS_RC_FILE} "IDI_ICON1 ICON \"${CMAKE_CURRENT_SOURCE_DIR}/Fujisan.ico\"\n")
243+
target_sources(${PROJECT_NAME} PRIVATE ${WINDOWS_RC_FILE})
244+
endif()
237245
endif()
238246

239247
# Enable Qt's MOC (Meta-Object Compiler)

Fujisan.icns

-282 KB
Binary file not shown.

Fujisan.ico

176 KB
Binary file not shown.

README.md

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@
22

33
![Fujisan Logo](images/fujisanlogo.png)
44

5-
A modern Qt5 frontend for the Atari800 emulator, providing a native desktop experience with full keyboard support, machine configuration, and authentic Atari behavior.
5+
A modern frontend for the Atari800 emulator, providing a native desktop experience with full keyboard support, machine configuration, and authentic Atari behavior.
66

7-
**Do we need another emulator?**
7+
**Motivation**
88

9-
Not really, and Fujisan is a UI built on top of Atari800, so it is not really a new emulator, but a new way to use Atari800. Users have plenty of good options with Altirra, Atari800 (vanilla), Atari800MacX and Mame. Fujisan is an exercise and hobby for me, to build an emulator tailored to my personal use, with fewer customization available but ready to go for 90% of the use cases. Hopefully it will attract more people like me.
9+
"Do we really need a new emulator?" some of you might be asking. And a simple answer is, "no, not really". But, to be precise, Fujisan is a UI built on top of Atari800, so it is not really a new emulator, but a new way to use Atari800. Users have plenty of good options with Altirra, Atari800 (vanilla), Atari800MacX and Mame. One thing that Atari800 has that is great, but it throws some users off, is its built-in UI inside the emulator window. A lot of users prefer to have the native feeling like Altirra on Windows, and Atari800MacX on macOS delivers.
1010

11-
The objective is to always use libatari800 so there is never incompatibility between the Atari800 source code and Fujisan (as much as possible).
11+
Fujisan is an AI-based exercise and hobby for me, to build an emulator tailored to my personal use, with fewer customization available but ready to go for 90% of the use cases. Hopefully it will attract more people like me. Also, the fact that the users will have the same native experience in Windows, MacOS or Linux is a differentiator compared to the other emulators.
1212

13-
The big difference is that Fujisan is a UI-based emulator that is available for Windows, Mac, and Linux. (The builds and binaries will be available soon), and overtime, with some features that will help software development.
13+
Another important objective is to always use **libatari800** so there is never incompatibility between the Atari800 source code and Fujisan (as much as possible). There are some patches I had to apply, but I am set to always make it easier for anyone that wants to build Fujisan, to be able to reproduce my steps and patch atari800 properly (There is a patches folder with detailed instructions).
14+
15+
I guess, the big difference is that Fujisan is a UI-based emulator that is available for Windows, Mac, and Linux. (The builds and binaries will be available soon), and overtime, with some features that will help software development.
1416

1517

1618

@@ -25,11 +27,15 @@ The objective is to always use libatari800 so there is never incompatibility bet
2527
- **Real-time Performance**: Proper 49.86 FPS (PAL) / 59.92 FPS (NTSC) timing
2628

2729
### User Interface
28-
- **Native Qt5 Menus**: Standard desktop menu bar and dialogs
30+
- **Native Menus**: Standard desktop menu bar and dialogs
2931
- **File Management**: Native file dialogs for ROM loading
3032
- **Status Bar**: Real-time feedback for user actions
3133
- **Focus Management**: Click-to-focus emulator display
3234

35+
### Developer Friendly
36+
37+
- Built-in TCP Server API - Fujisan includes a powerful TCP server for remote control and automation. This enables IDE integration, automated testing, and programmatic control of all emulator features. See usage below for more details
38+
3339
### Keyboard Input
3440
- **Full Keyboard Support**: All letters, numbers, and symbols
3541
- **Shifted Symbols**: Proper handling of `!@#$%^&*()` and punctuation

images/FujisanLogoIcon.png

387 KB
Loading

images/FujisanLogoIcon.pxd

543 KB
Binary file not shown.

scripts/create-icns.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ set -e
1111
# Configuration
1212
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
1313
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
14-
SOURCE_PNG="$PROJECT_ROOT/images/fujisanlogo.png"
14+
SOURCE_PNG="$PROJECT_ROOT/images/FujisanLogoIcon.png"
1515
OUTPUT_ICNS="$PROJECT_ROOT/Fujisan.icns"
1616
TEMP_DIR="$(mktemp -d)"
1717

scripts/create-ico.sh

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#!/bin/bash
2+
# create-ico.sh - Create Windows .ico icon from PNG source
3+
4+
set -e
5+
6+
# Configuration
7+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
8+
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
9+
SOURCE_PNG="$PROJECT_ROOT/images/FujisanLogoIcon.png"
10+
OUTPUT_ICO="$PROJECT_ROOT/Fujisan.ico"
11+
TEMP_DIR="$(mktemp -d)"
12+
13+
# Colors for output
14+
RED='\033[0;31m'
15+
GREEN='\033[0;32m'
16+
YELLOW='\033[1;33m'
17+
NC='\033[0m' # No Color
18+
19+
echo_info() {
20+
echo -e "${GREEN}[INFO]${NC} $1"
21+
}
22+
23+
echo_warn() {
24+
echo -e "${YELLOW}[WARN]${NC} $1"
25+
}
26+
27+
echo_error() {
28+
echo -e "${RED}[ERROR]${NC} $1"
29+
}
30+
31+
# Check if source PNG exists
32+
if [ ! -f "$SOURCE_PNG" ]; then
33+
echo_error "Source PNG not found: $SOURCE_PNG"
34+
exit 1
35+
fi
36+
37+
# Check for ImageMagick
38+
if ! command -v magick >/dev/null 2>&1 && ! command -v convert >/dev/null 2>&1; then
39+
echo_error "ImageMagick not found. Please install ImageMagick:"
40+
echo_error " macOS: brew install imagemagick"
41+
echo_error " Linux: sudo apt install imagemagick"
42+
exit 1
43+
fi
44+
45+
echo_info "Creating Windows app icon from: $SOURCE_PNG"
46+
echo_info "Output will be: $OUTPUT_ICO"
47+
48+
# Cleanup function
49+
cleanup() {
50+
rm -rf "$TEMP_DIR"
51+
}
52+
trap cleanup EXIT
53+
54+
# Create Windows .ico file with multiple sizes
55+
# Windows .ico format supports: 16, 24, 32, 48, 64, 96, 128, 256 pixels
56+
echo_info "Generating Windows .ico file..."
57+
58+
# Use ImageMagick to create .ico with multiple sizes
59+
if command -v magick >/dev/null 2>&1; then
60+
# ImageMagick 7.x syntax
61+
magick "$SOURCE_PNG" \
62+
\( -clone 0 -resize 16x16 \) \
63+
\( -clone 0 -resize 24x24 \) \
64+
\( -clone 0 -resize 32x32 \) \
65+
\( -clone 0 -resize 48x48 \) \
66+
\( -clone 0 -resize 64x64 \) \
67+
\( -clone 0 -resize 96x96 \) \
68+
\( -clone 0 -resize 128x128 \) \
69+
\( -clone 0 -resize 256x256 \) \
70+
-delete 0 "$OUTPUT_ICO"
71+
else
72+
# ImageMagick 6.x syntax
73+
convert "$SOURCE_PNG" \
74+
\( -clone 0 -resize 16x16 \) \
75+
\( -clone 0 -resize 24x24 \) \
76+
\( -clone 0 -resize 32x32 \) \
77+
\( -clone 0 -resize 48x48 \) \
78+
\( -clone 0 -resize 64x64 \) \
79+
\( -clone 0 -resize 96x96 \) \
80+
\( -clone 0 -resize 128x128 \) \
81+
\( -clone 0 -resize 256x256 \) \
82+
-delete 0 "$OUTPUT_ICO"
83+
fi
84+
85+
# Verify the created .ico file
86+
if [ -f "$OUTPUT_ICO" ]; then
87+
FILE_SIZE=$(wc -c < "$OUTPUT_ICO")
88+
echo_info "Successfully created: $OUTPUT_ICO"
89+
echo_info "File size: $FILE_SIZE bytes"
90+
else
91+
echo_error "Failed to create .ico file"
92+
exit 1
93+
fi
94+
95+
echo_info "✓ Windows app icon creation completed successfully!"
96+
echo_info "Icon file ready for use: Fujisan.ico"

0 commit comments

Comments
 (0)