Last active
April 23, 2017 04:20
-
-
Save kamronbatman/594e376ab2c388ea7216bf9b04a76104 to your computer and use it in GitHub Desktop.
Unused Pokemon Generation - PCJP 2003
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; =============== S U B R O U T I N E ======================================= | |
pokemon_generation_unused | |
var_34 = -0x34 | |
var_30 = -0x30 | |
var_2C = -0x2C | |
var_28 = -0x28 | |
var_24 = -0x24 | |
PUSH {R4-R7,LR} | |
MOV R7, R10 | |
MOV R6, R9 | |
MOV R5, R8 | |
PUSH {R5-R7} | |
SUB SP, SP, #0x14 | |
MOVS R7, R1 | |
LDR R1, =0x3005AA0 | |
LDRB R6, [R1,#0xA] | |
LDRB R0, [R1,#0xB] | |
LSLS R0, R0, #8 | |
ORRS R6, R0 | |
LDRB R0, [R1,#0xC] | |
LSLS R0, R0, #0x10 | |
ORRS R6, R0 | |
LDRB R0, [R1,#0xD] | |
LSLS R0, R0, #0x18 | |
ORRS R6, R0 ; r6 = sidtid | |
BL rand | |
MOVS R4, R0 | |
BL rand | |
LSLS R4, R4, #0x10 | |
ORRS R4, R0 | |
LDR R3, =0xFFFF0000 | |
LSRS R2, R6, #0x10 | |
LDR R0, =0xFFFF | |
ANDS R0, R6 | |
EORS R2, R0 | |
B loc_201E7C2 | |
; --------------------------------------------------------------------------- | |
ALIGN 4 | |
dword_201E7B4 DCD 0x3005AA0 ; DATA XREF: pokemon_generation_unused+Er | |
dword_201E7B8 DCD 0xFFFF0000 ; DATA XREF: pokemon_generation_unused+32r | |
dword_201E7BC DCD 0xFFFF ; DATA XREF: pokemon_generation_unused+36r | |
; --------------------------------------------------------------------------- | |
loc_201E7C0 ; CODE XREF: pokemon_generation_unused+5Aj | |
ADDS R4, #1 | |
loc_201E7C2 ; CODE XREF: pokemon_generation_unused+3Cj | |
MOVS R1, R4 | |
ANDS R1, R3 | |
LSRS R0, R1, #0x10 | |
EORS R0, R2 | |
EORS R0, R1 | |
CMP R0, #7 | |
BLS loc_201E7C0 | |
MOVS R0, R7 | |
BL initPartyData | |
MOVS R5, #0 | |
MOVS R2, #0 | |
LDR R1, =unk_202EA54 | |
LDRH R0, [R1,#(word_202EA56 - 0x202EA54)] | |
CMP R0, #0 | |
BEQ loc_201E806 | |
loc_201E7E2 ; CODE XREF: pokemon_generation_unused+90j | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
ADDS R0, R0, R1 | |
LDRH R0, [R0,#2] | |
ADDS R0, R5, R0 | |
LSLS R0, R0, #0x10 | |
LSRS R5, R0, #0x10 | |
ADDS R0, R2, #1 | |
LSLS R0, R0, #0x18 | |
LSRS R2, R0, #0x18 | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
ADDS R0, R0, R1 | |
LDRH R0, [R0,#2] | |
CMP R0, #0 | |
BNE loc_201E7E2 | |
loc_201E806 ; CODE XREF: pokemon_generation_unused+6Cj | |
MOVS R0, R5 | |
BL sub_2019708 | |
LSLS R0, R0, #0x10 | |
LSRS R5, R0, #0x10 ; R5 = R0 >> 16 | |
MOVS R2, #0 | |
LDR R1, =unk_202EA54 | |
LDRH R0, [R1,#(word_202EA56 - 0x202EA54)] | |
CMP R0, #0 | |
BEQ loc_201E85C | |
MOV R8, R1 | |
MOV R3, R8 | |
loc_201E81E ; CODE XREF: pokemon_generation_unused+D8j | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
ADDS R1, R0, R3 ; R1 = R0 + 100 (byte length) | |
LDRH R0, [R1,#2] | |
CMP R5, R0 | |
BCS loc_201E834 | |
LDRH R5, [R1,#4] | |
B loc_201E84E | |
; --------------------------------------------------------------------------- | |
off_201E830 DCD unk_202EA54 ; DATA XREF: pokemon_generation_unused+66r | |
; pokemon_generation_unused+9Er | |
; --------------------------------------------------------------------------- | |
loc_201E834 ; CODE XREF: pokemon_generation_unused+B6j | |
SUBS R0, R5, R0 | |
LSLS R0, R0, #0x10 | |
LSRS R5, R0, #0x10 | |
ADDS R0, R2, #1 | |
LSLS R0, R0, #0x18 | |
LSRS R2, R0, #0x18 | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
ADDS R0, R0, R3 | |
LDRH R0, [R0,#2] | |
CMP R0, #0 | |
BNE loc_201E81E | |
loc_201E84E ; CODE XREF: pokemon_generation_unused+BAj | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
ADD R0, R8 | |
LDRH R0, [R0,#2] | |
CMP R0, #0 | |
BNE loc_201E85E | |
loc_201E85C ; CODE XREF: pokemon_generation_unused+A4j | |
MOVS R2, #0 | |
loc_201E85E ; CODE XREF: pokemon_generation_unused+E6j | |
LDR R0, =unk_202EA54 | |
MOV R10, R0 | |
LSLS R0, R2, #2 | |
ADDS R0, R0, R2 | |
LSLS R0, R0, #2 | |
MOV R8, R0 | |
MOV R0, R10 | |
ADDS R0, #0x10 | |
ADD R0, R8 | |
LDR R0, [R0] | |
CMP R0, #0 | |
BEQ loc_201E89C ; Branch if not force shiny | |
LDR R0, =0xFFFF0000 | |
ANDS R4, R0 | |
MOVS R1, R6 | |
ANDS R1, R0 | |
LSRS R1, R1, #0x10 | |
LDR R0, =0xFFFF | |
ANDS R0, R6 | |
EORS R1, R0 | |
LSRS R0, R4, #0x10 | |
EORS R1, R0 | |
ORRS R4, R1 | |
MOVS R0, #8 | |
NEGS R0, R0 | |
ANDS R4, R0 | |
BL rand | |
MOVS R1, #7 | |
ANDS R1, R0 | |
ORRS R4, R1 | |
loc_201E89C ; CODE XREF: pokemon_generation_unused+100j | |
MOV R0, R8 | |
ADD R0, R10 | |
LDRB R2, [R0] | |
MOVS R1, #1 | |
MOV R9, R1 | |
STR R1, [SP,#0x34+var_34] | |
STR R4, [SP,#0x34+var_30] | |
STR R1, [SP,#0x34+var_2C] | |
STR R6, [SP,#0x34+var_28] | |
MOVS R0, R7 | |
MOVS R1, R5 | |
MOVS R3, #0x20 | |
BL buildPkm | |
LDR R4, =pPkName | |
LDR R2, [R4] | |
CMP R2, #0 | |
BEQ loc_201E8D4 | |
MOVS R0, R7 | |
MOVS R1, #7 | |
BL setPartyPkmData | |
MOVS R2, R4 | |
ADDS R2, #8 | |
MOVS R0, R7 | |
MOVS R1, #0x31 | |
BL setPartyPkmData | |
loc_201E8D4 ; CODE XREF: pokemon_generation_unused+14Aj | |
ADD R0, SP, #0x34+var_24 | |
MOVS R4, #0 | |
MOV R1, R9 | |
STRB R1, [R0] | |
MOVS R0, R7 | |
MOVS R1, #0x2D | |
ADD R2, SP, #0x34+var_24 | |
BL setPartyPkmData | |
ADD R1, SP, #0x34+var_24 | |
MOVS R0, #0xFF | |
STRB R0, [R1] | |
MOVS R0, R7 | |
MOVS R1, #0x23 | |
ADD R2, SP, #0x34+var_24 | |
BL setPartyPkmData | |
ADD R0, SP, #0x34+var_24 | |
STRB R4, [R0] | |
MOVS R0, R7 | |
MOVS R1, #0x24 | |
ADD R2, SP, #0x34+var_24 | |
BL setPartyPkmData | |
ADD R2, SP, #0x34+var_24 | |
LDR R1, =base_stats | |
LSLS R0, R5, #3 | |
SUBS R0, R0, R5 | |
LSLS R0, R0, #2 | |
ADDS R0, R0, R1 | |
LDRB R0, [R0,#0x11] | |
STRB R0, [R2] | |
MOVS R0, R7 | |
MOVS R1, #0x20 | |
BL setPartyPkmData | |
ADD R0, SP, #0x34+var_24 | |
MOV R1, R9 | |
STRB R1, [R0] | |
MOVS R0, R7 | |
MOVS R1, #3 | |
ADD R2, SP, #0x34+var_24 | |
BL setPartyPkmData | |
MOV R5, R8 | |
MOV R6, R10 | |
ADDS R6, #6 | |
loc_201E932 ; CODE XREF: pokemon_generation_unused+1DAj | |
LSLS R0, R4, #1 | |
ADDS R0, R0, R5 | |
ADDS R1, R0, R6 | |
LDRH R0, [R1] | |
CMP R0, #0 | |
BEQ loc_201E946 | |
MOVS R1, R0 | |
MOVS R0, R7 | |
BL sub_201C434 | |
loc_201E946 ; CODE XREF: pokemon_generation_unused+1C8j | |
ADDS R0, R4, #1 | |
LSLS R0, R0, #0x18 | |
LSRS R4, R0, #0x18 | |
CMP R4, #3 | |
BLS loc_201E932 | |
ADD SP, SP, #0x14 | |
POP {R3-R5} | |
MOV R8, R3 | |
MOV R9, R4 | |
MOV R10, R5 | |
POP {R4-R7} | |
POP {R0} | |
BX R0 | |
; End of function pokemon_generation_unused |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* This file has been generated by the Hex-Rays decompiler. | |
Copyright (c) 2007-2015 Hex-Rays <[email protected]> | |
Detected compiler: GNU C++ | |
*/ | |
#include <defs.h> | |
#include <stdarg.h> | |
//------------------------------------------------------------------------- | |
// Function declarations | |
void __noreturn start_vector(); | |
unsigned int intr_main(); | |
void __noreturn AgbMain(); | |
int sub_201834C(); | |
int sub_2018390(); | |
int sub_20183C4(); | |
int sub_20183E8(); | |
int sub_2018470(); | |
int sub_20184D4(); | |
int __fastcall sub_2018588(int a1); | |
int sub_20185E8(); | |
int sub_20185F8(); | |
int sub_201864C(); | |
int sub_20186C4(); | |
int sub_2018754(); | |
int __fastcall sub_2018804(int a1); | |
int sub_2018868(); | |
int sub_2018878(); | |
int __fastcall sub_2018928(int a1); | |
int sub_201898C(); | |
int __fastcall sub_201899C(void *dest, void *src, int a3); | |
int sub_20189F0(); | |
int sub_2018A28(); | |
int __fastcall sub_2018A38(void *a1, int a2, unsigned __int16 a3); | |
int sub_2018A58(); | |
int __fastcall sub_2018A7C(unsigned __int8 a1, unsigned __int8 a2); | |
int __fastcall sub_2018A98(unsigned __int8 a1); | |
int __fastcall sub_2018B04(unsigned int i); | |
int __fastcall sub_2018B4C(unsigned __int8 a1, __int16 a2, __int16 a3, int a4, unsigned __int16 a5, __int16 a6); | |
int __fastcall sub_2018C18(__int16 a1, __int16 a2, _WORD *a3, unsigned __int16 a4, __int16 a5); | |
int __fastcall sub_2018CE8(unsigned __int8 a1, int a2, unsigned __int16 a3, unsigned __int16 a4, char a5); | |
int __fastcall sub_2018E90(unsigned __int8 a1, unsigned __int16 a2, unsigned __int16 a3, char a4); | |
int setOamDma(); | |
int __fastcall sub_2018EFC(__int16 a1, __int16 a2, __int16 a3); | |
int keypressUpdate(); | |
int __fastcall sub_2018F58(unsigned __int16 a1); | |
int __fastcall sub_2019064(unsigned __int16 a1); | |
int sub_2019158(); | |
int __fastcall sub_2019164(int a1, __int16 a2); | |
int sub_2019198(); | |
int __fastcall sub_20191B0(int a1, __int16 a2); | |
signed int __fastcall sub_20191D4(int a1); | |
int sub_2019204(); | |
int __fastcall sub_2019210(int a1, __int16 a2); | |
int sub_2019244(); | |
int __fastcall sub_201925C(int a1, __int16 a2); | |
signed int __fastcall sub_2019280(int a1); | |
int sub_20192B0(); | |
int sub_201939C(); | |
int __fastcall sub_20194D0(int a1); | |
int resetDispcntIfForcedBlank(); | |
int sub_201951C(); | |
int __fastcall sub_2019570(signed int a1); | |
int __fastcall sub_20195C8(signed int a1); | |
int __fastcall sub_2019624(signed int a1); | |
int __fastcall sub_2019674(int a1, int a2, int a3, unsigned __int8 a4, unsigned __int8 a5, unsigned __int16 a6, unsigned __int16 a7); | |
unsigned int __fastcall sub_20196F4(unsigned int a1); | |
unsigned int __fastcall sub_2019708(unsigned __int16 a1); | |
int __fastcall sub_2019748(int a1, int a2, int a3); | |
int __fastcall sub_2019774(int a1, int a2, int a3); | |
int __fastcall sub_20197A0(_WORD *a1, __int16 a2, int a3); | |
int __fastcall sub_20197C0(_DWORD *a1, int a2, int a3); | |
int __fastcall sub_20197D8(void *dest, void *src); // idb | |
int __fastcall sub_2019858(void *dest, void *src); // idb | |
int __fastcall sub_20198D8(__int16 a1, int a2, int a3, unsigned __int8 a4); | |
int __fastcall sub_2019938(int a1, int a2, signed int a3, int a4, int a5, int a6); | |
int __fastcall sub_201A038(int a1, int a2, signed int a3, int a4, int a5, int a6); | |
int __fastcall sub_201A758(int a1, int a2, int a3); | |
int __fastcall sub_201A7D4(int a1, __int16 a2, unsigned __int8 a3, unsigned __int8 a4, unsigned __int8 a5, unsigned __int8 a6, int a7); | |
int __fastcall sub_201A8A8(int a1, unsigned __int8 a2); | |
int __fastcall sub_201A8E4(int a1, int a2, int a3, char a4, char a5, unsigned __int8 a6); | |
int __fastcall sub_201A934(int result); | |
signed int __fastcall sub_201A93C(int a1); | |
char *__fastcall sub_201A950(int a1, char a2); | |
int __fastcall sub_201A964(int a1, __int16 a2); | |
int __fastcall sub_201A994(int a1); | |
int __fastcall sub_201A9B8(int a1); | |
int __fastcall sub_201A9E0(int a1, unsigned __int8 a2, unsigned __int8 a3); | |
int __fastcall sub_201AA08(int result, char a2, char a3, char a4); | |
int __fastcall sub_201AA10(int a1, void *a2, int a3); | |
int __fastcall sub_201AA90(int a1, void *a2); | |
int __fastcall sub_201AAB8(int a1, void *a2, int a3); | |
int __fastcall sub_201AB6C(int a1, char *a2); | |
int __fastcall sub_201AB8C(int a1, void *a2, __int16 a3, int a4); | |
int __fastcall sub_201AC40(int a1, void *a2, char *a3, int a4); | |
int __fastcall sub_201AC78(int a1, _BYTE *a2, _BYTE *a3, __int16 a4, unsigned __int16 a5); | |
int sub_201AD30(); | |
int __fastcall sub_201AD3C(int a1, unsigned __int8 a2, unsigned __int8 a3, unsigned __int8 a4); | |
int __fastcall sub_201ADA8(int a1, char a2, char a3, __int16 a4, unsigned __int16 a5); | |
int __fastcall sub_201ADD0(int a1, char a2, char a3, __int16 a4, _BYTE *a5); | |
int sub_201AE54(int a1, char a2, char a3, __int16 a4, _BYTE *a5, ...); | |
int sub_201AEE8(); | |
int __fastcall sub_201AF0C(unsigned __int8 a1); | |
int __fastcall sub_201AF44(unsigned __int8 a1); | |
int __fastcall sub_201AF6C(unsigned __int8 a1, int a2); | |
int sub_201AF90(); | |
int sub_201AFA4(); | |
int sub_201AFB4(); | |
int sub_201AFE0(); | |
int sub_201AFEC(); | |
signed int sub_201AFF8(); | |
int sub_201B004(); | |
int sub_201B01C(); | |
int sub_201B028(); | |
int sub_201B06C(); | |
int sub_201B0B4(); | |
int sub_201B0EC(); | |
int sub_201B124(); | |
int sub_201B134(); | |
int __fastcall sub_201B144(int a1); | |
signed int __fastcall sub_201B24C(unsigned __int8 a1); | |
signed int __fastcall sub_201B27C(char a1); | |
bool __fastcall sub_201B2F8(int a1); | |
signed int sub_201B34C(); | |
int sub_201B39C(); | |
int sub_201B3C0(); | |
signed int __fastcall sub_201B3DC(signed int a1, char a2); | |
int __fastcall sub_201B440(unsigned __int16 a1, int a2); | |
int __fastcall sub_201B4DC(unsigned __int16 a1, int a2); | |
int __fastcall sub_201B5CC(char a1, int *a2, unsigned int a3); | |
signed int __fastcall sub_201B640(char a1); | |
signed int __fastcall sub_201B66C(unsigned __int16 a1, int a2); | |
signed int __fastcall sub_201B6AC(int a1, int a2); | |
signed int __fastcall sub_201B764(int a1); | |
signed int __fastcall sub_201B978(unsigned __int8 a1, int a2, unsigned __int16 a3); | |
signed int __fastcall sub_201B9E4(unsigned __int8 a1); | |
unsigned int __fastcall sub_201B9FC(int *a1, int a2); | |
unsigned int rand(); | |
int __fastcall srand(int result); | |
int __fastcall strlen_xFF(_BYTE *a1); | |
signed int __fastcall sub_201BA78(int a1, unsigned __int8 a2); | |
int __fastcall initPkm(int a1); | |
int __fastcall initPartyData(int a1); | |
int __fastcall buildPkm(int a1, unsigned __int16 a2, unsigned __int8 a3, unsigned __int8 a4, char a5, unsigned int a6, char a7, unsigned int a8); | |
int __fastcall makePkmStats(int a1, unsigned __int16 a2, unsigned __int8 a3, unsigned __int8 a4, char a5, unsigned int a6, char a7, unsigned int a8); | |
int __fastcall pkm_make_checksum(unsigned int *a1); | |
int __fastcall sub_201C068(int a1); | |
int __fastcall sub_201C35C(int a1); | |
unsigned __int8 __fastcall getPkmLv(void *pkm); | |
int __fastcall sub_201C434(unsigned int *a1, unsigned __int16 a2); | |
int __fastcall sub_201C448(unsigned int *a1, unsigned __int16 a2); | |
int __fastcall sub_201C4B8(unsigned int *a1); | |
void __fastcall pkmAdjustMoves(void *pkm, unsigned __int16 move); | |
int __fastcall pkmEncrypt(int a1); | |
int __fastcall pkmDecrypt(int a1); | |
int __fastcall pkm_block_shuffle(int a1, unsigned int a2, unsigned __int8 a3); | |
unsigned int __fastcall getPartyPkmData(int a1, void *(*a2)[10], _BYTE *a3); | |
unsigned int __fastcall getPkmBoxData(unsigned int *a1, signed int a2, _BYTE *a3); | |
int __fastcall setPartyPkmData(int a1, void *(*a2)[11], int a3); | |
int __fastcall setBoxPkmData(unsigned int *a1, signed int a2, int a3); | |
int __fastcall sub_201D904(void *a1, void *a2, unsigned int a3); | |
int __fastcall sub_201D910(int a1); | |
signed int __fastcall sub_201D98C(unsigned int *a1); | |
int __fastcall sub_201D9F4(_BYTE *a1); | |
int __fastcall sub_201DA28(unsigned __int16 a1, char a2, unsigned __int8 a3); | |
unsigned int __fastcall getPkmNature(int a1); | |
unsigned int __fastcall getNature(unsigned int a1); | |
int __fastcall sub_201DA98(unsigned __int8 a1, unsigned __int16 a2, int a3); | |
int __fastcall sub_201DAF8(int a1, _WORD *a2); | |
int __fastcall sub_201DC48(unsigned int *a1); | |
int __fastcall sub_201DC54(unsigned int *a1); | |
unsigned int __fastcall sub_201DCB8(unsigned __int16 a1); | |
unsigned int __fastcall sub_201DD04(unsigned __int16 a1); | |
int __fastcall sub_201DD50(unsigned __int16 a1); | |
int sub_201DD74(); | |
int sub_201DD8C(); | |
int __fastcall sub_201DDA0(int a1); | |
bool __fastcall sub_201DDC8(unsigned __int8 a1); | |
int __fastcall sub_201DE00(unsigned __int8 a1, unsigned __int8 a2, unsigned __int8 a3); | |
int __fastcall sub_201DE8C(_BYTE *a1); | |
int sub_201DEC8(); | |
int sub_201DF28(); | |
int __fastcall sub_201DF34(int a1); | |
int __fastcall sub_201DF64(int a1); | |
int __fastcall sub_201DF7C(int a1); | |
int __fastcall sub_201DF94(int a1); | |
int __fastcall sub_201DFA8(int a1); | |
int sub_201E0A8(); | |
int __fastcall sub_201E0BC(_BYTE *a1, int a2, int a3); | |
int sub_201E140(); | |
int __fastcall sub_201E168(char a1, char a2); | |
int __fastcall sub_201E17C(int a1, int a2, int a3); | |
int sub_201E1E4(); | |
int __fastcall sub_201E21C(__int16 a1, char a2, char a3, char a4); | |
int sub_201E24C(); | |
int __fastcall sub_201E278(int a1); | |
int __fastcall sub_201E364(int a1); | |
int __fastcall checkGameCodeSetCallback(int a1); | |
unsigned int __fastcall sub_201E43C(unsigned int *a1, int a2, _BYTE *a3); | |
signed int __fastcall sub_201E464(unsigned int *a1, int a2, _BYTE *a3); | |
signed int sub_201E4A8(); | |
int __fastcall sub_201E4EC(int a1, int a2, _BYTE *a3); | |
bool __fastcall sub_201E59C(int a1, int a2, _BYTE *a3); | |
int __fastcall generate_poke(int a1); | |
int sub_201E6DC(); | |
signed int __fastcall sub_201E6F0(int a1, __int16 a2); | |
int __fastcall pokemon_generation_unused(int a1, int a2); | |
int __fastcall sub_201E974(int a1, int a2); | |
int __fastcall sub_201EB60(int a1, int a2, _BYTE *a3); | |
int __fastcall sub_201EBC0(int a1); | |
int __fastcall sub_201EC40(int a1); | |
int __fastcall ResetRom(int a1, void *a2); | |
int __fastcall sub_201EC78(int a1); | |
int __fastcall sub_201EDDC(int a1); | |
int __fastcall sub_201EDE8(int a1); | |
int sub_201EE44(); | |
signed int sub_201EEBC(); | |
int __fastcall sub_201F048(int a1); | |
void __fastcall CpuSet(void *src, void *dest, int len_mode); | |
void sub_201F074(); | |
void sub_201F078(); | |
void sub_201F07C(); | |
void sub_201F080(); | |
void sub_201F084(); | |
void sub_201F088(); | |
void sub_201F08C(); | |
void sub_201F090(); | |
void wait_for_vblank(); | |
void __fastcall ResetGba(void *a1, void *a2); | |
int __fastcall sub_201F0B8(int result); | |
int sub_201F0DC(); | |
int sub_201F178(); | |
signed int __fastcall sub_201F1A0(unsigned __int8 a1, _DWORD *a2); | |
int __fastcall sub_201F1DC(unsigned __int8 a1); | |
int sub_201F284(); | |
int __fastcall sub_201F2C8(int a1); | |
int __fastcall sub_201F2CC(_WORD *a1); | |
int __fastcall sub_201F30C(_BYTE *a1, _BYTE *a2, int a3); | |
int __fastcall sub_201F330(int a1, int a2); | |
_BYTE *__fastcall sub_201F3CC(_BYTE *a1, _BYTE *a2, int a3); | |
int __fastcall sub_201F3FC(int a1, int a2); | |
int __fastcall sub_201F494(int a1, int a2); | |
int __fastcall sub_201F52C(unsigned __int16 a1); | |
int __fastcall sub_201F570(unsigned __int16 a1); | |
signed int sub_201F5B8(); | |
int __fastcall sub_201F64C(unsigned __int8 a1, int a2, unsigned __int8 a3); | |
int sub_201F6EC(); | |
int __fastcall sub_201F760(unsigned __int16 a1); | |
int __fastcall sub_201F82C(_BYTE *a1, _BYTE *a2); | |
int __fastcall sub_201F864(unsigned __int16 a1, _BYTE *a2); | |
int sub_201F908(); | |
int sub_201F920(); | |
int sub_201F938(); | |
int sub_201FA10(); | |
signed int __fastcall sub_201FA94(int a1); | |
signed int __fastcall sub_201FB60(int a1); | |
signed int __fastcall sub_201FC08(int a1); | |
signed int __fastcall sub_201FCB8(int a1); | |
signed int __fastcall sub_201FD54(int a1); | |
signed int __fastcall sub_201FE08(int a1); | |
signed int __fastcall sub_201FEA4(int a1); | |
int __fastcall sub_201FFD8(int result); | |
int __fastcall sub_202007C(int result); | |
int sub_202011C(); | |
int sub_20201A8(); | |
int sub_20201BC(); | |
int __fastcall call_via_r0(_DWORD); // weak | |
int __fastcall call_via_r1(_DWORD, _DWORD); // weak | |
int __fastcall call_via_r2(_DWORD); // weak | |
int __fastcall call_via_r3(_DWORD); // weak | |
int __fastcall call_via_r5(_DWORD, _DWORD); // weak | |
int __fastcall call_via_r8(_DWORD); // weak | |
int __fastcall memcmp(void *mem1, void *mem2, int len); | |
void __fastcall memcpy(void *dst, void *src, unsigned int size); | |
_DWORD *__fastcall strcat(_DWORD *a1, _DWORD *a2); | |
int __fastcall vsprintf(_BYTE *a1, _BYTE *a2, int a3); | |
signed int __fastcall _sprint(int a1, int a2); | |
int __fastcall _sbprintf(int a1, _BYTE *a2, int a3); | |
int __fastcall vfprintf(int a1, _BYTE *a2, int a3); | |
int __fastcall vfprintf_r(int a1, int a2, _BYTE *a3, int a4); | |
char *__fastcall cvt(int a1, int a2, int a3, signed int a4, char a5, char *a6, _DWORD *a7, int a8, _DWORD *a9); | |
int __fastcall exponent(_BYTE *a1, signed int a2, char a3); | |
signed int __fastcall _swsetup(int a1); | |
unsigned int __fastcall quorem(int a1, int a2); | |
char *__fastcall dtoa_r(int a1, int a2, int a3, int a4, signed int a5, _DWORD *a6, _DWORD *a7, int *a8); | |
int __fastcall fflush(int a1); | |
int __fastcall std(int result, __int16 a2, __int16 a3, int a4); | |
int __fastcall _sfmoreglue(_DWORD *a1, int a2); | |
int __fastcall _sfp(int a1); | |
int __fastcall cleanup_r(int a1); | |
int cleanup(); | |
int __fastcall _sinit(int a1); | |
int __fastcall free_r(int result, int a2); | |
signed int __fastcall malloc_trim_r(_DWORD *a1, int a2); | |
signed int __fastcall _sfvwrite(int a1, int a2); | |
int __fastcall fwalk(int a1); | |
void *__fastcall setlocale_r(int a1, int a2, _DWORD *a3); | |
void **localeconv_r(); | |
void *__fastcall setlocale(int a1, _DWORD *a2); | |
void **localeconv(); | |
int __fastcall _smakebuf(int a1); | |
void **__fastcall malloc_extend_top(_DWORD *a1, int a2); | |
void **__fastcall malloc_r(_DWORD *a1, int a2); | |
signed int __fastcall mbtowc_r(int a1, int *a2, _BYTE *a3, int a4); | |
_BYTE *__fastcall memchr(_BYTE *a1, unsigned __int8 a2, unsigned int a3); | |
unsigned int __fastcall memmove(unsigned int a1, unsigned int a2, unsigned int a3); | |
void __fastcall memset(char *dst, char pattern, int size); | |
int __fastcall _malloc_lock(_DWORD); // weak | |
int __fastcall _malloc_unlock(_DWORD); // weak | |
int __fastcall Balloc(int a1, int a2); | |
int __fastcall Bfree(int result, int a2); | |
int __fastcall multadd(int a1, int a2, int a3, int a4); | |
int __fastcall s2b(int a1, int a2, signed int a3, signed int a4, int a5); | |
signed int __fastcall hi0bits(int a1); | |
signed int __fastcall lo0bits(unsigned int *a1); | |
int __fastcall i2b(int a1, int a2); | |
int __fastcall multiply(int a1, int a2, int a3); | |
int __fastcall pow5mult(int a1, int a2, signed int a3); | |
int __fastcall lshift(int a1, int a2, signed int a3); | |
int __fastcall _mcmp(int a1, int a2); | |
int __fastcall _mdiff(int a1, int a2, int a3); | |
signed int __fastcall ulp(int a1); | |
__int64 __fastcall b2d(int a1, _DWORD *a2); | |
int __fastcall d2b(int a1, int a2, int a3, _DWORD *a4, _DWORD *a5); | |
int __fastcall ratio(int a1, int a2); | |
int __fastcall mprec_log10(signed int a1); | |
unsigned int __fastcall isinf(int a1, unsigned int a2); | |
unsigned int __fastcall isnan(int a1, unsigned int a2); | |
int __fastcall sbrk_r(_DWORD *a1, int a2); | |
int __fastcall _sread(int a1, int a2, int a3); | |
int __fastcall _swrite(int a1, int a2, int a3); | |
int __fastcall _sseek(int a1, int a2, int a3); | |
int __fastcall _sclose(int a1); | |
int __fastcall strcmp(_DWORD *a1, _DWORD *a2); | |
int __fastcall strlen(_DWORD *a1); | |
signed int __fastcall findslot(int a1); | |
int __fastcall remap_handle(int a1); | |
int initialise_monitor_handles(); | |
int get_errno(); | |
int __fastcall error(int a1); | |
int __fastcall wrap(int result); | |
int __fastcall swiread(int a1, int a2, int a3); | |
int __fastcall read(int a1, int a2, int a3); | |
signed int __fastcall swilseek(int a1, int a2, int a3); | |
int __fastcall lseek(int a1, int a2, int a3); | |
int __fastcall swiwrite(int a1, int a2, int a3); | |
int __fastcall write(int a1, int a2, int a3); | |
int __fastcall swiopen(_DWORD *a1, __int16 a2); | |
int __fastcall open(_DWORD *a1, __int16 a2); | |
int __fastcall swiclose(int a1); | |
int __fastcall close(int fd); | |
void __fastcall exit(int status); | |
int kill(); | |
signed int getpid(); | |
int __fastcall sbrk(int a1); | |
int __fastcall fstat(int fd, struct stat *buf); | |
int __fastcall unlink(const char *name); | |
int __fastcall gettimeofday(_DWORD *a1, int a2); | |
int times(); | |
int __fastcall write_r(_DWORD *a1, int a2, int a3, int a4); | |
int __fastcall calloc_r(_DWORD *a1, int a2, int a3); | |
int __fastcall close_r(_DWORD *a1, int a2); | |
int _errno(); | |
int __fastcall fstat_r(_DWORD *a1, int a2, struct stat *a3); | |
int __noreturn abort(); | |
signed int isatty(); | |
int __fastcall lseek_r(_DWORD *a1, int a2, int a3, int a4); | |
int __fastcall read_r(_DWORD *a1, int a2, int a3, int a4); | |
int __fastcall _pack_f(int a1); | |
int __fastcall _unpack_f(int a1, int a2); | |
int __fastcall fpadd_parts(int a1, int a2, int a3); | |
int __fastcall _addsf3(int a1, int a2, int a3, int a4); | |
int __fastcall _subsf3(int a1, int a2, int a3, int a4); | |
int __fastcall _mulsf3(int a1, int a2, int a3, int a4); | |
int __fastcall _divsf3(int a1, int a2, int a3, int a4); | |
int __fastcall _fpcmp_parts_f(int a1, int a2); | |
int __fastcall _cmpsf2(int a1, int a2, int a3, int a4); | |
int __fastcall _eqsf2(int a1, int a2, int a3, int a4); | |
int __fastcall _nesf2(int a1, int a2, int a3, int a4); | |
int __fastcall _gtsf2(int a1, int a2, int a3, int a4); | |
int __fastcall _gesf2(int a1, int a2, int a3, int a4); | |
int __fastcall _ltsf2(int a1, int a2, int a3, int a4); | |
int __fastcall _lesf2(int a1, int a2, int a3, int a4); | |
int __fastcall _floatsisf(__int64 a1); | |
int __fastcall _fixsfsi(int a1, int a2); | |
int __fastcall _negsf2(int a1, int a2); | |
int __fastcall _make_fp(int a1, int a2, int a3, int a4, int a5); | |
unsigned int __fastcall _extendsfdf2(int a1, int a2); | |
unsigned int __fastcall _pack_d(int a1); | |
unsigned int __fastcall _unpack_d(unsigned int *a1, int a2); | |
int __fastcall fpadd_parts_1(int a1, int a2, int a3); | |
unsigned int __fastcall _adddf3(int a1, int a2); | |
unsigned int __fastcall _subdf3(int a1, int a2); | |
unsigned int __fastcall _muldf3(int a1, int a2); | |
unsigned int __fastcall _divdf3(int a1, int a2); | |
int __fastcall _fpcmp_parts_d(int a1, int a2); | |
int __fastcall _cmpdf2(int a1, int a2); | |
int __fastcall _eqdf2(int a1, int a2); | |
int __fastcall _nedf2(int a1, int a2); | |
int __fastcall _gtdf2(int a1, int a2); | |
int __fastcall _gedf2(int a1, int a2); | |
int __fastcall _ltdf2(int a1, int a2); | |
int __fastcall _ledf2(int a1, int a2); | |
unsigned int __fastcall _floatsidf(unsigned int a1); | |
unsigned int __fastcall _fixdfsi(int a1); | |
unsigned int __fastcall _negdf2(int a1); | |
unsigned int __fastcall _make_dp(int a1, int a2, int a3, int a4); | |
int __fastcall _truncdfsf2(int a1); | |
int __fastcall _lshrdi3(int result, unsigned int a2, int a3); | |
int __fastcall _negdi2(int a1); | |
//------------------------------------------------------------------------- | |
// Data declarations | |
int dword_201E7B4 = 50354848; // weak | |
int dword_201E7B8 = 4294901760; // weak | |
int dword_201E7BC = 65535; // weak | |
void *off_201E830 = &unk_202EA54; // weak | |
void *off_201E960 = &unk_202EA54; // weak | |
int dword_201E964 = 4294901760; // weak | |
int dword_201E968 = 65535; // weak | |
void **off_201E96C[2] = { &pPkName, &base_stats }; // weak | |
void **off_201E970 = &base_stats; // weak | |
//----- (0201E774) -------------------------------------------------------- | |
int __fastcall pokemon_generation_unused(int a1, int a2) | |
{ | |
unsigned int *v2; // r7@1 | |
unsigned int v3; // r6@1 | |
unsigned int v4; // r4@1 | |
unsigned int i; // r4@1 | |
int v6; // r5@4 | |
int v7; // r2@4 | |
unsigned int v8; // r5@6 | |
int v9; // r2@6 | |
char *v10; // r1@7 | |
unsigned int v11; // r0@7 | |
_BYTE *v12; // r10@12 | |
int v13; // r8@12 | |
unsigned int v14; // r4@13 | |
void **v15; // r4@14 | |
unsigned int v16; // r4@16 | |
unsigned __int16 *v17; // r1@17 | |
char v19; // [sp+10h] [bp-24h]@16 | |
int v20; // [sp+30h] [bp-4h]@20 | |
v2 = (unsigned int *)a2; | |
v3 = *(_BYTE *)(dword_201E7B4 + 10) | (*(_BYTE *)(dword_201E7B4 + 11) << 8) | (*(_BYTE *)(dword_201E7B4 + 12) << 16) | (*(_BYTE *)(dword_201E7B4 + 13) << 24); | |
v4 = rand(); | |
for ( i = (v4 << 16) | rand(); | |
(((i & dword_201E7B8) >> 16) ^ (v3 >> 16) ^ dword_201E7BC & v3 ^ i & dword_201E7B8) <= 7; | |
++i ) | |
{ | |
; | |
} | |
initPartyData((int)v2); | |
v6 = 0; | |
v7 = 0; | |
if ( *((_WORD *)off_201E830 + 1) ) | |
{ | |
do | |
{ | |
v6 = (v6 + *((_WORD *)off_201E830 + 10 * v7 + 1)) & 0xFFFF; | |
v7 = (v7 + 1) & 0xFF; | |
} | |
while ( *((_WORD *)off_201E830 + 10 * v7 + 1) ); | |
} | |
v8 = (unsigned __int16)sub_2019708(v6); | |
v9 = 0; | |
if ( !*((_WORD *)off_201E830 + 1) ) | |
goto LABEL_23; | |
while ( 1 ) | |
{ | |
v10 = (char *)off_201E830 + 20 * v9; | |
v11 = *((_WORD *)v10 + 1); | |
if ( v8 < v11 ) | |
break; | |
v8 = (v8 - v11) & 0xFFFF; | |
v9 = (v9 + 1) & 0xFF; | |
if ( !*((_WORD *)off_201E830 + 10 * v9 + 1) ) | |
goto LABEL_10; | |
} | |
v8 = *((_WORD *)v10 + 2); | |
LABEL_10: | |
if ( !*((_WORD *)off_201E830 + 10 * v9 + 1) ) | |
LABEL_23: | |
v9 = 0; | |
v12 = off_201E960; | |
v13 = 20 * v9; | |
if ( *((_DWORD *)off_201E960 + 5 * v9 + 4) ) | |
{ | |
v14 = (i & dword_201E964 | ((v3 & dword_201E964) >> 16) ^ dword_201E968 & v3 ^ ((i & dword_201E964) >> 16)) & 0xFFFFFFF8; | |
i = v14 | rand() & 7; | |
} | |
buildPkm((int)v2, v8, v12[v13], 0x20u, 1, i, 1, v3); | |
v15 = off_201E96C[0]; | |
if ( *off_201E96C[0] ) | |
{ | |
setPartyPkmData((int)v2, (void *(*)[11])7, (int)*off_201E96C[0]); | |
setPartyPkmData((int)v2, (void *(*)[11])0x31, (int)(v15 + 2)); | |
} | |
v16 = 0; | |
v19 = 1; | |
setPartyPkmData((int)v2, (void *(*)[11])0x2D, (int)&v19); | |
v19 = -1; | |
setPartyPkmData((int)v2, (void *(*)[11])0x23, (int)&v19); | |
v19 = 0; | |
setPartyPkmData((int)v2, (void *(*)[11])0x24, (int)&v19); | |
v19 = BYTE1(off_201E970[7 * v8 + 4]); | |
setPartyPkmData((int)v2, (void *(*)[11])0x20, (int)&v19); | |
v19 = 1; | |
setPartyPkmData((int)v2, (void *(*)[11])3, (int)&v19); | |
do | |
{ | |
v17 = (unsigned __int16 *)(&v12[2 * v16 + 6] + v13); | |
if ( *v17 ) | |
sub_201C434(v2, *v17); | |
v16 = (v16 + 1) & 0xFF; | |
} | |
while ( v16 <= 3 ); | |
return v20; | |
} | |
// 201E7B4: using guessed type int dword_201E7B4; | |
// 201E7B8: using guessed type int dword_201E7B8; | |
// 201E7BC: using guessed type int dword_201E7BC; | |
// 201E830: using guessed type void *off_201E830; | |
// 201E960: using guessed type void *off_201E960; | |
// 201E964: using guessed type int dword_201E964; | |
// 201E968: using guessed type int dword_201E968; | |
// 201E96C: using guessed type void **off_201E96C[2]; | |
// 201E970: using guessed type void **off_201E970; | |
// ALL OK, 1 function(s) have been successfully decompiled |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; =============== S U B R O U T I N E ======================================= | |
sub_2019708 ; CODE XREF: pokemon_generation_unused+94p | |
PUSH {R4-R6,LR} | |
LSLS R0, R0, #0x10 | |
LSRS R0, R0, #0x10 | |
LDR R6, =0x3001544 | |
LDRH R4, [R6] | |
LSLS R3, R4, #2 | |
LDR R1, =0xFFFF | |
ANDS R3, R1 | |
ADDS R3, R3, R4 | |
LDR R5, =0x300143C | |
LDRH R1, [R5] | |
LSLS R1, R1, #1 | |
LSRS R2, R3, #0x10 | |
ADDS R1, R1, R2 | |
LSRS R2, R1, #0x10 | |
ADDS R4, R4, R2 | |
ADDS R1, R1, R4 | |
STRH R3, [R6] | |
STRH R1, [R5] | |
LDRH R1, [R5] | |
MULS R0, R1 | |
LSRS R0, R0, #0x10 | |
POP {R4-R6} | |
POP {R1} | |
BX R1 | |
; End of function sub_2019708 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment