diff options
author | Astatin <[email protected]> | 2025-04-29 16:36:16 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-04-29 16:36:16 +0200 |
commit | be355c4525dfdd579a1821743d450cb8582407ef (patch) | |
tree | ef9884be82528a3ee742f9a931f01506a54d5d11 | |
parent | c7d3a2929e9ed719b342e92a54d292d57ee105d2 (diff) |
It's broken but I wanted to make the spawning rate vary by floor
-rw-r--r-- | entity/init.gbasm | 34 | ||||
-rw-r--r-- | map/dungeons.gbasm | 51 | ||||
-rw-r--r-- | modes/dungeongeneration.gbasm | 14 |
3 files changed, 41 insertions, 58 deletions
diff --git a/entity/init.gbasm b/entity/init.gbasm index 5a42dfb..8267ee0 100644 --- a/entity/init.gbasm +++ b/entity/init.gbasm @@ -386,37 +386,3 @@ Enemy_idx_to_spawn: ; Return in A, ff if no entity to be spawned LD A, (BC) AND $03 .END - -Update_Enemies_Spawning_Pattern: - PUSH AF - PUSH BC - PUSH DE - - LD E, $00 - .GET_ENTITY_IDX_SPAWN_RATE $06 - OR E - LD E, A - - SLA E - SLA E - .GET_ENTITY_IDX_SPAWN_RATE $05 - OR E - LD E, A - - SLA E - SLA E - .GET_ENTITY_IDX_SPAWN_RATE $04 - OR E - LD E, A - - SLA E - SLA E - .GET_ENTITY_IDX_SPAWN_RATE $03 - OR E - - LD $mem_entity_spawning_pattern, A - - POP DE - POP BC - POP AF - RET diff --git a/map/dungeons.gbasm b/map/dungeons.gbasm index dde998a..f94019c 100644 --- a/map/dungeons.gbasm +++ b/map/dungeons.gbasm @@ -1,10 +1,9 @@ -Load_Dungeon: ; pointer to Dungeon struct in HL +Load_Dungeon_Txt: ; pointer to Dungeon struct in HL LD A, (HL+) LD B, A LD A, (HL+) LD C, A - PUSH HL PUSH BC LD H, B LD L, C @@ -25,23 +24,47 @@ Load_Dungeon: ; pointer to Dungeon struct in HL POP BC CALL =Print_str - POP HL + RET +Load_Dungeon_Spawn_patterns: ; pointer to Dungeon struct in HL + INC HL + INC HL INC HL ; TODO FIX THE THING WHEN THERE'S MORE THAN 256/7 FLOORS - LD A, $mem_floor_count + LD A, $mem_floor_count_bin LD C, A LD B, $07 CALL =MUL LD C, A LD B, (HL) CALL =MUL - DBG CALL =RNG_Step AND $01 ADD E - DBG + + INC HL + ADD L + LD L, A + LD A, H + ADC $00 + LD H, A + + LD BC, $mem_loaded_enemies_indices + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + INC BC + LD A, (HL+) + LD (BC), A + + LD A, (HL) + LD $mem_entity_spawning_pattern, A RET @@ -49,11 +72,11 @@ Dungeon: .name: .DB =Dungeon_Name_1_Txt .max_floor: .DB 0x0a, inv(0x0a) .spawning_patterns: - .DB $02, $02, $02, $05, 0b10000000 - .DB $02, $02, $03, $05, 0b11000100 - .DB $02, $02, $00, $05, 0b11110100 - .DB $00, $02, $03, $05, 0b10111000 - .DB $02, $02, $00, $05, 0b11111100 - .DB $02, $00, $03, $05, 0b11111000 - .DB $00, $00, $03, $05, 0b11111000 - .DB $00, $00, $03, $05, 0b11111100 + .DB $02, $02, $02, $05, 0b00000010 + .DB $02, $02, $03, $05, 0b00100011 + .DB $02, $02, $00, $05, 0b00100111 + .DB $00, $02, $03, $05, 0b00011101 + .DB $02, $02, $00, $05, 0b00111111 + .DB $02, $00, $03, $05, 0b00011111 + .DB $00, $00, $03, $05, 0b00011111 + .DB $00, $00, $03, $05, 0b00111111 diff --git a/modes/dungeongeneration.gbasm b/modes/dungeongeneration.gbasm index 20d3036..b35cdc8 100644 --- a/modes/dungeongeneration.gbasm +++ b/modes/dungeongeneration.gbasm @@ -33,7 +33,7 @@ New_Dungeon: LD $mem_display_flag, A LD HL, =Dungeon - CALL =Load_Dungeon + CALL =Load_Dungeon_Txt LD A, $f4 LD ($9ecb), A @@ -50,15 +50,9 @@ New_Dungeon: CALL =Reset_Map - LD HL, $mem_loaded_enemies_indices - LD A, $02 - LD (HL+), A - LD (HL+), A - LD A, $00 - LD (HL+), A - LD A, $03 - LD (HL+), A - CALL =Update_Enemies_Spawning_Pattern + + LD HL, =Dungeon + CALL =Load_Dungeon_Spawn_patterns LD A, $06 LD $mem_loaded_special_entity_index, A |