This wasn't difficult to sort out, as PS actually has the RB and RG sprites in its index, they just go (mostly) unused with the intention of adding features relating to them at a later date. I did, however, produce a Spaceworld 1997 package myself on GitHub, making the front and back sprites transparent while putting them on a PS canvas. This took...quite a long time to do, as I had to make a few assumptions as to what areas of the sprites are transparent or not. Regardless, this resulted in some new and improved back sprites that you can use for general enhancements as well, which I have made separate scripts for.
The steps to using this are quite simple;
- Install Tampermonkey in your browser. I use Firefox, but there's versions for most of them. It's just an extension for most, so it takes like 5 seconds.
- Click the new icon that should be on your hotbar, and click "Create new Script...". A window should open with some scary code-lookin things.
- From the options below, copy-paste the script in and save.
- If you install multiple, go to "Installed Userscripts" and enable/disable according to what you want. Disable all of them to return to normality!
If you want an easy place to get RBY sprites, use my RBY Sprites Project archive. Open an image in a new tab, and copy the link up to where the image itself is stored.
Here are the relevant scripts, install them all if you want to!
JavaScript:
// ==UserScript==
// @name RB sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/rb/gen1rb/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/rg/gen1rgb-back/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name RG sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/rg/gen1rg/BW-Fix/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/rg/gen1rgb-back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name SW97 sprites
// @version 1.2
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/sw97/front/BW-Fix/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/sw97/back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name May 1998 sprites
// @version 1.2
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/sw97/may98/front/BW-Fix/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/sw97/may98/back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name Yellow w/ Prototype Sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://raw.githubusercontent.com/PlagueVonKarma/rby-sprites-project/main/rb/gen1yellow-proto/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name RB + SW97 Back Sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://play.pokemonshowdown.com/sprites/gen1rb/BW-Fix/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/rby2k20/rby2k20/master/images/sprites/sw97-back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name RG + SW97 Back Sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1/', 'https://play.pokemonshowdown.com/sprites/gen1rg/BW-Fix/');
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/rby2k20/rby2k20/master/images/sprites/sw97-back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
JavaScript:
// ==UserScript==
// @name SW97 Back Sprites
// @version 1.1
// @description a
// @match https://replay.pokemonshowdown.com/*
// @match https://play.pokemonshowdown.com/*
// @grant none
// ==/UserScript==
var interval = 0.3;
function imgReplace() {
var images = document.getElementsByTagName('img'),
len = images.length, img, i;
for (i = 0; i < len; i += 1) {
img = images[i];
img.src = img.src.replace('https://play.pokemonshowdown.com/sprites/gen1-back/', 'https://raw.githubusercontent.com/rby2k20/rby2k20/master/images/sprites/sw97-back/BW-Fix/');
}
}
setInterval(imgReplace, interval * 1000);
Relevant Notes;
- If you install while PS is on an open tab, refresh it once you enable or disable a script for it to take effect if it doesn't already.
- If you skip animations, you may see the Yellow sprites for a split second which breaks immersion; there's a helpful solution to other situations below.
- Spaceworld 1997 / SW97 refers to the Gold & Silver prototype that was shown off at the Spaceworld 1997 event. The sprites here have an art style reminiscent of Red and Blue, featuring many unique sprites in the process, which is why I'm including them here.
- Nidoking's SW97 back sprite is unfinished in the prototype, being placed higher than others. I simply moved it down in line with everything else, so nothing should come up.
- SW97's back sprites sometimes have Pokemon positioned in full in various places, most notably with Psyduck. Thus, some positions may seem odd.
- Technically, Yellow palettes could be applied to the back sprites, but it took forever just to make all of these sprites transparent, and I'm not feeling the motivation to go through all that palette replacement for what may not even look good.
Code:
var interval = 0.3
"Hey PvK, can I do this for other gens???"
Absolutely, just a bit of link editing can work so long as it's in the index of sprites. Edit off the RB sprites one and you'll have it sorted in no time.
Anyway, I shall now flee to the safety of my dark room, this took way too long.
Last edited: