Pokétch for Pokémon Essentials (Dual/Single-screen)

Pokétch for Pokémon Essentials (Dual/Single-screen)

Pokémon Essentials Version
v18 ✅

You know that thing on your bottom screen in generation 4 (Sinnoh)? That's a Pokétch, or Poké Watch. I thought it'd be funny to try to replicate that in Pokémon Essentials, so that's what I did.

It supports both dual-screen and single-screen, though dual-screen is what it was initially designed for.

This Pokétch currently has a grand total of 23 apps:
  • Clock
  • Clicker
  • Calculator
  • Pedometer
  • Itemfinder
  • Move Tester
  • Rotom (custom)
  • Marking Map
  • Matchup Checker
  • Party
  • Color Changer
  • Kitchen Timer
  • Analog Watch
  • Stat Display (custom)
  • Roulette
  • Day Care Checker
  • Pokémon History
  • Calendar
  • Coin Flip
  • Stopwatch
  • Notepad (custom)
  • Alarm Clock
  • Safari Helper (custom)

You'll need to install Luka S.J.'s Easy Mouse System first of all.

There are three scripts you'll need to grab:
Put these scripts ABOVE the script sections that start with PScreen in their name.

Next, download the Graphics: Graphics

The Roulette app also requires RPG.Net. If you want to be able to use Roulette, you have to put this dll into your main, root folder:

Dual-screen Usage

You will first need to set SCREEN_HEIGHT in Settings to 768, which is double the normal height (384 * 2).

The script is configured for dual-screen by default. If you don't have the Pokétch, a background will be chosen (the path is in Pokétch_Main, NO_POKETCH_BACKGROUND).
You can also have to define where on the vertical axis the Pokétch will be. By default, this is right underneath the first screen, meaning at a Y value of 384. This is POKETCH_Y in Pokétch_Main.
To actually tell the script that you're using dual-screen, you need to have DUAL_SCREEN in Pokétch_Main set to true.

Now to actually gain ownership of the Pokétch, you simply need to do pbObtainPoketch. By default, this will enable the Clock, Clicker, Calculator, and Analog Watch. You can change this by going in def pbObtainPoketch(animate = true) and changing the pbEnableApp in there.

To take away the Pokétch (and show the no_poketch_background again), you can call pbTakePoketch. This will not disable or enable any apps, but just take away the Pokétch.

IMPORTANT: Dual-screen Pokétch will likely have broken your battle system in terms of Pokémon positioning. To fix this, you'll need to fiddle around with Y values in PokeBattle_SceneConstants.

Single-screen Usage

Using the Pokétch with one screen is also an option. To configure it for single-screen, follow these steps:
  • Set SCREEN_HEIGHT in Settings to the normal height, 384.
  • Set DUAL_SCREEN in Pokétch_Main to false
  • Set POKETCH_Y in Pokétch_Main to 0
You now have a proper, normal game. The Pokétch is not running in the background anymore.
To call the Pokétch (from something like a pause menu or hotkey), call pbPoketch. This will open up the Pokétch.

General Usage

Each and every Pokétch app can be enabled and disabled. The methods behind this are:

You might be wondering, what's this app_id about?
Every Pokétch app has an ID. You could look this up manually in module PoketchApps and fill in the ID you found for your app, but you could also do PoketchApps::appname.
Let's say you want to get the ID of the Pokémon History app, you would do PoketchApps::PoketchPokemonHistory. All classes for Pokétch apps I wrote start with Poketch, but that's not a requirement. Spaces aren't allowed, and I didn't use any special characters (such as é).

If you want to enable or disable everything, you can use one of the following methods:

If you're using Dual-screen mode, you have the ability to force switch to an app by using pbChangeApp(app_id). This bypasses availability and usability, which means that it will switch to this app even if it's disabled, and even if the conditions that might be given in the class aren't met.

Documentation on the apps

Every app inherits from PoketchApp. This class creates the @viewport Viewport and @bg background Sprite in its constructor, def initialize.
Every Pokétch App must call super in its constructor first.
If the app uses click?, it must call super in def update.
Every Pokétch App should call super LAST in def dispose. This disposes @bg and @viewport.

If you want an app only to usable under certain conditions (on top of whether or not the app is enabled/disabled), you can add a method def self.usable?, which should return a boolean (true/false).
This app will show the computer's time. It will refresh whenever it detects the hour or minute has changed since the last time it refreshed. The method that refreshes the app is draw_time.
This app allows you to click on a button for a variable to be incremented with one for every button press. $PokemonTemp.click_count stores the click count, because it doesn't need to go into the save file, and the variable resets whenever you switch apps, so the PokemonTemp class was fine.
Yeah, I don't fancy talking about this one. All I can say is that it's one big, working mess.
Every event with .hidden in its event name will be picked up by the Itemfinder, if the event isn't unlisted.
To unlist an event, meaning that it won't be picked up by the itemfinder, use pbUnlist(event_id).
To list an event, meaning that it will be picked up by the itemfinder, use pbList(event_id). Every event is listed by default (if it has .hidden in the name).
You can specify messages the Rotom in this app will say to you. For documentation on the methods, please refer to class PoketchRotom in Pokétch_Apps.
Allows you to test type effectiveness. Pseudo types are ignored (?????, for example).
Counts your steps in variable $Trainer.steps. Adds a proc to Events.onStepTaken to increase the step count.
Allows you to drag and drop markings on the map. If you click the sprite, it'll be selected and follow your mouse around. If you click somewhere, it'll go there and be seen as unselected and no longer follow your mouse.
Only usable if you have 2 or more Pokémon in your party. Checks how well they would breed together. Clicking one of the icons picks the next slot in the Party and plays its cry. You can't check a Pokémon against itself.
Shows you your whole party. Shows HP (and fainted), and an item icon if they have an item. Clicking a Pokémon plays their cry.
Adds a colored overlay over the screen.
Counts down every Graphics.update call.
Display current time. See def position for the formula.
Shows you each party member's EVs and IVs. Plays its cry upon switching.
Only usable if you downloaded RPG.Net.dll.

You can draw in the circle. If you hit play, it'll spin until you click stop. Clear your drawings with the C button.
Shows you your Pokémon in the day care. If there's an egg, it'll display it.
Every Pokémon that evolves, is traded, caught, or is hatched, is registered in $Trainer.pokemonhistory. It displays the latest 12 and plays the cry if you touch a Pokémon.
It's a calendar. The current month has a box around it, and you can mark dates by clicking on them. Does support leap years.
Magikarp or ball. Heads or tails. Flip the coin by clicking on it.
Counts up every Graphics.update.
As the Memo Pad doesn't appear to be realizeable, I made a notepad instead. You can use your keyboard to write on it. These characters are supported:
You can write if the button is pressed. If it is pressed, you cannot walk or do anything other than write, switch apps, or click the button again to stop writing.
Goes off at the time you specify. It'll go off for the whole minute, unless you turn it off.
Only usable while in the Safari Zone. It displays the amount of balls you have and the amount of steps you have left. You can also end the safari zone game with it.

Feeling like making your own app?
I hope you'd be able to figure it out by reading the top of Pokétch_Apps and Pokétch_Utility.
If you have made your own app and feel like sharing, please feel free to leave your creations in this thread!
  • Marin
  • Modeling Clay (sprites for Rotom, Stat Display and Safari Helper)
  • Luka S.J. (for his Easy Mouse System)
First release
Last update
4.38 star(s) 8 ratings

More resources from Marin

Latest updates

  1. Update v1.3

    Updated to v18.
  2. Update v1.2

    Fixed battle transitions using the bottom-screen in its transition too with DUAL_SCREEN enabled.
  3. Update v1.1.3

    Updated to v1.1.3: Now compatible with the Modular Pause Menu Color Changer overlays now fade...

Latest reviews

Fantastic reproduction of the interfaces from Pokémon Diamond, Pearl and Platinum. Not to mention the completeness of the script, with 23 apps. Great script!
seeing as gen 4 was what I played as a kid, this gives some nostalgia. my only complaints about this is what it does to the battle scene when using dual screen and that the EV/IV checker app have the special ATK and Speed numbers backwards. I checked with debug since my mon had 31 speed IVs in debug but said it had 31 SPA IVs. last one is a simple fix but I'm not sure how to fix the positions on the battle scene
It is a really good feature for Pokémon Essentials, I could give one more star if it was compatible with EBS in the Dual Screen mode it would be awesome
I think this is the best plug-in out for Pokemon Essentials. It is a necessity for any developer. The only reason I give this 4 stars is because the color picker doesn't work. I am probably doing something wrong though. If it was possible to give 4.5 I would. This is an amazing addition to Pokemon Essentials, keep up the great work ;)
I'm aware about the bug with color overlays, and I'll get on it once I'm back home. Glad you like it!
This addition works well, not as it does in DPPT, but that's fine. Problem is it doesn't seem to be compatible with the DP pause menu script you've also made. Removing the DP menu script allowed the Pokétch script to work, and I'm not sure the problem, but other than that, good work on this script!
I'm not sure why it wouldn't work, I'll look into it.
Amazing! Poketch works great but I have a problem. The poketch remains when in battle. Im using dual screen. Can you fix this?
No, because this is a Pokétch and not a dual-screen battle scene.
works with 16.2, works well, looks good, and Marin helped when I needed it
It has a lot of interesting features. Some of them may be a big help during gameplay.
Seeing as you gave 4 stars, I assume there’s something you’re discontent with. Could you potentially provide feedback?