User Tools

Site Tools


sd:rogueima_i_mvp-4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sd:rogueima_i_mvp-4 [2026/05/10 16:42] appledogsd:rogueima_i_mvp-4 [2026/05/10 16:47] (current) appledog
Line 2: Line 2:
  
 * rogueima.asm: 384 * rogueima.asm: 384
-* draw.asm: 203 +* draw.asm: 247 
-* map.asm: 53+* map.asm: 51
 * mon.asm: 99 * mon.asm: 99
 * msg.asm: 166 * msg.asm: 166
-* obj.asm: 167+* obj.asm: 171
 * talk.asm: 166 * talk.asm: 166
 * combat.asm: 149 * combat.asm: 149
Line 583: Line 583:
     CALL @draw_world     CALL @draw_world
     CALL @draw_items     CALL @draw_items
-    CALL @draw_player+    CALL @move_mon
     CALL @draw_mobs     CALL @draw_mobs
 +    CALL @draw_player
     CALL @draw_stats     CALL @draw_stats
     CALL @draw_msgs     CALL @draw_msgs
Line 591: Line 592:
     LDAH $50        ; VSTART     LDAH $50        ; VSTART
     INT 0x18     INT 0x18
 +
 +    LDA [@player_hp]
 +    CMP A, 0
 +    JZ @kill_player
  
     RET     RET
Line 665: Line 670:
     RET     RET
  
 +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 +;; Draw all the monsters that are placed on the map.
 +;; Filters on OBJ_TYPE == 2 (monster), skips items.
 +;;
 draw_mobs: draw_mobs:
-    ; stub for now+    LDD [@cam_origin_x]         DL = I_start, DH = J_start 
 +    LDT [@disp_dim]             ; TL = play_width, TH = play_height 
 +    LDELM @OBJS_BASE 
 +draw_mobs_loop: 
 +    LDELM [ELM] 
 +    CMP ELM, @OBJS_BASE 
 +    JZ @draw_mobs_done 
 + 
 +    LDI @OBJ_ID 
 +    LDA [ELM+I] 
 +    JZ @draw_mobs_loop          ; uninitialized slot 
 + 
 +    LDI @OBJ_TYPE 
 +    LDA [ELM+I] 
 +    CMP A, #2                    ; OBJ_TYPE_MONSTER 
 +    JNZ @draw_mobs_loop         ; not a mob → skip 
 + 
 +    LDI @OBJ_X 
 +    LDX [ELM+I] 
 +    LDI @OBJ_Y 
 +    LDY [ELM+I] 
 + 
 +    ; --- Visibility: is (XL, YL) inside the viewport? --- 
 +    CMP XL, DL 
 +    JNC @draw_mobs_loop          ; XL < I_start → off-screen left 
 +    MOV AL, DL 
 +    ADD AL, TL 
 +    CMP XL, AL 
 +    JC  @draw_mobs_loop          ; XL >= I_start + TL → off-screen right 
 + 
 +    CMP YL, DH 
 +    JNC @draw_mobs_loop 
 +    MOV AL, DH 
 +    ADD AL, TH 
 +    CMP YL, AL 
 +    JC  @draw_mobs_loop 
 + 
 +    ; --- Map → screen --- 
 +    SUB XL, DL 
 +    ADD XL, #1                   ; play_x_offset 
 +    SUB YL, DH 
 +    ADD YL, #1                   ; play_y_offset 
 + 
 +    ; --- Draw --- 
 +    LDI @OBJ_VIS 
 +    LDBL [ELM+I] 
 +    LDAH $11 
 +    INT $10 
 +    JMP @draw_mobs_loop 
 +draw_mobs_done:
     RET     RET
  
Line 1630: Line 1688:
     LDA [ELM+I]     LDA [ELM+I]
     JZ @draw_items_loop     JZ @draw_items_loop
 +
 +    LDI @OBJ_TYPE
 +    LDA [ELM+I]
 +    CMP A, #1                  ; OBJ_TYPE_GOLD — this filter is the fix
 +    JNZ @draw_items_loop
  
     LDI @OBJ_X     LDI @OBJ_X
Line 1947: Line 2010:
 </codify> </codify>
  
-=== combat.sda+== combat.sda
 <codify armasm> <codify armasm>
 player_obj: player_obj:
sd/rogueima_i_mvp-4.1778431350.txt.gz · Last modified: by appledog

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki