aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-04-29 16:36:16 +0200
committerAstatin <[email protected]>2025-04-29 16:36:16 +0200
commitbe355c4525dfdd579a1821743d450cb8582407ef (patch)
treeef9884be82528a3ee742f9a931f01506a54d5d11
parentc7d3a2929e9ed719b342e92a54d292d57ee105d2 (diff)
It's broken but I wanted to make the spawning rate vary by floor
-rw-r--r--entity/init.gbasm34
-rw-r--r--map/dungeons.gbasm51
-rw-r--r--modes/dungeongeneration.gbasm14
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