Skip to content

Commit 615c3ca

Browse files
committed
Changes to Pokemon Home API article.
Signed-off-by: elModo7 <elmodo7yt@gmail.com>
1 parent b268c44 commit 615c3ca

File tree

1 file changed

+99
-16
lines changed

1 file changed

+99
-16
lines changed

personal_projects/pokemon_home/index.html

Lines changed: 99 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<h1 class="code-line" data-line-start="0" data-line-end="1"><a id="cloud_based_pokemon_storage_system"></a>Cloud-Based Pokémon Storage System</h1>
2+
<br>
23
<div class="row">
34
<div class="col-md-3 col-sm-6 col-12">
45
<a href="https://youtu.be/xZXUb8GOvZw" target="_blank">
@@ -87,12 +88,6 @@ <h3 class="code-line" data-line-start="49" data-line-end="50"><a id="clientside_
8788
</ul>
8889
<br>
8990

90-
<div style="display: flex; flex-wrap: wrap; justify-content: space-between;">
91-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/thumbnail_hd.jpg" alt="Image 1" style="width: 48%; margin: 1%;">
92-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/thumbnail2_hd.jpg" alt="Image 2" style="width: 48%; margin: 1%;">
93-
</div>
94-
<br>
95-
9691
<h2 class="code-line" data-line-start="94" data-line-end="95"><a id="frontend_backend_development"></a>Frontend &amp; Backend Development</h2>
9792
<p class="has-line-data" data-line-start="96" data-line-end="97">
9893
For the frontend, I used a custom-built library, <strong>GBAMEM</strong>, which tracks the running emulator, retrieves base pointers, and maps them to the game’s memory address. The library interacts with a cut-down version of my <strong>pokecrystal</strong> wrapper to extract game data in a more user-friendly format, allowing me to convert memory data into JSON objects for seamless Pokémon uploads and downloads.
@@ -106,6 +101,91 @@ <h2 class="code-line" data-line-start="94" data-line-end="95"><a id="frontend_ba
106101
<p class="has-line-data" data-line-start="102" data-line-end="103">I also experimented with shadow traffic techniques to monitor mirrored traffic behavior across different versions of the backend services.</p>
107102
<br>
108103

104+
<h3 class="code-line" data-line-start="64" data-line-end="65"><a id="api_pokemon_data_exchange"></a>API Pokémon Data Exchange:</h3>
105+
<pre class="col-md-12"><code class="language-java">curl --location 'https://odroid.pc:443/pokehome/pokemon/add' \
106+
--header 'Content-Type: application/json' \
107+
--header 'Authorization: Bearer <bearer_placeholder>' \
108+
--data '{
109+
"id": 0,
110+
"nickname": "PORYGON2",
111+
"specieId": 233,
112+
"specie": "Porygon2",
113+
"gender": 0,
114+
"shiny": 0,
115+
"game": 1,
116+
"user": 1,
117+
"rawdata": "AC,69,B0,A1,79,C6,E4,02,89,E7,00,00,00,00,00,00,00,00,00,00,69,50,14,1E,0A,0A,46,00,C2,82,37,00,00,00,A5,00,A5,00,63,00,71,00,4C,00,78,00,6D,C7",
118+
"attack1Id": 105,
119+
"attack2Id": 176,
120+
"attack3Id": 161,
121+
"attack4Id": 121,
122+
"attack1": "Recover",
123+
"attack2": "Conversion2",
124+
"attack3": "Tri Attack",
125+
"attack4": "Egg Bomb",
126+
"hpIv": 0,
127+
"hpEv": 0,
128+
"attackIv": 6,
129+
"attackEv": 0,
130+
"defenseIv": 9,
131+
"defenseEv": 0,
132+
"specialAttackIv": 0,
133+
"specialAttackEv": 0,
134+
"specialDefenseIv": 0,
135+
"specialDefenseEv": 0,
136+
"speedIv": 5,
137+
"speedEv": 0,
138+
"ppUpAttack1": 0,
139+
"ppUpAttack2": 0,
140+
"ppUpAttack3": 0,
141+
"ppUpAttack4": 0,
142+
"itemId": 172,
143+
"item": "Up-Grade",
144+
"pokerus": 0,
145+
"hp": 165,
146+
"attack": 99,
147+
"defense": 113,
148+
"specialAttack": 120,
149+
"specialDefense": 109,
150+
"speed": 76,
151+
"trainerId": 50916,
152+
"trainerSid": 0,
153+
"trainerName": "PKHOME",
154+
"friendship": 70,
155+
"level": 55,
156+
"experience": 166375
157+
}'</code></pre>
158+
<br>
159+
160+
<h3 class="code-line" data-line-start="64" data-line-end="65"><a id="pokemon_db_insert"></a>RAW SQL Pokémon Insert:</h3>
161+
<pre class="col-md-12"><code class="language-sql">INSERT INTO pokehome.pokemon (
162+
id, nickname, specie_id, gender, shiny,
163+
game, `user`, rawdata, attack1_id,
164+
attack2_id, attack3_id, attack4_id,
165+
hp_iv, hp_ev, attack_iv, attack_ev,
166+
defense_iv, defense_ev, special_attack_iv,
167+
special_attack_ev, special_defense_iv,
168+
special_defense_ev, speed_iv, speed_ev,
169+
pp_up_attack1, pp_up_attack2, pp_up_attack3,
170+
pp_up_attack4, item_id, pokerus,
171+
hp, attack, defense, special_attack,
172+
special_defense, speed, trainer_id,
173+
trainer_sid, trainer_name, friendship,
174+
`level`, experience, specie, item,
175+
attack1, attack2, attack3, attack4
176+
)
177+
VALUES
178+
(
179+
719, 'HOUNDOOM', 229, 0, 0, 1, 1, 'E5,00,69,F2,5E,35,C6,E4,06,8A,CE,00,00,00,00,00,00,00,00,00,00,29,D9,14,0F,0A,0F,4B,00,C2,82,46,00,00,00,C2,00,C2,00,85,00,57,00,9C,00,AB,00,81',
180+
105, 242, 94, 53, 0, 0, 2, 0, 9, 0, 9, 0,
181+
9, 0, 13, 0, 0, 0, 0, 0, 0, 0, 194, 133, 87,
182+
171, 129, 156, 50916, 0, 'PKHOME', 75,
183+
70, 428750, 'Houndoom', '0', 'Recover',
184+
'Crunch', 'Psychic', 'Flamethrower'
185+
);
186+
</code></pre>
187+
<br>
188+
109189
<h2 class="code-line" data-line-start="24" data-line-end="25"><a id="project_backstory"></a>Backstory of the project</h2>
110190
<p class="has-line-data" data-line-start="3" data-line-end="4">
111191
After a long workday, I often find that time is scarce. Between the gym, household tasks, and social activities, my spare time is limited. However, on occasion, I manage to carve out time for my hobbies. If I’m not too exhausted, I spend these moments researching, developing, or documenting personal projects.
@@ -134,7 +214,7 @@ <h3 class="code-line" data-line-start="64" data-line-end="65"><a id="hardware_in
134214
<li class="has-line-data" data-line-start="68" data-line-end="69">ARM Cortex A15 (Exynos 5422)</li>
135215
<li class="has-line-data" data-line-start="69" data-line-end="70">2GB RAM</li>
136216
<li class="has-line-data" data-line-start="70" data-line-end="71">Public Network 1</li>
137-
<li class="has-line-data" data-line-start="71" data-line-end="73">Purpose: Skipper (load balancing)</li>
217+
<li class="has-line-data" data-line-start="71" data-line-end="73">Purpose: Skipper (load balancing, routing, rate limiting...)</li>
138218
</ul>
139219
</li>
140220
<br>
@@ -190,6 +270,17 @@ <h2 class="code-line" data-line-start="56" data-line-end="57"><a id="side_projec
190270
</ul>
191271
<br>
192272

273+
<h2 class="code-line" data-line-start="56" data-line-end="57"><a id="project_media"></a>Project Media</h2>
274+
<div style="display: flex; flex-wrap: wrap; justify-content: space-between;">
275+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/home.jpg" alt="Image 1" style="width: 48%; margin: 1%;">
276+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/box.jpg" alt="Image 2" style="width: 48%; margin: 1%;">
277+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/team.jpg" alt="Image 3" style="width: 48%; margin: 1%;">
278+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/gbamem_pokecrystal.png" alt="Image 4" style="width: 48%; margin: 1%;">
279+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/thumbnail_hd.jpg" alt="Image 1" style="width: 48%; margin: 1%;">
280+
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/thumbnail2_hd.jpg" alt="Image 2" style="width: 48%; margin: 1%;">
281+
</div>
282+
<br>
283+
193284
<h2 class="code-line" data-line-start="104" data-line-end="105"><a id="challentes_future_enhancements"></a>Challenges and Future Enhancements</h2>
194285
<p class="has-line-data" data-line-start="106" data-line-end="107">
195286
I initially considered integrating <strong>Jenkins</strong> for CI/CD, but my current self-managed in-micro cron jobs and scheduled routines proved more than enough for this project’s scope. In the future, I would like to explore integrating <strong>Jenkins</strong>, <strong>Ansible</strong>, or <strong>Puppet</strong> to streamline deployment on some other larger scale hobby projects.
@@ -200,12 +291,4 @@ <h2 class="code-line" data-line-start="104" data-line-end="105"><a id="challente
200291
<p class="has-line-data" data-line-start="110" data-line-end="111">
201292
This project, while rooted in nostalgia and personal interest, turned into an excellent opportunity to explore new technologies and practice each and every deployment step.
202293
</p>
203-
<br><br>
204-
205-
<h2 class="code-line" data-line-start="56" data-line-end="57"><a id="project_media"></a>Project Media</h2>
206-
<div style="display: flex; flex-wrap: wrap; justify-content: space-between;">
207-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/home.jpg" alt="Image 1" style="width: 48%; margin: 1%;">
208-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/box.jpg" alt="Image 2" style="width: 48%; margin: 1%;">
209-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/team.jpg" alt="Image 3" style="width: 48%; margin: 1%;">
210-
<img class="article-inner-image" src="static/img/personal_projects/pokemon_home/gbamem_pokecrystal.png" alt="Image 4" style="width: 48%; margin: 1%;">
211-
</div>
294+
<br><br>

0 commit comments

Comments
 (0)