diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f4d15e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Sala Museo Games + +See [about.md](./pages/about.md#Bonus) diff --git a/_config.yml b/_config.yml index efbfc71..ec46504 100644 --- a/_config.yml +++ b/_config.yml @@ -19,7 +19,7 @@ menu: - title: "Contribute (GitHub)" url: "https://github.com/GamingShitposting/SalaMuseoGames" type: "external" - - title: "Feed" + - title: "Atom/RSS Feed" url: "/feed.xml" email: "gamingshitposting@github.com" date_format: "%Y.%m.%d" diff --git a/_includes/extra-js.html b/_includes/extra-js.html index f62e047..5c9f0c2 100644 --- a/_includes/extra-js.html +++ b/_includes/extra-js.html @@ -1,2 +1,9 @@ - \ No newline at end of file + + diff --git a/_includes/footer.html b/_includes/footer.html index 143784c..43056ad 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -70,7 +70,7 @@ - + @@ -78,7 +78,7 @@ - +{% include stats.html %} {% include extra-js.html %} diff --git a/_includes/head.html b/_includes/head.html index c670104..8ec1a92 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -66,14 +66,14 @@ - - - - - - - - + + + + + + + + @@ -87,7 +87,7 @@ - + diff --git a/_includes/stats.html b/_includes/stats.html index 49926aa..a3e06a1 100644 --- a/_includes/stats.html +++ b/_includes/stats.html @@ -1,5 +1,5 @@ - + diff --git a/_posts/2024-05-27-pokemon-harvestcraft.md b/_posts/2024-05-27-pokemon-harvestcraft.md new file mode 100644 index 0000000..4516373 --- /dev/null +++ b/_posts/2024-05-27-pokemon-harvestcraft.md @@ -0,0 +1,117 @@ +--- +layout: "post" +title: "Pokemon HarvestCraft" +subtitle: "A unique blend of Pokémon adventures and Harvest Moon-style farming." +description: "Pokemon HarvestCraft merges classic Pokémon gameplay with farming and life simulation elements, set in a town under the threat of a powerful Trevenant." +image: "/assets/media/games/pokemon-harvestcraft/RSy-V9qg-Imgur.png" +image_source: "internal" +category: "games" +tags: + - "farming" + - "sandbox" + - "simulation" + - "crafting" + - "adventure" + - "rpg" + - "love" + - "time" + - "ranching" +author: "octobot" +software_data: + platform: "gba" + rom_index: "Pokemon_Harvestcraft_Final_2.0.gba" + release: + region: "global" + source: "community" + type: "hack" + year: "2016" +--- + +## About the game + +
+
:t263: Pokemon HarvestCraft :t300:

+ :t273: Introduction
+
Hi everyone! I'm quil09 and I present you my first rom hack...​

+ :t276: Story
+
21 years ago, Pokemon lived in harmony in the woods. The Pokemons there were ruled by the Pokemon Trevenant.
+
+One day, A group of people came and started cutting trees and building houses. There was no left home for the Pokemons. The Trevenant did not know what to do so it ask help on the Harvest Goddess. Harvest Goddess quickly responds and tried to punish the people. But she fell in love with one of them, and his name was Eric, which also fell in love with her. So Harvest Goddess forgave Eric and his townspeople. Trevenant didn't like her decision but he doesn't have any choice until he learned that If Harvest Goddess marries a human, she will lost all of her powers and pass it to Trevenant that's one thing Harvest Goddess didn't know about herself.
+
+Until 2 years later they got married (That's a long wait, huh?). At the end of the wedding, Harvest Goddess tried to use her powers to create fireworks but it didn't work, that's the time when she realized she lost all of her powers but she accepted it because she is happy with her husband.
+
+Trevenant is wondering why he still don't have Harvest Goddess' powers so he asked Kappa, Harvest Goddess' brother. Kappa said that he will only obtain Harvest Goddess' powers at the birth of the Harvest Baby.(Kappa didn't know about Trevenant's plan yet). One day, Kappa manage to find out Trevenant's plan, to trap the people inside the town and to kill the Harvest Baby so he tried to stop him but he failed. Kappa was trap inside a mine. Kappa told Trevenant that someone can stop him.
+
+A year later the Harvest Baby is born at that time Trevenant has obtained Harvest Goddess' powers and started the attack. He traps the people inside the town with cursed trees. Harvest Goddess' and ERIC tried to escape they put the baby in the basket. Eric and the baby escaped but Harvest Goddess' didn't get lucky, she got trap inside the town with the other people. Eric got away from the town with the baby. Knowing Trevenant is after the baby, he left the baby in front of a fosters house. (Why?!? Isn't he safer with you!?!?)
+
+You're an 21 year old who's just starting out on your journey but suddenly you got trapped in the town by Trevenant just for fun. Did he made a very bad thing to trap you in the town too? Can you stop this nonsense and free the townspeople?​

+ :t143: Features
+
Weather System
+It sometimes rains every Spring, Summer and Fall and sometimes snows every Winter. Weather affects the energy lost when you do work.
+
+Scripted Time and Day
+Time changes only if you go through Maps. NPCs move around the town depending on time and day.
+
+Seasons
+Seasons changes every 30 days. Changing Season affects the items found and wild Pokemons encounter in the Woods.
+
+Farming
+You can plant Apricorns any season except Winter. Up to 6 Apricorns can only be planted.
+
+Ranching Pokemons
+Torchics, Skiddos and Gogoats.
+
+New Berry System
+Berries found regrow everyday by random.
+
+No Gym Leaders and Elite Four
+Shop Owners give you badges when you defeat them and Trevenant will serve as the Champions battle.
+
+Some new Pokemons
+Some Pokemons from Gen 4 to Gen 6 (May not have the correct Cry, Movesets, and Method of Evolution).
+
+Cooking and Crafting
+Cooking food to replenish Your Energy and Your Pokemon's Health. Crafting tools to help you on your work.
+
+New Items
+Such as foods, apricorns, and other resources.
+
+Energy Mechanics
+Energy decreases when doing work. You can replenish your Energy by eating or sleeping. Maximum Energy gained when you sleep is determined by the number of badges.
+
+Bachelors and Bachelorettes
+Love System
+
+Fairy Type
+Fairy Type Pokemons and Moves.
+
+New Moves
+New moves doesn't have new animations or effects. Just some animations that I think it will suit them.
+
+And more fun features to discover by yourself

+
+ +"Pokemon HarvestCraft" is an innovative rom hack of "Pokemon Ruby" developed by quil09. This game combines the beloved elements of traditional Pokemon gameplay with the immersive mechanics of farming, ranching, and crafting, creating a uniquely engaging experience for players. + +The story begins 21 years prior when Pokemon lived peacefully in the woods under the rule of the Pokemon Trevenant. This tranquility was disrupted when humans arrived, cut down trees, and built a town, leaving the Pokemon homeless. In response, Trevenant sought help from the Harvest Goddess. However, complications arose when the Harvest Goddess fell in love with Eric, one of the humans, and chose to forgive them. Unbeknownst to her, if she married a human, she would lose all her powers, which would then pass to Trevenant. + +Two years later, the Harvest Goddess and Eric married. At the ceremony's conclusion, the Harvest Goddess realized she had lost her powers but accepted this for the sake of her happiness with Eric. Trevenant, puzzled by his lack of new powers, consulted Kappa, the Harvest Goddess's brother, and learned that the powers would transfer to him upon the birth of the Harvest Baby. When Kappa discovered Trevenant's malevolent plan to trap the townspeople and kill the Harvest Baby, he attempted to intervene but was imprisoned in a mine by Trevenant. + +A year later, the Harvest Baby was born, and Trevenant gained the Harvest Goddess's powers. He trapped the townspeople with cursed trees. The Harvest Goddess and Eric tried to escape with their child, but only Eric and the baby managed to flee, leaving the Harvest Goddess trapped. Eric, knowing Trevenant's pursuit, left the baby at a foster home for safety. + +Players step into the role of a 21-year-old starting their journey, only to be trapped in the cursed town by Trevenant. The main quest revolves around stopping Trevenant and freeing the townspeople. + +"Pokemon HarvestCraft" introduces numerous unique features that distinguish it from the original "Pokemon Ruby." The game includes a weather system where seasonal changes impact gameplay; for instance, rain and snow affect energy expenditure during work. Time progresses with map transitions, influencing NPC movements and interactions. Seasons change every 30 days, altering available items and wild Pokemon encounters. + +Farming and ranching are core mechanics. Players can plant Apricorns (except in winter) and manage Pokemon like Torchics, Skiddos, and Gogoats. A new berry system ensures daily regrowth of berries. Instead of traditional Gym Leaders and Elite Four, players earn badges by defeating shop owners, with Trevenant serving as the final challenge. + +The game also features a crafting system, enabling players to create tools and cook food to replenish energy and health. New items, including foods and apricorns, enrich the gameplay. Energy mechanics add a layer of strategy, as energy depletes with work and can be replenished through eating or sleeping, with maximum energy determined by the number of badges earned. + +Romance options are available with bachelors and bachelorettes, adding a love system to the game. Additionally, Fairy Type Pokemon and moves are included, alongside new moves tailored with suitable animations. + +Overall, "Pokemon HarvestCraft" offers a rich and varied gameplay experience that melds the charm of traditional Pokemon adventures with the depth of simulation elements, providing players with numerous features and surprises to discover. + +## Resources + +* Official page of the game; Cover image credits: + diff --git a/_sass/_SalaMuseoGames.scss b/_sass/_SalaMuseoGames.scss index 2056b6e..4734b39 100644 --- a/_sass/_SalaMuseoGames.scss +++ b/_sass/_SalaMuseoGames.scss @@ -49,7 +49,7 @@ section.post > article { iframe.AppFrame, iframe#software-embed-frame { - height: calc(100vh - 4rem); + height: calc(100vh - 5rem); border: none; overflow: hidden; } diff --git a/_sass/_menu.scss b/_sass/_menu.scss index ec538ee..6814e7a 100644 --- a/_sass/_menu.scss +++ b/_sass/_menu.scss @@ -71,7 +71,7 @@ aside.sidebar { margin: 0; list-style-type: none; - a { + * { width: 100%; display: block; padding: rem(15px) rem(20px); diff --git a/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGIVzY4SY.woff2 b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGIVzY4SY.woff2 new file mode 100644 index 0000000..5983be7 Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGIVzY4SY.woff2 differ diff --git a/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGItzYw.woff2 b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGItzYw.woff2 new file mode 100644 index 0000000..ad381f7 Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffGjEGItzYw.woff2 differ diff --git a/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGIVzY4SY.woff2 b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGIVzY4SY.woff2 new file mode 100644 index 0000000..7292910 Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGIVzY4SY.woff2 differ diff --git a/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGItzYw.woff2 b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGItzYw.woff2 new file mode 100644 index 0000000..1eb2d32 Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPDcZTIAOhVxoMyOr9n_E7ffHjDGItzYw.woff2 differ diff --git a/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdM3mDbRS.woff2 b/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdM3mDbRS.woff2 new file mode 100644 index 0000000..739440f Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdM3mDbRS.woff2 differ diff --git a/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdMPmDQ.woff2 b/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdMPmDQ.woff2 new file mode 100644 index 0000000..207b9e4 Binary files /dev/null and b/assets/fonts/Titillium-Web/NaPecZTIAOhVxoMyOr9n_E7fdMPmDQ.woff2 differ diff --git a/assets/fonts/Titillium-Web/index.css b/assets/fonts/Titillium-Web/index.css new file mode 100644 index 0000000..347401e --- /dev/null +++ b/assets/fonts/Titillium-Web/index.css @@ -0,0 +1,48 @@ +/* latin-ext */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 300; + src: url(./NaPDcZTIAOhVxoMyOr9n_E7ffGjEGIVzY4SY.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 300; + src: url(./NaPDcZTIAOhVxoMyOr9n_E7ffGjEGItzYw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 400; + src: url(./NaPecZTIAOhVxoMyOr9n_E7fdM3mDbRS.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 400; + src: url(./NaPecZTIAOhVxoMyOr9n_E7fdMPmDQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* latin-ext */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 700; + src: url(./NaPDcZTIAOhVxoMyOr9n_E7ffHjDGIVzY4SY.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Titillium Web'; + font-style: normal; + font-weight: 700; + src: url(./NaPDcZTIAOhVxoMyOr9n_E7ffHjDGItzYw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/assets/js/preferences.js b/assets/js/preferences.js index 2d381f1..66e228a 100644 --- a/assets/js/preferences.js +++ b/assets/js/preferences.js @@ -5,7 +5,7 @@ var prefsIndex = 'SalaMuseoGames/Prefs/v1'; var Prefs = window.SalaMuseoGames.Prefs = { softwarePwaManifests: { default: true, /* dependsOn: "pwaManifests", */ name: "Allow installing individual games as PWAs" }, pwaManifests: { default: false, name: "Allow installing the site home itself as a PWA" }, - offlineCache: { default: true, name: "Cache site pages and game files offline", summary: "Allow faster site navigation, and gameplay while offline, by caching unlimited data. Disable to save device storage. (Note: data for some emulators and games is always cached regardless of this setting; you can only manage their data in their interface if they show an option.)" }, + offlineCache: { default: true, section: "data", name: "Cache site pages and game files offline", summary: "Allow faster site navigation, and gameplay while offline, by caching unlimited data. Disable to save device storage. (Note: data for some emulators and games is always cached regardless of this setting; you can only manage their data in their interface if they show an option.)" }, dataExport: { section: "data", name: "Export site configuration and game saves", onclick: (function(){ async function makeDownloadObj (data) { var name = 'SalaMuseoGames-Export.json'; @@ -19,7 +19,7 @@ var Prefs = window.SalaMuseoGames.Prefs = { return { download: name, href: URL.createObjectURL(blob) }; } var data = { localStorage, indexedDB: {} }; - var dbs = ["EmulatorJS-core", "/data/saves", "/home/web_user/.renpy"]; + var dbs = ["EmulatorJS-core", "/data/saves", "/idbfs", "/home/web_user/.renpy"]; dbs.forEach(function(db){ indexedDB.open(db).onsuccess = (function(event){ idbBackupAndRestore.exportToJson(event.target.result).then(async function(json){ @@ -42,7 +42,7 @@ var Prefs = window.SalaMuseoGames.Prefs = { if ('CompressionStream' in window) { stream = stream.pipeThrough(new DecompressionStream('gzip')); } else { - return alert('Compressed archives are not supported in this browser. Please decompress externally and then upload a JSON file.'); + return alert('Compressed archives are not supported in this browser. Please decompress externally (via gzip or 7z) and then upload the extracted JSON file.'); } } else { return alert('File type not recognized.'); diff --git a/assets/js/pwa.js b/assets/js/pwa.js index 6b4fa1f..a089d64 100644 --- a/assets/js/pwa.js +++ b/assets/js/pwa.js @@ -1,11 +1,12 @@ (function(){ -var Prefs = SalaMuseoGames.Prefs; -var Software = SalaMuseoGames.page.software_data; +var SMG = SalaMuseoGames; +var Prefs = SMG.Prefs; +var Software = SMG.page.software_data; var Screen = (Software && Software.screen); -var Site = SalaMuseoGames.site; -var iconUrl = SalaMuseoGames.page.icon; -var coverUrl = SalaMuseoGames.page.image; +var Site = SMG.site; +var iconUrl = SMG.page.icon; +var coverUrl = SMG.page.image; var sitePath = (Site.url + Site.baseurl); function absoluteUrlFromRelative (url) { @@ -19,7 +20,7 @@ function absoluteUrlFromRelative (url) { } if (Prefs.pwaManifests.value || Prefs.softwarePwaManifests.value) { - var manifestData; + var manifestData = {}; if (Prefs.softwarePwaManifests.value && Software) { // specific manifests on games pages var pageUrl = (location.href + '?pwaLaunch=1'); // TODO Url parameters to make the game open fullscreen and automatically start diff --git a/assets/js/software-embed.js b/assets/js/software-embed.js index 87f664e..ca69ec1 100644 --- a/assets/js/software-embed.js +++ b/assets/js/software-embed.js @@ -44,7 +44,7 @@ function controlsHtml (picks) { return ( ' var frame = wrapper.querySelector('iframe#software-embed-frame'); var src = frame.src; frame.src = ''; - frame.src = src; + setTimeout(function(){ frame.src = src }, 33); // timeout to work around a bug where the frame remains blank }) + ' ' : '') + '' ) } diff --git a/assets/media/games/pokemon-harvestcraft/RSy-V9qg-Imgur.png b/assets/media/games/pokemon-harvestcraft/RSy-V9qg-Imgur.png new file mode 100644 index 0000000..c003da2 Binary files /dev/null and b/assets/media/games/pokemon-harvestcraft/RSy-V9qg-Imgur.png differ diff --git a/local.sh b/local.sh index 8cc6ed1..ee88d86 100644 --- a/local.sh +++ b/local.sh @@ -30,10 +30,11 @@ software_data: frame_url: "" frame_index: "" release: + authors: "" region: "" source: "" - type: "" - year: "" + type: "" + year: "" screen: orientation: "" display: "" diff --git a/pages/about.md b/pages/about.md index 636755a..2762cb0 100644 --- a/pages/about.md +++ b/pages/about.md @@ -25,3 +25,10 @@ Central to the success of Sala Museo Games is the emulation community and cuttin As we embrace the future of gaming, Sala Museo Games remains at the forefront of innovation. Our dedication to cutting-edge web technology ensures a smooth and responsive gaming experience, whether you're accessing the site on a desktop, laptop, or mobile device. We believe in making gaming accessible to everyone, and our platform reflects this commitment through its user-friendly design and responsive interface. In conclusion, Sala Museo Games stands as a testament to the artistry and cultural significance of video games. By combining a curated collection, online playability, community engagement, and cutting-edge technology, we invite you to embark on a journey through the digital landscapes that have shaped the gaming world. Join us in celebrating the past, present, and future of video games, where every click is an invitation to explore, play, and appreciate the art of gaming. + +## Bonus + +Sala Museo Games is fully open-source and costantly improving. Any contributions are welcome on the GitHub repository. + +As I personally work on improvements and additions to this website and its underlying technologies, I usually write devlogs on my microblog: octospacc.altervista.org/?s=SalaMuseoGames. +