Compare commits

..

39 Commits

Author SHA1 Message Date
16f29c1199 fix(3d-nds): wrong lag detection
All checks were successful
Build and Push Docker Image / build (push) Successful in 3m47s
2026-02-26 00:05:57 +01:00
ea2547425a fix(nds): input fighting 2026-02-25 23:57:37 +01:00
2d39c7bebd feat(nds): add whoosh effect for nds 3d animation and for the gallery transition 2026-02-25 23:36:29 +01:00
813dca8943 refactor(nds): normalize local storage keys 2026-02-25 23:10:19 +01:00
60ac084a71 feat(gallery): repair photo dates 2026-02-25 23:06:37 +01:00
bf8dc76070 fix(gallery): missing page title if navigating directly to /gallery 2026-02-25 23:05:12 +01:00
d5bb62522e feat(settings): add instructions for 2048 and Snake in the notification 2026-02-25 22:26:49 +01:00
af98a69dcc fix(i18n): snake_score_40 -> 25 2026-02-25 22:09:56 +01:00
c5f40c96df fix(3d-nds): reduce LAG_FPS_THRESHOLD 2026-02-25 22:08:34 +01:00
34f966abeb feat: move static seo tags to nuxt config 2026-02-25 21:57:29 +01:00
0d8714a280 feat: add favicon 2026-02-25 20:50:14 +01:00
1d87de1fda fix(contact): confirm/cancel -> yes/no 2026-02-25 17:13:01 +01:00
39476d0b53 feat(nds): improve fullscreen button and add volume slider 2026-02-25 17:09:41 +01:00
8c64f287e1 feat(credits): add defectDS 2026-02-25 16:22:35 +01:00
7b4d4dec66 feat(settings/user/snake): improve snake design 2026-02-25 16:07:16 +01:00
858082e151 feat(nds): add audio in all menus 2026-02-25 14:52:48 +01:00
4af6de5329 fix(audio): handle spamming play 2026-02-24 17:51:55 +01:00
ef00bd06bb feat(audio): audio system 2026-02-24 17:34:01 +01:00
8a67577d36 refactor(nds): move nds sprites from public to assets 2026-02-24 16:26:11 +01:00
2d4210b031 feat(3d-nds): lag detection 2026-02-24 16:18:03 +01:00
187cc8d574 chore: remove console.logs 2026-02-24 15:32:37 +01:00
cfa7081223 fix(nds): missing check for app.booted in resize handler to allow hints 2026-02-24 15:31:37 +01:00
128d350b86 feat(3d-nds): use draco to compress glb model 2026-02-24 15:26:54 +01:00
7035525dfc feat(credits): add in both nds and repo 2026-02-24 14:38:15 +01:00
e40dd255af fix(nds): fix attempt to cancel a touchstart event with cancelable=false 2026-02-24 13:01:10 +01:00
154740f481 feat(settings/options/2048): per-color scheme 2026-02-24 12:36:38 +01:00
1167242798 feat: require click on the loading screen, and make intro animation faster 2026-02-24 12:07:14 +01:00
b8054c58e1 feat(2d-nds): handle touches on the physical buttons 2026-02-24 00:17:33 +01:00
6816f173eb fix(common): avoid duplicate key input coming from phyiscal buttons 2026-02-24 00:17:10 +01:00
8456fc0bd9 feat: page title matches the nds screen 2026-02-23 23:38:33 +01:00
94ea8c24f5 feat: fill lot of SEO-related tags, also add JSON-LD 2026-02-23 21:46:06 +01:00
9f9cc90254 feat(2d-nds): animation to and from gallery 2026-02-23 17:25:29 +01:00
89f0c9a2a5 feat(achievements): easier snake achievement 2026-02-23 15:29:38 +01:00
ac353425f0 fix(settings): update notification text when changing language 2026-02-23 14:45:36 +01:00
bfb48e9a9c fix(settings/touchScreen/tapTap): make the game harder 2026-02-23 14:42:37 +01:00
4a2575a7bd feat(2d-nds): physical buttons 2026-02-23 14:32:26 +01:00
36e4e85016 feat(loadingScreen): improve 2026-02-22 23:15:23 +01:00
28cd10bb08 feat(nds): don't display help button and hints on smaller screens (they can't click on the buttons anyway) 2026-02-22 22:50:24 +01:00
48688544f1 feat(nds): add help button with hints for all physical buttons 2026-02-22 21:16:13 +01:00
313 changed files with 2015 additions and 2442 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,5 @@
# generated # generated
public/nds/images/projects/pokemons app/assets/nds/images/projects/pokemons
public/nds/atlas.webp public/nds/atlas.webp
app/composables/useAssets.ts app/composables/useAssets.ts

View File

@@ -7,6 +7,6 @@ node_modules
*.JPG *.JPG
*.png *.png
*.webp *.webp
*.gltf *.glb
*.blend *.blend
*.blend1 *.blend1

24
CREDITS.md Normal file
View File

@@ -0,0 +1,24 @@
# Credits
## 3D Model
**"Nintendo DS Lite"** by Cianon
https://skfb.ly/6ZDvQ
Licensed under [Creative Commons Attribution 4.0](http://creativecommons.org/licenses/by/4.0/)
Modified from the original.
## 2D Nintendo DS CSS
Based on **"CSS Nintendo DS"** by Alexandra Radevich (@aradevich)
https://codepen.io/aradevich/pen/mdRYzyJ
## UI Design & Sound Effects
**Nintendo DS** — UI design and sound effects are property of Nintendo.
https://nintendo.com
© Nintendo
## Nintendo DS System Sounds
Nintendo DS system sounds extracted by **defectDS**
https://adiumxtras.com

View File

@@ -1,3 +1,19 @@
<script setup lang="ts">
const { locale } = useI18n();
const app = useAppStore();
const pageTitle = computed(() => {
if (!app.booted) return "Pihkaal";
const name = app.screen.charAt(0).toUpperCase() + app.screen.slice(1);
return `${name} - Pihkaal`;
});
useHead({
title: pageTitle,
htmlAttrs: { lang: locale },
});
</script>
<template> <template>
<UApp> <UApp>
<NuxtPage /> <NuxtPage />

View File

Before

Width:  |  Height:  |  Size: 78 B

After

Width:  |  Height:  |  Size: 78 B

View File

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 236 B

View File

Before

Width:  |  Height:  |  Size: 172 B

After

Width:  |  Height:  |  Size: 172 B

View File

Before

Width:  |  Height:  |  Size: 770 KiB

After

Width:  |  Height:  |  Size: 770 KiB

View File

Before

Width:  |  Height:  |  Size: 86 B

After

Width:  |  Height:  |  Size: 86 B

View File

Before

Width:  |  Height:  |  Size: 88 B

After

Width:  |  Height:  |  Size: 88 B

View File

Before

Width:  |  Height:  |  Size: 88 B

After

Width:  |  Height:  |  Size: 88 B

View File

Before

Width:  |  Height:  |  Size: 90 B

After

Width:  |  Height:  |  Size: 90 B

View File

Before

Width:  |  Height:  |  Size: 88 B

After

Width:  |  Height:  |  Size: 88 B

View File

Before

Width:  |  Height:  |  Size: 92 B

After

Width:  |  Height:  |  Size: 92 B

View File

Before

Width:  |  Height:  |  Size: 116 B

After

Width:  |  Height:  |  Size: 116 B

View File

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 290 B

View File

Before

Width:  |  Height:  |  Size: 102 B

After

Width:  |  Height:  |  Size: 102 B

View File

Before

Width:  |  Height:  |  Size: 148 B

After

Width:  |  Height:  |  Size: 148 B

View File

Before

Width:  |  Height:  |  Size: 158 B

After

Width:  |  Height:  |  Size: 158 B

View File

Before

Width:  |  Height:  |  Size: 150 B

After

Width:  |  Height:  |  Size: 150 B

View File

Before

Width:  |  Height:  |  Size: 150 B

After

Width:  |  Height:  |  Size: 150 B

View File

Before

Width:  |  Height:  |  Size: 166 B

After

Width:  |  Height:  |  Size: 166 B

View File

Before

Width:  |  Height:  |  Size: 168 B

After

Width:  |  Height:  |  Size: 168 B

View File

Before

Width:  |  Height:  |  Size: 168 B

After

Width:  |  Height:  |  Size: 168 B

View File

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 118 B

View File

Before

Width:  |  Height:  |  Size: 110 B

After

Width:  |  Height:  |  Size: 110 B

View File

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 236 B

View File

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 334 B

View File

Before

Width:  |  Height:  |  Size: 60 B

After

Width:  |  Height:  |  Size: 60 B

View File

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 176 B

View File

Before

Width:  |  Height:  |  Size: 44 B

After

Width:  |  Height:  |  Size: 44 B

View File

Before

Width:  |  Height:  |  Size: 180 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

View File

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 132 B

View File

Before

Width:  |  Height:  |  Size: 64 B

After

Width:  |  Height:  |  Size: 64 B

View File

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 330 B

View File

Before

Width:  |  Height:  |  Size: 350 B

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

View File

Before

Width:  |  Height:  |  Size: 452 B

After

Width:  |  Height:  |  Size: 452 B

View File

Before

Width:  |  Height:  |  Size: 384 B

After

Width:  |  Height:  |  Size: 384 B

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 264 B

After

Width:  |  Height:  |  Size: 264 B

View File

Before

Width:  |  Height:  |  Size: 108 B

After

Width:  |  Height:  |  Size: 108 B

View File

Before

Width:  |  Height:  |  Size: 78 B

After

Width:  |  Height:  |  Size: 78 B

View File

Before

Width:  |  Height:  |  Size: 68 B

After

Width:  |  Height:  |  Size: 68 B

View File

Before

Width:  |  Height:  |  Size: 98 B

After

Width:  |  Height:  |  Size: 98 B

View File

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 302 B

View File

Before

Width:  |  Height:  |  Size: 122 B

After

Width:  |  Height:  |  Size: 122 B

View File

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 398 B

View File

Before

Width:  |  Height:  |  Size: 82 B

After

Width:  |  Height:  |  Size: 82 B

View File

Before

Width:  |  Height:  |  Size: 80 B

After

Width:  |  Height:  |  Size: 80 B

View File

Before

Width:  |  Height:  |  Size: 104 B

After

Width:  |  Height:  |  Size: 104 B

View File

Before

Width:  |  Height:  |  Size: 84 B

After

Width:  |  Height:  |  Size: 84 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 136 B

View File

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 190 B

View File

Before

Width:  |  Height:  |  Size: 178 B

After

Width:  |  Height:  |  Size: 178 B

View File

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 566 B

View File

Before

Width:  |  Height:  |  Size: 648 B

After

Width:  |  Height:  |  Size: 648 B

View File

Before

Width:  |  Height:  |  Size: 642 B

After

Width:  |  Height:  |  Size: 642 B

View File

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 678 B

View File

Before

Width:  |  Height:  |  Size: 654 B

After

Width:  |  Height:  |  Size: 654 B

View File

Before

Width:  |  Height:  |  Size: 668 B

After

Width:  |  Height:  |  Size: 668 B

View File

Before

Width:  |  Height:  |  Size: 848 B

After

Width:  |  Height:  |  Size: 848 B

View File

Before

Width:  |  Height:  |  Size: 912 B

After

Width:  |  Height:  |  Size: 912 B

View File

Before

Width:  |  Height:  |  Size: 956 B

After

Width:  |  Height:  |  Size: 956 B

View File

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 974 B

View File

Before

Width:  |  Height:  |  Size: 944 B

After

Width:  |  Height:  |  Size: 944 B

View File

Before

Width:  |  Height:  |  Size: 860 B

After

Width:  |  Height:  |  Size: 860 B

View File

Before

Width:  |  Height:  |  Size: 990 B

After

Width:  |  Height:  |  Size: 990 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 982 B

After

Width:  |  Height:  |  Size: 982 B

View File

Before

Width:  |  Height:  |  Size: 994 B

After

Width:  |  Height:  |  Size: 994 B

View File

Before

Width:  |  Height:  |  Size: 1002 B

After

Width:  |  Height:  |  Size: 1002 B

View File

Before

Width:  |  Height:  |  Size: 986 B

After

Width:  |  Height:  |  Size: 986 B

View File

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1000 B

View File

Before

Width:  |  Height:  |  Size: 814 B

After

Width:  |  Height:  |  Size: 814 B

View File

Before

Width:  |  Height:  |  Size: 734 B

After

Width:  |  Height:  |  Size: 734 B

View File

Before

Width:  |  Height:  |  Size: 724 B

After

Width:  |  Height:  |  Size: 724 B

View File

Before

Width:  |  Height:  |  Size: 718 B

After

Width:  |  Height:  |  Size: 718 B

View File

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 714 B

View File

Before

Width:  |  Height:  |  Size: 724 B

After

Width:  |  Height:  |  Size: 724 B

Some files were not shown because too many files have changed in this diff Show More