renombrats els fitxers de musica

This commit is contained in:
JailDesigner committed 2026-04-17 13:29:07 +02:00
1 parent 9d86137203
commit 417699d276
23 files changed
+28 -28

No files matched your search

+6 -6
View File
@@ -232,7 +232,7 @@ JD8_Flip produces ABGR byte order: `0xFF000000 + R + (G<<8) + (B<<16)`. SDL text
### Resource Pack (`source/core/resources/`) ### Resource Pack (`source/core/resources/`)
Sistema d'empaquetat d'assets a l'estil `coffee_crisis_arcade_edition`. Genera un sol fitxer binari opac `resource.pack` que substitueix la carpeta `data/` als releases natius. Sistema d'empaquetat d'assets a l'estil `coffee_crisis_arcade_edition`. Genera un sol fitxer binari opac `resources.pack` que substitueix la carpeta `data/` als releases natius.
**Format AEE1** (fidel a CCAE amb clau pròpia): **Format AEE1** (fidel a CCAE amb clau pròpia):
``` ```
@@ -245,18 +245,18 @@ Checksum: djb2-like amb seed `0x12345678`. Càrrega full-to-RAM (sense mmap).
**Fitxers**: **Fitxers**:
- [source/core/resources/resource_pack.hpp/cpp](source/core/resources/) — classe `ResourcePack`: `loadPack`, `savePack`, `addFile`, `addDirectory`, `getResource(name) → std::vector<uint8_t>`, `hasResource` - [source/core/resources/resource_pack.hpp/cpp](source/core/resources/) — classe `ResourcePack`: `loadPack`, `savePack`, `addFile`, `addDirectory`, `getResource(name) → std::vector<uint8_t>`, `hasResource`
- [source/core/resources/resource_helper.hpp/cpp](source/core/resources/) — namespace `ResourceHelper`: `initializeResourceSystem(pack, enable_fallback)`, `loadFile(relative_path)`, `shutdownResourceSystem`. Prova el pack primer, cau a `file_getresourcefolder()+path` si el fallback està actiu. - [source/core/resources/resource_helper.hpp/cpp](source/core/resources/) — namespace `ResourceHelper`: `initializeResourceSystem(pack, enable_fallback)`, `loadFile(relative_path)`, `shutdownResourceSystem`. Prova el pack primer, cau a `file_getresourcefolder()+path` si el fallback està actiu.
- [tools/pack_resources/pack_resources.cpp](tools/pack_resources/pack_resources.cpp) — eina standalone CLI: `pack_resources [input_dir=data] [output=resource.pack]` + `--list pack`. - [tools/pack_resources/pack_resources.cpp](tools/pack_resources/pack_resources.cpp) — eina standalone CLI: `pack_resources [input_dir=data] [output=resources.pack]` + `--list pack`.
**Build**: **Build**:
- `make pack` compila l'eina (target `pack_resources` a `EXCLUDE_FROM_ALL` de [CMakeLists.txt](CMakeLists.txt)) i genera `resource.pack` a la rel. 33 entrades ≈ 4 MB. - `make pack` compila l'eina (target `pack_resources` a `EXCLUDE_FROM_ALL` de [CMakeLists.txt](CMakeLists.txt)) i genera `resources.pack` a la rel. 33 entrades ≈ 4 MB.
- `./build/pack_resources --list resource.pack` inspecciona el pack. - `./build/pack_resources --list resources.pack` inspecciona el pack.
**Estat actual (Fases 1-6 completades, 2026-04-16)**: **Estat actual (Fases 1-6 completades, 2026-04-16)**:
- `ResourcePack` + `ResourceHelper` + eina `pack_resources` compilen i funcionen. El pack genera 33 entrades ≈ 4 MB. - `ResourcePack` + `ResourceHelper` + eina `pack_resources` compilen i funcionen. El pack genera 33 entrades ≈ 4 MB.
- Cablejat al joc via `ResourceHelper::initializeResourceSystem` a [main.cpp](source/main.cpp) (amb `return SDL_APP_FAILURE` si falla), i `shutdownResourceSystem` a `SDL_AppQuit`. - Cablejat al joc via `ResourceHelper::initializeResourceSystem` a [main.cpp](source/main.cpp) (amb `return SDL_APP_FAILURE` si falla), i `shutdownResourceSystem` a `SDL_AppQuit`.
- Tots els callsites de recursos usen `ResourceHelper::loadFile` (`std::vector<uint8_t>`): [locale.cpp](source/core/locale/locale.cpp), [text.cpp](source/core/rendering/text.cpp), [scene_utils.cpp](source/scenes/scene_utils.cpp), [modulegame.cpp](source/game/modulegame.cpp), [jdraw8.cpp](source/core/jail/jdraw8.cpp). - Tots els callsites de recursos usen `ResourceHelper::loadFile` (`std::vector<uint8_t>`): [locale.cpp](source/core/locale/locale.cpp), [text.cpp](source/core/rendering/text.cpp), [scene_utils.cpp](source/scenes/scene_utils.cpp), [modulegame.cpp](source/game/modulegame.cpp), [jdraw8.cpp](source/core/jail/jdraw8.cpp).
- Scaffold `.jrf` eliminat de [jfile.cpp](source/core/jail/jfile.cpp): `file_setresourcefilename`, `file_setsource`, `SOURCE_FILE`/`SOURCE_FOLDER`, `dictionary_loaded`, `file_getfilepointer`, `file_readfile`. Només queden config-folder i resource-folder getters/setters. - Scaffold `.jrf` eliminat de [jfile.cpp](source/core/jail/jfile.cpp): `file_setresourcefilename`, `file_setsource`, `SOURCE_FILE`/`SOURCE_FOLDER`, `dictionary_loaded`, `file_getfilepointer`, `file_readfile`. Només queden config-folder i resource-folder getters/setters.
- Targets release a [Makefile](Makefile) (`_linux_release`/`_windows_release`/`_macos_release`) depenen de `pack` i copien `resource.pack` en lloc de `data/`. WASM intacte (`--preload-file data@/data`). - Targets release a [Makefile](Makefile) (`_linux_release`/`_windows_release`/`_macos_release`) depenen de `pack` i copien `resources.pack` en lloc de `data/`. WASM intacte (`--preload-file data@/data`).
- `enable_fallback = false` a Release natiu (`NDEBUG && !__EMSCRIPTEN__`): el pack és obligatori. Debug i WASM mantenen el fallback actiu. - `enable_fallback = false` a Release natiu (`NDEBUG && !__EMSCRIPTEN__`): el pack és obligatori. Debug i WASM mantenen el fallback actiu.
### External Libraries (`source/external/`) ### External Libraries (`source/external/`)
@@ -268,7 +268,7 @@ Checksum: djb2-like amb seed `0x12345678`. Càrrega full-to-RAM (sense mmap).
### Data Assets (`data/`) ### Data Assets (`data/`)
- `gfx/` — Original game GIFs (**do not modify content**): `frames.gif`/`frames2.gif` (sprite sheet del joc), `logo.gif`/`logo_new.gif` (intros), `menu.gif`/`menu2.gif`, `intro.gif`/`intro2.gif`/`intro3.gif` (slides), `ffase.gif` (banner nivells), `final.gif`/`finals.gif` (crèdits), `gameover.gif`, `tomba1.gif`/`tomba2.gif` (escena secreta) - `gfx/` — Original game GIFs (**do not modify content**): `frames.gif`/`frames2.gif` (sprite sheet del joc), `logo.gif`/`logo_new.gif` (intros), `menu.gif`/`menu2.gif`, `intro.gif`/`intro2.gif`/`intro3.gif` (slides), `ffase.gif` (banner nivells), `final.gif`/`finals.gif` (crèdits), `gameover.gif`, `tomba1.gif`/`tomba2.gif` (escena secreta)
- `music/` — 8 pistes OGG originals (`00000001.ogg`..`00000008.ogg`) - `music/` — 8 pistes OGG originals amb noms temàtics: `mort.ogg` (game over), `secreta.ogg` (escena secreta + piràmide 6), `menu.ogg` (menú + intros), `banner.ogg` (banner de fase), `final.ogg` (slides finals + crèdits), `piramide_1_4_5.ogg` (gameplay default), `piramide_2.ogg`, `piramide_3.ogg`
- `fonts/8bithud.fnt + .gif` — Bitmap font for overlay (8×8, 124 glyphs, UTF-8 with accents) - `fonts/8bithud.fnt + .gif` — Bitmap font for overlay (8×8, 124 glyphs, UTF-8 with accents)
- `shaders/` — GLSL sources: `postfx.vert`, `postfx.frag`, `upscale.frag`, `downscale.frag`, `crtpi_frag.glsl` - `shaders/` — GLSL sources: `postfx.vert`, `postfx.frag`, `upscale.frag`, `downscale.frag`, `crtpi_frag.glsl`
- `locale/ca.yaml` — UI strings in Valencian (menu titles/items/values, notifications). Edit freely; reload at restart - `locale/ca.yaml` — UI strings in Valencian (menu titles/items/values, notifications). Edit freely; reload at restart
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+4 -4
View File
@@ -42,10 +42,10 @@ void ModuleGame::onEnter() {
// fade interpolarien cap a una paleta amb pantalla buida. // fade interpolarien cap a una paleta amb pantalla buida.
this->Draw(); this->Draw();
const char* music = info::ctx.num_piramide == 3 ? "music/00000008.ogg" const char* music = info::ctx.num_piramide == 3 ? "music/piramide_3.ogg"
: info::ctx.num_piramide == 2 ? "music/00000007.ogg" : info::ctx.num_piramide == 2 ? "music/piramide_2.ogg"
: info::ctx.num_piramide == 6 ? "music/00000002.ogg" : info::ctx.num_piramide == 6 ? "music/secreta.ogg"
: "music/00000006.ogg"; : "music/piramide_1_4_5.ogg";
const char* current_music = JA_GetMusicFilename(); const char* current_music = JA_GetMusicFilename();
if ((JA_GetMusicState() != JA_MUSIC_PLAYING) || !current_music || if ((JA_GetMusicState() != JA_MUSIC_PLAYING) || !current_music ||
strcmp(music, current_music) != 0) { strcmp(music, current_music) != 0) {
+1 -1
View File
@@ -11,7 +11,7 @@
namespace scenes { namespace scenes {
void BannerScene::onEnter() { void BannerScene::onEnter() {
playMusic("music/00000004.ogg"); playMusic("music/banner.ogg");
gfx_ = SurfaceHandle("gfx/ffase.gif"); gfx_ = SurfaceHandle("gfx/ffase.gif");
+1 -1
View File
@@ -9,7 +9,7 @@ namespace scenes {
// Banner pre-piràmide ("PIRÀMIDE X"). Reemplaça `ModuleSequence::doBanner()`. // Banner pre-piràmide ("PIRÀMIDE X"). Reemplaça `ModuleSequence::doBanner()`.
// //
// Flux: // Flux:
// 1. Arranca música "music/00000004.ogg" i carrega gfx/ffase.gif. // 1. Arranca música "music/banner.ogg" i carrega gfx/ffase.gif.
// 2. Pinta títol, subtítol i número de piràmide segons info::ctx.num_piramide. // 2. Pinta títol, subtítol i número de piràmide segons info::ctx.num_piramide.
// 3. Fade-in de paleta. // 3. Fade-in de paleta.
// 4. Mostra ~5s o fins que es polse una tecla. // 4. Mostra ~5s o fins que es polse una tecla.
+2 -2
View File
@@ -42,12 +42,12 @@ namespace scenes {
void CreditsScene::onEnter() { void CreditsScene::onEnter() {
// El vell doCredits no tocava música — heretava la del doSlides // El vell doCredits no tocava música — heretava la del doSlides
// previ ("music/00000005.ogg"). Si l'escena s'arrenca directament (test // previ ("music/final.ogg"). Si l'escena s'arrenca directament (test
// amb piramide_inicial=8) no hi ha res que heretar, així que // amb piramide_inicial=8) no hi ha res que heretar, així que
// arranquem la mateixa pista només si no sona res. Inocu en el // arranquem la mateixa pista només si no sona res. Inocu en el
// flux normal: JA_MUSIC_PLAYING fa que no la tornem a tocar. // flux normal: JA_MUSIC_PLAYING fa que no la tornem a tocar.
if (JA_GetMusicState() != JA_MUSIC_PLAYING) { if (JA_GetMusicState() != JA_MUSIC_PLAYING) {
playMusic("music/00000005.ogg"); playMusic("music/final.ogg");
} }
vaddr2_ = SurfaceHandle("gfx/final.gif"); vaddr2_ = SurfaceHandle("gfx/final.gif");
+1 -1
View File
@@ -50,7 +50,7 @@ namespace scenes {
} }
void IntroNewLogoScene::onEnter() { void IntroNewLogoScene::onEnter() {
playMusic("music/00000003.ogg"); playMusic("music/menu.ogg");
gfx_ = SurfaceHandle("gfx/logo_new.gif"); gfx_ = SurfaceHandle("gfx/logo_new.gif");
pal_ = JD8_LoadPalette("gfx/logo_new.gif"); pal_ = JD8_LoadPalette("gfx/logo_new.gif");
+1 -1
View File
@@ -13,7 +13,7 @@ namespace scenes {
// ciclo de paleta final. Reemplaça `ModuleSequence::doIntroNewLogo()`. // ciclo de paleta final. Reemplaça `ModuleSequence::doIntroNewLogo()`.
// //
// Flux: // Flux:
// 1. Carrega gfx/logo_new.gif, arranca música "music/00000003.ogg" i posa // 1. Carrega gfx/logo_new.gif, arranca música "music/menu.ogg" i posa
// la paleta directament (sense fade-in). Mostra pantalla negra 1s. // la paleta directament (sense fade-in). Mostra pantalla negra 1s.
// 2. Revelat: 9 lletres × 2 frames (amb cursor / sense cursor), 150 ms // 2. Revelat: 9 lletres × 2 frames (amb cursor / sense cursor), 150 ms
// cada frame. // cada frame.
+1 -1
View File
@@ -66,7 +66,7 @@ namespace scenes {
} }
void IntroScene::onEnter() { void IntroScene::onEnter() {
playMusic("music/00000003.ogg"); playMusic("music/menu.ogg");
gfx_ = SurfaceHandle("gfx/logo.gif"); gfx_ = SurfaceHandle("gfx/logo.gif");
pal_ = JD8_LoadPalette("gfx/logo.gif"); pal_ = JD8_LoadPalette("gfx/logo.gif");
+1 -1
View File
@@ -15,7 +15,7 @@ namespace scenes {
// `IntroNewLogoScene`. // `IntroNewLogoScene`.
// //
// Flux: // Flux:
// 1. Carrega gfx/logo.gif, arranca música "music/00000003.ogg", pantalla negra // 1. Carrega gfx/logo.gif, arranca música "music/menu.ogg", pantalla negra
// 1000 ms. // 1000 ms.
// 2. Revelat: 15 passos (100 o 200 ms) que van acumulant les lletres // 2. Revelat: 15 passos (100 o 200 ms) que van acumulant les lletres
// "JAILGAMES" d'esquerra a dreta amb un avió escombrant al final // "JAILGAMES" d'esquerra a dreta amb un avió escombrant al final
+2 -2
View File
@@ -10,7 +10,7 @@
namespace scenes { namespace scenes {
void MortScene::onEnter() { void MortScene::onEnter() {
playMusic("music/00000001.ogg"); playMusic("music/mort.ogg");
JI_DisableKeyboard(60); JI_DisableKeyboard(60);
info::ctx.vida = 5; info::ctx.vida = 5;
@@ -44,7 +44,7 @@ namespace scenes {
if (remaining_ms_ <= 0) { if (remaining_ms_ <= 0) {
// Arrenca música del següent mòdul abans del fade out, // Arrenca música del següent mòdul abans del fade out,
// igual que la versió vella feia al final de doMort(). // igual que la versió vella feia al final de doMort().
playMusic("music/00000003.ogg"); playMusic("music/menu.ogg");
info::ctx.num_piramide = 0; info::ctx.num_piramide = 0;
fade_.startFadeOut(); fade_.startFadeOut();
phase_ = Phase::FadingOut; phase_ = Phase::FadingOut;
+2 -2
View File
@@ -9,9 +9,9 @@ namespace scenes {
// Pantalla de "game over". Reemplaça `ModuleSequence::doMort()`. // Pantalla de "game over". Reemplaça `ModuleSequence::doMort()`.
// //
// Flux: // Flux:
// 1. Carrega gfx/gameover.gif, arranca música "music/00000001.ogg", fade-in de paleta. // 1. Carrega gfx/gameover.gif, arranca música "music/mort.ogg", fade-in de paleta.
// 2. Mostra la pantalla ~10 segons o fins que l'usuari polse una tecla. // 2. Mostra la pantalla ~10 segons o fins que l'usuari polse una tecla.
// 3. Arranca música del menú ("music/00000003.ogg") i fade-out de paleta. // 3. Arranca música del menú ("music/menu.ogg") i fade-out de paleta.
// 4. Marca num_piramide=0 i retorna nextState=1 perquè el Director // 4. Marca num_piramide=0 i retorna nextState=1 perquè el Director
// passe a l'escena del menú. // passe a l'escena del menú.
class MortScene : public Scene { class MortScene : public Scene {
+1 -1
View File
@@ -42,7 +42,7 @@ namespace scenes {
} }
void SecretaScene::onEnter() { void SecretaScene::onEnter() {
playMusic("music/00000002.ogg"); playMusic("music/secreta.ogg");
// Fade-out de la paleta anterior. Els assets es carreguen ja // Fade-out de la paleta anterior. Els assets es carreguen ja
// però no fem SetScreenPalette fins que acabe el fade — així // però no fem SetScreenPalette fins que acabe el fade — així
+1 -1
View File
@@ -10,7 +10,7 @@ namespace scenes {
// Pre-Secreta. Reemplaça `ModuleSequence::doSecreta()`. // Pre-Secreta. Reemplaça `ModuleSequence::doSecreta()`.
// //
// Flux: // Flux:
// 1. Arranca música "music/00000002.ogg" i fa fade-out de la paleta anterior. // 1. Arranca música "music/secreta.ogg" i fa fade-out de la paleta anterior.
// 2. Carrega gfx/tomba1.gif + paleta i pinta un scroll vertical doble // 2. Carrega gfx/tomba1.gif + paleta i pinta un scroll vertical doble
// (dos blits solapats, un a velocitat meitat que l'altre) durant // (dos blits solapats, un a velocitat meitat que l'altre) durant
// ~2.5 s + ~2.5 s de pausa. // ~2.5 s + ~2.5 s de pausa.
+2 -2
View File
@@ -40,8 +40,8 @@ namespace scenes {
const char* arxiu = nullptr; const char* arxiu = nullptr;
if (num_piramide_at_start_ == 7) { if (num_piramide_at_start_ == 7) {
// loop=1 per replicar el vell `play_music("00000005.ogg", 1)`. // loop=1 per replicar el vell `play_music("final.ogg", 1)`.
playMusic("music/00000005.ogg", 1); playMusic("music/final.ogg", 1);
arxiu = (info::ctx.diners < 200) ? "gfx/intro2.gif" : "gfx/intro3.gif"; arxiu = (info::ctx.diners < 200) ? "gfx/intro2.gif" : "gfx/intro3.gif";
} else { } else {
arxiu = "gfx/intro.gif"; arxiu = "gfx/intro.gif";
+2 -2
View File
@@ -11,8 +11,8 @@ namespace scenes {
// fade-out. Reemplaça `ModuleSequence::doSlides()`. // fade-out. Reemplaça `ModuleSequence::doSlides()`.
// //
// Tria d'asset segons context: // Tria d'asset segons context:
// - num_piramide == 7 i diners < 200: gfx/intro2.gif + música "music/00000005.ogg" // - num_piramide == 7 i diners < 200: gfx/intro2.gif + música "music/final.ogg"
// - num_piramide == 7 i diners >= 200: gfx/intro3.gif + música "music/00000005.ogg" // - num_piramide == 7 i diners >= 200: gfx/intro3.gif + música "music/final.ogg"
// - altre cas (num_piramide == 1): gfx/intro.gif, sense música nova // - altre cas (num_piramide == 1): gfx/intro.gif, sense música nova
// //
// Flux: // Flux: