Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Confirms only 206-432 & 661-999 unboosted Special Attack activate the Special Defense badge boost from Glacierbadge
- #include <stdio.h>
- typedef unsigned char bool;
- unsigned char A, B, C, D, E, F;
- bool CARRY, ZERO;
- unsigned int MAX_STAT = (unsigned int) 999;
- unsigned char LOW(unsigned int integer){ return (unsigned char) (integer % 256); }
- unsigned char HIGH(unsigned int integer){ return (unsigned char) (integer / 256); }
- void resetGlobals(){
- A = 0;
- B = 0;
- C = 0;
- D = 0;
- E = 0;
- CARRY = 0;
- ZERO = 0;
- }
- void ld(unsigned char* dest, unsigned char value){
- *dest = value;
- }
- void srl(unsigned char* reg){
- CARRY = (*reg & 1);
- *reg >>= 1;
- ZERO = (*reg == 0);
- }
- void rr(unsigned char* reg){
- unsigned char newCarry;
- newCarry = (*reg & 1);
- *reg >>= 1;
- *reg |= (CARRY << 7);
- CARRY = newCarry;
- ZERO = (*reg == 0);
- }
- void add(unsigned char reg){
- unsigned int tmpA;
- tmpA = A + reg;
- A += reg;
- CARRY = (tmpA > 255);
- ZERO = (A == 0);
- }
- void adc(unsigned char reg){
- unsigned int tmpA;
- tmpA = A + reg + CARRY;
- A += (reg + CARRY);
- CARRY = (tmpA > 255);
- ZERO = (A == 0);
- }
- void sub(unsigned char reg){
- int tmpA;
- tmpA = A - reg;
- A -= reg;
- CARRY = (tmpA < 0);
- ZERO = (A == 0);
- }
- void sbc(unsigned char reg){
- int tmpA;
- tmpA = A - reg - CARRY;
- A -= (reg + CARRY);
- CARRY = (tmpA < 0);
- ZERO = (A == 0);
- }
- void BoostStat(unsigned char _high, unsigned char _low){
- unsigned char high = _high;
- unsigned char low = _low;
- ld(&A, high);
- ld(&D, A);
- ld(&E, low);
- srl(&D);
- rr(&E);
- srl(&D);
- rr(&E);
- srl(&D);
- rr(&E);
- ld(&A, low);
- add(E);
- ld(&low, A);
- ld(&A, high);
- adc(D);
- ld(&high, A);
- ld(&A, low);
- sub(LOW(MAX_STAT));
- ld(&A, high);
- sbc(HIGH(MAX_STAT));
- if(CARRY){
- return;
- }
- ld(&A, HIGH(MAX_STAT));
- ld(&high, A);
- ld(&A, LOW(MAX_STAT));
- ld(&low, A);
- return;
- }
- bool testFunction(unsigned char high, unsigned char low){
- BoostStat(high, low);
- srl(&A);
- return CARRY;
- }
- int main()
- {
- unsigned char highSpcAtk;
- unsigned char lowSpcAtk;
- unsigned int MIN_INPUT = 0;
- unsigned int MAX_INPUT = 999;
- bool out;
- for(unsigned int i = MIN_INPUT; i <= MAX_INPUT; i++){
- resetGlobals();
- highSpcAtk = HIGH(i);
- lowSpcAtk = LOW(i);
- out = testFunction(highSpcAtk, lowSpcAtk);
- printf("%4d %s\n", (highSpcAtk<<8)|lowSpcAtk, out ? "BOOST":"");
- }
- }
Add Comment
Please, Sign In to add comment