Jump to content

Leaderboard

  1. XxPhoenix1996xX

    XxPhoenix1996xX

    Moderator


    • Points

      4

    • Posts

      35


  2. Deoxyz

    Deoxyz

    Contributor


    • Points

      2

    • Posts

      396


  3. jojo12100

    jojo12100

    Innovator


    • Points

      1

    • Posts

      1431


  4. Tabun_ne

    Tabun_ne

    Member


    • Points

      1

    • Posts

      18


Popular Content

Showing content with the highest reputation on 12/31/18 in all areas

  1. AFAIK, there are a few japanese forums (from 2008 or so), in the early years of Gen IV, where japanese users refers to Ahiru's Wonderland. Maybe we can't contact Ahiru but one of the users to try to find answers, probably they won't still active but who knows, we might find something more than a japanese Celebi? Yeah, I also agree, most of them stop caring about Pokémon and some others (most from Ahiru's years) don't even know PPorg exists. True , the chances to find something in a Stadium GS cart are REALLY low, but I think that is the only way we may get something by ourselves.
    3 points
  2. What bothers me is that when these guys retire, many will likely completely stop caring about doing further trading/collecting, yet still keep these things under lock and key years later to be forgotten. Though those that are still into trading and have one of these, I don't think it would hurt to have at least ONE Japanese Celebi public in the meantime. If anyone reading this has one, I would be willing to negotiate a fair variety from my private stuff just to allow one Japanese Celebi to surface. Before I sold off my N64 collection, I bypassed the region lock on Japanese carts by replacing the back of the cartridges with those from cheap trash sports games: https://imgur.com/a/zCBx3 Being worth the time is subjective, as pretty much most efforts of event preservation are. I used to think buying GBA distributions were worth the hundreds/thousands of dollars. These days? Hell no. It all depends on your passion and drive to achieve that goal. I'm pretty sure a few people I know here would be more than willing to start occasionally buying Stadium GS carts on eBay. Though the real problem I see at the core of what I was recommending is the very slim chance of finding a real one in the storage. I used to do occasionally this with Japanese Gen I carts and never got lucky. It can happen though, look at the SpaceWorld 97 Mew. However since you're referring to manipulating data from the rental Celebi, personally I wouldn't, but I don't speak for everyone.
    2 points
  3. FYI, The 1st NDS Japan Pokemon Distribution Cartridge has been preserved for all! Japan distribution cartridges are extremely rare. Indeed, this is the first Japan NDS cartridge that has been preserved. I had not even seen a picture of a Japan NDS distribution cartridge in the wild, until I made this purchase! Boy oh boy was this cartridge not cheap to obtain! I have seen pictures of GBA Japan distribution cartridges, but this remains the only Japanese one that we have seen pictures of for NDS. This cartridge is extremely rare. According to a Nintendo website archive, this event was distributed at under 1000 different locations in Japan. This cartridge is a true one of a kind cartridge, another one is not known to exist in private hands! My hopes is that preservation of this cartridge, will be seen by others who have distribution cartridges that have not yet been preserved. My hopes is that that they will be encouraged to forever preserve there distribution cartridges publicly for future generations to use. If anyone knows of others having this cartridge, please let me know. Or if others has pictures of Japan NDS cartridges, let me know. This is "Strongest Pokemon Distribution" from Japan that distributes Milotic, Dragonite, and Salamence. Happy Holidays to All!
    1 point
  4. The mystery is growing about Illusion Forest legendary beasts. Actually I searched around Zoroark datas in the RAM in order to find something but all I got were empty slot and that strange thing (which can be the key of the mystery but I don't understand what it is). GameEvent.bin Plus I noticed something weird at the same place @theSLAYER found the Entei/Raikou/Suicune notes, just before the fight I found that: Edit: At the same place after the illusion is broken My theory for the moment is that the game generates the sprite and the nickname of a legendary beast and that's all. But it doesn't make sense if they can be shiny. Because a PID must be generated to do so and it seems to not use the same as Zoroark. What the hell did GF do? It totally explain why it's shinylocked but why didn't they generate one instead of using that weird trick? At least it can explain why we don't have that trick anymore since but I really don't understand it. In any case if an upcoming day we found the datas don't hope too high. The beast will have Zoroark ability, gender and attacks. Edit2: If you catch the legendary beast without any damage like with a MasterBall it'll display the following message:
    1 point
  5. banner.bin and banner_s.bin are both found in the /FONT/ folder. They contain data for the dungeon title font. File Structure The file uses SIR0 headers to store its pointers. General SIR0 details can be found in the main SIR0 documentation. The sections below will cover only banner.bin-specific blocks of data. Name Offset Size (Per Element) # of Elements Description SIR0 Header 0x00 16 Bytes 1 Details in the SIR0 documentation Glyph Textures Pointed by Glyph Metadata Varies Specified by Content Header Each element is read nibble-by-nibble to assemble the glyph. Glyph Metadata Pointed by Content Header 8 Bytes Specified by Content Header Each element contains a pointer to the glyph texture, the letter it represents, and how many pixels wide the letter is. Content Header Pointed by SIR0 Header 12 Bytes 1 Contains the pointer to Glyph Metadata, and the number of elements in that data block. Pointer Offsets List Pointed by SIR0 Header 1 Byte Varies Details in the SIR0 documentation SIR0 Padding After Pointer Offsets List Varies --- Details in the SIR0 documentation Content Header 3 Sections containing 4 bytes each: AA AA AA AA BB BB BB BB CC CC CC CC A. Pointer to the start of the Glyph Metadata block. Little-Endian. B. Pointer to the number of elements in the Glyph Metadata block. Little-Endian. C. Unknown. Glyph Metadata This is an array of elements, each 8 bytes. Contains 3 sections: AA AA AA AA BB BB CC CC A. Pointer to this element's texture data in the Glyph Textures block. Little-Endian. B. The letter that the glyph represents. Little-Endian. The encoding varies by language, which is covered in the strings documentation. C. The number of pixels to move the cursor to the right, when drawing the text in-game. Little-Endian. Appears to be signed. Glyph Textures Individual elements in the Glyph Textures block have a variable length. Data is read nibble-by-nibble: First, the high bit of the nibble is checked. If it is 1, then the game will read the next nibble as pixel data and draw it N times. N is the other 3 bits of the first nibble. If it is 0, then the game will read the next N nibbles as pixel data and draw them in that order. N is the other 3 bits of the first nibble. The game draws pixels in order of left to right, top to bottom. It moves on to the next row when 24 pixels have been drawn, and ends the parsing when 24 rows have been drawn. Parsing For convenience, the following python code is provided below to parse these files: import sys import os import re import shutil import math import struct import glob from PIL import Image GLYPH_SIZE_D = 24 PALETTE_MAP = [0,8,24,41,57,74,90,107,123,140,156,173,189,206,214,231] def ReadNextNib(reader, next_nibbles): if len(next_nibbles) > 0: return next_nibbles.pop() byte = int.from_bytes(reader.read(1), 'little') next_nibbles.append(byte & 15) return byte >> 4 def ExportDChar(reader, char_val): pixels = [] next_nibbles = [] while len(pixels) < GLYPH_SIZE_D * GLYPH_SIZE_D: control_nib = ReadNextNib(reader, next_nibbles) draw_repeat = control_nib >> 3 draw_amount = control_nib & 7 if draw_repeat == 1: pixel_nib = ReadNextNib(reader, next_nibbles) pixel_val = PALETTE_MAP[pixel_nib] for ii in range(draw_amount): pixels.append(pixel_val) else: for ii in range(draw_amount): pixel_nib = ReadNextNib(reader, next_nibbles) pixel_val = PALETTE_MAP[pixel_nib] pixels.append(pixel_val) return_img = Image.new('RGBA', (GLYPH_SIZE_D, GLYPH_SIZE_D), (0, 0, 0, 0)) datas = [(0, 0, 0, 0)] * (GLYPH_SIZE_D * GLYPH_SIZE_D) for yy in range(GLYPH_SIZE_D): for xx in range(GLYPH_SIZE_D): pixel_idx = yy * GLYPH_SIZE_D + xx if pixels[pixel_idx] > 0: datas[pixel_idx] = (255,255,255,pixels[pixel_idx]) return_img.putdata(datas) return return_img def ReadChars(reader, amt): return_imgs = [] for ii in range(amt): glyph_ptr = int.from_bytes(reader.read(4), 'little') glyph_val = int.from_bytes(reader.read(2), 'little') advance = int.from_bytes(reader.read(2), 'little') cur_ptr = reader.tell() reader.seek(glyph_ptr) return_img = ExportDChar(reader, glyph_val) return_imgs.append((return_img, glyph_val, advance)) reader.seek(cur_ptr) return return_imgs def ReadFont(input_file): output_parent, basename = os.path.split(input_file) dir, _ = os.path.splitext(basename) output_dir = os.path.join(output_parent, dir) if not os.path.exists(output_dir): os.mkdir(output_dir) with open(input_file, "rb") as reader: ##Read SIR0 Header: ptr to font header reader.seek(4) font_ptr = int.from_bytes(reader.read(4),'little') ##Read font header: ptr to charmap, amount of chars reader.seek(font_ptr) list_ptr = int.from_bytes(reader.read(4),'little') char_amt = int.from_bytes(reader.read(4),'little') _ = int.from_bytes(reader.read(4), 'little')#don't know what this is reader.seek(list_ptr) imgs = ReadChars(reader, char_amt, mode) for idx, img_pair in enumerate(imgs): img = img_pair[0] code = img_pair[1] advance = img_pair[2] if advance > 0: img = img.crop((0,0,advance,GLYPH_SIZE_D)) img.save(os.path.join(output_dir, str(code) + '.png'))
    1 point
  6. You can find them in the Download section. Here.
    1 point
×
×
  • Create New...