diff options
Diffstat (limited to 'entity/init.gbasm')
-rw-r--r-- | entity/init.gbasm | 77 |
1 files changed, 56 insertions, 21 deletions
diff --git a/entity/init.gbasm b/entity/init.gbasm index ba23183..953e45e 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -66,11 +66,11 @@ Initialize_Entities: LD A, $ff LD $mem_bunny_current_room_idx, A - CALL =Initialize_Fox - CALL =Initialize_Fox - CALL =Initialize_Fox - CALL =Initialize_Fox - CALL =Initialize_Fox + CALL =Initialize_Enemy + CALL =Initialize_Enemy + CALL =Initialize_Enemy + CALL =Initialize_Enemy + CALL =Initialize_Enemy Fix_Bunny_screen: LD A, $mem_bunny_x @@ -95,22 +95,32 @@ Fix_Bunny_screen: RET -Initialize_Fox: +Initialize_Enemy: ; HL => pointer to entity struct LD A, $mem_enemies_alive_count INC A LD $mem_enemies_alive_count, A - LD A, $0d + CALL =RNG_Step + AND $03 + ADD $03 + LD E, A + SLA A + SLA A + LD B, A + SLA A + ADD B + INC A LD (HL+), A + LD A, $mem_bunny_current_room_idx LD $tmp_var_6, A CP $FF - JR Z, =Initialize_Fox.All_rooms_allowed + JR Z, =Initialize_Enemy.All_rooms_allowed LD B, A - Initialize_Fox.Skip_bunny_room: + Initialize_Enemy.Skip_bunny_room: LD A, $mem_number_of_rooms CP $01 - JR Z, =Initialize_Fox.All_rooms_allowed + JR Z, =Initialize_Enemy.All_rooms_allowed DEC A CALL =RNG_Bound @@ -120,14 +130,14 @@ Initialize_Fox: LD A, B CP C LD A, C - JR C, =Initialize_Fox.Room_restriction.end + JR C, =Initialize_Enemy.Room_restriction.end DEC A - JR =Initialize_Fox.Room_restriction.end + JR =Initialize_Enemy.Room_restriction.end - Initialize_Fox.All_rooms_allowed: + Initialize_Enemy.All_rooms_allowed: LD A, $mem_number_of_rooms CALL =RNG_Bound - Initialize_Fox.Room_restriction.end: + Initialize_Enemy.Room_restriction.end: LD $tmp_var_4, A SLA A SLA A @@ -136,7 +146,6 @@ Initialize_Fox: LD B, $c8 - ; X LD A, (BC) LD D, A INC BC @@ -163,19 +172,45 @@ Initialize_Fox: LD A, $03 LD (HL+), A + LD BC, =Entity_list + LD D, high($mem_loaded_entities_indices) + LD A, low($mem_loaded_entities_indices) + ADD E + LD E, A + LD A, (DE) + DBG + SLA A + SLA A + SLA A + ADD $02 + ADD low(=Entity_list) + LD C, A + LD A, high(=Entity_list) + ADC $00 + LD B, A + ; Turn - LD A, $02 + LD A, (BC) LD (HL+), A + DBG + + INC BC ; Action - LD A, $01 + LD A, (BC) LD (HL+), A - LD A, $04 - LD (HL), A + INC BC + + LD A, (BC) + LD (HL+), A + + XOR A + LD (HL+), A + LD (HL+), A LD A, L - ADD $0a + ADD $07 LD L, A RET @@ -209,5 +244,5 @@ Respawn_Entities: CP (HL) JR NZ, =FindFreeEntity.loop - CALL =Initialize_Fox + CALL =Initialize_Enemy RET |