Ribose
Nobody reads these anyways so here's how I make/verify G/S/C BACKsprites.
I'm using Script-Fu (GIMP) to crop and transparentize, Visual Boy Advance screenshots (I say it isn't illegal because I own all Gen I and II game carts), and Python to compare images.
The longest part is sitting here with GameShark codes and 3 VBA emulators (G, S, C) and modifying the species, switching the Pkmn out and taking screenshots every turn... 251 times x 2 for shinies (even though I've determined so far that G/S are almost always the same and G/S/C shiny are almost always the same, but I've found a couple exceptions!). Here are my notes:
GAMESHARK CODES G/S/C ===================== PkMn Data Structure [00] Species [01] Held Item [02] Attack 1 [03] Attack 2 [04] Attack 3 [05] Attack 4 [06] OT ID (2) [07] [08] Experience (3) [09] [0A] [0B] EV data (10) [0C] [0D] [0E] [0F] [10] [11] [12] [13] [14] [15] DVs (2) [16] [17] PP1 [18] PP2 [19] PP3 [1A] PP4 [1B] Happiness [1C] Pokérus [1D] Caught data (2) [1E] [1F] Level [20] Status [21] ? [22] Current HP (2) [23] [24] Total HP (2) [25] [26] Attack (2) [27] [28] Defense (2) [29] [2A] Speed (2) [2B] [2C] Sp. Attack (2) [2D] [2E] Sp. Defense (2) [2F] Offsets: Poké 1 2 3 4 5 6 GS: DA2A DA5A DA8A DABA DAEA DB1A C: DCDF DD0F DD3F DD6F DD9F DDEF Codes: GAME/POKé: GS/1 GS/2 C/1 C/2 SPECIES: 01XX2ADA 01XX5ADA 91XXDFDC 91XX0FDD HP 100: 01644DDA 01647DDA 916402DD 916432DD HPMAX 100: 01644FDA 01647FDA 916404DD 916434DD DV NORMAL: 01FF3FDA 91FFF4DC 01FF40DA 91FFF5DC DV SHINY: 01EA6FDA 91EA24DD 01AA70DA 91AA25DD Generated: gs:init 01644DDA 01647DDA 01644FDA 01647FDA 01FF3FDA 01FF40DA 01EA6FDA 01AA70DA c:init 916402DD 916432DD 916404DD 916434DD 91FFF4DC 91FFF5DC 91EA24DD 91AA25DD gs 01162ADA 01165ADA c 9116DFDC 91160FDD
Script-Fu is Scheme:
(define (crop-sprite input) (let* ( (img (car (file-png-load RUN-NONINTERACTIVE input input))) (dsp (car (gimp-display-new img))) (drw (car (gimp-image-get-active-drawable img))) (lyr (car (gimp-image-get-active-layer img))) ) (gimp-image-crop img 58 57 7 39) (gimp-layer-add-alpha lyr) (gimp-fuzzy-select drw 0 0 15 CHANNEL-OP-ADD FALSE FALSE 0 FALSE) (gimp-edit-clear drw) ; actual position: 56x56, at x=8px y=40px (gimp-image-crop img 56 56 1 1) (file-png-save-defaults 1 img drw input input) (gimp-display-delete dsp) ;(gimp-image-delete img) ))
Python (with PIL) for compares (takes command line args for each image to compare "g_100" -> Spr b 2g 100.png, "c_100_s" -> Spr b 2c 100 s.png, etc):
import Image import ImageChops import sys im_name = "Spr b 2" ims = [] args = sys.argv i = 0 if len(args) > 1: for arg in args: if i > 0: ims = ims + ["Spr_b_2" + arg + ".png"] i = i + 1 i = 0 for im in ims: ims[i] = ims[i].replace("_", " ") i = i + 1 imo = [] i = 0 for im in ims: imo = imo + [Image.open(im)] print ims[i],imo[i] i = i + 1 diffs = [] i = 0 for im in ims: if i > 0: diffs = diffs + [ImageChops.difference(imo[i - 1], imo[i])] if len(diffs[i-1].getcolors()) > 1: print ims[i-1]," and ",ims[i]," do not match: color count = ", len(diffs[i-1].getcolors()) print diffs[i-1].getcolors()[0][0],diffs[i-1].getcolors()[1][0] diffs[i-1].show() i = i + 1
Sprites that need correction:
- File:Spr b 2c 002.png (I can't overwrite the redirect with an image)