.include "spawner.h.s"
.include "entity_templates.h.s"
.include "entity.h.s"
.include "game.h.s"

.globl _spr_player1_00

inicializa_contador:  .db #0x01
cont_time_spawn:      .db #0x00
bool_fin_tabla_spawn: .db #0x00
ptr_current_enemy:    .dw tabla_spawn_enemigos
;ptr_current_enemy:    .dw ronda3


reset_datos_game_over:
    ;; La tabla de spawn empieza desde el principio
    ld hl, #tabla_spawn_enemigos
    ld (ptr_current_enemy), hl

    ;; Ya no estamos al final de la tabla
    ld a, #0
    ld (bool_fin_tabla_spawn), a

    ;; Eliminamos todas las entidades menos el player
    call reset_datos
ret

reset_datos:
    
    ;; Apuntamos a la primera entidad IX
    ld ix, #entity_vector  

    ;; Comprobamos si es el player (si no lo han matado)
    ld a, e_tipo(ix)
    cp #e_type_player
    jr nz, borramos_Todo
        ; IX => Player
        ;; Modificamos la posicion del Player (para que aparezca siempre en el centro)
        ld e_x(ix), #0x27 ;; Xplayer = x_player_template /  Si la template cambiara, habria
        ld e_y(ix), #0x28 ;; Yplayer = y_player_template \  que cambiarlo de aquí tambien
        ld e_last_dir(ix), #0x00
        ld e_last_dirY(ix), #0x04
        ld e_player_shot(ix), #0x00 ;; tiene que tener balas
        ld bc, #k_size_entity
        add ix, bc

        ;; Comprobamos al Player 2
        ld a, e_tipo(ix)
        cp #e_type_player
        jr nz, borramos_Todo2
            ; IX => Player2
            ;; Modificamos la posicion del Player (para que aparezca siempre en el centro)
            ld e_x(ix), #0x27 ;; Xplayer = x_player_template /  
            ld e_y(ix), #0x40 ;; Yplayer = y_player_template \  
            ld e_last_dir(ix), #0x00
            ld e_last_dirY(ix), #0x04
            ld e_player_shot(ix), #0x00 ;; tiene que tener balas
            ld bc, #k_size_entity
            add ix, bc
        borramos_Todo2:
    borramos_Todo:

    

    ld a, (num_entities)    

    borrarTodasEntidades: ;; menos el player

        ld b, a ; B = num_entidades_restantes

        ;;comprobamos si la entidad es valida o no
        ld a, e_tipo(ix) 
        cp #e_type_invalid
        jr z, no_HayEntities

        push bc

        ;; Como la entidad, la ponemos a invalida (ya que las queremos borrar todas)
        ;ld e_tipo(ix), #e_type_invalid
        call entity_set4destruction

        ld bc, #k_size_entity
        add ix, bc ;;paso a la siguiente
        
        pop bc 
        ld a, b
        dec a
        jr nz, borrarTodasEntidades

    no_HayEntities:

ret

puerta1_x = 0x08
puerta1_y = 0x84

puerta2_x = 0x40
puerta2_y = 0x30

puerta3_x = 0x3C
puerta3_y = 0x94

puerta4_x = 0x10
puerta4_y = 0x20

puerta5_x = 0x25
puerta5_y = 0x20

puerta6_x = 0x08
puerta6_y = 0x50

puerta7_x = 0x1A
puerta7_y = 0x94

puerta8_x = 0x40
puerta8_y = 0x70

tabla_spawn_enemigos:

    ;; Pruebas
    ;.db   0x80                 
    ;.dw            #cangrejo
    ;.db                     0x08, 0x20,  0x01, 0x00

    ;.db 0x00

    ;; =================================================
    ;; ================   RONDA 1    ===================
    ;; ============ solo enemigos ghostX ===============
    ;; =================================================
    ;;    Time-1   Tipo-2   X-3    Y-4   Vx-5  Vy-6
    .db   0x80                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ; 2
    .db   0xD0                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ; 3
    .db   0xC0                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x01, 0x00

    ; 4
    .db   0xD0                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y), -0x01, 0x00

    ; 5
    .db   0xA0                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x01, 0x00

    ; 6
    .db   0x40                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y), -0x01, 0x00

    ; 7
    .db   0x40                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y), -0x01, 0x00

    ; 8
    .db   0x30                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x01, 0x00

    .db   0x00 ;; 

    ;; =================================================
    ;; ================   RONDA 2    ===================
    ;; ============ solo enemigos ghostX-Y =========
    ;; =================================================
    ;;    Time-1   Tipo-2   X-3    Y-4   Vx-5  Vy-6
    .db   0x40                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, -0x04

    .db   0xD0                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, -0x04

    .db   0xB0                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, -0x04

    .db   0x20                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, -0x04

    .db   0xC0                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, -0x04

    ;;6
    .db   0xA0                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, -0x04
    
    ;; 7
    .db   0xB0                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 8
    .db   0xC0                
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ; 9
    .db   0x60                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x04

    ; 10
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y), -0x01, 0x00

    ; 11
    .db   0xA0                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, -0x04

    ; 12
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ; 13
    .db   0xE0                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, -0x04

    ; 14
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x00


     .db   0x00 ;; 

    ;; =================================================
    ;; ================   RONDA 3    ===================
    ;; ============ solo enemigos ghostX-Y =============
    ;; =================================================
    ronda3:
    ;;    Time-1   Tipo-2   X-3    Y-4   Vx-5  Vy-6
    .db   0xC0                
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    .db   0x60                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x04

    .db   0xFF                
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x04

    ;4
    .db   0x03               
    .dw            #ghostY
    .db                    (puerta3_x), (puerta3_y),  0x00, 0x04

    ;5
    .db   0xD0                
    .dw            #ghostX
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ;6
    .db   0x10                
    .dw            #ghostY
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;7
    .db   0xD0               
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;8
    .db   0xC0               
    .dw            #ghostY
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ;9
    .db   0xB0               
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x04

    ;10
    .db   0x10               
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;11
    .db   0xB0               
    .dw            #ghostY
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ;12
    .db   0x10               
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x04

    ;13
    .db   0x60               
    .dw            #ghostY
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ;14
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;15
    .db   0xD0               
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;16
    .db   0x03               
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x04

    ;17
    .db   0x03               
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x04

    ;18
    .db   0xFF                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x04

    ;19
    .db   0x03               
    .dw            #ghostY
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ;20
    .db   0xFF                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x04

    ;21
    .db   0x03               
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04



    .db   0x00 ;; 

     ;; ================================================
    ;; ================   RONDA 4    ===================
    ;; ===============  metemos zombie  ================
    ronda4:
    ;;    Time-1   Tipo-2   X-3    Y-4   Vx-5  Vy-6
    .db   0xFF                
    .dw            #zombie
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;2
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;3
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;4
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;5
    .db   0x30                
    .dw            #zombie
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;6
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;7
    .db   0x30                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;8
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ;9
    .db   0x30                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;10
    .db   0xD0                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;11
    .db   0x50                
    .dw            #zombie
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x04

    ;12
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x01, 0x00
    
    ;;13
    .db   0x20                
    .dw            #zombie
    .db                     (puerta4_x), (puerta4_y),  0x01, 0x00

    ;;14
    .db   0x20                
    .dw            #zombie
    .db                     (puerta2_x), (puerta2_y),  0x01, -0x04

    ;;15
    .db   0xE0                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x04

    ;;16
    .db   0x30                
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x01, 0x00

    ;;17
    .db   0xA0                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x01, 0x00

    ;;18
    .db   0x30                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;;19
    .db   0x30                
    .dw            #zombie
    .db                     (puerta5_x), (puerta5_y),  0x01, 0x00
    ;;20
    .db   0x30                
    .dw            #zombie
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00
    
    ;;21
    .db   0xE0                
    .dw            #zombie
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00
    
    ;;22
    .db   0x30                
    .dw            #zombie
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;;23
    .db   0x50                
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;;24
    .db   0x20                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;;25
    .db   0x30                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00


    .db   0x00 ;; 


    ;; =================================================
    ;; ================   RONDA 5    ===================
    ;; ==============  metemos pato  ===================
    ;; 1
    .db   0xFF                 
    .dw            #monster
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 2
    .db   0xFF                 
    .dw            #monster
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 3
    .db   0xB0                 
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 4
    .db   0xC0                 
    .dw            #monster
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 5
    .db   0x80                 
    .dw            #monster
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00
    
    ;; 6
    .db   0x90                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x00

    ;; 7
    .db   0x03                 
    .dw            #monster
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ;; 8
    .db   0xA0                 
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x01, 0x00

    ;; 9
    .db   0x50               
    .dw            #monster
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;; 10
    .db   0xC0                
    .dw            #zombie
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 11
    .db   0x50                 
    .dw            #monster
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;; 12
    .db   0x50                 
    .dw            #monster
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 13
    .db   0x70                 
    .dw            #zombie
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 14
    .db   0x10                 
    .dw            #monster
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 15
    .db   0x50                 
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00


    .db   0x00 ;; 
    ;; =================================================
    ;; ================   RONDA 6    ===================
    ;; ===========  metemos arqueros  =================
    .db   0x70                
    .dw            #arquero
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ;2
    .db   0x80               
    .dw            #arquero
    .db                    (puerta3_x), (puerta3_y),  0x00, 0x04

    ;3
    .db   0xA0               
    .dw            #arquero
    .db                    (puerta4_x), (puerta4_y),  0x00, -0x04

    ;4
    .db   0x10               
    .dw            #arquero
    .db                    (puerta5_x), (puerta5_y),  0x00, 0x04

    ;5
    .db   0xD0               
    .dw            #ghostX
    .db                    (puerta6_x), (puerta6_y),  0x00, 0x00

    ;6
    .db   0x20               
    .dw            #ghostX
    .db                    (puerta1_x), (puerta1_y),  0x00, 0x00

    ;7
    .db   0x30               
    .dw            #arquero
    .db                    (puerta3_x), (puerta3_y),  0x00, 0x04

    ;8
    .db   0x60               
    .dw            #zombie
    .db                    (puerta4_x), (puerta4_y),  0x00, 0x04

    ; 9
    .db   0x60                
    .dw            #monster
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x04

    ; 10
    .db   0x10                
    .dw            #arquero
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x04

    ; 11
    .db   0x10                
    .dw            #arquero
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x04

    ; 12
    .db   0x30                
    .dw            #arquero
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ; 13
    .db   0x10                
    .dw            #arquero
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x04

    ; 14
    .db   0x10                
    .dw            #zombie
    .db                     (puerta3_x), (puerta3_y),  0x00, -0x04

    ; 15
    .db   0x50                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x04

    ; 16
    .db   0x10                
    .dw            #monster
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x04

    .db   0x00 ;; 

    ;; =================================================
    ;; ================   RONDA 7    ===================
    ;; =============  metemos el topo  =================
    ;; 1
    .db   0xC0                
    .dw            #topo
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 2
    .db   0xFF                
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 3
    .db   0xFF               
    .dw            #topo
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ;; 4
    .db   0xA0               
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x01, 0x00

    ;; 5
    .db   0xD0                 
    .dw            #topo
    .db                     (puerta7_x), (puerta7_y),  0x01, 0x00

    ;; 6
    .db   0x50                 
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x00

    ;; 7
    .db   0xE0                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 8
    .db   0x70                
    .dw            #topo
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ;; 9
    .db   0xD0               
    .dw            #arquero
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 10
    .db   0x20                 
    .dw            #ghostY
    .db                     (puerta7_x), (puerta7_y),  0x00, 0x00

    ;; 11
    .db   0x20                 
    .dw            #topo
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ;; 12
    .db   0x20                 
    .dw            #monster
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 13
    .db   0x05                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;; 14
    .db   0x05                 
    .dw            #topo
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 15
    .db   0x50                 
    .dw            #arquero
    .db                     (puerta7_x), (puerta7_y),  0x00, 0x00

    ;; 16
    .db   0x05                 
    .dw            #ghostY
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00


    .db #0x00
    
    ;; =================================================
    ;; ================   RONDA 8    ===================
    ;; ==========  metemos el cangrejo  ================
    ;; 1
    .db   0xC0                
    .dw            #cangrejo
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 2
    .db   0x90                
    .dw            #ghostY
    .db                     (puerta7_x), (puerta7_y),  0x00, 0x00

    ;; 3
    .db   0xFF               
    .dw            #cangrejo
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ;; 4
    .db   0x70               
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  -0x01, 0x00

    ;; 5
    .db   0xA0                 
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x01, 0x00

    ;; 6
    .db   0x05                 
    .dw            #ghostX
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ;; 7
    .db   0xE0                
    .dw            #cangrejo
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 8
    .db   0xD0                
    .dw            #cangrejo
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ;; 9
    .db   0xA0               
    .dw            #ghostY
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 10
    .db   0x05                 
    .dw            #ghostY
    .db                     (puerta7_x), (puerta7_y),  0x00, 0x00

    ;; 11
    .db   0x05                 
    .dw            #zombie
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ;; 12
    .db   0x70                 
    .dw            #cangrejo
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 13
    .db   0xF0                 
    .dw            #cangrejo
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 14
    .db   0x70                 
    .dw            #cangrejo
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 15
    .db   0xA0                 
    .dw            #monster
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 16
    .db   0x05                 
    .dw            #zombie
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ;; 17
    .db   0x05                 
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 18
    .db   0x05                 
    .dw            #arquero
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ;; 19
    .db   0xC0                 
    .dw            #cangrejo
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ;; 20
    .db   0x20                 
    .dw            #zombie
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ;; 21
    .db   0x10                 
    .dw            #ghostY
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ;; 22
    .db   0x05                 
    .dw            #ghostX
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    .db 0x00

    ;; =================================================
    ;; ================   RONDA 9    ===================
    ;; ================  FINAL BOSS  ==================

    ; 2
    .db   0xFF                
    .dw            #ghostX
    .db                     (puerta2_x), (puerta2_y),  0x00, 0x00

    ; 3
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta6_x), (puerta6_y),  0x00, 0x00

    ; 4
    .db   0x03                
    .dw            #ghostX
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    ; 5
    .db   0xFF                
    .dw            #arquero
    .db                     (puerta4_x), (puerta4_y),  0x00, 0x00

    ; 6
    .db   0x03                
    .dw            #arquero
    .db                     (puerta7_x), (puerta7_y),  0x00, 0x00

    ; 7
    .db   0x03                
    .dw            #arquero
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ; 8
    .db   0x03                
    .dw            #arquero
    .db                     (puerta3_x), (puerta3_y),  0x00, 0x00

    ; 9
    .db   0xFF                
    .dw            #cangrejo
    .db                     (puerta1_x), (puerta1_y),  0x00, 0x00

    ; 10
    .db   0x03                
    .dw            #cangrejo
    .db                     (puerta5_x), (puerta5_y),  0x00, 0x00

    ; 11
    .db   0x03                
    .dw            #cangrejo
    .db                     (puerta8_x), (puerta8_y),  0x00, 0x00

    .db   0xC0                
    .dw            #zBoss
    .db                     (puerta8_x), (puerta1_y),  0x00, 0x00


    ;; Falta meter enemmigos pequeñines despues


    ;; FIN DEL JUEGO
    .db   0x00 ;; 


;posiciones_spawn_enemigos: 
;.db 0x08, 0x20 ;; arriba izq
;.db 0x44, 0x20 ;; arriba drcha
;.db 0x08, 0x94 ;; abajo izq
;.db 0x44, 0x94 ;; abajo drcha


spawn_iniciliza_contador:
    ld a, (inicializa_contador)
    cp #0
    jr z, no_inicilices
        ;; (incializa_contador == 01 (true))
        ld hl, (ptr_current_enemy)
        ld a, (hl)
        ld (cont_time_spawn), a ;; Cont_time_spawn = CurrentEnemy[tiempo]

        ;; Comprobamos si es 0 (habriamos llegado al final de la tabla del spawn)
        cp #0 
        jr nz, no_final_de_la_ronda 
            ;; Si Time == 0 --> Ya han salido todos los enemigos
            jr fin_ronda_tabla

        no_final_de_la_ronda:
        ; inicializa_contador = 0
        ld a, #0x00
        ld (inicializa_contador), a
    no_inicilices:
ret

fin_ronda_tabla:

    ld a, #1
    ld (bool_fin_tabla_spawn), a

ret


spawnea_enemigo:
    call spawn_iniciliza_contador

    ;; NUMERO MAXIMO DE ENTIDADES EN LA PANTALLA PARA SPAWNEAR OTRA
    ld a, (num_entities)
    cp #0x05
    jp p, nos_pasamos_de_entidades

        ;; ¿Hemos llegado al final de la tabla (o ronda)?
        ld a, (bool_fin_tabla_spawn)
        cp #1
        jr z, no_spawneamos
            ;; No hemos llegado al final de la tabla (quedan enemigos por salir)

            ;; Restamos 1 al contador 
            ld a, (cont_time_spawn)
            dec a
            ld (cont_time_spawn), a

            ;; Comprobamos si el contador ha llegado a 0
            cp #0
            jr nz, no_spawneamos
                ;; Contador = 0 ==> Spawn Enemigo

                ld hl, (ptr_current_enemy) ;; HL => Time
                inc hl                     ;; HL => TipoL
                ld e, (hl)                     ; DE necesita apuntar a la template para la funcion game_create_template
                inc hl                     ;; HL => TipoH
                ld d, (hl)                    ;DE -> HL

                push hl
                call game_create_template ;; en ix esta la nueva entidad
                pop hl

                ;; Ponemos los datos Tipo, X, Y, Vx, Vy...
                inc hl                    ;; HL => X
                ld a, (hl)
                ld e_x(ix), a

                inc hl                    ;; HL => Y
                ld a, (hl)
                ld e_y(ix), a

                inc hl                    ;; HL => VX
                ld a, (hl)
                ld e_vx(ix), a

                inc hl                    ;; HL => VY
                ld a, (hl)
                ld e_vy(ix), a

                ;; Current enemy => Tiempo del siguiente
                ld hl, (ptr_current_enemy)   ; HL => al que acabo de crear 
                ld de, #k_size_enemy        ; DE = tam_fila_tabla_spawner
                add hl, de                  ; HL = tiempo del siguiente enemigo
                ld (ptr_current_enemy), hl  ; ptr_current_enemy = HL


                ;; inicializa_contador = 01
                ld a, #0x01
                ld (inicializa_contador), a
        no_spawneamos:

        
        ;; SI (bool_fin_tabla_spawn == 2) acabamos de pasar de ronda, y por tanto hay que actualizar el ptr 
        ld a, (bool_fin_tabla_spawn)
        cp #2 
        jr nz, acabar_funcion
            aqui:   
            ;; HEMOS PASADO DE RONDA, ASI QUE LO DEJAMOS PREPARADO PARA LA SIGUIENTE
            ;; Ptr => Siguiente enemigo (ya no al 0x00)
            ld hl, (ptr_current_enemy)
            inc hl
            ld (ptr_current_enemy), hl

            ;; Iniciliza contador (para el time) = 1
            ld a, #1
            ld (inicializa_contador), a

            ;; bool_fin_tabla_spawn = 0
            ld a, #0
            ld (bool_fin_tabla_spawn), a
        acabar_funcion:
    nos_pasamos_de_entidades:

ret