.thumb
.align
.equ number_of_mons_in_regional_dex, 218
.equ number_of_mons_in_national_dex, 721
data_on_capture_hook: */0x08106B84 via r1
bl species_to_regional_dex_number
cmp r0, #0x0
bne capture_display_return
ldr r0, add_task_no_capture_display
bx r0
capture_display_return:
ldr r0, add_task_capture_display
bx r0
habitat_dex_regional_limit_hook: */0x08106810 via r1
push {r4, lr}
mov r4, r0
bl haz_national_dex_bool
cmp r0, #0x1
beq habitat_dex_regional_limit_return */valid
mov r0, r4
bl species_to_regional_dex_number
cmp r0, #0x0
beq habitat_dex_regional_limit_return */not in regional dex, return 0
mov r0, #0x1
habitat_dex_regional_limit_return:
pop {r4}
pop {r1}
bx r1
dex_seeable_mon_hook: */0x08043F90 via r1
push {r4, lr}
mov r4, r0
bl haz_national_dex_bool
cmp r0, #0x0
beq only_regional_numbered
*/national
mov r0, r4
bl species_to_national_dex_number_1
b dex_seeable_mon_check_valid_species
only_regional_numbered:
mov r0, r4
bl species_to_regional_dex_number
dex_seeable_mon_check_valid_species:
cmp r0, #0x0
bne dex_seeable_mon_return
ldr r0, full_halfword
dex_seeable_mon_return:
pop {r4}
pop {r1}
bx r1
.align
full_halfword: .word 0xFFFF
dex_evolution_fix_hook: */0x080CE91A via r1
bl species_to_regional_dex_number
cmp r0, #0x0 */not in regional dex, invalid
beq dex_evolution_failure
ldr r0, dex_evolution_success_return
bx r0
dex_evolution_failure:
mov r0, #0x11
strh r0, [r5, #0x8]
mov r2, #0x1
ldr r1, dex_evolution_failure_return
bx r1
dex_display_counts_hook: */0x08104BBC via r2
*/r0: mode
push {lr}
cmp r1, #0x0
beq call_regional_count
bl national_pokedex_count
b dex_display_counts_return
call_regional_count:
bl dex_regional_count_hook
dex_display_counts_return:
pop {pc}
dex_regional_count_hook: */0x08088EDC via r1
push {r4-r6, lr}
mov r6, r0 */mode
mov r4, #0x1 */loop
mov r5, #0x0 */counter
dex_regional_count_loop:
lsl r0, r4, #0x1 */loop times 2
adr r1, regional_dex_order
ldrh r0, [r1, r0] */req species
mov r1, r6 */mode
mov r2, #0x1 */input is SPECIES
bl dex_flag_check
add r5, r5, r0
add r4, #0x1
ldr r0, regional_dex_limit
cmp r4, r0
blo dex_regional_count_loop
mov r0, r5
pop {r4-r6, pc}
dex_display_hook: */0x0810352C via r1
ldr r1, regional_dex_limit
cmp r0, #0x0
beq store_dex_limit_and_return
ldr r1, national_dex_limit
store_dex_limit_and_return:
str r1, [sp, #0x0]
ldr r0, regional_dex_limit_return
bx r0
regional_dex_hook: */0x0810356C via r0
mov r4, r8
add r4, #0x1
lsl r0, r4, #0x1 */index times 2
adr r1, regional_dex_order
ldrh r0, [r1, r0]
bl species_to_national_dex_number_1
mov r5, r0
mov r1, #0x0
ldr r2, regional_dex_hook_return
bx r2
store_last_dex_seen_hook: */0x081035B4 via r1
str r0, [r2]
mov r10, r4
mov r4, r3
ldr r0, def_store_string_dex_number
bx r0
lazy_regional_dex_end_hook: */0x081035F4 via r0
mov r0, r8
ldr r1, regional_dex_limit
cmp r0, r1
blo regional_dex_hook
ldr r0, end_dex_display_return
bx r0
display_regional_num_hook: */0x08104A66 via r1
mov r5, r0 */save species
bl haz_national_dex_bool
cmp r0, #0x0
beq use_regional_dex_ordering
ldr r1, dex_malloc_ptr
ldr r1, [r1]
add r1, #0x42
ldrb r1, [r1]
cmp r1, #0x0 */check if looking at regional dex
beq use_regional_dex_ordering
mov r0, r5
bl species_to_national_dex_number_1
b display_dex_number_return
use_regional_dex_ordering:
mov r0, r5
bl species_to_regional_dex_number
display_dex_number_return:
mov r5, r0
ldr r0, dex_number_display_return
bx r0
species_to_regional_dex_number:
adr r3, regional_dex_order
mov r2, r0 */req species
mov r0, #0x0 */loop counter
find_regional_number_loop:
lsl r1, r0, #0x1
ldrh r1, [r3, r1]
cmp r1, r2
beq species_to_regional_dex_return
add r0, #0x1
ldr r1, regional_dex_limit
cmp r0, r1
bls find_regional_number_loop
mov r0, #0x0 */not in dex: set number to 0
species_to_regional_dex_return:
bx lr
species_to_national_dex_number_1:
ldr r1, f_species_to_nat_dex
bx r1
.align
f_species_to_nat_dex: .word 0x08043298 + 1
haz_national_dex_bool:
ldr r0, f_haz_national_check
bx r0
.align
f_haz_national_check: .word 0x0806E25C + 1
dex_flag_check:
ldr r3, f_dex_flag_check
bx r3
.align
f_dex_flag_check: .word 0x08104AB0 + 1
national_pokedex_count:
ldr r1, f_national_pokedex_count
bx r1
.align
f_national_pokedex_count: .word 0x08088E8C + 1
.align
add_task_no_capture_display: .word 0x08106B90 + 1
add_task_capture_display: .word 0x08106BA4 + 1
dex_evolution_success_return: .word 0x080CE948 + 1
dex_evolution_failure_return: .word 0x080CE924 + 1
regional_dex_limit: .word number_of_mons_in_regional_dex
national_dex_limit: .word number_of_mons_in_national_dex
regional_dex_limit_return: .word 0x0810353a + 1
regional_dex_hook_return: .word 0x08103578 + 1
def_store_string_dex_number: .word 0x081035D6 + 1
end_dex_display_return: .word 0x08103906 + 1
dex_malloc_ptr: .word 0x0203ACF0
dex_number_display_return: .word 0x08104A70 + 1
regional_dex_order:
.thumb
.align
.equ number_of_mons_in_regional_dex, 218 /*or however long you wanted your regional dex to be
.equ number_of_mons_in_national_dex, 721
data_on_capture_hook: //0x08106B84 via r1
bl species_to_regional_dex_number
cmp r0, #0x0
bne capture_display_return
ldr r0, add_task_no_capture_display
bx r0
capture_display_return:
ldr r0, add_task_capture_display
bx r0
habitat_dex_regional_limit_hook: //0x08106810 via r1
push {r4, lr}
mov r4, r0
bl haz_national_dex_bool
cmp r0, #0x1
beq habitat_dex_regional_limit_return //valid
mov r0, r4
bl species_to_regional_dex_number
cmp r0, #0x0
beq habitat_dex_regional_limit_return //not in regional dex, return 0
mov r0, #0x1
habitat_dex_regional_limit_return:
pop {r4}
pop {r1}
bx r1
dex_seeable_mon_hook: //0x08043F90 via r1
push {r4, lr}
mov r4, r0
bl haz_national_dex_bool
cmp r0, #0x0
beq only_regional_numbered
//national
mov r0, r4
bl species_to_national_dex_number_1
b dex_seeable_mon_check_valid_species
only_regional_numbered:
mov r0, r4
bl species_to_regional_dex_number
dex_seeable_mon_check_valid_species:
cmp r0, #0x0
bne dex_seeable_mon_return
ldr r0, full_halfword
dex_seeable_mon_return:
pop {r4}
pop {r1}
bx r1
.align
full_halfword: .word 0xFFFF
dex_evolution_fix_hook: //0x080CE91A via r1
bl species_to_regional_dex_number
cmp r0, #0x0 //not in regional dex, invalid
beq dex_evolution_failure
ldr r0, dex_evolution_success_return
bx r0
dex_evolution_failure:
mov r0, #0x11
strh r0, [r5, #0x8]
mov r2, #0x1
ldr r1, dex_evolution_failure_return
bx r1
dex_display_counts_hook: //0x08104BBC via r2
//r0: mode
push {lr}
cmp r1, #0x0
beq call_regional_count
bl national_pokedex_count
b dex_display_counts_return
call_regional_count:
bl dex_regional_count_hook
dex_display_counts_return:
pop {pc}
dex_regional_count_hook: //0x08088EDC via r1
push {r4-r6, lr}
mov r6, r0 //mode
mov r4, #0x1 //loop
mov r5, #0x0 //counter
dex_regional_count_loop:
lsl r0, r4, #0x1 //loop times 2
adr r1, regional_dex_order
ldrh r0, [r1, r0] //req species
mov r1, r6 //mode
mov r2, #0x1 //input is SPECIES
bl dex_flag_check
add r5, r5, r0
add r4, #0x1
ldr r0, regional_dex_limit
cmp r4, r0
blo dex_regional_count_loop
mov r0, r5
pop {r4-r6, pc}
dex_display_hook: //0x0810352C via r1
ldr r1, regional_dex_limit
cmp r0, #0x0
beq store_dex_limit_and_return
ldr r1, national_dex_limit
store_dex_limit_and_return:
str r1, [sp, #0x0]
ldr r0, regional_dex_limit_return
bx r0
regional_dex_hook: //0x0810356C via r0
mov r4, r8
add r4, #0x1
lsl r0, r4, #0x1 //index times 2
adr r1, regional_dex_order
ldrh r0, [r1, r0]
bl species_to_national_dex_number_1
mov r5, r0
mov r1, #0x0
ldr r2, regional_dex_hook_return
bx r2
store_last_dex_seen_hook: //0x081035B4 via r1
str r0, [r2]
mov r10, r4
mov r4, r3
ldr r0, def_store_string_dex_number
bx r0
lazy_regional_dex_end_hook: //0x081035F4 via r0
mov r0, r8
ldr r1, regional_dex_limit
cmp r0, r1
blo regional_dex_hook
ldr r0, end_dex_display_return
bx r0
display_regional_num_hook: //0x08104A66 via r1
mov r5, r0 //save species
bl haz_national_dex_bool
cmp r0, #0x0
beq use_regional_dex_ordering
ldr r1, dex_malloc_ptr
ldr r1, [r1]
add r1, #0x42
ldrb r1, [r1]
cmp r1, #0x0 //check if looking at regional dex
beq use_regional_dex_ordering
mov r0, r5
bl species_to_national_dex_number_1
b display_dex_number_return
use_regional_dex_ordering:
mov r0, r5
bl species_to_regional_dex_number
display_dex_number_return:
mov r5, r0
ldr r0, dex_number_display_return
bx r0
species_to_regional_dex_number:
adr r3, regional_dex_order
mov r2, r0 //req species
mov r0, #0x0 //loop counter
find_regional_number_loop:
lsl r1, r0, #0x1
ldrh r1, [r3, r1]
cmp r1, r2
beq species_to_regional_dex_return
add r0, #0x1
ldr r1, regional_dex_limit
cmp r0, r1
bls find_regional_number_loop
mov r0, #0x0 //not in dex: set number to 0
species_to_regional_dex_return:
bx lr
species_to_national_dex_number_1:
ldr r1, f_species_to_nat_dex
bx r1
.align
f_species_to_nat_dex: .word 0x08043298 + 1
haz_national_dex_bool:
ldr r0, f_haz_national_check
bx r0
.align
f_haz_national_check: .word 0x0806E25C + 1
dex_flag_check:
ldr r3, f_dex_flag_check
bx r3
.align
f_dex_flag_check: .word 0x08104AB0 + 1
national_pokedex_count:
ldr r1, f_national_pokedex_count
bx r1
.align
f_national_pokedex_count: .word 0x08088E8C + 1
.align
add_task_no_capture_display: .word 0x08106B90 + 1
add_task_capture_display: .word 0x08106BA4 + 1
dex_evolution_success_return: .word 0x080CE948 + 1
dex_evolution_failure_return: .word 0x080CE924 + 1
regional_dex_limit: .word number_of_mons_in_regional_dex
national_dex_limit: .word number_of_mons_in_national_dex
regional_dex_limit_return: .word 0x0810353a + 1
regional_dex_hook_return: .word 0x08103578 + 1
def_store_string_dex_number: .word 0x081035D6 + 1
end_dex_display_return: .word 0x08103906 + 1
dex_malloc_ptr: .word 0x0203ACF0
dex_number_display_return: .word 0x08104A70 + 1
regional_dex_order:
You mean this one?