Pues yo supongo que las bases de todo ASM son las comparaciones de valores, asi que esto se veria en GBC:
call @GetID
cp a,$04//ID de Charmander
jr z,@next// si conincide brinca a next
...
@GetID
ld a,[$D004]//Carga en a el ID del pokemon
dec a
ld hl,$BCBB//Carga la tabla de pokemons
ld c,a
ld b,$0//Ahora bc tiene un longitud igual al pokemon
add hl,bc
add hl,bc//sumas bc a hl dos veces (tabla de 2-bytes)
ld a,[hl]//tomas el contenido de la tabla en a
ret
(No se si tu puedes ponerme el ejemplo de algo similar en GBA)