include "constants.asm" if DEBUG SECTION "Unknown 32c8", ROM0[$32c8] else SECTION "Unknown 32c8", ROM0[$328c] endc Function32c8:: predef Functionce10 ld a, b and a ret Function32d0:: ld hl, .Data ret .Data: ; 00:32d4 db "@" SubtractSigned:: sub b ret nc cpl add $1 scf ret if DEBUG SECTION "Unknown 3686", ROM0[$3686] else SECTION "Unknown 3686", ROM0[$364a] endc GiveMonToPlayer:: ; 3686 ; Give to the player Pokemon of species b at level c. ld a, b ld [wMonDexIndex], a ld a, c ld [wCurPartyLevel], a xor a ld [wMonType], a jpba Function1130a WaitPressedAny:: ; 369a ; Waits for one of the buttons in d to be pressed. ; If bc is negative, waits forever. ; Otherwise, times out after bc frames then returns z. ; Reset hJoypadSum to clear button history xor a ldh [hJoypadSum], a .loop: ; 00:369d ; Wait for joypad polling. call DelayFrame ; If any of the buttons in d were pressed, return nz. ldh a, [hJoypadSum] and a jr z, .not_pressed and d ret nz .not_pressed: ; 00:36a7 ; If bc < 0, don't check timeout. bit 7, b jr nz, .loop ; Count down to timeout. dec bc ld a, b or c jr nz, .loop ; Return z, signifying that the request timed out. ret CountSetBits:: ; 36b1 ; Count the number of bits set in b bytes at hl. ; Return to a, c, and wce37. ld c, $0 .asm_36b3: ; 00:36b3 ld a, [hli] ld e, a ld d, $8 .asm_36b7: ; 00:36b7 srl e ld a, $0 adc c ld c, a dec d jr nz, .asm_36b7 dec b jr nz, .asm_36b3 ld a, c ld [wce37], a ret