Code Monkey home page Code Monkey logo

libspec's Introduction

libSPEC

Library for Specialized Pokemon Editing in C

Supports the saves for GB (RG/RBY/GS), GBA (RSE/FRLG), DS (DPPt/HGSS), and DSi Enhanced (BW/B2W2).

For a total of 21 games spanning 16 years.

THIS LIBRARY IS UNFINISHED, EXPECT MASSIVE BREAKING CHANGES

libSPEC now has documentation!

Building

To build the library, you can simply type make and both the static and dynamic libraries will be generated in the lib directory.

Build Dependencies

  • GNU Make
  • CLANG/LLVM or GCC 4.7+
  • Little Endian compile target

The source uses standard C11 syntax, so a non GCC/CLANG compiler should work with a different Makefile.

libspec's People

Contributors

chase-san avatar gtgunner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

libspec's Issues

Allow editing of Secrect Base Decorations

Applies to GBC, GBA, and NDS.
The GBC has room decoration items for the players room.
The GBA has secret base decorations. Allow editing the slots and the base positions themselves (why not right?)
The NDS has the bases in the underground. Allow editing those items. Never visited the undergound, so donno.

Split GB and GBC files.

The Gameboy and Gameboy Color games (Gen 1 vs Gen 2), since the saves are a good bit different.

Add NDS pokemon party editing.

Small Block
DP 0x94
PLAT 0x9C
HGSS 0x94

Starts with 32 bit unsigned integer for party size.
There are a total of 6 slots.
Each slot is 236 bytes.
Total size of 1420 bytes.

Shiny Check

For GBA/NDS/DSI we should have an option for checking if a Pokemon is shiny.

GBA stat calculation inaccurate at low levels.

Example

Pokemon Emerald

Mudkip, level 8, NAIVE nature

STATS
HP 27 Atk 18 Def 14 SpAtk 14 SpDef 11 Spd 14

IV
HP 18 Atk 27 Def 14 SpAtk 14 SpDef 2 Spd 21

EV
HP 1 Atk 8 Def 0 SpAtk 0 SpDef 0 Spd 4

CALCULATED STATS
HP 25 Atk 12 Def 11 SpAtk 14 SpDef 11 Spd 18

GBA Rival Name Editing

Need the ability to edit the rival trainer name in the GBA games (if you can set your rivals name),

GBA Daycare Editing

Ability to edit the daycare pokemon in the GBA games (possibly the egg as well).

Occasional off by one in stat calculation.

While I deem this within an "acceptable margin of error", fixing up the stat calculation to fix this problem wouldn't hurt.

I think it has to do with that the GBA/NDS/DSI games use fixed point for stat calculation, where as I use integer math.

Changing my algorithm over to use fixed point would be as simple as multiplying by a number, and then dividing by that number again at the end.

However to properly test this, I will need a few examples of stats that are calculated incorrectly, that is to say, off by one.

Add NDS pokemon box editing.

Big Block
DPPt 0x4
HGSS 0x0

There is a total of 18 boxes.
Each box contains 30 pokemon.
Each slot is 136 bytes (0x88).
Each box is 136 * 30 = 4080 bytes in size.

In DPPt these boxes are consecutive.
In HGSS there is an additional padding following each box of 16 bytes.

Following the boxes, there is the box names. Each is 40 bytes in length, consisting of 20 16-bit characters. For HGSS these names follow the padding of the last box, plus an additional 8 bytes of padding before the start of the box names.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.